pwlib_v1_10_2/0040755000176200056700000000000010512262773013406 5ustar releasepostincrpwlib_v1_10_2/samples/0040755000176200056700000000000010512262773015052 5ustar releasepostincrpwlib_v1_10_2/samples/ODBC/0040755000176200056700000000000010512262773015561 5ustar releasepostincrpwlib_v1_10_2/samples/ODBC/odbctest.cxx0100644000176200056700000001254510276071175020121 0ustar releasepostincr/* * ODBCTest.cxx * * Virteos ODBC Implementation for PWLib Library. * * Virteos is a Trade Mark of ISVO (Asia) Pte Ltd. * * Copyright (c) 2005 ISVO (Asia) Pte Ltd. All Rights Reserved. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is derived from and used in conjunction with the * pwlib Libaray of the OpenH323 Project (www.openh323.org/) * * The Initial Developer of the Original Code is ISVO (Asia) Pte Ltd. * * * Contributor(s): ______________________________________. * * $Log: odbctest.cxx,v $ * Revision 1.2 2005/08/09 09:08:13 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.1.2.1 2005/04/25 13:55:19 shorne * Initial version * * */ #include class ODBCtest : public PProcess { PCLASSINFO(ODBCtest, PProcess) public: void Main(); }; PCREATE_PROCESS(ODBCtest) void ODBCtest::Main() { cout << "ODBC Component for the Pwlib Library Test Program" << endl; cout << "=================================================" << endl; cout << endl; PODBC link; PODBC::ConnectData data; data.DBPath = "test.mdb"; cout << "Open AccessDB " << data.DBPath << endl; if (!link.DataSource(PODBC::MSAccess,data)) cout << "ODBC Error Link" << endl; else { cout << "Connected Access Database" << endl; cout << endl; PINDEX i =0; /// Table List PINDEX j =0; /// Columns PINDEX k =0; /// Rows PINDEX l =0; /// Fields /// Settings link.SetPrecision(2); /// Number of Decimal Places (def = 4) link.SetTimeFormat(PTime::ShortDate); /// Set the Default Display Time /// Enumerate Tables in Database ///+++++++++++++++++++++++++++++ /// You can also use the QUERY keyword to view Queries cout << "Tables in Database" << endl; PStringArray tables = link.TableList("TABLE"); for (i= 0; i < tables.GetSize(); i++) { cout << tables[i] << endl; } /// Viewing Database Contents ///++++++++++++++++++++++++++ /// Add Select SQL Statement PString sql = "SELECT Clients.Ref, Calls.Date, Calls.CalledParty, Calls.Duration"; sql = sql + " FROM Clients INNER JOIN Calls ON Clients.Ref = Calls.Ref WHERE"; sql = sql + "(((Clients.Ref)=1))"; tables.Append(&sql); for (i= 0; i < tables.GetSize(); i++) { cout << "=================" << endl; PODBC::Table table(&link,tables[i]); cout << "Query Table: " << tables[i] << endl; cout << "Columns: " << table.Columns() << " Rows: " << table.Rows() << endl; cout << "ColumnNames : " << endl; PStringArray Names = table.ColumnNames(); for (j= 0; j < Names.GetSize(); j++) cout << Names[j] << " "; cout << endl; // Create a Field Array. The Fields are Bound to the // ODBC Driver so Row Navigation updates the Field Data. PArray fields; for (j=0; j < table.Columns(); j++) fields.Append(&table.Column(j+1)); // You can also Reference via Record Handler // PODBC:: Row & row = table.RecordHandler(); // PODBC::Field & f1 = row.Column(1); // ...etc... // or Access the Field directly via the Recordset // PODBC::Field f1 = table(row.col) // Display Table Contents for (k= 0; k < table.Rows(); k++) { table[k+1]; /// set the Record index to row j for (l =0; l < table.Columns(); l++) { cout << fields[l].AsString() << " "; } cout << endl; } } cout << endl; /// Table Modification Examples /// +++++++++++++++++++++++++++ cout << "Modify Table Calls" << endl; PODBC::Table ntable(&link,"Calls"); cout << endl; /// Delete a Record (Directly Via RecordSet) cout << "Delete the Last Record #" << ntable.Rows() << endl; if (ntable.DeleteRow(ntable.Rows())) cout << "Last Record Deleted.." << endl; else cout << "Error Deleting Last Record" << endl; cout << endl; /// Update a Field (Using RecordHolder callRef is field 2) cout << "Add 1 to the callRef field of the First Row" << endl; PODBC::Row handle = ntable[1]; int Num = handle[2].AsString().AsInteger(); cout << "Old Value " << Num << " "; handle[2].SetValue(Num+1); handle[2].Post(); cout << "New Value " << handle[2].AsString() << endl; cout << endl; /// Adding a New Record (Using Column Names) cout << "Add New Record to Calls Table" << endl; ntable.NewRow(); ntable.Column("CallRef").SetValue(1324); ntable.Column("Ref").SetValue(2); ntable.Column("Date").SetValue(PTime().AsString()); ntable.Column("Duration").SetValue("2.45"); ntable.Column("CalledParty").SetValue("Fred"); if (ntable.Post()) cout << "New Record Added!" << endl; cout << endl; /// Display the RecordSet Contents thro' the RecordSet. (x,y) cout << "Display Table with new Record" << endl; for (i=0; i< ntable.Rows(); i++) { for (j =0; j < ntable.Columns(); j++) cout << ntable(i+1,j+1).AsString() << " "; cout << endl; } cout << "Rows " << ntable.Rows() << endl; } link.Disconnect(); } // End of netif.cxx pwlib_v1_10_2/samples/ODBC/odbctest.dsp0100644000176200056700000001032010276071175020072 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="odbctest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=odbctest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "odbctest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "odbctest.mak" CFG="odbctest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "odbctest - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "odbctest - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "odbctest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0xc09 /d "NDEBUG" # ADD RSC /l 0xc09 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 ptlib.lib ptclib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "odbctest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0xc09 /d "_DEBUG" # ADD RSC /l 0xc09 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptlibd.lib ptclibd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "odbctest - Win32 Release" # Name "odbctest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\odbctest.cxx # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/ODBC/odbctest.dsw0100644000176200056700000000077610276071175020117 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "odbctest"=.\odbctest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/ODBC/test.mdb0100644000176200056700000023400010276071175017221 0ustar releasepostincrStandard Jet DBnb` Ugr@?~1y0̝bǟFN7]D^(`T{6k߱wCϯ34ay[|*|OJl>`&_Љ$g'DeFx -{et DB lVCS           2   at  ol  je  fe  ef          IdParentIdNameType DateCreate DateUpdateOwnerFlagsDatabaseConnect ForeignName RmtInfoShort RmtInfoLongLvLvPropLvModuleLvExtrasetni  Id ParentIdName        VC@S     2  ObjectIdSIDACM FInheritable ObjectIdVC?S             ObjectId AttributeOrderName1Name2 ExpressionFlagilnzjtz ObjectIdAttribute  VCS              szRelationshipgrbitccolumnicolumnszObjectszColumnszReferencedObjectszReferencedColumn   szObjectszReferencedObjectszRelationship {qg]SI?5o{o{@@ @@@ @d`w``bbfvvs`hfvd`w`a`vfvgruov ordxmfv ufm`wjrpvijsvufsruwv vbujswv v}vufmw`amfvb`mmvbmjfpwvov}v`bfvov}vordxmfvov}vordxmfvXov}vrakfbwvov}vtxfujfvov}vufm`wjrpvijsvov}vdavxoo`u}jpgrxvfudfgjpfd ._V\V`aWd_daWZ^a^`_\gb]Vb``^[Yab`0B@@ @@@ @d`w``bbfvvs`hfvd`w`a`vfvgruov ordxmfv ufm`wjrpvijsvufsruwv vbujswv v}vufmw`amfvb`mmvbmjfpwvov}v`bfvov}vordxmfvov}vordxmfvXov}vrakfbwvov}vtxfujfvov}vufm`wjrpvijsvov}vdavxoo`u}jpgrxvfudfgjpfd .dg_W`aa\_dbbZ_`X`aXbgXZd[\YbgV\V0o{ @ @      !K @ @      ! @ ( {qg]SI? @ ( @ @ @ @ @ @ @ @ !"#$%&'()*+,-     ! ! !   bmjfpwv%.dg_W`aa\_dbbZ_`X`aXbgXZd[\YbgV\V0%V#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o     T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o            b`mmv%KKD Orientation OrderByOn ColumnWidth ColumnOrder ColumnHiddenRequiredAllowZeroLengthDisplayControlUnicodeCompressionFormat DecimalPlaces DefaultValue  0 Ref   ZUserName      m W Alias      m ZPassword      m k Balance    $#,##0.00;-$#,##0.00    0 RLastCall    General Date KKD Orientation OrderByOn ColumnWidth ColumnOrder ColumnHidden DecimalPlaces DefaultValueRequiredDisplayControlFormatAllowZeroLengthUnicodeCompression  U Ref      0  mL Date    Short Date ZDuration      0  m] CalledParty       m  Y CallRef      0  m2 RecNo   KKDReplicateProject KKDTitleAuthorCompany/ db1 isvo isvoKKD AccessVersion 07.53 bmjfpwv%Index1T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o     T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o            Q]Uv6{7          2                     IdParentIdNameType DateCreate DateUpdateOwnerFlagsDatabaseConnect ForeignName RmtInfoShort RmtInfoLongLvLvPropLvModuleLvExtra  Id ParentIdName        x'@x'@{DF91ABB6-9DCC-49A2-AB2C-F24D563CF060}GGGGGGGGGGE !T'@x'@Clients@444(((((((& @''@x'@Calls@222&&&&&&&$ @''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@''@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., s^'@s^'@Databases**********( s^'@s^'@Tables''''''''''% 8.yj[u |mK<-~ k\M>   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o     T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o            LVAL{JKKD Orientation OrderByOn ColumnWidth ColumnOrder ColumnHiddenRequiredAllowZeroLengthDisplayControlUnicodeCompressionFormat DecimalPlaces DefaultValue  0 Ref   ZUserName      m W Alias      m ZPassword      m k Balance    $#,##0.00;-$#,##0.00    0 RLastCall    General Date KKD Orientation OrderByOn ColumnWidth ColumnOrder ColumnHidden DecimalPlaces DefaultValueRequiredDisplayControlFormatAllowZeroLengthUnicodeCompression  U Ref      0  mL Date    Short Date ZDuration      0  m] CalledParty       m  Y CallRef      0  m2 RecNo   KKDReplicateProject KKDTitleAuthorCompany1 test1 isvo isvoKKD AccessVersion 07.53l~o`\M>:+@ @ @  !"#$%&'()*+,       T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK. T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  ! !T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o !  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o VCeN            NameTypeVersionReplicationVersionFlagsModuleFormTypeInfoIndex1T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o     T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o            {qg @ @ @ @ @ @ !"#$%&'()*+,-     @ov}vda !"#$%&'()*+,-     VCEN  __A__ k\M>   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o     ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@s^'@UserDefined1@888,,,,,,,* @ s^'@s^'@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., s^'@s^'@Databases**********( s^'@s^'@Tables''''''''''% {qg]SI?56LVALBNK<-~ k\M>   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o     T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o TT2CbV#jK.X0fZ)V#jKV#jKV#ji_VBA_PROJECTaadir~z0* pH"dDtest<@j= B @CJ J< rs@tdole>stdol@e f%\*\G{00020430-C 0046}#2.0#0#C:\WINNT\system32\STDOLE@2.TLB# AutomatiLon^ADODB> ADOBCCD1C10-8CAA006D2EA4C1CProgram Files\@CommonSM\9\msado21.tlb#Microsoft ActiveX Data Objects 2.1 Libra,ryH" @@ @@ d`w``bbfvvs`hfvd`w`a`vfvgruov ordxmfv ufm`wjrpvijsvufsruwv vbujswv v}vufmw`amfvov}v`bfvov}vordxmfvXov}vrakfbwvov}vtxfujfvov}vufm`wjrpvijsvov}vdavxoo`u}jpgrxvfudfgjpfd MSysDb 7VC}N        2RecNoCallRefRefDateDuration CalledParty &!&{DF91ABB6-9DCC-49A2-AB2C-F24D563CF060} PrimaryKey''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@s^'@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., s^'@s^'@Databases**********( s^'@s^'@Tables''''''''''% {q''@''@MSysModules*********** ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@s^'@UserDefined1@888,,,,,,,* @ s^'@s^'@|ǎN     ''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@s^'@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., ,k3ܿ@@Fred!?@Gz?Walter#? @@Wilma"?   ''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@s^'@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., s^'@s^'@Databases**********( s^'@s^'@Tables''''''''''% VC,N""    2  nW2  r 2   RefUserNameAliasPasswordBalanceLastCallcx"$ .rB PrimaryKey !"#$%&'()*+,-     ''@''@Calls&&&&&&&&&&$ ''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@''@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., s^'@s^'@Databases**********( s^'@s^'@Tables''''''''''% a{qs!N"" @ @ @ @ !"#$%&'()*+,-     ''@''@Calls&&&&&&&&&&$ ''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@''@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships....*@67456Barryoops#? @65673Wilmaindian%?<@64123Fredchief#?!### !"#$%&'()*+,-     ''@''@Calls&&&&&&&&&&$ ''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''% n'@n'@Modules((((((((((& n'@n'@Scripts((((((((((& n'@n'@Reports((((((((((& n'@n'@Forms&&&&&&&&&&$  s^'@''@UserDefined1@888,,,,,,,* @ s^'@''@SummaryInfoS@888,,,,,,,* @s^'@s^'@MSysRelationships22222222220 s^'@s^'@MSysQueries,,,,,,,,,,* s^'@s^'@MSysACEs))))))))))' s^'@s^'@MSysObjects,,,,,,,,,,* s^'@s^'@MSysDb2@333'''''''% @s^'@s^'@Relationships.........., s^'@s^'@Databases**********( s^'@s^'@Tables''''''''''% ~o`\M>:+{7x'@x'@{DF91ABB6-9DCC-49A2-AB2C-F24D563CF060}EEEEEEEEEEE !T'@'@Clients@444(((((((& @''@T'@Calls@222&&&&&&&$ @''@''@MSysModules,,,,,,,,,,* ''@''@MSysModules2----------+ n'@n'@DataAccessPages0000000000. n'@n'@SysRel''''''''''%T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o  ! !T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o !  T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o   T2CbV#jK.X0fZ)V#jKV#jKV#jKò|3UV#jKV#jKV#jKV#o    T2CbV#jK.X0f{DF91ABB6-9DCC-49A2-AB2C-F24D563CF060}CallsRefClientsRefEB;83  !"#$%&'()*+,-     ! ! !   pwlib_v1_10_2/samples/md5/0040755000176200056700000000000010512262773015537 5ustar releasepostincrpwlib_v1_10_2/samples/md5/Makefile0100644000176200056700000000060610211432412017157 0ustar releasepostincr# Simple makefile to illustrate md5 operation. # # Copyright 2005 Indranet Technologies Ltd # # $Log: Makefile,v $ # Revision 1.1 2005/03/02 21:50:02 dereksmithies # Initial release of example code to calculate MD5 sums of a supplied string. # # # PROG = md5 SOURCES = encrypt.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/md5/encrypt.cxx0100644000176200056700000000552110343317554017747 0ustar releasepostincr/* * md5.cxx * * Copyright 2005 Indranet Technologies Ltd * * Author: Derek J Smithies, * * $Log: encrypt.cxx,v $ * Revision 1.2 2005/11/30 12:47:40 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.1 2005/03/02 21:50:03 dereksmithies * Initial release of example code to calculate MD5 sums of a supplied string. * * * */ #include #include #define new PNEW class Md5 : public PProcess { PCLASSINFO(Md5, PProcess); public: Md5(); void Main(); }; PCREATE_PROCESS(Md5); Md5::Md5() : PProcess("PwLib Example Factory", "md5", 1, 0, ReleaseCode, 0) { } void Md5::Main() { PConfigArgs args(GetArguments()); args.Parse( "a-first: " "b-second: " "h-help. " #if PTRACING "o-output:" "-no-output." "t-trace: " "-no-trace." #endif , FALSE); cout << "Product Name: " << GetName() << endl << "Manufacturer: " << GetManufacturer() << endl << "Version : " << GetVersion(TRUE) << endl << "System : " << GetOSName() << '-' << GetOSHardware() << ' ' << GetOSVersion() << endl << endl; if (args.HasOption('h')) { cout << "Usage : md5 [options] " << endl << endl << " -a --first ## : specify first string to add to md5" << endl << " -b --second ## : specify second string to add to md5" << endl << " -h --help : print this help out." << endl #if PTRACING << " -t --trace : Enable trace, use multiple times for more detail" << endl << " -o --output : File for trace output, default is stderr" << endl #endif << endl; return; } #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif PString a = args.GetOptionString('a', "127000151"); PString b = args.GetOptionString('b', "ebey7" ); PMessageDigest5 stomach; stomach.Process(a); stomach.Process(b); PMessageDigest5::Code digester; stomach.Complete(digester); cerr << "Resultant MD5 output is " << endl << PBase64::Encode(&digester, sizeof(digester)) << endl << endl; for(PINDEX i = 0; i < (PINDEX)sizeof(digester); i++) cerr << ::hex << ::setfill('0') << ::setw(2) << (int)(*(((BYTE *)&digester)+i)); cerr << ::dec << endl; #if PTRACING if (args.GetOptionCount('t') > 0) { PTrace::ClearOptions(0); PTrace::SetLevel(0); } #endif } // End of encrypt.cxx /*** /Two examples of operation. a= 142678697 b = h2f8v gives e6e718481e199e77649c88e0b48c40eb a= 127000151 b= ebey7 gives 07065e2a12d38ca389d8c97ad4291427 ***/ pwlib_v1_10_2/samples/Makefile0100644000176200056700000000275510121172140016500 0ustar releasepostincr# # Makefile # # Make file for pwlib library # # Portable Windows Library # # Copyright (c) 1993-1998 Equivalence Pty. Ltd. # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is Portable Windows Library. # # The Initial Developer of the Original Code is Equivalence Pty. Ltd. # # Portions are Copyright (C) 1993 Free Software Foundation, Inc. # All Rights Reserved. # # Contributor(s): ______________________________________. # # $Log: Makefile,v $ # Revision 1.2 2004/09/13 01:14:08 dereksmithies # Add two new targets to unix build, dtmftest and threadex # # Revision 1.1 2003/01/07 09:41:38 rogerh # Makefile to build most of the pwlib sample programs # # all :: include ../make/ptlib.mak SUBDIRS += ThreadSafe audio find_ip hello_world netif thread threadex dtmftest #SUBDIRS += pxml xmlrpc xmlrpcsrvr #expat + some are broken #SUBDIRS += vxmltest # no makefile # all these targets are just passed to all subdirectories $(subst tagbuild,,$(STANDARD_TARGETS)) :: set -e; $(foreach dir,$(SUBDIRS),$(MAKE) -C $(dir) $@;) # End of Makefile pwlib_v1_10_2/samples/ThreadSafe/0040755000176200056700000000000010512262773017060 5ustar releasepostincrpwlib_v1_10_2/samples/ThreadSafe/Makefile0100644000176200056700000000017107464104254020515 0ustar releasepostincrPROG = threadsafe SOURCES := main.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/ThreadSafe/ThreadSafe.dsp0100644000176200056700000000730610034006203021560 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="ThreadSafe" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=ThreadSafe - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ThreadSafe.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ThreadSafe.mak" CFG="ThreadSafe - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ThreadSafe - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "ThreadSafe - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "ThreadSafe - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 !ELSEIF "$(CFG)" == "ThreadSafe - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "ThreadSafe - Win32 Release" # Name "ThreadSafe - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/ThreadSafe/ThreadSafe.vcproj0100644000176200056700000001226510136162652022313 0ustar releasepostincr pwlib_v1_10_2/samples/ThreadSafe/main.cxx0100644000176200056700000002500710343317553020530 0ustar releasepostincr/* * main.cxx * * PWLib application source file for ThreadSafe * * Main program entry point. * * Copyright 2002 Equivalence * * $Log: main.cxx,v $ * Revision 1.9 2005/11/30 12:47:39 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.8 2004/10/14 12:31:46 rjongbloed * Added synchronous mode for safe collection RemoveAll() to wait until all objects * have actually been deleted before returning. * * Revision 1.7 2004/09/07 11:32:02 rjongbloed * Changed function name in PSafeCollection to something more standard for collections * * Revision 1.6 2004/04/04 13:24:19 rjongbloed * Changes to support native C++ Run Time Type Information * * Revision 1.5 2003/10/27 22:12:56 dereksmithies * Add more good changes to get Compare method work. Thanks to Gene Small * * Revision 1.4 2003/10/13 23:38:31 dereksmithies * Add debugging statements, usage(), Fixed Compare method. Thanks Gene Small. * * Revision 1.3 2002/12/11 03:38:45 robertj * Added more tests * * Revision 1.2 2002/05/02 00:30:26 robertj * Added dump of thread times during start up. * * Revision 1.1 2002/05/01 04:16:44 robertj * Added thread safe collection classes. * */ #include #include "main.h" #include PCREATE_PROCESS(ThreadSafe); /////////////////////////////////////////////////////////////////////////////// TestObject::TestObject(ThreadSafe & proc, unsigned val) : process(proc) { value = val; process.mutexObjects.Wait(); process.totalObjects++; process.currentObjects++; process.mutexObjects.Signal(); } TestObject::~TestObject() { process.mutexObjects.Wait(); process.currentObjects--; process.mutexObjects.Signal(); } PObject::Comparison TestObject::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, TestObject), PInvalidCast); unsigned othervalue = ((const TestObject &)obj).value; if (value < othervalue) return LessThan; if (value > othervalue) return GreaterThan; return EqualTo; } void TestObject::PrintOn(ostream & strm) const { strm << value; } /////////////////////////////////////////////////////////////////////////////// ThreadSafe::ThreadSafe() : PProcess("Equivalence", "ThreadSafe", 1, 0, AlphaCode, 1) { threadCount = 0; totalObjects = 0; currentObjects = 0; } ThreadSafe::~ThreadSafe() { unsorted.RemoveAll(TRUE); sorted.RemoveAll(TRUE); sparse.RemoveAll(TRUE); } void ThreadSafe::Usage() { cout << "Usage: threadsafe {options} [number]" << endl << "-t (more t's for more detail) logging on" << endl << "-o output file for logging" << endl << "-1 (or --test1) carry out test 1" << endl << "-2 (or --test2) carry out test 2" << endl << "-3 (or --test3) carry out test 3" << endl << "The number field is optional, and specifies the number of threads for test 1" << endl << endl; return; } void ThreadSafe::Main() { PArgList & args = GetArguments(); args.Parse( "t-trace." "-no-trace." "o-output:" "-no-output." "1-test1." "-no-test1." "2-test2." "-no-test2." "3-test3." "-no-test3."); PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); if (args.HasOption('1')) Test1(args); else if (args.HasOption('2')) Test2(args); else if (args.HasOption('3')) Test3(args); else Usage(); } void ThreadSafe::Test1(PArgList & args) { if (args.GetCount() > 0) threadCount = args[0].AsUnsigned(); else threadCount = 99; cout << "Starting " << threadCount << " threads." << endl; for (PINDEX i = 0; i < threadCount; i++) { PTimeInterval duration = PRandom::Number()%540000 + 60000; cout << setw(4) << (i + 1) << '=' << duration; if (i%5 == 4) cout << '\n'; PThread::Create(PCREATE_NOTIFIER(Test1Thread), (INT)duration.GetMilliSeconds()); } cout << endl; startTick = PTimer::Tick(); while (threadCount > 0) { Test1Output(); Sleep(5000); } Test1OutputEnd(); sorted.RemoveAll(); unsorted.RemoveAll(); sparse.RemoveAll(); Test1OutputEnd(); } void ThreadSafe::Test1Output() { PSafePtr ptr; sorted.DeleteObjectsToBeRemoved(); unsorted.DeleteObjectsToBeRemoved(); sparse.DeleteObjectsToBeRemoved(); cout << setprecision(0) << setw(5) << (PTimer::Tick() - startTick) << " Threads=" << threadCount << ", Unsorted=" << unsorted.GetSize() << ", Sorted=" << sorted.GetSize() << ", Dictionary=" << sparse.GetSize() << ", Objects:"; mutexObjects.Wait(); cout << currentObjects << '/' << totalObjects << endl; mutexObjects.Signal(); } void ThreadSafe::Test1OutputEnd() { PSafePtr ptr; Test1Output(); cout << setprecision(0) << setw(5) << (PTimer::Tick() - startTick) << " Unsorted:" << endl; for (ptr = unsorted.GetAt(0, PSafeReference); ptr != NULL; ++ptr) { cout << *ptr << endl; } cout << setprecision(0) << setw(5) << (PTimer::Tick() - startTick) << " Sorted:" << endl; for (ptr = sorted.GetAt(0, PSafeReference); ptr != NULL; ++ptr) { cout << *ptr << endl; } cout << setprecision(0) << setw(5) << (PTimer::Tick() - startTick) << " Sparse:" << endl; for (ptr = sparse.GetAt(0, PSafeReference); ptr != NULL; ++ptr) { cout << *ptr << endl; } } void ThreadSafe::Test1Thread(PThread &, INT duration) { PRandom random; PSafePtr ptr; PTimer timeout = duration; while (timeout.IsRunning()) { switch (random%17) { case 0 : if (random%(unsorted.GetSize()+1) == 0) unsorted.Append(new TestObject(*this, random)); break; case 1 : if (random%(sorted.GetSize()+1) == 0) sorted.Append(new TestObject(*this, random)); break; case 2 : sparse.SetAt(random%20, new TestObject(*this, random)); break; case 3 : for (ptr = unsorted.GetAt(0, PSafeReference); ptr != NULL; ++ptr) { if (random%50 == 0) unsorted.Remove(ptr); } break; case 4 : for (ptr = sorted.GetAt(0, PSafeReference); ptr != NULL; ++ptr) { if (random%50 == 0) sorted.Remove(ptr); } break; case 5 : sparse.RemoveAt(random%20); break; case 6 : for (ptr = unsorted; ptr != NULL; ++ptr) Sleep(random%50); break; case 7 : for (ptr = sorted; ptr != NULL; ++ptr) Sleep(random%50); break; case 8 : for (ptr = sparse; ptr != NULL; ++ptr) Sleep(random%50); break; case 9 : for (ptr = unsorted.GetAt(0, PSafeReadOnly); ptr != NULL; ++ptr) Sleep(random%50); break; case 10 : for (ptr = sorted.GetAt(0, PSafeReadOnly); ptr != NULL; ++ptr) Sleep(random%50); break; case 11 : for (ptr = sparse.GetAt(0, PSafeReadOnly); ptr != NULL; ++ptr) Sleep(random%50); break; case 12 : for (ptr = unsorted.GetAt(0, PSafeReference); ptr != NULL; ++ptr) Sleep(random%50); break; case 13 : for (ptr = sorted.GetAt(0, PSafeReference); ptr != NULL; ++ptr) Sleep(random%50); break; case 14 : for (ptr = sparse.GetAt(0, PSafeReference); ptr != NULL; ++ptr) Sleep(random%50); break; case 15 : if ( unsorted.GetSize() > 0 ) { PSafePtr ptr2 = unsorted.GetAt(unsorted.GetSize() - 1, PSafeReadOnly); if ( ptr2 != NULL ) ptr2 = unsorted.FindWithLock(*ptr2, PSafeReadOnly); } break; case 16 : if ( sorted.GetSize() > 0 ) { PSafePtr ptr2 = unsorted.GetAt(sorted.GetSize() - 1, PSafeReference); if ( ptr2 != NULL ) ptr2 = sorted.FindWithLock(*ptr2, PSafeReference); } break; } Sleep(random%500); } threadCount--; } void ThreadSafe::Test2(PArgList &) { sparse.SetAt(0, new TestObject(*this, 0)); threadCount = 2; PThread::Create(PCREATE_NOTIFIER(Test2Thread1)); PThread::Create(PCREATE_NOTIFIER(Test2Thread2)); while (threadCount > 0) Sleep(1000); } void ThreadSafe::Test2Thread1(PThread &, INT) { cout << "Thread 1 before read only lock" << endl; PSafePtr ptr = sparse.FindWithLock(0, PSafeReadOnly); cout << "Thread 1 after read only lock, pausing ..." << endl; Sleep(3000); cout << "Thread 1 before read write lock" << endl; ptr = sparse.FindWithLock(0, PSafeReadWrite); cout << "Thread 1 after read write lock, exiting" << endl; threadCount--; } void ThreadSafe::Test2Thread2(PThread &, INT) { Sleep(1000); cout << "Thread 2 before read write lock" << endl; PSafePtr ptr = sparse.FindWithLock(0, PSafeReadWrite); cout << "Thread 2 after read write lock, exiting" << endl; threadCount--; } void ThreadSafe::Test3(PArgList &) { for (PINDEX i = 0; i < 10; i++) unsorted.Append(new TestObject(*this, i)); threadCount = 2; PThread::Create(PCREATE_NOTIFIER(Test3Thread1)); PThread::Create(PCREATE_NOTIFIER(Test3Thread2)); while (threadCount > 0) Sleep(1000); } void ThreadSafe::Test3Thread1(PThread &, INT) { { cout << "Thread 1 before read only lock" << endl; PSafePtr ptr = unsorted.GetAt(2, PSafeReadOnly); cout << "Thread 1 after read only lock, pausing ..." << endl; Sleep(2000); cout << "Thread 1 before read write lock" << endl; ptr.SetSafetyMode(PSafeReadWrite); cout << "Thread 1 after read write lock, before ptr going out of scope" << endl; } cout << "Thread 1 after ptr out of scope, exiting" << endl; threadCount--; } void ThreadSafe::Test3Thread2(PThread &, INT) { Sleep(1000); cout << "Thread 2 before enumeration" << endl; PSafePtr ptr = unsorted.GetAt(0, PSafeReadOnly); while (ptr != NULL) { if (ptr->value == 2) { cout << "Thread 2 before read write lock" << endl; ptr->LockReadWrite(); cout << "Thread 2 after read write lock" << endl; Sleep(2000); cout << "Thread 2 before read write unlock" << endl; ptr->UnlockReadWrite(); cout << "Thread 2 after read write unlock" << endl; } ptr++; } cout << "Thread 2 after enumeration, exiting" << endl; threadCount--; } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ThreadSafe/main.h0100644000176200056700000000423507747314150020161 0ustar releasepostincr/* * main.h * * PWLib application header file for ThreadSafe * * Copyright 2002 Equivalence * * $Log: main.h,v $ * Revision 1.6 2003/10/27 22:12:56 dereksmithies * Add more good changes to get Compare method work. Thanks to Gene Small * * Revision 1.5 2003/10/13 23:38:31 dereksmithies * Add debugging statements, usage(), Fixed Compare method. Thanks Gene Small. * * Revision 1.4 2002/12/11 03:38:35 robertj * Added more tests * * Revision 1.3 2002/12/02 01:08:29 robertj * Updated to latest safe collection classes, thanks Vladimir Nesic * * Revision 1.2 2002/05/02 00:30:03 robertj * Allowed for non-template containers * * Revision 1.1 2002/05/01 04:16:44 robertj * Added thread safe collection classes. * */ #ifndef _ThreadSafe_MAIN_H #define _ThreadSafe_MAIN_H #include class ThreadSafe; class TestObject : public PSafeObject { PCLASSINFO(TestObject, PSafeObject); public: TestObject(ThreadSafe & process, unsigned val); ~TestObject(); Comparison Compare(const PObject & obj) const; void PrintOn(ostream & strm) const; ThreadSafe & process; unsigned value; }; class ThreadSafe : public PProcess { PCLASSINFO(ThreadSafe, PProcess) public: ThreadSafe(); ~ThreadSafe(); void Main(); private: void Usage(); void Test1(PArgList & args); void Test1Output(); void Test1OutputEnd(); PDECLARE_NOTIFIER(PThread, ThreadSafe, Test1Thread); void Test2(PArgList & args); PDECLARE_NOTIFIER(PThread, ThreadSafe, Test2Thread1); PDECLARE_NOTIFIER(PThread, ThreadSafe, Test2Thread2); void Test3(PArgList & args); PDECLARE_NOTIFIER(PThread, ThreadSafe, Test3Thread1); PDECLARE_NOTIFIER(PThread, ThreadSafe, Test3Thread2); PSafeList unsorted; PSafeSortedList sorted; PSafeDictionary sparse; PINDEX threadCount; PTimeInterval startTick; PMutex mutexObjects; unsigned totalObjects; unsigned currentObjects; friend class TestObject; }; #endif // _ThreadSafe_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ThreadSafe/precompile.cxx0100644000176200056700000000056507463666054021761 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for ThreadSafe * * Precompiled header generation file. * * Copyright 2002 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2002/05/01 04:16:44 robertj * Added thread safe collection classes. * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/address/0040755000176200056700000000000010512262773016477 5ustar releasepostincrpwlib_v1_10_2/samples/address/Makefile0100644000176200056700000000055510214010404020116 0ustar releasepostincr# Simple makefile for the local address program. # # $Log: Makefile,v $ # Revision 1.1 2005/03/10 09:19:00 dereksmithies # Initial release of code to illustrate the reading of the machines external ip address and hostname # # PROG = local SOURCES = local.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/address/local.cxx0100644000176200056700000000331010343317553020306 0ustar releasepostincr/* * local.cxx * * copyright 2005 Derek J Smithies * * * Simple program to report the host name of this machine * the address of one network interface * * $Log: local.cxx,v $ * Revision 1.3 2005/11/30 12:47:39 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.2 2005/03/10 09:27:42 dereksmithies * Improve text output. * * Revision 1.1 2005/03/10 09:19:01 dereksmithies * Initial release of code to illustrate the reading of the machines external ip address and hostname * * * */ #include #include class LocalAddress : public PProcess { PCLASSINFO(LocalAddress, PProcess); public: LocalAddress(); void Main(); }; PCREATE_PROCESS(LocalAddress); LocalAddress::LocalAddress() : PProcess("PwLib Example Factory", "local", 1, 0, ReleaseCode, 0) { } void LocalAddress::Main() { PStringStream progName; progName << "Product Name: " << GetName() << endl << "Manufacturer: " << GetManufacturer() << endl << "Version : " << GetVersion(TRUE) << endl << "System : " << GetOSName() << '-' << GetOSHardware() << ' ' << GetOSVersion(); cout << endl << progName << endl << endl; PUDPSocket localSocket; PIPSocket::Address addr; if(localSocket.GetNetworkInterface(addr)) { cout << "local address is " << addr.AsString() << endl; if (addr == 0) cout << "sorry, that is a 0.0.0.0 address" << endl; } else cout << "Sorry, failed to get local address" << endl; cout << "local host name is " << localSocket.GetHostName() << endl; } // End of local.cxx pwlib_v1_10_2/samples/audio/0040755000176200056700000000000010512262773016153 5ustar releasepostincrpwlib_v1_10_2/samples/audio/Makefile0100644000176200056700000000026707505703614017617 0ustar releasepostincr# Simple makefile for the audio test program PROG = audio SOURCES = audio.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/audio/audio.cxx0100644000176200056700000002502110343317553017774 0ustar releasepostincr// // audio.cxx // // Roger Hardiman // // /* * audio.cxx * * PWLib application source file for audio testing. * * Main program entry point. * * Copyright 2005 Roger Hardiman * * Copied by Derek Smithies, 1)Add soundtest code from ohphone. * 2)Add headers. * * $Log: audio.cxx,v $ * Revision 1.5 2005/11/30 12:47:39 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2005/08/18 22:29:15 dereksmithies * Add a full duplex sound card test (which was excised from ohphone). * Add copyright header and cvs log statements. * Fix startup and closedown segfaults. * Add safety mechanism so it can never fill up all computer memory. * * * * */ #include #include "version.h" #include "audio.h" Audio::Audio() : PProcess("Roger Hardiman & Derek Smithies code factory", "audio", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } PCREATE_PROCESS(Audio) void Audio::Main() { PArgList & args = GetArguments(); args.Parse("r. " "f. " "h. " #if PTRACING "o-output:" "-no-output." "t-trace." "-no-trace." #endif "v. " "s: "); if (args.HasOption('h')) { cout << "usage: audio " << endl << " -r : report available sound devices" << endl << " -f. : do a full duplex sound test on a sound device" << endl << " -s dev : use this device in full duplex test " << endl << " -h : get help on usage " << endl << " -v : report program version " << endl #if PTRACING << " -t --trace : Enable trace, use multiple times for more detail" << endl << " -o --output : File for trace output, default is stderr" << endl #endif << endl; return; } PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); if (args.HasOption('v')) { cout << endl << "Product Name: " << (const char *)GetName() << endl << "Manufacturer: " << (const char *)GetManufacturer() << endl << "Version : " << (const char *)GetVersion(TRUE) << endl << "System : " << (const char *)GetOSName() << '-' << (const char *)GetOSHardware() << ' ' << (const char *)GetOSVersion() << endl << endl; return; } cout << "Audio Test Program\n"; PSoundChannel::Directions dir; PStringArray namesPlay, namesRecord; cout << "\n"; cout << "List of play devices\n"; dir = PSoundChannel::Player; namesPlay = PSoundChannel::GetDeviceNames(dir); for (PINDEX i = 0; i < namesPlay.GetSize(); i++) cout << " \"" << namesPlay[i] << "\"\n"; cout << "The default play device is \"" << PSoundChannel::GetDefaultDevice(dir) << "\"\n"; cout << "\n"; cout << "List of Record devices\n"; dir = PSoundChannel::Recorder; namesRecord = PSoundChannel::GetDeviceNames(dir); for (PINDEX i = 0; i < namesRecord.GetSize(); i++) cout << " \"" << namesRecord[i] << "\"\n"; cout << "The default record device is \"" << PSoundChannel::GetDefaultDevice(dir) << "\"\n"; cout << "\n"; // Display the mixer settings for the default devices PSoundChannel sound; dir = PSoundChannel::Player; sound.Open(PSoundChannel::GetDefaultDevice(dir),dir); unsigned int vol; if (sound.GetVolume(vol)) cout << "Play volume is (for the default play device)" << vol << endl; else cout << "Play volume cannot be obtained" << endl; sound.Close(); dir = PSoundChannel::Recorder; sound.Open(PSoundChannel::GetDefaultDevice(dir),dir); if (sound.GetVolume(vol)) cout << "Record volume is (for the default record device)" << vol << endl; else cout << "Record volume cannot be obtained" << endl; sound.Close(); if (args.HasOption('f')) { devName = args.GetOptionString('s'); if (devName.IsEmpty()) devName = PSoundChannel::GetDefaultDevice(PSoundChannel::Player); if (namesPlay.GetStringsIndex(devName) == P_MAX_INDEX) { cout << "could not find " << devName << " in list of available play devices - abort test" << endl; return; } if (namesRecord.GetStringsIndex(devName) == P_MAX_INDEX) { cout << "could not find " << devName << " in list of available record devices - abort test" << endl; return; } PTRACE(3, "Audio\tTest device " << devName); TestAudioDevice device; device.Test(); return; } #if PTRACING if (args.GetOptionCount('t') > 0) { PTrace::ClearOptions(0); PTrace::SetLevel(0); } #endif } //////////////////////////////////////////////////////////////////////////////// TestAudioDevice::~TestAudioDevice() { AllowDeleteObjects(); access.Wait(); RemoveAll(); endNow = TRUE; access.Signal(); PThread::Sleep(100); } void TestAudioDevice::Test() { endNow = FALSE; PConsoleChannel console(PConsoleChannel::StandardInput); AllowDeleteObjects(FALSE); PTRACE(3, "Start operation of TestAudioDevice"); TestAudioRead reader(*this); TestAudioWrite writer(*this); PStringStream help; help << "Select:\n"; help << " X : Exit program\n" << " Q : Exit program\n" << " {} : Increase/reduce record volume\n" << " [] : Increase/reduce playback volume\n" << " H : Write this help out\n"; PThread::Sleep(100); if (reader.IsTerminated() || writer.IsTerminated()) { reader.Terminate(); writer.Terminate(); goto endAudioTest; } for (;;) { // display the prompt cout << "(testing sound device for full duplex) Command ? " << flush; // terminate the menu loop if console finished char ch = (char)console.peek(); if (console.eof()) { cout << "\nConsole gone - menu disabled" << endl; goto endAudioTest; } console >> ch; PTRACE(3, "console in audio test is " << ch); switch (tolower(ch)) { case '{' : reader.LowerVolume(); break; case '}' : reader.RaiseVolume(); break; case '[' : writer.LowerVolume(); break; case ']' : writer.RaiseVolume(); break; case 'q' : case 'x' : goto endAudioTest; case 'h' : cout << help ; break; default: ; } } endAudioTest: endNow = TRUE; cout << "end audio test" << endl; reader.WaitForTermination(); writer.WaitForTermination(); } PBYTEArray *TestAudioDevice::GetNextAudioFrame() { PBYTEArray *data = NULL; while (data == NULL) { { PWaitAndSignal m(access); if (GetSize() > 30) data = (PBYTEArray *)RemoveAt(0); if (endNow) return NULL; } if (data == NULL) { PThread::Sleep(30); } } return data; } void TestAudioDevice::WriteAudioFrame(PBYTEArray *data) { PWaitAndSignal mutex(access); if (endNow) { delete data; return; } PTRACE(5, "Buffer\tNow put one frame on the que"); Append(data); if (GetSize() > 50) { cout << "The audio reader thread is not working - exit now before memory is exhausted" << endl; endNow = TRUE; } return; } BOOL TestAudioDevice::DoEndNow() { return endNow; } ////////////////////////////////////////////////////////////////////// TestAudioRead::TestAudioRead(TestAudioDevice &master) :TestAudio(master) { PTRACE(3, "Reader\tInitiate thread for reading " ); } void TestAudioRead::Main() { if (!OpenAudio(PSoundChannel::Recorder)) { PTRACE(1, "TestAudioWrite\tFAILED to open read device"); return; } PTRACE(3, "TestAduioRead\tSound device is now open, start running"); while ((!controller.DoEndNow()) && keepGoing) { PBYTEArray *data = new PBYTEArray(480); sound.Read(data->GetPointer(), data->GetSize()); PTRACE(3, "TestAudioRead\t send one frame to the queue" << data->GetSize()); controller.WriteAudioFrame(data); } PTRACE(3, "End audio read thread"); } ////////////////////////////////////////////////////////////////////// TestAudioWrite::TestAudioWrite(TestAudioDevice &master) : TestAudio(master) { PTRACE(3, "Reader\tInitiate thread for writing " ); } void TestAudioWrite::Main() { if (!OpenAudio(PSoundChannel::Player)) { PTRACE(1, "TestAudioWrite\tFAILED to open play device"); return; } PTRACE(3, "TestAudioWrite\tSound device is now open, start running"); while ((!controller.DoEndNow()) && keepGoing) { PBYTEArray *data = controller.GetNextAudioFrame(); PTRACE(3, "TestAudioWrite\tHave read one audio frame "); if (data != NULL) { sound.Write(data->GetPointer(), data->GetSize()); delete data; } else PTRACE(1, "testAudioWrite\t next audio frame is NULL"); } PTRACE(3, "End audio write thread"); } ////////////////////////////////////////////////////////////// TestAudio::TestAudio(TestAudioDevice &master) :PThread(1000, NoAutoDeleteThread), controller(master) { keepGoing = TRUE; Resume(); } TestAudio::~TestAudio() { sound.Close(); } BOOL TestAudio::OpenAudio(enum PSoundChannel::Directions dir) { if (dir == PSoundChannel::Recorder) name = "Recorder"; else name = "Player"; PThread::Current()->SetThreadName(name); PString devName = Audio::Current().GetTestDeviceName(); PTRACE(3, "TestAudio\t open audio start for " << name << " and device name of " << devName); PTRACE(3, "Open audio device for " << name << " and device name of " << devName); if (!sound.Open(devName, dir, 1, 8000, 16)) { cerr << "TestAudioRead:: Failed to open sound Playing device. Exit" << endl; PTRACE(3, "TestAudio\tFailed to open device for " << name << " and device name of " << devName); return FALSE; } currentVolume = 90; sound.SetVolume(currentVolume); sound.SetBuffers(480, 3); return TRUE; } void TestAudio::RaiseVolume() { if ((currentVolume + 5) < 101) currentVolume += 5; sound.SetVolume(currentVolume); cout << name << " volume is " << currentVolume << endl; PTRACE(3, "TestAudio\tRaise volume for " << name << " to " << currentVolume); } void TestAudio::LowerVolume() { if ((currentVolume - 5) >= 0) currentVolume -= 5; sound.SetVolume(currentVolume); cout << name << " volume is " << currentVolume << endl; PTRACE(3, "TestAudio\tLower volume for " << name << " to " << currentVolume); } //////////////////////////////////////////////////////////////////////////////// // End of hello.cxx pwlib_v1_10_2/samples/audio/audio.h0100644000176200056700000000406210343317553017423 0ustar releasepostincr/* * main.h * * PWLib application header file for sound test. * * * $Log: audio.h,v $ * Revision 1.2 2005/11/30 12:47:39 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.1 2005/08/18 22:29:15 dereksmithies * Add a full duplex sound card test (which was excised from ohphone). * Add copyright header and cvs log statements. * Fix startup and closedown segfaults. * Add safety mechanism so it can never fill up all computer memory. * * * * * * * * */ #ifndef _AUDIO_MAIN_H #define _AUDIO_MAIN_H class Audio : public PProcess { PCLASSINFO(Audio, PProcess); public: Audio(); void Main(); PString GetTestDeviceName() { return devName; } static Audio & Current() { return (Audio &)PProcess::Current(); } protected: PString devName; }; ///////////////////////////////////////////////////////////////////////////// PDECLARE_LIST(TestAudioDevice, PBYTEArray *) #if 0 //This makes emacs bracket matching code happy. { #endif public: virtual ~TestAudioDevice(); void Test(); BOOL DoEndNow(); void WriteAudioFrame(PBYTEArray *data); PBYTEArray *GetNextAudioFrame(); protected: PMutex access; BOOL endNow; }; class TestAudio : public PThread { PCLASSINFO(TestAudio, PThread) public: TestAudio(TestAudioDevice &master); virtual ~TestAudio(); virtual void Terminate() { keepGoing = FALSE; } void LowerVolume(); void RaiseVolume(); protected: PString name; BOOL OpenAudio(enum PSoundChannel::Directions dir); PINDEX currentVolume; TestAudioDevice &controller; PSoundChannel sound; BOOL keepGoing; }; class TestAudioRead : public TestAudio { PCLASSINFO(TestAudioRead, TestAudio); public: TestAudioRead(TestAudioDevice &master); void Main(); }; class TestAudioWrite : public TestAudio { PCLASSINFO(TestAudioWrite, TestAudio); public: TestAudioWrite(TestAudioDevice &master); void Main(); }; #endif // _AUDIO_MAIN_H pwlib_v1_10_2/samples/audio/version.h0100644000176200056700000000227610301205673020005 0ustar releasepostincr/* * version.h * * Version number header file for Audio * * A test application for Audio * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Open H323 Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions of this code were written with the assisance of funding from * Vovida Networks, Inc. http://www.vovida.com. * * Contributor(s): ______________________________________. * * */ #ifndef _Audio_VERSION_H #define _Audio_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 0 #endif // _Audio_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dnstest/0040755000176200056700000000000010512262773016536 5ustar releasepostincrpwlib_v1_10_2/samples/dnstest/Makefile0100644000176200056700000000016607646736641020214 0ustar releasepostincrPROG = dnstest SOURCES := main.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/dnstest/dnstest.dsp0100644000176200056700000000723210034006203020712 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="dnstest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=dnstest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "dnstest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dnstest.mak" CFG="dnstest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dnstest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "dnstest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "dnstest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "dnstest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "dnstest - Win32 Release" # Name "dnstest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/dnstest/dnstest.dsw0100644000176200056700000000147607646703266020761 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "Console Components"="..\..\pwlib\src\ptlib\msos\Console Components.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "dnstest"=.\dnstest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name Console Components End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/dnstest/dnstest.vcproj0100644000176200056700000001212710206341330021432 0ustar releasepostincr pwlib_v1_10_2/samples/dnstest/main.cxx0100644000176200056700000001377410155450305020210 0ustar releasepostincr/* * main.cxx * * PWLib application source file for DNSTest * * Main program entry point. * * Copyright 2003 Equivalence * * $Log: main.cxx,v $ * Revision 1.6 2004/12/08 00:54:29 csoutheren * Added URL lookups * * Revision 1.5 2004/05/31 13:57:00 csoutheren * Added tests for ENUM resolution * * Revision 1.4 2003/09/26 13:42:16 rjongbloed * Added special test to give more indicative error if try to compile without DNS support. * * Revision 1.3 2003/04/22 23:25:13 craigs * Changed help message for SRV records * * Revision 1.2 2003/04/15 08:15:16 craigs * Added single string form of GetSRVRecords * * Revision 1.1 2003/04/15 04:12:38 craigs * Initial version * */ #include #include #include #include #include "main.h" #if !P_DNS #error Must have DNS support for this application #endif PCREATE_PROCESS(DNSTest); DNSTest::DNSTest() : PProcess("Equivalence", "DNSTest", 1, 0, AlphaCode, 1) { } void Usage() { PError << "usage: dnstest -t MX hostname\n" " dnstest -t SRV service (i.e. _ras._udp._example.com)\n" " dnstest -t NAPTR resource (i.e. 2.1.2.1.5.5.5.0.0.8.1.e164.org)\n" " dnstest -t NAPTR resource service (i.e. 2.1.2.1.5.5.5.0.0.8.1.e164.org E2U+SIP)\n" " dnstest -t ENUM service (i.e. +18005551212 E2U+SIP)\n" " dnstest -u url (i.e. http://craigs@postincrement.com)\n" ; } template void GetAndDisplayRecords(const PString & name) { RecordListType records; if (!PDNS::GetRecords(name, records)) PError << "Lookup for " << name << " failed" << endl; else cout << "Lookup for " << name << " returned" << endl << records << endl; } struct LookupRecord { PIPSocket::Address addr; WORD port; PString type; PString source; }; ostream & operator << (ostream & strm, const LookupRecord & rec) { strm << rec.type << " " << rec.addr << ":" << rec.port << " from " << rec.source; return strm; } BOOL FindSRVRecords(std::vector & recs, const PString & domain, const PString & type, const PString & srv) { PDNS::SRVRecordList srvRecords; PString srvLookupStr = srv + domain; BOOL found = PDNS::GetRecords(srvLookupStr, srvRecords); if (found) { PDNS::SRVRecord * recPtr = srvRecords.GetFirst(); while (recPtr != NULL) { LookupRecord rec; rec.addr = recPtr->hostAddress; rec.port = recPtr->port; rec.type = type; rec.source = srv; recs.push_back(rec); recPtr = srvRecords.GetNext(); } } return found; } void DNSTest::Main() { PArgList & args = GetArguments(); args.Parse("t:u."); if (args.GetCount() < 1) { Usage(); return; } if (args.HasOption('u')) { if (args.GetCount() < 0) { Usage(); return; } PURL url(args[0]); if (url.GetScheme() *= "h323") { PString user = url.GetUserName(); PString domain = url.GetHostName(); WORD port = url.GetPort(); cout << "user = " << user << ", domain = " << domain << ", port = " << port << endl; std::vector found; BOOL hasGK = FindSRVRecords(found, domain, "LRQ", "_h323ls._udp."); hasGK = hasGK || FindSRVRecords(found, domain, "LRQ", "_h323rs._udp."); FindSRVRecords(found, domain, "Call direct", "_h323cs._tcp."); // if no entries so far, see if the domain is actually a host if (found.size() == 0) { PIPSocket::Address addr; if (PIPSocket::GetHostAddress(domain, addr)) { LookupRecord rec; rec.addr = addr; rec.port = 1720; rec.type = "Call direct"; rec.source = "DNS"; found.push_back(rec); } } if (!hasGK) { PDNS::MXRecordList mxRecords; if (PDNS::GetRecords(domain, mxRecords)) { PDNS::MXRecord * recPtr = mxRecords.GetFirst(); while (recPtr != NULL) { LookupRecord rec; rec.addr = recPtr->hostAddress; rec.port = 1719; rec.type = "LRQ"; rec.source = "MX"; found.push_back(rec); recPtr = mxRecords.GetNext(); } } } if (found.size() == 0) { PError << "Cannot find match" << endl; } else { std::vector::const_iterator r; cout << "Found\n"; for (r = found.begin(); r != found.end(); ++r) { cout << *r << endl; } } } else { PError << "error: unsupported scheme " << url.GetScheme() << endl; } } else if (args.HasOption('t')) { PString type = args.GetOptionString('t'); if (type *= "SRV") GetAndDisplayRecords(args[0]); else if (type *= "MX") GetAndDisplayRecords(args[0]); else if (type *= "NAPTR") { if (args.GetCount() == 1) GetAndDisplayRecords(args[0]); else { PDNS::NAPTRRecordList records; if (!PDNS::GetRecords(args[0], records)) PError << "Lookup for " << args[0] << " failed" << endl; else { cout << "Returned " << endl; PDNS::NAPTRRecord * rec = records.GetFirst(args[1]); while (rec != NULL) { cout << *rec; rec = records.GetNext(args[1]); } } } } else if (type *= "enum") { if (args.GetCount() < 2) Usage(); else { PString e164 = args[0]; PString service = args[1]; PString str; if (!PDNS::ENUMLookup(e164, service, str)) cout << "Could not resolve E164 number " << e164 << " with service " << service << endl; else cout << "E164 number " << e164 << " with service " << service << " resolved to " << str << endl; } } } } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dnstest/main.h0100644000176200056700000000071707646703266017650 0ustar releasepostincr/* * main.h * * PWLib application header file for DNSTest * * Copyright 2003 Equivalence * * $Log: main.h,v $ * Revision 1.1 2003/04/15 04:12:38 craigs * Initial version * */ #ifndef _DNSTest_MAIN_H #define _DNSTest_MAIN_H class DNSTest : public PProcess { PCLASSINFO(DNSTest, PProcess) public: DNSTest(); void Main(); }; #endif // _DNSTest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dnstest/precompile.cxx0100644000176200056700000000053207646703266021431 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dnssrv * * Precompiled header generation file. * * Copyright 2003 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2003/04/15 04:12:38 craigs * Initial version * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dtmftest/0040755000176200056700000000000010512262773016704 5ustar releasepostincrpwlib_v1_10_2/samples/dtmftest/Makefile0100644000176200056700000000172510120205207020326 0ustar releasepostincr# # Makefile # # Makefile for dtmftest # # Copyright (c) 2003 Equivalence Pty. Ltd. # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is Portable Windows Library. # # The Initial Developer of the Original Code is Equivalence Pty. Ltd. # # Contributor(s): ______________________________________. # # $Log: Makefile,v $ # Revision 1.1 2004/09/10 01:59:35 dereksmithies # Initial release of program to test Dtmf creation and detection. # # # # PROG = dtmftest SOURCES := main.cxx precompile.cxx include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/dtmftest/dtmftest.dsp0100644000176200056700000000761110120205207021230 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="dtmftest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=dtmftest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "dtmftest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "dtmftest.mak" CFG="dtmftest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "dtmftest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "dtmftest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "dtmftest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "dtmftest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib vfw32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "dtmftest - Win32 Release" # Name "dtmftest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"precompile.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\precompile.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/dtmftest/dtmftest.dsw0100644000176200056700000000077610120205207021244 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "dtmftest"=.\dtmftest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/dtmftest/main.cxx0100644000176200056700000001303210343317554020350 0ustar releasepostincr/* * main.cxx * * PWLib application source file for dtmftest * * Main program entry point. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.5 2005/11/30 12:47:40 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2005/07/21 13:09:43 rogerhardiman * Fix typo in help * * Revision 1.3 2004/09/10 22:33:31 dereksmithies * Calculate time required to do the decoding of the dtmf symbol. * * Revision 1.2 2004/09/10 04:31:57 dereksmithies * Add code to calculate the detection rate. * * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #include "precompile.h" #include "main.h" #include "version.h" PCREATE_PROCESS(DtmfTest); #include #include DtmfTest::DtmfTest() : PProcess("Equivalence", "dtmftest", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } void DtmfTest::Main() { PArgList & args = GetArguments(); args.Parse( "h-help." "-no-help." "s-samples:" "-no-numsamples." "n-noise:" "-no-noise." #if PTRACING "o-output:" "-no-output." "t-trace." "-no-trace." #endif "v-version." ); #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif if (args.HasOption('v')) { cout << "Product Name: " << GetName() << endl << "Manufacturer: " << GetManufacturer() << endl << "Version : " << GetVersion(TRUE) << endl << "System : " << GetOSName() << '-' << GetOSHardware() << ' ' << GetOSVersion() << endl; return; } if (args.HasOption('h')) { PError << "Available options are: " << endl << endl << "Generates 16 dtmf symbols, of length sample size with noise level\n" << " and then decodes them. \n" << " Simulation is done at 8000Hz, or 8khz, 16 bit integers.\n" << "A report on the success (or not) is reported\n" << endl << "-h or --help : print this help message.\n" << "-s or --samples # : number of samples to use (ms).\n" << "-n or --noise # : Peak noise level (0..10000)\n" #if PTRACING << "-o or --output file : file name for output of log messages\n" << "-t or --trace : degree of verbosity in error log (more times for more detail)\n" #endif << "-v or --version : report version information\n" << endl << " e.g. ./dtmftest -s 60 -n 100 \n" << " to generate 60ms long samples, with a signal noise ratio of 100\n" << endl << endl; return; } PINDEX samples; if (args.HasOption('s')) samples = args.GetOptionString('s').AsInteger(); else samples = 80; PINDEX noise; if (args.HasOption('n')) noise = args.GetOptionString('n').AsInteger(); else noise = 0; samples = PMAX(PMIN(200 * 1000, samples), 10); noise = PMAX(PMIN(10000, noise), 0); cout << "Sample section is " << samples << " ms long." << endl; cout << "Peak noise magnitude is " << noise << endl; PINDEX i; PDTMFDecoder decoder; PBYTEArray noiseSignal(samples * 8 * 2); if (noise > 0) for (i = 0; i < noiseSignal.GetSize(); i+=2) { PINDEX noiseValue = (WORD) PRandom::Number() % noise; noiseSignal[i] = (BYTE)(noiseValue & 0xff); noiseSignal[i+1] = (BYTE)(noiseValue >> 8); } PBYTEArray result(samples * 8 * 2); int nCorrect = 0; for (i = 0; i < 16; i++) { PDTMFEncoder encoder; PString symbol = encoder.DtmfChar(i); encoder.AddTone(symbol, samples); for (PINDEX j = 0; j < encoder.GetSize(); j+=2) { int signal = ((int)encoder[j]) + ((int)encoder[j + 1] << 8); signal += noiseSignal[j] + (noiseSignal[j + 1] << 8); result[j] = (BYTE)(signal & 0xff); result[j + 1] = (BYTE)(signal >> 8); } PTime startTime; PString tones = decoder.Decode(result.GetPointer(), result.GetSize() ); PTimeInterval elapsed = PTime() - startTime; if (tones.IsEmpty()) tones = " "; cout << "Test : " << symbol << " ---> " << tones << " "; if (symbol == tones) { cout << "Good"; nCorrect++; } else { cout << "Fail"; } cout << " decode time : " << elapsed.GetInterval() << " millisecs" << endl; } cout << endl << "Test run complete. Correctly interpreted " << (int)((nCorrect / 0.16) + 0.5) << "%" << endl; } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dtmftest/main.h0100644000176200056700000000233010120205207017754 0ustar releasepostincr/* * main.h * * PWLib application header file for dtmftest * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #ifndef _Dtmftest_MAIN_H #define _Dtmftest_MAIN_H class DtmfTest : public PProcess { PCLASSINFO(DtmfTest, PProcess) public: DtmfTest(); virtual void Main(); protected: }; #endif // _Dtmftest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dtmftest/precompile.cxx0100644000176200056700000000211410120205207021542 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dtmftest * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #include "precompile.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dtmftest/precompile.h0100644000176200056700000000237510120205207021200 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dtmftest * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.h,v $ * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * Revision 1.1 2003/04/28 08:18:42 craigs * Initial version * * Revision 1.1 2003/02/20 01:10:52 robertj * Changed precompiled header so can precompile more than just ptlib.h * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/dtmftest/version.h0100644000176200056700000000222510120205207020520 0ustar releasepostincr/* * main.h * * PWLib application header file for dtmftest * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _Dtmftest_VERSION_H #define _Dtmftest_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _Dtmftest_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/emailtest/0040755000176200056700000000000010512262773017041 5ustar releasepostincrpwlib_v1_10_2/samples/emailtest/emailtest.dsp0100644000176200056700000001001310106346431021521 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="emailtest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=emailtest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "emailtest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "emailtest.mak" CFG="emailtest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "emailtest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "emailtest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "emailtest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GX /O2 /I "..\..\include\pwlib\mswin" /I "..\..\include\ptlib\msos" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "emailtest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GX /ZI /Od /I "..\..\include\pwlib\mswin" /I "..\..\include\ptlib\msos" /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "emailtest - Win32 Release" # Name "emailtest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"precompile.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\precompile.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/emailtest/emailtest.dsw0100644000176200056700000000100010106346431021524 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "emailtest"=.\emailtest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/emailtest/emailtest.vcproj0100644000176200056700000001306610255521076022256 0ustar releasepostincr pwlib_v1_10_2/samples/emailtest/main.cxx0100644000176200056700000000747110106346431020510 0ustar releasepostincr/* * main.cxx * * PWLib application source file for emailtest * * Main program entry point. * * Copyright (c) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.1 2004/08/11 07:39:05 csoutheren * Initial version * */ #include "precompile.h" #include "main.h" #include "version.h" #include #include PCREATE_PROCESS(Emailtest); Emailtest::Emailtest() : PProcess("Post Increment", "emailtest", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } void Emailtest::Main() { PArgList & args = GetArguments(); args.Parse( "-server:" "-to:" "-from:" "-re:" "-attachment:" #if PTRACING "o-output:" "-no-output." "t-trace." "-no-trace." #endif ); #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif PRFC822Channel email(PRFC822Channel::Sending); PString to = args.GetOptionString("to"); PString from = args.GetOptionString("from"); email.SetToAddress(to); email.SetFromAddress(from); email.SetSubject(args.GetOptionString("re")); PStringArray attachments = args.GetOptionString("attachment").Lines(); PString server = args.GetOptionString("server"); if (server.IsEmpty()) server = "127.0.0.1"; PTCPSocket socket("smtp 25"); if (!socket.Connect(server)) { PError << "error: could not connect to SMTP server " << server << endl; return; } PSMTPClient smtpClient; if (!smtpClient.Open(socket)) { PError << "error: could not open SMTP server " << server << endl; return; } if (!email.Open(smtpClient)) { PError << "error: cannot open email message " << server << endl; return; } if (!smtpClient.BeginMessage(from, to)) { PError << "error: could not begin SMTP message " << smtpClient.GetErrorText() << endl; return; } PString boundary; if (attachments.GetSize() > 0) { boundary = email.MultipartMessage(); } for (PINDEX i = 0; i < args.GetCount(); ++i) { email.Write((const char *)args[i], args[i].GetLength()); email << "\n"; } if (attachments.GetSize() > 0) { for (PINDEX i = 0; i < attachments.GetSize(); ++i) { PFilePath filename = attachments[i]; PFile file(filename, PFile::ReadOnly); if (file.IsOpen()) { email.NextPart(boundary); email.SetContentAttachment(filename.GetFileName()); PString fileType = filename.GetType(); PString contentType = PMIMEInfo::GetContentType(fileType); if ((fileType *= "txt") || (fileType == "html")) email.SetTransferEncoding("7bit", FALSE); else email.SetTransferEncoding("base64", TRUE); BYTE buffer[1024]; for (;;) { if (!file.Read(buffer, sizeof(buffer))) break; email.Write(buffer, file.GetLastReadCount()); } } } } smtpClient.EndMessage(); email.Close(); } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/emailtest/main.h0100644000176200056700000000222310106346431020123 0ustar releasepostincr/* * main.h * * PWLib application header file for emailtest * * Copyright (c) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.1 2004/08/11 07:39:05 csoutheren * Initial version * */ #ifndef _Emailtest_MAIN_H #define _Emailtest_MAIN_H class Emailtest : public PProcess { PCLASSINFO(Emailtest, PProcess) public: Emailtest(); virtual void Main(); }; #endif // _Emailtest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/emailtest/precompile.cxx0100644000176200056700000000202010106346431021704 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for emailtest * * Precompiled header generation file. * * Copyright (c) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2004/08/11 07:39:05 csoutheren * Initial version * */ #include "precompile.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/emailtest/precompile.h0100644000176200056700000000220110106346431021332 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for emailtest * * Precompiled header generation file. * * Copyright (c) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.h,v $ * Revision 1.1 2004/08/11 07:39:05 csoutheren * Initial version * * Revision 1.1 2003/02/20 01:10:52 robertj * Changed precompiled header so can precompile more than just ptlib.h * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/emailtest/version.h0100644000176200056700000000222210106346431020663 0ustar releasepostincr/* * main.h * * PWLib application header file for emailtest * * Copyright (c) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _Emailtest_VERSION_H #define _Emailtest_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _Emailtest_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/factory/0040755000176200056700000000000010512262773016521 5ustar releasepostincrpwlib_v1_10_2/samples/factory/Makefile0100644000176200056700000000013310052273462020147 0ustar releasepostincr PROG = factory SOURCES := main.cxx concrete.cxx solid.cxx include ~/pwlib/make/ptlib.mak pwlib_v1_10_2/samples/factory/abstract.h0100644000176200056700000000022010070527501020454 0ustar releasepostincr#ifndef _ABSTRACT_H #define _ABSTRACT_H #include class MyAbstractClass { public: virtual PString Function() = 0; }; #endif pwlib_v1_10_2/samples/factory/concrete.cxx0100644000176200056700000000117110072475573021051 0ustar releasepostincr#include #include "abstract.h" class MyConcreteClass : public MyAbstractClass { public: PString Function() { return "Concrete"; } }; PFactory::Worker concreteFactory("concrete", false); PFactory::Worker intConcreteFactory(1, false); class MyConcrete2Class : public MyAbstractClass { public: PString Function() { return "Concrete2"; } }; PFactory::Worker concrete2Factory("concrete2", false); PFactory::Worker intConcrete2Factory(2, false); pwlib_v1_10_2/samples/factory/factory.dsp0100644000176200056700000001516510074175414020703 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="factory" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=factory - Win32 Debug Static !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "factory.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "factory.mak" CFG="factory - Win32 Debug Static" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "factory - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "factory - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE "factory - Win32 Debug Static" (based on "Win32 (x86) Application") !MESSAGE "factory - Win32 Release Static" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "factory - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 !ELSEIF "$(CFG)" == "factory - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "factory - Win32 Debug Static" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "factory___Win32_Debug_Static" # PROP BASE Intermediate_Dir "factory___Win32_Debug_Static" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug_Static" # PROP Intermediate_Dir "Debug_Static" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "factory - Win32 Release Static" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "factory___Win32_Release_Static" # PROP BASE Intermediate_Dir "factory___Win32_Release_Static" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release_Static" # PROP Intermediate_Dir "Release_Static" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 !ENDIF # Begin Target # Name "factory - Win32 Release" # Name "factory - Win32 Debug" # Name "factory - Win32 Debug Static" # Name "factory - Win32 Release Static" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\concrete.cxx # End Source File # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # Begin Source File SOURCE=.\solid.cxx # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/factory/factory.vcproj0100644000176200056700000001404310204261413021400 0ustar releasepostincr pwlib_v1_10_2/samples/factory/main.cxx0100644000176200056700000000335610146504042020164 0ustar releasepostincr #include #include #include #include #include "abstract.h" class Factory : public PProcess { public: Factory() : PProcess() { } void Main(); }; PCREATE_PROCESS(Factory) template class Display { public: static void ConcreteTypes(const char * title) { cout << "\nConcrete types for " << title << ':' << endl; typename PFactory::KeyList_T keys = PFactory::GetKeyList(); typename PFactory::KeyList_T::const_iterator r; for (r = keys.begin(); r != keys.end(); ++r) cout << " " << *r << endl; cout << endl; } static void TestFactory() { typename PFactory::KeyList_T keyList = PFactory::GetKeyList(); unsigned i; for (i = 0; i < keyList.size(); i++) { for (int j = 0; j < 3; j++) { MyAbstractClass * c = PFactory::CreateInstance(keyList[i]); if (c == NULL) cout << "Cannot instantiate class " << keyList[i] << endl; else cout << keyList[i] << "::Function returned \"" << c->Function() << "\", instance " << (void *)c << endl; } } } }; void Factory::Main() { Display::ConcreteTypes("MyAbstractClass by PString"); Display::TestFactory(); Display::ConcreteTypes("MyAbstractClass by unsigned"); Display::TestFactory(); Display::ConcreteTypes("PURLScheme"); Display::ConcreteTypes("PTextToSpeech"); Display::ConcreteTypes("PPluginModuleManager"); } pwlib_v1_10_2/samples/factory/precompile.cxx0100644000176200056700000000065710071403463021402 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dnssrv * * Precompiled header generation file. * * Copyright 2003 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2004/07/03 01:09:07 rjongbloed * Added MSVC6 build for factory * * Revision 1.1 2003/04/15 04:12:38 craigs * Initial version * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/factory/solid.cxx0100644000176200056700000000064110070774263020356 0ustar releasepostincr#include #include "abstract.h" class MySolidClass : public MyAbstractClass { public: PString Function() { return "Solid"; } }; PFactory::Worker solidFactory("solid", true); class MySolid2Class : public MyAbstractClass { public: PString Function() { return "Solid2"; } }; PFactory::Worker solid2Factory("solid2", true); pwlib_v1_10_2/samples/find_ip/0040755000176200056700000000000010512262773016462 5ustar releasepostincrpwlib_v1_10_2/samples/find_ip/Makefile0100644000176200056700000000027007570447135020125 0ustar releasepostincr# Simple makefile for the find ip program PROG = find_ip SOURCES = find_ip.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/find_ip/find_ip.cxx0100644000176200056700000000406310343317554020616 0ustar releasepostincr// // find_ip.cxx // // When used behind NAT, this finds the IP address of the NAT box. // // Roger Hardiman // #include #include #include class FindIP : public PProcess { PCLASSINFO(FindIP, PProcess) public: void Main(); BOOL get_ip(PString server_url, PString &ip_address); }; PCREATE_PROCESS(FindIP) void FindIP::Main() { cout << "Find IP - Find the IP address of your NAT box" << endl; PString ip; if (get_ip("http://dnscheck.blueyonder.co.uk:888/cgi-bin/checker.pl",ip)) { cout << ip << endl; } if (get_ip("http://checkip.dyndns.org:8245/",ip)) { cout << ip << endl; } if (get_ip("http://checkip.dyndns.org/",ip)) { cout << ip << endl; } if (get_ip("http://www.lawrencegoetz.com/programs/ipinfo/",ip)) { cout << ip << endl; } if (get_ip("http://www.whatismyipaddress.com/",ip)) { cout << ip << endl; } if (get_ip("http://tools.onedown.net/ipaddress",ip)) { cout << ip << endl; } } BOOL FindIP::get_ip(PString server_url, PString &ip_address){ cout << "Trying " << server_url << " - " << flush; BOOL result = FALSE; PHTTPClient web("webserver"); PString html; if (web.GetTextDocument(server_url,html)) { if (!html.IsEmpty()) { // cout << "The web server returned the data" << endl << html << endl; // Now parse the HTML and pull out the IP address. Just look // for anything of the form N.N.N.N where N is an integer. PRegularExpression regex("[0-9]*[.][0-9]*[.][0-9]*[.][0-9]*"); PINDEX pos,len; if (html.FindRegEx(regex, pos, len)) { ip_address = html.Mid(pos,len); cout << "IP obtained." << endl; //cout << "Your real IP is " << ip_address << endl; result = TRUE; } else { cout << "No IP address found on page." << endl; } } else { cout << "Page is empty." << endl; } } else { cout << "Could not get page from server: " << web.GetLastResponseCode() << ' ' << web.GetLastResponseInfo() << endl; } return result; } // End of find_ip.cxx pwlib_v1_10_2/samples/find_ip/find_ip.dsp0100644000176200056700000000664710034006204020574 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="find_ip" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=find_ip - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "find_ip.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "find_ip.mak" CFG="find_ip - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "find_ip - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "find_ip - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "find_ip - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 !ELSEIF "$(CFG)" == "find_ip - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "find_ip - Win32 Release" # Name "find_ip - Win32 Debug" # Begin Source File SOURCE=.\find_ip.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Target # End Project pwlib_v1_10_2/samples/find_ip/precompile.cxx0100644000176200056700000000070707606663551021357 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for ThreadSafe * * Precompiled header generation file. * * Copyright 2002 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2003/01/07 23:48:57 robertj * Added find_ip sample program. * * Revision 1.1 2002/05/01 04:16:44 robertj * Added thread safe collection classes. * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/hello_world/0040755000176200056700000000000010512262773017364 5ustar releasepostincrpwlib_v1_10_2/samples/hello_world/Makefile0100644000176200056700000000027007352603415021020 0ustar releasepostincr# Simple makefile for the hello world program PROG = hello SOURCES = hello.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/hello_world/hello.cxx0100644000176200056700000000040107352603415021203 0ustar releasepostincr// // hello.cxx // // Equivalence Pty. Ltd. // #include class Hello : public PProcess { PCLASSINFO(Hello, PProcess) public: void Main(); }; PCREATE_PROCESS(Hello) void Hello::Main() { cout << "Hello world!\n"; } // End of hello.cxx pwlib_v1_10_2/samples/ipv6test/0040755000176200056700000000000010512262773016636 5ustar releasepostincrpwlib_v1_10_2/samples/ipv6test/Makefile0100644000176200056700000000162110157510145020265 0ustar releasepostincr# # Makefile # # Makefile for ipv6test # # Copyright (C) 2004 Post Increment # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is Portable Windows Library. # # The Initial Developer of the Original Code is Post Increment # # Contributor(s): ______________________________________. # # $Log: Makefile,v $ # Revision 1.1 2004/12/14 07:04:05 csoutheren # Initial version # # # PROG = ipv6test SOURCES := main.cxx precompile.cxx include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/ipv6test/ipv6test.dsp0100644000176200056700000000761110157506523021133 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="ipv6test" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=ipv6test - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ipv6test.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ipv6test.mak" CFG="ipv6test - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ipv6test - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "ipv6test - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "ipv6test - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "ipv6test - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib vfw32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "ipv6test - Win32 Release" # Name "ipv6test - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"precompile.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\precompile.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/ipv6test/ipv6test.dsw0100644000176200056700000000077610157506523021147 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "ipv6test"=.\ipv6test.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/ipv6test/ipv6test.vcproj0100644000176200056700000001255010255521076021645 0ustar releasepostincr pwlib_v1_10_2/samples/ipv6test/main.cxx0100644000176200056700000001606710343317554020315 0ustar releasepostincr/* * main.cxx * * PWLib application source file for dtmftest * * Main program entry point. * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.9 2005/11/30 12:47:40 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.8 2005/02/13 23:04:18 csoutheren * Put isrfc1918 option handling before first test (doh!) * * Revision 1.7 2005/02/13 22:33:09 csoutheren * Added ability to test an IP address for RFC1918 * * Revision 1.6 2005/02/07 12:12:34 csoutheren * Expanded interface list routines to include IPV6 addresses * Added IPV6 to GetLocalAddress * * Revision 1.5 2005/02/03 12:38:00 csoutheren * Added tests for URL parsing * * Revision 1.4 2005/01/15 19:27:07 csoutheren * Added test for GetInterfaceTable * Thanks to Jan Willamowius * * Revision 1.3 2004/12/14 14:24:20 csoutheren * Added PIPSocket::Address::operator*= to compare IPV4 addresses * to IPV4-compatible IPV6 addresses. More documentation needed * once this is tested as working * * Revision 1.2 2004/12/14 07:49:49 csoutheren * added some tests * * Revision 1.1 2004/12/14 06:50:59 csoutheren * Initial version * * */ #include "precompile.h" #include "main.h" #include "version.h" #include #include PCREATE_PROCESS(IPV6Test); IPV6Test::IPV6Test() : PProcess("Post Increment", "dtmftest", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } void IPV6Test::Main() { PArgList & args = GetArguments(); args.Parse( "-isrfc1918." #if PTRACING "o-output:" "-no-output." "t-trace." "-no-trace." #endif "v-version." ); #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif if (args.HasOption('v')) { cout << "Product Name: " << GetName() << endl << "Manufacturer: " << GetManufacturer() << endl << "Version : " << GetVersion(TRUE) << endl << "System : " << GetOSName() << '-' << GetOSHardware() << ' ' << GetOSVersion() << endl; return; } #if ! P_HAS_IPV6 cout << "error: IPV6 not included in PWLib" << endl; #else if (args.HasOption("isrfc1918")) { if (args.GetCount() == 0) PError << "error: must supply IP address as argument" << endl; else { PIPSocket::Address addr(args[0]); cout << addr << " is " << (addr.IsRFC1918() ? "" : "not ") << "an RFC1918 address" << endl; } return; } { // test #1 - check PIPSocket::IsIpAddressFamilyV6Supported cout << "test #1: PIPSocket::IsIpAddressFamilyV6Supported "; if (PIPSocket::IsIpAddressFamilyV6Supported()) cout << "OK"; else cout << "failed"; cout << endl; } // this is an IPV6 compatibility address const BYTE ipv6Data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 220, 244, 81, 10 }; const PIPSocket::Address ipv6Addr1(sizeof(ipv6Data), ipv6Data); { // test #2 - check V6 constructor cout << "test #2: PIPSocket::Address(int, const BYTE *) "; if (ipv6Addr1.GetVersion() == 6) cout << "OK"; else cout << "failed"; cout << endl; } PIPSocket::Address ipv6Addr2("::ffff:220.244.81.10"); { // test #3 - check V6 constructor cout << "test #3: PIPSocket::Address(const PString & str) "; if (ipv6Addr1.GetVersion() == 6) cout << "OK"; else cout << "failed - " << ipv6Addr1 << " <-> " << ipv6Addr2; cout << endl; } { // test #4 - check comparison for equality cout << "test #4: PIPSocket::operator == "; if (ipv6Addr1 == ipv6Addr2) cout << "OK"; else cout << "failed - " << ipv6Addr1 << " <-> " << ipv6Addr2; cout << endl; } PIPSocket::Address ipv6Addr3("::ffff:220.244.81.09"); { // test #5 - check comparison for non-equality cout << "test #5: PIPSocket::operator != "; if (ipv6Addr1 != ipv6Addr3) cout << "OK"; else cout << "failed"; cout << endl; } PIPSocket::Address ipv4Addr("220.244.81.10"); { // test #6 - check IPV6 comparison to IPV4 cout << "test #6: PIPSocket::operator == with IPV4 (should fail) "; if (ipv6Addr1 == ipv4Addr) cout << "OK"; else cout << "failed"; cout << endl; } { // test #6a - check IPV6 comparison to IPV4 cout << "test #6a: PIPSocket::operator == with IPV4 (should fail) "; if (ipv6Addr3 == ipv4Addr) cout << "OK"; else cout << "failed"; cout << endl; } { // test #7 - check IPV6 comparison to IPV4 cout << "test #7: PIPSocket::operator *= with IPV4 "; if (ipv6Addr1 *= ipv4Addr) cout << "OK"; else cout << "failed"; cout << endl; } { // test #7a - check IPV6 comparison to IPV4 cout << "test #7a: PIPSocket::operator *= with IPV4 (should fail) "; if (ipv6Addr3 *= ipv4Addr) cout << "OK"; else cout << "failed"; cout << endl; } { // test #8 - check if interface table contains IPV6 addresses cout << "test #8: check if interface table contains IPV6 addresses"; PIPSocket::InterfaceTable if_table; PIPSocket::GetInterfaceTable( if_table ); // Display the interface table cout << endl; cout << "The interface table has " << if_table.GetSize() <<" entries" << endl; for (PINDEX i=0; i < if_table.GetSize(); i++) { PIPSocket::InterfaceEntry if_entry = if_table[i]; cout << i << " " << if_entry << endl; } cout << "manual check"; cout << endl; } { // test #9 - see if URLs decode correctly cout << "test #9: check if parsing IPV6 URLs works" << endl; PURL url("h323:@[::ffff:220.244.81.10]:1234"); PString addrStr = url.GetHostName(); PIPSocket::Address addr; PIPSocket::GetHostAddress(addrStr, addr); WORD port = url.GetPort(); cout << " host string = " << addrStr << " (should be [::ffff:220.244.81.10])\n" << " address = " << addr << " (should be ::ffff:220.244.81.10)\n" << " port = " << port << " (should be 1234)\n"; } #endif } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ipv6test/main.h0100644000176200056700000000222210157506523017725 0ustar releasepostincr/* * main.h * * PWLib application header file for dtmftest * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.1 2004/12/14 06:50:59 csoutheren * Initial version * * */ #ifndef _IPV6Test_MAIN_H #define _IPV6Test_MAIN_H class IPV6Test : public PProcess { PCLASSINFO(IPV6Test, PProcess) public: IPV6Test(); virtual void Main(); protected: }; #endif // _Dtmftest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ipv6test/precompile.cxx0100644000176200056700000000222310157506523021514 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dtmftest * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2004/12/14 06:50:59 csoutheren * Initial version * * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #include "precompile.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ipv6test/precompile.h0100644000176200056700000000250410157506523021143 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dtmftest * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.h,v $ * Revision 1.1 2004/12/14 06:50:59 csoutheren * Initial version * * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * Revision 1.1 2003/04/28 08:18:42 craigs * Initial version * * Revision 1.1 2003/02/20 01:10:52 robertj * Changed precompiled header so can precompile more than just ptlib.h * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ipv6test/version.h0100644000176200056700000000222510157506523020471 0ustar releasepostincr/* * main.h * * PWLib application header file for dtmftest * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _Dtmftest_VERSION_H #define _Dtmftest_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _Dtmftest_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ldaptest/0040755000176200056700000000000010512262773016672 5ustar releasepostincrpwlib_v1_10_2/samples/ldaptest/Makefile0100644000176200056700000000016707647531126020341 0ustar releasepostincrPROG = ldaptest SOURCES := main.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/ldaptest/ldaptest.dsp0100755000176200056700000000774610034006204021220 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="ldaptest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=ldaptest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ldaptest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ldaptest.mak" CFG="ldaptest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ldaptest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "ldaptest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "ldaptest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /I "..\..\include" /D "NDEBUG" /D "PTRACING" /Yu"precompile.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "ldaptest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /I "..\..\include" /D "_DEBUG" /D "PTRACING" /Yu"precompile.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "ldaptest - Win32 Release" # Name "ldaptest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"precompile.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\precompile.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/ldaptest/main.cxx0100755000176200056700000001721407735041225020347 0ustar releasepostincr/* * main.cxx * * PWLib application source file for LDAP Test * * Main program entry point. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.3 2003/09/26 13:43:49 rjongbloed * Added special test to give more indicative error if try to compile without LDAP support. * * Revision 1.2 2003/03/31 03:35:20 robertj * Major addition of LDAP functionality. * Added ILS specialisation of LDAP. * * Revision 1.1 2003/03/28 01:15:44 robertj * OpenLDAP support. * */ #include "precompile.h" #include "main.h" #include "version.h" #include #include #if !P_LDAP #error Must have LDAP enabled for this application. #endif /* Test command lines: add -h ils.seconix.com -x "c=AU, cn=robertj@equival.com.au, objectClass=RTPerson" "cn=robertj@equival.com.au" surname=Jongbloed givenName=Robert c=AU delete -h ils.seconix.com -x "c=AU, cn=robertj@equival.com.au, objectClass=RTPerson" search -h ils.seconix.com -x -b "objectClass=RTPerson" "cn=*au" search -h ils.seconix.com -x -b "objectClass=RTPerson" "cn=*" cn surname givenName -P add -h ils.seconix.com -x -I robertj@equival.com.au surname=Jongbloed givenName=Robert c=AU rfc822Mailbox=robertj@equival.com.au delete -h ils.seconix.com -x -I robertj@equival.com.au search -h ils.seconix.com -x -I "*" -P */ PCREATE_PROCESS(LDAPTest); LDAPTest::LDAPTest() : PProcess("Equivalence", "LDAP Test", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } void LDAPTest::Main() { PArgList & args = GetArguments(); args.Parse("h:p:x.b:s:P.I.", FALSE); if (args.GetCount() == 0) { Usage(); return; } if (args.HasOption('I')) { PILSSession ils; if (!ils.Open(args.GetOptionString('h'), (WORD)args.GetOptionString('p').AsUnsigned())) { cerr << "Could not open ILS server at " << args[1]; return; } if (args[0] *= "add") { AddILS(args, ils); return; } if (args[0] *= "delete") { DeleteILS(args, ils); return; } if (args[0] *= "search") { SearchILS(args, ils); return; } } else { PLDAPSession ldap; if (!ldap.Open(args.GetOptionString('h'), (WORD)args.GetOptionString('p').AsUnsigned())) { cerr << "Could not open LDAP server at " << args[1]; return; } if (args[0] *= "add") { Add(args, ldap); return; } if (args[0] *= "delete") { Delete(args, ldap); return; } if (args[0] *= "search") { Search(args, ldap); return; } } cerr << "Invalid command: " << args[0]; } void LDAPTest::Usage() { cerr << "usage: " << GetFile().GetTitle() << " { add | delete | search } [ args ]\n" " General arguments:\n" " -h host LDAP server\n" " -p port port on LDAP server\n" " -s scope one of base, one, or sub (search scope)\n" " -x Simple authentication\n" " -I use ILS schema\n" "\n" " add arguments:\n" " dn attribute=value [ attribute=value ... ]\n" " Note if -I is used then dn is actually the cn.\n" "\n" " delete arguments:\n" " dn [ dn ... ]\n" " Note if -I is used then dn is actually the cn.\n" "\n" " search arguments:\n" " filter [ attribute ... ]\n" " -b basedn base dn for search\n" " -P Pause between entries\n" " Note if -I is used then filter is implicitly cn=filter.\n" "\n"; } void LDAPTest::Add(PArgList & args, PLDAPSession & ldap) { if (args.GetCount() < 3) { Usage(); return; } if (ldap.Add(args[1], args.GetParameters(2))) cout << "Added " << args[1] << endl; else cout << "Could not add " << args[1] << ": " << ldap.GetErrorText() << endl; } void LDAPTest::Delete(PArgList & args, PLDAPSession & ldap) { if (args.GetCount() < 2) { Usage(); return; } for (PINDEX i = 1; i < args.GetCount(); i++) { if (ldap.Delete(args[i])) cout << args[i] << " removed." << endl; else cout << "Could not remove " << args[i] << ": " << ldap.GetErrorText() << endl; } } void LDAPTest::Search(PArgList & args, PLDAPSession & ldap) { if (args.GetCount() < 2) { Usage(); return; } ldap.SetBaseDN(args.GetOptionString('b')); if (args.HasOption('P')) { PLDAPSession::SearchContext context; if (ldap.Search(context, args[1], args.GetParameters(2))) { do { PStringToString entry; if (ldap.GetSearchResult(context, entry)) { cout << entry << "\n\nPress ENTER ..." << flush; cin.get(); cout << '\n'; } } while (ldap.GetNextSearchResult(context)); } else cout << "Could not find entries for filter: " << args[1] << ": " << ldap.GetErrorText() << endl; } else { PList data = ldap.Search(args[1], args.GetParameters(2)); if (data.IsEmpty()) cout << "Could not find entries for filter: " << args[1] << ": " << ldap.GetErrorText() << endl; else cout << setfill('\n') << data; } } void LDAPTest::AddILS(PArgList & args, PILSSession & ils) { if (args.GetCount() < 2) { Usage(); return; } PILSSession::RTPerson person = args.GetParameters(2); person.cn = args[1]; if (person.rfc822Mailbox.IsEmpty()) person.rfc822Mailbox = person.cn; if (ils.AddPerson(person)) cout << person.GetDN() << " added." << endl; else cout << "Could not add person:\n" << person << "\nError: " << ils.GetErrorText() << endl; } void LDAPTest::DeleteILS(PArgList & args, PILSSession & ils) { if (args.GetCount() < 1) { Usage(); return; } PILSSession::RTPerson person; person.cn = args[1]; if (ils.DeletePerson(person)) cout << args[1] << " removed." << endl; else cout << "Could not remove person: " << args[1] << ": " << ils.GetErrorText() << endl; } void LDAPTest::SearchILS(PArgList & args, PILSSession & ils) { if (args.GetCount() < 2) { Usage(); return; } PString filter = args[1]; if (filter.Find('=') != P_MAX_INDEX) filter.Splice("cn=", 0); if (args.HasOption('P')) { PLDAPSession::SearchContext context; if (ils.Search(context, filter)) { do { PILSSession::RTPerson person; if (ils.GetSearchResult(context, person)) { cout << person << "\n\nPress ENTER ..." << flush; cin.get(); cout << '\n'; } } while (ils.GetNextSearchResult(context)); } else cout << "Could not find people for filter: " << filter << ": " << ils.GetErrorText() << endl; } else { PList people = ils.SearchPeople(filter); if (people.IsEmpty()) cout << "Could not find people for filter: " << filter << ": " << ils.GetErrorText() << endl; else cout << setfill('\n') << people; } } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ldaptest/main.h0100755000176200056700000000322307641733570017776 0ustar releasepostincr/* * main.h * * PWLib application header file for LDAP Test * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.2 2003/03/31 03:35:20 robertj * Major addition of LDAP functionality. * Added ILS specialisation of LDAP. * * Revision 1.1 2003/03/28 01:15:44 robertj * OpenLDAP support. * */ #ifndef _LDAPTest_MAIN_H #define _LDAPTest_MAIN_H class PLDAPSession; class PILSSession; class LDAPTest : public PProcess { PCLASSINFO(LDAPTest, PProcess) public: LDAPTest(); virtual void Main(); void Usage(); void Add(PArgList & args, PLDAPSession & ldap); void Delete(PArgList & args, PLDAPSession & ldap); void Search(PArgList & args, PLDAPSession & ldap); void AddILS(PArgList & args, PILSSession & ils); void DeleteILS(PArgList & args, PILSSession & ils); void SearchILS(PArgList & args, PILSSession & ils); }; #endif // _LDAPTest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ldaptest/precompile.cxx0100755000176200056700000000202607640721100021545 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for LDAP Test * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2003/03/28 01:15:44 robertj * OpenLDAP support. * */ #include "precompile.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ldaptest/precompile.h0100755000176200056700000000220707640721100021173 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for LDAP Test * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.h,v $ * Revision 1.1 2003/03/28 01:15:44 robertj * OpenLDAP support. * * Revision 1.1 2003/02/20 01:10:52 robertj * Changed precompiled header so can precompile more than just ptlib.h * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/ldaptest/version.h0100755000176200056700000000222607640721100020522 0ustar releasepostincr/* * main.h * * PWLib application header file for LDAP Test * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _LDAPTest_VERSION_H #define _LDAPTest_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _LDAPTest_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/netif/0040755000176200056700000000000010512262773016157 5ustar releasepostincrpwlib_v1_10_2/samples/netif/Makefile0100644000176200056700000000010607356564377017632 0ustar releasepostincrPROG = netif SOURCES := netif.cxx include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/netif/netif.cxx0100644000176200056700000000655107535643201020014 0ustar releasepostincr/* * netif.cxx * * Sample program to query the network interfaces. * * Portable Windows Library * * Copyright (c) 2001 Roger Hardiman * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Roger Hardiman * * $Log: netif.cxx,v $ * Revision 1.3 2002/09/05 11:56:49 rogerh * Fix some warnings by using PINDEX * * Revision 1.2 2002/01/09 14:08:57 rogerh * Fix incorrect error message. * * Revision 1.1 2001/10/03 10:31:27 rogerh * Add netif, a program to display detains of the network interfaces * and the routing table. * * * */ /* * The network interface test program displays information about the * network connections and setup. * It displays the results of * GetInterfaceTable() * and GetRouteTable() */ #include #include class NetTest : public PProcess { PCLASSINFO(NetTest, PProcess) public: void Main(); }; PCREATE_PROCESS(NetTest) void NetTest::Main() { cout << "Net Test Utility" << endl; cout << endl; // Read the interface table PIPSocket::InterfaceTable if_table; // Read the Interface Table if ( !PIPSocket::GetInterfaceTable( if_table ) ) { cout << "GetInterfaceTable() failed. No interface table" << endl; exit(0); } // Display the interface table cout << "The interface table has " << if_table.GetSize() <<" entries" << endl; for (PINDEX i=0; i < if_table.GetSize(); i++) { PIPSocket::InterfaceEntry if_entry = if_table[i]; cout << i << " " << if_entry.GetName() << " " << if_entry.GetAddress() << " " << if_entry.GetNetMask() << " " << if_entry.GetMACAddress() << "." << endl; } cout << endl; // Read the Route Table PIPSocket::RouteTable rt_table; if ( !PIPSocket::GetRouteTable( rt_table ) ) { cout << "GetRouteTable() failed. No routing table" << endl; exit(0); } // Display the route table cout << "The route table has " << rt_table.GetSize() <<" entries" << endl; for (PINDEX i=0; i < rt_table.GetSize(); i++) { PIPSocket::RouteEntry rt_entry = rt_table[i]; cout << i << " " << rt_entry.GetNetwork() << " " << rt_entry.GetNetMask() << " " << rt_entry.GetDestination() << " " << rt_entry.GetInterface() << " " << rt_entry.GetMetric() << "." << endl; } cout << endl; // Get the Default Gateway PIPSocket::Address addr; PIPSocket::GetGatewayAddress(addr); cout << "Default gateway is " << addr << endl; cout << endl; // Get the interface for the Default Gateway PString gw_if = PIPSocket::GetGatewayInterface(); if ( gw_if.IsEmpty() ) cout << "No default gateway interface" << endl; else cout << "Gateway is on " << gw_if << endl; cout << endl; } // End of netif.cxx pwlib_v1_10_2/samples/pxml/0040755000176200056700000000000010512262773016032 5ustar releasepostincrpwlib_v1_10_2/samples/pxml/Makefile0100644000176200056700000000020507441544350017465 0ustar releasepostincrPROG = PxmlTest SOURCES := main.cxx precompile.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/pxml/PxmlTest.dsp0100644000176200056700000000737007441544350020327 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="PxmlTest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=PxmlTest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "PxmlTest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "PxmlTest.mak" CFG="PxmlTest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "PxmlTest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "PxmlTest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "PxmlTest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 expat.lib ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "PxmlTest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 expat.lib ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "PxmlTest - Win32 Release" # Name "PxmlTest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/pxml/PxmlTest.dsw0100644000176200056700000000077607441544350020341 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "PxmlTest"=.\PxmlTest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/pxml/cfg.txt0100644000176200056700000000172107441544350017331 0ustar releasepostincr[Options] Input Directory=c:\data\from Output Directory=c:\data\to Archive Directory=c:\archive\from Error Directory=c:\error\from [Sender] Comm Choice=EMAIL Serial Port=COM1 Serial Rate=9600 Serial Bits=8 Serial Stop Bit(s)=1 Serial Parity=NoParity Serial In Flow Control=NoFlowControl Serial Out Flow Control=NoFlowControl FTP Address=192.168.0.2 FTP Login=dli FTP Password=wellthisisntsecure E-mail Destination Address=diodice@cfl.rr.com E-mail Source Address=iodice@cfl.rr.com E-mail SMTP Server=smtp-server.cfl.rr.com TCP Address=192.168.0.2 TCP Port=5678 [Receiver] Comm Choice=EMAIL Serial Port=COM1 Serial Rate=9600 Serial Bits=8 Serial Stop Bit(s)=1 Serial Parity=NoParity Serial In Flow Control=NoFlowControl Serial Out Flow Control=NoFlowControl FTPAddress=192.168.0.2 FTPLogin=dli FTPPassword=wellthisisntsecure E-mailUser=iodice@cfl.rr.com E-mailPassword=wellthisisntsecure E-mailSource Address=iodice@cfl.rr.com E-mailPOP3Server=pop-server.cfl.rr.com TCPPort=7890pwlib_v1_10_2/samples/pxml/main.cxx0100644000176200056700000001277310343317554017511 0ustar releasepostincr/* * main.cxx * * PWLib application source file for PxmlTest * * Main program entry point. * * Copyright 2002 David Iodice. * * $Log: main.cxx,v $ * Revision 1.2 2005/11/30 12:47:40 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.1 2002/03/07 01:56:56 robertj * Added XML sample/test program. * */ #include #include "main.h" PCREATE_PROCESS(PxmlTest); PxmlTest::PxmlTest() : PProcess("XML Testing Guru", "PxmlTest", 1, 0, AlphaCode, 1) { } static const PString XML_ID(""); static const PString LEThdr(""); static const PString LETtrl(""); static const PString SetNumHdr(""); static const PString SetNumTrl(""); void printElement(int i,PXMLObject * el) { if (el->IsElement()) { cout << "("<GetName() << endl; if (((const PXMLElement *)el)->HasAttributes()) { for (PINDEX j=0; j< ((const PXMLElement *)el)->GetNumAttributes(); ++j) { cout << " " << ((const PXMLElement *)el)->GetKeyAttribute(j) << "=" << ((const PXMLElement *)el)->GetDataAttribute(j); } } cout << " " << ((const PXMLElement *)el)->GetData() << endl; if (((const PXMLElement *)el)->HasSubObjects()) { PXMLObjectArray obs = ((const PXMLElement *)el)->GetSubObjects(); for (PINDEX o=0;o5"); PString COLORT1(""); PString COLORT2(""); PString COLORT3(""); PString ns(PString::Signed,num); PAssert((COLORT1 == PXML::CreateStartTag(t)),"PXML::CreateStartTag(t) failed"); PAssert((COLORT2 == PXML::CreateEndTag(t)),"PXML::CreateEndTag(t) failed"); PAssert((COLORT3 == PXML::CreateTagNoData(t)),"PXML::CreateTagNoData(t) failed"); PAssert((COLORVAL == PXML::CreateTag(t,ns)),"PXML::CreateTag(t,ns) failed"); PString ch = LEThdr + SetNumHdr + "23" + SetNumTrl + LETtrl; PXML xml(ch,PXML::Indent |PXML::NewLineAfterElement+PXML::NoIgnoreWhiteSpace); PStringStream s; s << xml; //can we recreate the XML? PXML revamp; PString ROOTELE("s:Envelope"); PString ROOTATKEY1("xmlns:s"); PString ROOTATDAT1("http://schemas.letter.org/letter/envelope/"); PString ROOTATKEY2("s:encodingStyle"); PString ROOTATDAT2("http://schemas.letter.org/letter/encoding/"); PAssert((ROOTELE == xml.GetRootElement()->GetName()),"Root element name not as expected"); if (xml.GetRootElement()->HasAttributes()) { for (PINDEX a=0; aGetNumAttributes(); ++a) { PAssert((ROOTATKEY1 == xml.GetRootElement()->GetKeyAttribute(a) || ROOTATKEY2 == xml.GetRootElement()->GetKeyAttribute(a)),"Root element attribute key not as expected"); PAssert((ROOTATDAT1 == xml.GetRootElement()->GetDataAttribute(a) || ROOTATDAT2 == xml.GetRootElement()->GetDataAttribute(a)),"Root element attribute data not as expected"); } } PAssert((PString() == xml.GetRootElement()->GetData()),"Root element data not as expected"); #if 0 //=== // An example of printing elements -- see the function defined above //=== for (PINDEX i=0; iPrintOn(rs, -1, 0); cout << rs << endl; revamp.Load(rs);; cout << "Revamped XML" << revamp << endl; #endif //=== // Extract a subset of the XML // This can be used when the "data" of an XML element // is XML and you don't need that parsed yet :-) //=== PStringStream ss; xml.GetElement(0)->PrintOn(ss, -1, 0); PString EXCERPT("" + SetNumHdr + "23" + SetNumTrl + ""); PAssert((EXCERPT == ss),"XML subset data not as expected"); PXMLElement el(NULL, t); PXMLData * d = new PXMLData(NULL,ns); el.AddSubObject(d); PAssert((PString("Color") == el.GetName()),"Element name not as expected"); PAssert((PString("5") == el.GetData()),"Element data not as expected"); #if 0 //=== // Checkout these examples of the PXMLSettings class // // Constructor with data and options //=== PXMLSettings dgi(ch,PXML::Indent | PXML::NewLineAfterElement | PXML::NoIgnoreWhiteSpace); cout << "PXMLSettings: " << dgi << endl; // Default Constructor PXMLSettings opts; PString optsect("Options"); PString comType("Comm Type"); PString val("FTP"); opts.SetAttribute(optsect,comType,val); cout << "attributes==>" << opts.GetAttribute(optsect,comType) << "<==" << endl; cout << "PXMLSettings: " << opts; cout << "done" << endl; #endif // Constructor with PConfig and String PFilePath fp("cfg.txt"); PConfig cfg(fp, "Options"); PXMLSettings xmlcfg(cfg); PStringStream xc; xc << xmlcfg; PFilePath fp2("cfgOut.txt"); PConfig * cfg2; cfg2 = new PConfig(fp2, "Root"); xmlcfg.ToConfig(*cfg2); delete cfg2; PTextFile tfp(fp2); PString fxc; char xcc; while(tfp.Read((void *)&xcc,1)) fxc += xcc; PXMLSettings xmlcfg2(cfg); PStringStream xc2; xc2 << xmlcfg2; PAssert((xc2 == xc),"Config not as expected"); cout << "*** Test Passed ***" << endl; } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/pxml/main.h0100644000176200056700000000100007441544350017114 0ustar releasepostincr/* * main.h * * PWLib application header file for PxmlTest * * Copyright 2002 David Iodice. * * $Log: main.h,v $ * Revision 1.1 2002/03/07 01:56:56 robertj * Added XML sample/test program. * */ #ifndef _PxmlTest_MAIN_H #define _PxmlTest_MAIN_H #include class PxmlTest : public PProcess { PCLASSINFO(PxmlTest, PProcess) public: PxmlTest(); void Main(); }; #endif // _PxmlTest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/pxml/precompile.cxx0100644000176200056700000000055607441544350020721 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for PxmlTest * * Precompiled header generation file. * * Copyright 2002 David Iodice. * * $Log: precompile.cxx,v $ * Revision 1.1 2002/03/07 01:56:56 robertj * Added XML sample/test program. * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/serial/0040755000176200056700000000000010512262773016331 5ustar releasepostincrpwlib_v1_10_2/samples/serial/Makefile0100644000176200056700000000060010214010652017744 0ustar releasepostincr# Simple makefile for the serial example program. # # copyright 2005 Derek J Smithies # # $Log: Makefile,v $ # Revision 1.1 2005/03/10 09:21:46 dereksmithies # Initial release of a program to illustrate the operation of the serial port. # # # PROG = serial SOURCES = serial.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/serial/serial.cxx0100644000176200056700000002567110343317554020344 0ustar releasepostincr/* * serial.cxx * * copyright 2005 Derek J Smithies * * Simple program to illustrate usage of the serial port. * * Get two computers. Connect com1 port of both computers by cross over serial cable. * run this program on both computers (without arguments). * type text in one, hit return. See this text in the second computer. * * * $Log: serial.cxx,v $ * Revision 1.5 2005/11/30 12:47:40 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2005/03/18 21:06:09 dereksmithies * Add help messages. Enable different flow control options. * * Revision 1.3 2005/03/14 07:33:51 dereksmithies * Fix console input handling. Concatenate characters split by PSerialChannel reading. * * Revision 1.2 2005/03/12 06:44:22 dereksmithies * Fix typo in setting stopbits. Program now reports all serial parameters that are used. * * Revision 1.1 2005/03/10 09:21:46 dereksmithies * Initial release of a program to illustrate the operation of the serial port. * * * * */ #include #include #include class Serial : public PProcess { PCLASSINFO(Serial, PProcess); public: Serial(); void Main(); BOOL Initialise(PConfigArgs & args); void HandleConsoleInput(); void HandleSerialInput(); protected: PSerialChannel serial; PINDEX dataBits; PINDEX stopBits; PString flowControlString; PINDEX hardwarePort; PINDEX baud; PString parity; BOOL endNow; }; class UserInterfaceThread : public PThread { PCLASSINFO(UserInterfaceThread, PThread); public: UserInterfaceThread(Serial & _srl) : PThread(1000, NoAutoDeleteThread), srl(_srl) { Resume(); } void Main() { srl.HandleConsoleInput(); } protected: Serial & srl; }; class SerialInterfaceThread : public PThread { PCLASSINFO(SerialInterfaceThread, PThread); public: SerialInterfaceThread(Serial & _srl) : PThread(1000, NoAutoDeleteThread), srl(_srl) { Resume(); } void Main() { srl.HandleSerialInput(); } protected: Serial & srl; }; PCREATE_PROCESS(Serial) Serial::Serial() : PProcess("PwLib Example Factory", "serial", 1, 0, ReleaseCode, 0) { endNow = FALSE; } void Serial::Main() { PConfigArgs args(GetArguments()); // Example command line is : // serial --hardwareport 0 --baud 4800 --parity odd --stopbits 1 --databits 8 --flowcontrol XonXoff args.Parse( #if PTRACING "t-trace." "-no-trace." "o-output:" "-no-output." #endif #ifdef PMEMORY_CHECK "-setallocationbreakpoint:" #endif "-baud:" "-databits:" "-parity:" "-stopbits:" "-flowcontrol:" "-hardwareport:" "v-version." "h-help." , FALSE); #if PMEMORY_CHECK if (args.HasOption("setallocationbreakpoint")) PMemoryHeap::SetAllocationBreakpoint(args.GetOptionString("setallocationbreakpoint").AsInteger()); #endif PStringStream progName; progName << "Product Name: " << GetName() << endl << "Manufacturer: " << GetManufacturer() << endl << "Version : " << GetVersion(TRUE) << endl << "System : " << GetOSName() << '-' << GetOSHardware() << ' ' << GetOSVersion(); cout << progName << endl; if (args.HasOption('v')) return; #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif if (args.HasOption('h')) { cout << endl #if PTRACING << "-t --trace Debugging. Using more times for more detail" << endl << "-o --output name of trace output file. If not specified, goes to stdout" << endl #endif #ifdef PMEMORY_CHECK << " --setallocationbreakpoint stop program on allocation of memory block number" << endl #endif << " --baud Set the data rate for serial comms" << endl << " --databits Set the number of data bits (5, 6, 7, 8)" << endl << " --parity Set parity, even, odd or none " << endl << " --stopbits Set the number of stop bits (0, 1, 2) " << endl << " --flowcontrol Specifiy flow control, (none rtscts, xonxoff)" << endl << " --hardwareport Which serial port to use, 0, 1, 2..." << endl << "-v --version Print version information and exit" << endl << "-h --help Write this help out. " << endl << endl; return; } if (!Initialise(args)) { cout << "Failed to initialise the program with args of " << args << endl; PThread::Sleep(100); return; } UserInterfaceThread *ui = new UserInterfaceThread(*this); SerialInterfaceThread *si = new SerialInterfaceThread(*this); ui->WaitForTermination(); serial.Close(); si->WaitForTermination(); delete ui; delete si; cout << endl << "End of program" << endl << endl; } void Serial::HandleSerialInput() { #define MAXM 1000 char buffer[MAXM]; PString str; BOOL found = FALSE; while(serial.IsOpen()) { memset(buffer, 0, MAXM); serial.Read(buffer, MAXM); if (endNow) { PTRACE(3, "End of thread to handle serial input"); return; } PINDEX len = serial.GetLastReadCount(); if (len != 0) { buffer[len] = 0; PTRACE(1, "Read the string \"" << buffer << "\" from the serial port"); str += PString(buffer); if (str.Find("\n") != P_MAX_INDEX) found = TRUE; } PINDEX err = serial.GetErrorCode(); if ((err != PChannel::NoError) && (err != PChannel::Timeout)) { PTRACE(1, "get data from serial port, failed, error is " << serial.GetErrorText()); cout << "get data from serial port, failed, error is " << serial.GetErrorText() << endl; } if (found) { str.Replace("\n", ""); PTRACE(1, "Read the message \"" << str << "\""); cout << "have read the message \"" << str << "\" from the serial port" << endl; str = ""; found = FALSE; } } } BOOL Serial::Initialise(PConfigArgs & args) { if (!args.HasOption("baud")) { baud = 4800; cout << "Baud not specifed. Using 4800" << endl; } else { baud = args.GetOptionString("baud").AsInteger(); cout << "Baud specified. Using " << baud << endl; } if (!args.HasOption("databits")) { cout << "databits not specified. Using 8" << endl; dataBits = 1; } else { dataBits = args.GetOptionString("databits").AsInteger(); cout << "databits specified. Using " << dataBits << endl; } if (!args.HasOption("parity")) { cout << "parity not specified. Using \"odd\"" << endl; parity = "odd"; } else { parity = args.GetOptionString("parity"); cout << "parity specified Using \"" << parity << "\"" << endl; } if (!args.HasOption("stopbits")) { cout << "stopbits not specified. Using 1" << endl; stopBits = 1; } else { stopBits = args.GetOptionString("stopbits").AsInteger(); cout << "stopbits specified. Using " << stopBits << endl; } PString flow; if (!args.HasOption("flowcontrol")) { cout << "Flow control not specified. Flow control set to XonXoff" << endl; flow = "XonXoff"; } else { flow = args.GetOptionString("flowcontrol"); cout << "Flow control is specified. Flow control is set to " << flow << endl; } if ((flow *= "xonxoff") || (flow *= "rtscts") || (flow *= "none")) flowControlString = flow; else { cout << "Valid args to flowcontrol are \"XonXoff\" or \"RtsCts\" or \"none\"" << endl; return FALSE; } if (!args.HasOption("hardwareport")) { cout << "Hardware port is not set. Using 0 - the first hardware port" << endl; hardwarePort = 0; } else hardwarePort = args.GetOptionString("hardwareport").AsInteger(); PStringList names = serial.GetPortNames(); PStringStream allNames; for(PINDEX i = 0; i < names.GetSize(); i++) allNames << names[i] << " "; PTRACE(1, "available serial ports are " << allNames); PString portName; if (hardwarePort >= names.GetSize()) { cout << "hardware port is too large, list is only " << names.GetSize() << " long" << endl; return FALSE; } portName = names[hardwarePort]; PSerialChannel::Parity pValue = PSerialChannel::DefaultParity; if (parity *= "none") pValue = PSerialChannel::NoParity; if (parity *= "even") pValue = PSerialChannel::EvenParity; if (parity *= "odd") pValue = PSerialChannel::OddParity; if (pValue == PSerialChannel::DefaultParity) { cout << "Parity value of " << parity << " could not be interpreted" << endl; return FALSE; } PSerialChannel::FlowControl flowControl = PSerialChannel::DefaultFlowControl; if (flowControlString *= "xonxoff"){ flowControl = PSerialChannel::XonXoff; PTRACE(3, "Using xonxoff flow control"); } if (flowControlString *= "rtscts") { flowControl = PSerialChannel::RtsCts; PTRACE(3, "Using rts cts flow conrol "); } if (flowControlString *= "none") { flowControl = PSerialChannel::NoFlowControl; PTRACE(3, "Not using any flow control of any sort"); } if (!serial.Open(portName, baud, dataBits, pValue, stopBits, flowControl, flowControl)) { cout << "Failed to open serial port " << endl; cout << "Error code is " << serial.GetErrorText() << endl; cout << "Failed in attempt to open port /dev/" << portName << endl; return FALSE; } return TRUE; } void Serial::HandleConsoleInput() { PTRACE(2, "Serial\tUser interface thread started."); PStringStream help; help << "Select:\n"; help << " ? : display this help\n"; help << " H : display this help\n"; help << " X : Exit program\n"; help << " Q : Exit program\n"; help << " : anything else to send a message\n"; PError << " " << endl << help << endl; for (;;) { // display the prompt PError << "Command ? " << flush; char oneLine[200]; fgets(oneLine, 200, stdin); PString str(oneLine); if (str.GetLength() < 1) continue; BOOL helped = FALSE; if (str.GetLength() == 2) { char ch = str.ToLower()[0]; if ((ch == '?') || (ch == 'h')) { helped = TRUE; PError << help << endl; } if ((ch == 'x') || (ch == 'q')) { PTRACE(3, "\nEnd of thread to read from keyboard "); endNow = TRUE; return; } } if (!helped) { PTRACE(1, "Serial\t Write the message\"" << str << "\" to the serial port"); serial.Write(str.GetPointer(), str.GetLength()); continue; } } } // End of serial.cxx pwlib_v1_10_2/samples/sortedlist/0040755000176200056700000000000010512262773017246 5ustar releasepostincrpwlib_v1_10_2/samples/sortedlist/Makefile0100644000176200056700000000031210011600467020665 0ustar releasepostincr# Simple makefile for the hello world program PROG = SortedListTest SOURCES = SortedListTest.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/sortedlist/SortedListTest.cxx0100644000176200056700000000577410011414721022722 0ustar releasepostincr #include #include "SortedListTest.h" #include PCREATE_PROCESS(SortedListTest); PMutex coutMutex; SortedListTest::SortedListTest():PProcess("Reitek S.p.A.", "SortedListTest", 0, 0, BetaCode, 0) { } void SortedListTest::Main() { PINDEX i; for (i = 0; i < 10; i++) { new DoSomeThing(i); } for (PINDEX j = i; j < i + 5; j++) { new DoSomeThing2(j); } Suspend(); } DoSomeThing::DoSomeThing(PINDEX _index) :PThread(1000, AutoDeleteThread, NormalPriority, psprintf("DoSomeThing %u", _index)), index(_index) { Resume(); } void DoSomeThing::Main() { list.AllowDeleteObjects(); PRandom rand(PRandom::Number()); PINDEX i; for (i = 0; i < 5000; i++) { PString * p = new PString(rand.Generate()); list.Append(p); // coutMutex.Wait(); // cout << GetThreadName() << ": Added " << *p << " element to sorted list" << endl; // coutMutex.Signal(); } for (;;) { PINDEX remove = rand.Generate() % (list.GetSize() + 1); for (i = 0; i < remove; i++) { PINDEX index = rand.Generate() % list.GetSize(); coutMutex.Wait(); cout << GetThreadName() << ": Removing element " << list[index] << " at index position " << index << endl; coutMutex.Signal(); if (index%2) list.Remove(&list[index]); else list.RemoveAt(index); } PINDEX add = rand.Generate() % 1000 + 300; for (i = 0; i < add; i++) { PString * p = new PString(rand.Generate()); coutMutex.Wait(); cout << GetThreadName() << ": Adding element " << *p << "to sorted list" << endl; coutMutex.Signal(); list.Append(p); } } } PSafeString::PSafeString(const PString & _string):string(_string) { } void PSafeString::PrintOn(ostream &strm) const { strm << string; } DoSomeThing2::DoSomeThing2(PINDEX _index) :PThread(1000, AutoDeleteThread, NormalPriority, psprintf("DoSomeThing2 %u", _index)), index(_index) { Resume(); } void DoSomeThing2::Main() { PRandom rand(PRandom::Number()); PINDEX i; for (i = 0; i < 5000; i++) { PSafeString * p = new PSafeString(rand.Generate()); list.Append(p); // coutMutex.Wait(); // cout << GetThreadName() << ": Added " << *p << " element to sorted list" << endl; // coutMutex.Signal(); } for (;;) { PINDEX remove = rand.Generate() % (list.GetSize() + 1); for (i = 0; i < remove; i++) { PINDEX index = rand.Generate() % list.GetSize(); coutMutex.Wait(); PSafePtr str = list.GetWithLock(index, PSafeReference); cout << GetThreadName() << ": Removing element " << *str << " at index position " << index << endl; coutMutex.Signal(); list.Remove(&(*str)); } PINDEX add = rand.Generate() % 1000 + 300; for (i = 0; i < add; i++) { PSafeString * p = new PSafeString(rand.Generate()); coutMutex.Wait(); cout << GetThreadName() << ": Adding element " << *p << "to sorted list" << endl; coutMutex.Signal(); list.Append(p); } list.DeleteObjectsToBeRemoved(); } } pwlib_v1_10_2/samples/sortedlist/SortedListTest.dsp0100644000176200056700000000740610034006204022676 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="SortedListTest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=SortedListTest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "SortedListTest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "SortedListTest.mak" CFG="SortedListTest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "SortedListTest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "SortedListTest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "SortedListTest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 !ELSEIF "$(CFG)" == "SortedListTest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "SortedListTest - Win32 Release" # Name "SortedListTest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # Begin Source File SOURCE=.\SortedListTest.cxx # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\SortedListTest.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/sortedlist/SortedListTest.h0100644000176200056700000000134310011414721022333 0ustar releasepostincr #include #include class SortedListTest:public PProcess { PCLASSINFO(SortedListTest, PProcess); public: SortedListTest(); void Main(); }; class DoSomeThing:public PThread { PCLASSINFO(DoSomeThing, PThread); public: DoSomeThing(PINDEX _index); void Main(); private: PINDEX index; PSortedList list; }; class PSafeString:public PSafeObject { PCLASSINFO(PSafeString, PSafeObject); PSafeString(const PString & _string); void PrintOn(ostream &strm) const; private: PString string; }; class DoSomeThing2:public PThread { PCLASSINFO(DoSomeThing2, PThread); public: DoSomeThing2(PINDEX _index); void Main(); private: PINDEX index; PSafeSortedList list; }; pwlib_v1_10_2/samples/sortedlist/precompile.cxx0100644000176200056700000000111510011414721022106 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for ThreadSafe * * Precompiled header generation file. * * Copyright 2002 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2004/02/08 11:13:21 rjongbloed * Fixed crash in heavily loaded multi-threaded systems using simultaneous sorted * lists, Thanks Federico Pinna, Fabrizio Ammollo and the gang at Reitek S.p.A. * * Revision 1.1 2002/05/01 04:16:44 robertj * Added thread safe collection classes. * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/strtest/0040755000176200056700000000000010512262773016562 5ustar releasepostincrpwlib_v1_10_2/samples/strtest/Makefile0100644000176200056700000000016210231363263020210 0ustar releasepostincr PROG = strtest SOURCES := main.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include ~/pwlib/make/ptlib.mak pwlib_v1_10_2/samples/strtest/main.cxx0100644000176200056700000001371110343317554020232 0ustar releasepostincr#include #include //////////////////////////////////////////////// // // test #1 - string concurrency test // #define SPECIALNAME "openH323" #define COUNT_MAX 2000000 BOOL finishFlag; template struct StringConv { static const char * ToConstCharStar(const S &) { return NULL; } }; template class StringHolder { public: StringHolder(const S & _str) : str(_str) { } S GetString() const { return str; } S str; void TestString(int count, const char * label) { if (finishFlag) return; S s = GetString(); const char * ptr = C::ToConstCharStar(s); //const char * ptr = s.c_str(); char buffer[20]; strncpy(buffer, ptr, 20); if (strcmp((const char *)buffer, SPECIALNAME)) { finishFlag = TRUE; cerr << "String compare failed at " << count << " in " << label << " thread" << endl; return; } if (count % 10000 == 0) cout << "tested " << count << " in " << label << " thread" << endl; } class TestThread : public PThread { PCLASSINFO(TestThread, PThread); public: TestThread(StringHolder & _holder) : PThread(1000,NoAutoDeleteThread), holder(_holder) { Resume(); } void Main() { int count = 0; while (!finishFlag && count < COUNT_MAX) holder.TestString(count++, "sub"); } StringHolder & holder; }; PThread * StartThread() { return new TestThread(*this); } }; struct PStringConv : public StringConv { static const char * ToConstCharStar(const PString & s) { return (const char *)s; } }; struct StdStringConv : public StringConv { static const char * ToConstCharStar(const std::string & s) { return s.c_str(); } }; void Test1() { ///////////////////// // // test #1 - string concurrency test // // uncomment this to test std::string //StringHolder holder(SPECIALNAME); // uncomment this to test PString StringHolder holder(SPECIALNAME); PThread * thread = holder.StartThread(); finishFlag = FALSE; int count = 0; while (!finishFlag && count < COUNT_MAX) holder.TestString(count++, "main"); finishFlag = TRUE; thread->WaitForTermination(9000); cerr << "finish" << endl; } //////////////////////////////////////////////// // // test #2 - SIP URL test // #include void Test2() { const char * urls[] = { "sip:12345678@voxgratia.org", "sip:12345678:5060@voxgratia.org", "sip:12345678:1234@voxgratia.org", NULL }; const char ** url = urls; while (*url != NULL) { PURL sipURL(*url); cout << "SIP URL : original = " << *url << ", URL = " << sipURL << endl; ++url; } } //////////////////////////////////////////////// // // test #3 - PBYTEArray test // void Test3() { { PBYTEArray buffer1(1024); PBYTEArray buffer2(buffer1); cout << "base address of PBYTEArray 1 = " << (void *)(buffer1.GetPointer()) << endl; cout << "base address of PBYTEArray 2 = " << (void *)(buffer1.GetPointer()) << endl; } { PString str1("hello"); PString str2(str1); str2 = "world"; cout << "base address of PString 1 = " << (void *)(str1.GetPointer()) << endl; cout << "base address of PString 2 = " << (void *)(str2.GetPointer()) << endl; } } //////////////////////////////////////////////// // // test #4 - PString test // void Test4() { { PString pstring1("hello world"); PString pstring2(pstring1); strcpy((char *)(const char *)pstring2, "overwrite"); cout << pstring1 << endl; cout << pstring2 << endl; } { PString pstring1("hello world"); PString pstring2(pstring1); strcpy(pstring2.GetPointer(), "overwrite"); cout << pstring1 << endl; cout << pstring2 << endl; } } //////////////////////////////////////////////// // // test #5 - queue channel test // #include class Test5Thread : public PThread { public: Test5Thread(PQueueChannel & _qchan) : PThread(100, NoAutoDeleteThread), qchan(_qchan) { Resume(); } void Main() { PThread::Sleep(2000); cout << "qchannel started" << endl; PINDEX i = 0; for (;;) { char buffer[29]; if (!qchan.Read(buffer, sizeof(buffer))) break; cout << "qchan: buffer read" << endl; PThread::Sleep(100); } cout << "qchannel ended" << endl; } protected: PQueueChannel & qchan; }; void Test5() { PTimer timer(5000); for (;;) { cout << "timer = " << timer.GetMilliSeconds() << endl; PThread::Sleep(200); } PQueueChannel qChannel(100); PThread * thrd = new Test5Thread(qChannel); char buffer[37]; memset(buffer, 'a', sizeof(buffer)); for (int i = 0; i < 3; ++i) { cout << "writing buffer " << i << endl; if (!qChannel.Write(buffer, sizeof(buffer))) { cout << "write failed" << endl; } } cout << "all buffers written" << endl; thrd->WaitForTermination(); cout << "main done" << endl; } //////////////////////////////////////////////// // // main // class StringTest : public PProcess { PCLASSINFO(StringTest, PProcess) public: void Main(); }; PCREATE_PROCESS(StringTest); void StringTest::Main() { PArgList & args = GetArguments(); if (args.GetCount() < 1) { cout << "usage: strtest num [args...]\n" << "\n" << "where num is one of the following tests\n" << "\n" << " 1 string concurrency test\n" << " 2 SIP URL test\n" << " 3 PBYTEArray test\n" << " 4 string test\n" << " 5 queuechannel test\n" << endl; return; } switch (args[0].AsInteger()) { case 1: Test1(); return; case 2: Test2(); return; case 3: Test3(); return; case 4: Test4(); return; case 5: Test5(); return; default: break; } cout << "error: unknown test number " << args[0] << endl; } pwlib_v1_10_2/samples/stunclient/0040755000176200056700000000000010512262773017242 5ustar releasepostincrpwlib_v1_10_2/samples/stunclient/Makefile0100644000176200056700000000027307751262302020700 0ustar releasepostincr# Simple makefile for the stunclient program PROG = stunclient SOURCES = main.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile pwlib_v1_10_2/samples/stunclient/main.cxx0100644000176200056700000000677510137364015020721 0ustar releasepostincr/* * main.cxx * * PWLib application source file for stunclient * * Main program entry point. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.6 2004/10/26 06:00:45 csoutheren * Added -t and -o options * * Revision 1.5 2004/02/24 11:15:48 rjongbloed * Added function to get external router address, also did a bunch of documentation. * * Revision 1.4 2003/02/05 06:26:49 robertj * More work in making the STUN usable for Symmetric NAT systems. * * Revision 1.3 2003/02/04 07:02:55 robertj * Removed ports in test, added delete of created udp socket. * * Revision 1.2 2003/02/04 05:23:59 craigs * Added new functions * * Revision 1.1 2003/02/04 03:31:04 robertj * Added STUN * */ #include #include "main.h" #include "version.h" #include PCREATE_PROCESS(StunClient); StunClient::StunClient() : PProcess("Equivalence", "stunclient", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } void StunClient::Main() { PArgList & args = GetArguments(); args.Parse("t-trace." "-no-trace." "o-output:" "-no-output."); PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); WORD portbase, portmax; switch (args.GetCount()) { case 0 : cout << "usage: stunclient stunserver [ portbase [ portmax ]]\n"; return; case 1 : portbase = 0; portmax = 0; break; case 2 : portbase = (WORD)args[1].AsUnsigned(); portmax = (WORD)(portbase+9); break; default : portbase = (WORD)args[1].AsUnsigned(); portmax = (WORD)args[2].AsUnsigned(); } PSTUNClient stun(args[0], portbase, portmax, portbase, portmax); cout << "NAT type: " << stun.GetNatTypeName() << endl; PIPSocket::Address router; if (!stun.GetExternalAddress(router)) { cout << "Could not get router address!" << endl; return; } cout << "Router address: " << router << endl; PUDPSocket * udp; if (!stun.CreateSocket(udp)) { cout << "Cannot create a socket!" << endl; return; } PIPSocket::Address addr; WORD port; udp->GetLocalAddress(addr, port); cout << "Socket local address reported as " << addr << ":" << port << endl; delete udp; PUDPSocket * udp1, * udp2; if (!stun.CreateSocketPair(udp1, udp2)) { cout << "Cannot create socket pair" << endl; return; } udp1->GetLocalAddress(addr, port); cout << "Socket 1 local address reported as " << addr << ":" << port << endl; udp2->GetLocalAddress(addr, port); cout << "Socket 2 local address reported as " << addr << ":" << port << endl; delete udp1; delete udp2; } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/stunclient/main.h0100644000176200056700000000223107617631770020343 0ustar releasepostincr/* * main.h * * PWLib application header file for stunclient * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.1 2003/02/04 03:31:04 robertj * Added STUN * */ #ifndef _StunClient_MAIN_H #define _StunClient_MAIN_H class StunClient : public PProcess { PCLASSINFO(StunClient, PProcess) public: StunClient(); virtual void Main(); }; #endif // _StunClient_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/stunclient/precompile.cxx0100644000176200056700000000201307617631770022127 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for stunclient * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2003/02/04 03:31:04 robertj * Added STUN * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/stunclient/stunclient.dsp0100644000176200056700000000751610034006205022131 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="stunclient" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=stunclient - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "stunclient.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "stunclient.mak" CFG="stunclient - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "stunclient - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "stunclient - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "stunclient - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "stunclient - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "stunclient - Win32 Release" # Name "stunclient - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/stunclient/stunclient.vcproj0100644000176200056700000001224210034010211022626 0ustar releasepostincr pwlib_v1_10_2/samples/stunclient/version.h0100644000176200056700000000223507617631770021110 0ustar releasepostincr/* * main.h * * PWLib application header file for stunclient * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _StunClient_VERSION_H #define _StunClient_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _StunClient_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/thread/0040755000176200056700000000000010512262773016321 5ustar releasepostincrpwlib_v1_10_2/samples/thread/Makefile0100644000176200056700000000016610267717122017761 0ustar releasepostincrPROG = thread SOURCES := thread.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/thread/thread.cxx0100644000176200056700000001260407606523035020315 0ustar releasepostincr/* * thread.cxx * * Sample program to test PWLib threads. * * Portable Windows Library * * Copyright (c) 2001,2002 Roger Hardiman * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Roger Hardiman * * $Log: thread.cxx,v $ * Revision 1.6 2003/01/07 10:04:13 rogerh * Revert to 2 seconds per phase * * Revision 1.5 2002/11/04 22:46:23 rogerh * Implement a Stop() method to make the threads terminate. * * Revision 1.4 2002/11/04 18:11:22 rogerh * Terminate the threads prior to deletion. * * Revision 1.3 2002/11/04 16:24:21 rogerh * Delete the threads, fixing a memory leak. * * Revision 1.2 2001/09/27 08:22:48 rogerh * Doing a flush on cout does not work on Mac OS X. So you do not see any * results until the program stops. So replace the printing of the numbers with * good old printf and fflush. * * Revision 1.1 2001/09/21 09:18:28 rogerh * Add a thread test program which demonstrates thread, suspend and resume. * * */ /* * This sample program tests threads is PWLib. It creates two threads, * one which display the number '1' and one which displays the number '2'. * It also demonstrates starting a thread with Resume(), using * Suspend() and Resume() to suspend a running thread and two different * ways to make a thread terminate. */ #include /* * Thread #1 displays the number 1 every 10ms. * When it is created, Main() starts executing immediatly. * The thread is terminated by calling Stop() which uses a PSyncPoint with a * 10ms timeout. */ class MyThread1 : public PThread { PCLASSINFO(MyThread1, PThread); public: MyThread1() : PThread(1000,NoAutoDeleteThread) { Resume(); // start running this thread when it is created. } void Main() { while (!shutdown.Wait(10)) { // 10ms delay printf("1 "); fflush(stdout); Sleep(10); } } void Stop() { // signal the shutdown PSyncPoint. On the next iteration, the thread's // Main() function will exit cleanly. shutdown.Signal(); } protected: PSyncPoint shutdown; }; /* * Thread #2 displays the number 2 every 10 ms. * This thread will not start automatically. We must call * Resume() after creating the thread. * The thread is terminated by calling Stop() which sets a local variable. */ class MyThread2 : public PThread { PCLASSINFO(MyThread2, PThread); public: MyThread2() : PThread(1000,NoAutoDeleteThread) { exitFlag = FALSE; } void Main() { while (1) { // Check if we need to exit exitMutex.Wait(); if (exitFlag == TRUE) { exitMutex.Signal(); break; } exitMutex.Signal(); // Display the number 2, then sleep for a short time printf("2 "); fflush(stdout); Sleep(10); // sleep 10ms } } void Stop() { // set the exit flag. On the next iteration, the thread's // Main() function will exit cleanly. exitMutex.Wait(); exitFlag = TRUE; exitMutex.Signal(); } protected: PMutex exitMutex; BOOL exitFlag; }; /* * The main program class */ class ThreadTest : public PProcess { PCLASSINFO(ThreadTest, PProcess) public: void Main(); }; PCREATE_PROCESS(ThreadTest); // The main program void ThreadTest::Main() { cout << "Thread Test Program" << endl; cout << "This program will display the following:" << endl; cout << " 2 seconds of 1 1 1 1 1..." << endl; cout << " followed by 2 seconds of 1 2 1 2 1 2 1 2 1 2..." << endl; cout << " followed by 2 seconds of 2 2 2 2 2..." << endl; cout << " followed by 2 seconds of 1 2 1 2 1 2 1 2 1 2..." << endl; cout << endl; cout << "It tests thread creation, suspend and resume functions." << endl; cout << endl; // Create the threads MyThread1 * mythread1; MyThread2 * mythread2; mythread1 = new MyThread1(); mythread2 = new MyThread2(); // Thread 1 should now be running, as there is a Resume() function // in the thread constructor. // Thread 2 should be suspended. // Sleep for three seconds. Only thread 1 will be running. // Display will show "1 1 1 1 1 1 1..." sleep(2); // Start the second thread. // Both threads should be running // Sleep for 3 seconds, allowing the threads to run. // Display will show "1 2 1 2 1 2 1 2 1 2..." mythread2->Resume(); sleep(2); // Suspend thread 1. // Sleep for 3 seconds. Only thread 2 should be running. // Display will show "2 2 2 2 2 2 2..." mythread1->Suspend(); sleep(2); // Resume thread 1. // Sleep for 3 seconds. Both threads should be running. // Display will show "1 2 1 2 1 2 1 2 1 2..." mythread1->Resume(); sleep(2); // Clean up mythread1->Stop(); mythread1->WaitForTermination(); cout << "Thread 1 terminated" << endl; mythread2->Stop(); mythread2->WaitForTermination(); cout << "Thread 2 terminated" << endl; delete mythread1; delete mythread2; } pwlib_v1_10_2/samples/threadex/0040755000176200056700000000000010512262773016656 5ustar releasepostincrpwlib_v1_10_2/samples/threadex/Makefile0100644000176200056700000000173710121172066020312 0ustar releasepostincr# # Makefile # # Makefile for threadex # # Copyright (c) 2003 Equivalence Pty. Ltd. # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is Portable Windows Library. # # The Initial Developer of the Original Code is Equivalence Pty. Ltd. # # Contributor(s): ______________________________________. # # $Log: Makefile,v $ # Revision 1.1 2004/09/13 01:13:26 dereksmithies # Initial release of VERY simple program to test PThread::WaitForTermination # # # # PROG = threadex SOURCES := main.cxx precompile.cxx include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/threadex/main.cxx0100644000176200056700000002321210361652266020325 0ustar releasepostincr/* * main.cxx * * PWLib application source file for threadex * * Main program entry point. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.9 2006/01/13 07:20:22 dereksmithies * add option to use threads generated by the PThread::Create call. * * Revision 1.8 2006/01/11 22:14:48 dereksmithies * Add autodelete test option to code. * Move Resume() operators out of the constructor for threads. * The Resume() operator is "ok" in the constructor, if Resume() is at the end of the constructor, * and the thread class does not have a descendant. * * Revision 1.7 2006/01/06 23:08:24 dereksmithies * Add some code, now it crashes on unix with the command args -d 1 -b * * Revision 1.6 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.5 2005/07/28 00:25:03 dereksmithies * Update console reading code so it works via a ssh connection to a remote machine. * Add D option to console, so report the average time taken by each iteration of the thread. * * Revision 1.4 2005/07/26 02:52:39 dereksmithies * Use different console handling code. Still get "console gone errors" when on * remote box. * * Revision 1.3 2005/07/26 01:43:05 dereksmithies * Set up so that only H or h or ? generate a help message. * * Revision 1.2 2005/07/26 00:46:22 dereksmithies * Commit code to provide two examples of waiting for a thread to terminate. * The busy wait method provides a method of testing PWLIB processes for closing * a thread. With a delay of 20ms, SMP box, we found some pwlib methods that * needed fixing. At the time of committing this change, the pwlib code was correct. * * Revision 1.1 2004/09/13 01:13:26 dereksmithies * Initial release of VERY simple program to test PThread::WaitForTermination * * Revision 1.3 2004/09/10 22:33:31 dereksmithies * Calculate time required to do the decoding of the dtmf symbol. * * Revision 1.2 2004/09/10 04:31:57 dereksmithies * Add code to calculate the detection rate. * * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #include "precompile.h" #include "main.h" #include "version.h" PCREATE_PROCESS(Threadex); #include #include Threadex::Threadex() : PProcess("Derek Smithies code factory", "threadex", MAJOR_VERSION, MINOR_VERSION, BUILD_TYPE, BUILD_NUMBER) { } /*Note: This program uses either a busy wait system to check for thread termination, or the WaitForTermination method supplied by pwlib. It was found that with sufficient number of iterations, busywaiting, and a delay of 20ms on a SMP machine that segfaults occurred. This program was used to verify the correct close down and creation process of a thread */ void Threadex::Main() { PArgList & args = GetArguments(); args.Parse( "a-autodelete." "-no-autodelete." "c-create." "-no-create." "h-help." "-no-help." "d-delay:" "-no-delay." "b-busywait." "-no-busywait." #if PTRACING "o-output:" "-no-output." "t-trace." "-no-trace." #endif "v-version." ); #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif if (args.HasOption('v')) { cout << "Product Name: " << GetName() << endl << "Manufacturer: " << GetManufacturer() << endl << "Version : " << GetVersion(TRUE) << endl << "System : " << GetOSName() << '-' << GetOSHardware() << ' ' << GetOSVersion() << endl; return; } if (args.HasOption('h')) { PError << "Available options are: " << endl << "-h or --help :print this help" << endl << "-v or --version print version info" << endl << "-d or --delay ## where ## specifies how many milliseconds the created thread waits for" << endl << "-b or --busywait where if specified will cause the created thread to be tested for termination using a busy wait." << endl << "-a or --autodelete where the pwlib methods for auto deleting a thread are used" << endl << "-c or --create Use the pwlib PThread::Create method to create a thread of the reqired type" << endl #if PTRACING << "o-output output file name for trace" << endl << "t-trace. trace level to use." << endl #endif << endl << endl << endl; return; } delay = 2000; if (args.HasOption('d')) delay = args.GetOptionString('d').AsInteger(); delay = PMIN(1000000, PMAX(0, delay)); cout << "Created thread will wait for " << delay << " milliseconds before ending" << endl; doBusyWait = args.HasOption('b'); doAutoDelete = args.HasOption('a'); doCreate = args.HasOption('c'); UserInterfaceThread ui; ui.Resume(); ui.WaitForTermination(); } ///////////////////////////////////////////////////////////////////////////// void DelayThread::Main() { PThread::Sleep(delay); } /////////////////////////////////////////////////////////////////////////// void LauncherThread::AutoCreatedMain(PThread &, INT param) { PThread::Sleep(param); } void LauncherThread::Main() { PINDEX delay = Threadex::Current().Delay(); BOOL doCreate = Threadex::Current().Create(); PThread *thread; if (Threadex::Current().AutoDelete()) { while (keepGoing) { if (doCreate) { thread = PThread::Create(PCREATE_NOTIFIER(AutoCreatedMain), delay, PThread::AutoDeleteThread, PThread::NormalPriority, "auto deleted %X"); } else { thread = new DelayThread(delay, TRUE); thread->Resume(); } // PThread::Sleep(1); iteration++; } return; } if (Threadex::Current().BusyWait()) { while (keepGoing) { if (doCreate) { thread = PThread::Create(PCREATE_NOTIFIER(AutoCreatedMain), delay, PThread::NoAutoDeleteThread, PThread::NormalPriority, "auto BusyWaited %X"); } else { DelayThread *thread = new DelayThread(delay); thread->Resume(); } while (!thread->IsTerminated()); delete thread; iteration++; } return; } while (keepGoing) { if (doCreate) { thread = PThread::Create(PCREATE_NOTIFIER(AutoCreatedMain), delay, PThread::NoAutoDeleteThread, PThread::NormalPriority, "auto WaitForTermination %X"); } else { DelayThread *thread = new DelayThread(delay); thread->Resume(); } thread->WaitForTermination(); delete thread; iteration++; } } void UserInterfaceThread::Main() { PConsoleChannel console(PConsoleChannel::StandardInput); cout << "This program will repeatedly create and destroy a thread until terminated from the console" << endl; PStringStream help; help << "Press : " << endl << " D average Delay time of each thread" << endl << " H or ? help" << endl << " R report count of threads done" << endl << " T time elapsed" << endl << " X or Q exit " << endl; cout << endl << help; LauncherThread launch; launch.Resume(); console.SetReadTimeout(P_MAX_INDEX); for (;;) { char ch = console.ReadChar(); switch (tolower(ch)) { case 'd' : { int i = launch.GetIteration(); if (i == 0) { cout << "Have not completed an iteration yet, so time per iteration is unavailable" << endl; } else { cout << "Average time per iteration is " << (launch.GetElapsedTime().GetMilliSeconds()/((double) i)) << " milliseconds" << endl; } cout << "Command ? " << flush; break; } case 'r' : cout << "\nHave completed " << launch.GetIteration() << " iterations" << endl; cout << "Command ? " << flush; break; case 't' : cout << "\nElapsed time is " << launch.GetElapsedTime() << " (Hours:mins:seconds.millseconds)" << endl; cout << "Command ? " << flush; break; case 'x' : case 'q' : cout << "Exiting." << endl; launch.Terminate(); launch.WaitForTermination(); return; break; case '?' : case 'h' : cout << help << endl; cout << "Command ? " << flush; default: break; } // end switch } // end for } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/threadex/main.h0100644000176200056700000001143410361652266017755 0ustar releasepostincr/* * main.h * * PWLib application header file for threadex * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.5 2006/01/13 07:20:22 dereksmithies * add option to use threads generated by the PThread::Create call. * * Revision 1.4 2006/01/11 22:14:48 dereksmithies * Add autodelete test option to code. * Move Resume() operators out of the constructor for threads. * The Resume() operator is "ok" in the constructor, if Resume() is at the end of the constructor, * and the thread class does not have a descendant. * * Revision 1.3 2006/01/06 23:08:24 dereksmithies * Add some code, now it crashes on unix with the command args -d 1 -b * * Revision 1.2 2005/07/26 00:46:22 dereksmithies * Commit code to provide two examples of waiting for a thread to terminate. * The busy wait method provides a method of testing PWLIB processes for closing * a thread. With a delay of 20ms, SMP box, we found some pwlib methods that * needed fixing. At the time of committing this change, the pwlib code was correct. * * Revision 1.1 2004/09/13 01:13:26 dereksmithies * Initial release of VERY simple program to test PThread::WaitForTermination * * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #ifndef _Threadex_MAIN_H #define _Threadex_MAIN_H /**This class is a simple simple thread that just creates, waits a period of time, and exits.It is designed to test the PwLib methods for reporting the status of a thread. This class will be created over and over- millions of times is possible if left long enough. If the pwlib thread status functions are broken, a segfault will result. Past enxperience has found a fault in pwlib with the BusyWait option on, with SMP machines and a delay period of 20ms */ class DelayThread : public PThread { PCLASSINFO(DelayThread, PThread); public: DelayThread(PINDEX _delay) : PThread(10000, NoAutoDeleteThread), delay(_delay) { } DelayThread(PINDEX _delay, BOOL) : PThread(10000, AutoDeleteThread), delay(_delay) { } void Main(); protected: PINDEX delay; }; //////////////////////////////////////////////////////////////////////////////// /**This thread handles the Users console requests to query the status of the launcher thread. It provides a means for the user to close down this program - without having to use Ctrl-C*/ class UserInterfaceThread : public PThread { PCLASSINFO(UserInterfaceThread, PThread); public: UserInterfaceThread() : PThread(10000, NoAutoDeleteThread) { } void Main(); protected: }; /////////////////////////////////////////////////////////////////////////////// /**This thread launches multiple instances of the BusyWaitThread. Each thread launched is busy monitored for termination. When the thread terminates, the thread is deleted, and a new one is created. This process repeats until segfault or termination by the user */ class LauncherThread : public PThread { PCLASSINFO(LauncherThread, PThread); public: LauncherThread() : PThread(10000, NoAutoDeleteThread) { iteration = 0; keepGoing = TRUE; } void Main(); PINDEX GetIteration() { return iteration; } virtual void Terminate() { keepGoing = FALSE; } PTimeInterval GetElapsedTime() { return PTime() - startTime; } PDECLARE_NOTIFIER(PThread, LauncherThread, AutoCreatedMain); protected: PINDEX iteration; PTime startTime; BOOL keepGoing; }; //////////////////////////////////////////////////////////////////////////////// class Threadex : public PProcess { PCLASSINFO(Threadex, PProcess) public: Threadex(); virtual void Main(); PINDEX Delay() { return delay; } BOOL AutoDelete() { return doAutoDelete; } BOOL BusyWait() { return doBusyWait; } BOOL Create() { return doCreate; } static Threadex & Current() { return (Threadex &)PProcess::Current(); } protected: PINDEX delay; BOOL doAutoDelete; BOOL doBusyWait; BOOL doCreate; }; #endif // _Threadex_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/threadex/precompile.cxx0100644000176200056700000000232110121172066021523 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for threadex * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2004/09/13 01:13:26 dereksmithies * Initial release of VERY simple program to test PThread::WaitForTermination * * Revision 1.1 2004/09/10 01:59:35 dereksmithies * Initial release of program to test Dtmf creation and detection. * * */ #include "precompile.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/threadex/precompile.h0100644000176200056700000000212610121172066021153 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for threadex * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.h,v $ * Revision 1.1 2004/09/13 01:13:26 dereksmithies * Initial release of VERY simple program to test PThread::WaitForTermination * * * * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/threadex/threadex.dsp0100644000176200056700000000761110121172066021163 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="threadex" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=threadex - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "threadex.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "threadex.mak" CFG="threadex - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "threadex - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "threadex - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "threadex - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "threadex - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib vfw32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "threadex - Win32 Release" # Name "threadex - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"precompile.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\precompile.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/threadex/threadex.dsw0100644000176200056700000000077610121172066021177 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "threadex"=.\threadex.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/threadex/version.h0100644000176200056700000000222510121172066020501 0ustar releasepostincr/* * main.h * * PWLib application header file for threadex * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _Threadex_VERSION_H #define _Threadex_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _Threadex_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/timing/0040755000176200056700000000000010512262773016341 5ustar releasepostincrpwlib_v1_10_2/samples/timing/Makefile0100644000176200056700000000011007624710103017761 0ustar releasepostincrPROG = timing SOURCES := timing.cxx include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/timing/precompile.cxx0100644000176200056700000000071510052400256021211 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for dnssrv * * Precompiled header generation file. * * Copyright 2003 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2004/05/18 12:25:18 rjongbloed * Added time, time interval and timer test/demonstration code * * Revision 1.1 2003/04/15 04:12:38 craigs * Initial version * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/timing/timing.cxx0100644000176200056700000001256310336460321020351 0ustar releasepostincr/* * timing.cxx * * Sample program to test PWLib PAdaptiveDelay. * * Portable Windows Library * * Copyright (c) 2003 Roger Hardiman * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Roger Hardiman * * $Log: timing.cxx,v $ * Revision 1.4 2005/11/15 22:27:29 dereksmithies * Modify output format so it better shows the delay characteristics of PAdaptiveDelay * * Revision 1.3 2004/05/18 12:47:38 rjongbloed * Added time, time interval and timer test/demonstration code * * Revision 1.2 2004/05/18 12:25:18 rjongbloed * Added time, time interval and timer test/demonstration code * * Revision 1.1 2003/02/19 14:10:11 rogerh * Add a program to test PAdaptiveDelay * * * */ #include #include /* * The main program class */ class TimingTest : public PProcess { PCLASSINFO(TimingTest, PProcess) public: void Main(); }; PCREATE_PROCESS(TimingTest); #define TEST_TIME(t) cout << t << " => " << PTime(t) << '\n' // The main program void TimingTest::Main() { cout << "Timing Test Program\n" << endl; PTime now; cout << "Time is now " << now.AsString("h:m:s.u d/M/y") << "\n" "Time is now " << now.AsString("yyyy/MM/dd h:m:s.uuuu") << "\n" "Time is now " << now.AsString("MMM/d/yyyyy w h:m:sa") << "\n" "Time is now " << now.AsString("wwww d/M/yyy h:m:s.uu") << "\n" "Time is now " << now.AsString("www d/MMMM/yy h:m:s.uuu") << endl; cout << "\nTesting time string conversion" << endl; TEST_TIME("20010203T1234Z"); TEST_TIME("20010203T1234"); TEST_TIME("20010203T0034"); TEST_TIME("20010203T10034"); TEST_TIME("20010203T123456+1100"); TEST_TIME("20010203T000056"); TEST_TIME("20010203T123456"); TEST_TIME("2001-02-03 T 12:34:56"); TEST_TIME("5/03/1999 12:34:56"); TEST_TIME("15/06/1999 12:34:56"); TEST_TIME("15/06/01 12:34:56 PST"); TEST_TIME("5/06/02 12:34:56"); TEST_TIME("5/23/1999 12:34am"); TEST_TIME("5/23/00 12:34am"); TEST_TIME("1999/23/04 12:34:56"); TEST_TIME("Mar 3, 1999 12:34pm"); TEST_TIME("3 Jul 2004 12:34pm"); TEST_TIME("12:34:56 5 December 1999"); TEST_TIME("10 minutes ago"); TEST_TIME("2 weeks"); cout << "\nTesting time interval arithmetic" << endl; PTime then("1 month ago"); PTimeInterval elapsed = now - then; cout << "Now=" << now << "\n" "Then=" << then << "\n" "Elapsed=" << elapsed << "\n" "Milliseconds=" << elapsed.GetMilliSeconds() << "\n" "Seconds=" << elapsed.GetSeconds() << "\n" "Minutes=" << elapsed.GetMinutes() << "\n" "Hours=" << elapsed.GetHours() << "\n" "Days=" << elapsed.GetDays() << endl; then += PTimeInterval(0,0,0,0,30); cout << "Then plus 30 days=" << then << endl; cout << "\nTesting timer resolution, reported as " << PTimer::Resolution() << "ms" << endl; time_t oldSec = time(NULL); // Wait for second boundary while (oldSec == time(NULL)) ; oldSec++; PTimeInterval newTick = PTimer::Tick(); PTimeInterval oldTick = newTick; unsigned count = 0; while (oldSec == time(NULL)) { // For one full second while (newTick == oldTick) newTick = PTimer::Tick(); oldTick = newTick; count++; // Count the changes in tick } ; cout << "Actual resolution is " << 1000000/count << "us" << endl; oldTick = 123456; cout << "TimeInterval output: \"" << setw(15) << newTick << '"' << endl; cout << "TimeInterval output: \"" << setw(15) << oldTick << '"' << endl; int p; for (p = 3; p < 10; p++) cout << "TimeInterval output: " << p << " \"" << setiosflags(ios::scientific) << setw(p) << setprecision(2) << oldTick << resetiosflags(ios::scientific) << '"' << endl; for (p = 3; p < 20; p++) cout << "TimeInterval output: " << p << " \"" << setw(p) << setprecision(2) << oldTick << '"' << endl; cout << "\nTesting sleep function" << endl; PTime start_time1; PINDEX loop; for(loop = 0; loop < 10; loop++) { Sleep(10 * 1000); //10 seconds, or 10 * 1000ms PTime now1; cout << now1-start_time1 << endl; } PTime end_time1; cout << "The first loop took "<< end_time1-start_time1 << " milliseconds." << endl; cout << "\nTesting adaptive delay function" << endl; PAdaptiveDelay delay; PTime start_time2; cout << "Start at " << start_time2.AsString("hh.mm:ss.uuu") << endl; for(loop = 0; loop < 10; loop++) { delay.Delay(150); PTime now2; cout << "#" << setw(2) << (loop + 1) <<" "; cout << "After " << setw(4) << ((loop + 1)* 150) << "ms, time is " << now2.AsString("hh.mm:ss.uuu"); PTimeInterval gap = now2-start_time2; cout << " Elapsed time since start is " << setfill('0') << setw(2) << gap.GetSeconds() << ":" << setw(3) << (gap.GetMilliSeconds() % 1000) << endl; } PTime end_time2; cout << "The second loop took "<< end_time2-start_time2 << " milliseconds." << endl; } pwlib_v1_10_2/samples/timing/timing.dsp0100644000176200056700000000647010052400256020331 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="timing" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=timing - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "timing.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "timing.mak" CFG="timing - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "timing - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "timing - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "timing - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /Zi /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 !ELSEIF "$(CFG)" == "timing - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "timing - Win32 Release" # Name "timing - Win32 Debug" # Begin Source File SOURCE=.\timing.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Target # End Project pwlib_v1_10_2/samples/timing/timing.vcproj0100644000176200056700000001144710052400256021046 0ustar releasepostincr pwlib_v1_10_2/samples/vidtest/0040755000176200056700000000000010512262773016534 5ustar releasepostincrpwlib_v1_10_2/samples/vidtest/Makefile0100644000176200056700000000165607653346705020213 0ustar releasepostincr# # Makefile # # Makefile for vidtest # # Copyright (c) 2003 Equivalence Pty. Ltd. # # The contents of this file are subject to the Mozilla Public License # Version 1.0 (the "License"); you may not use this file except in # compliance with the License. You may obtain a copy of the License at # http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is Portable Windows Library. # # The Initial Developer of the Original Code is Equivalence Pty. Ltd. # # Contributor(s): ______________________________________. # # $Log: Makefile,v $ # Revision 1.1 2003/04/29 00:56:37 dereks # Initial release for video testing. # # # # PROG = vidtest SOURCES := main.cxx precompile.cxx include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/vidtest/main.cxx0100644000176200056700000003453610343317555020215 0ustar releasepostincr/* * main.cxx * * PWLib application source file for vidtest * * Main program entry point. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.cxx,v $ * Revision 1.11 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.10 2005/08/09 09:08:11 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.9.4.1 2005/07/17 09:25:30 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.9 2005/03/10 08:10:57 dereksmithies * Use a more descriptive name for the manufacturer. * * Revision 1.8 2004/04/20 00:19:31 dereksmithies * Add code to generate compile time error if SDL is not installed. * * Revision 1.7 2004/01/18 14:20:26 dereksmithies * Opening of video devices for plugins works now. * * Revision 1.6 2003/12/14 10:01:25 rjongbloed * Resolved issue with name space conflict os static and virtual forms of GetDeviceNames() function. * * Revision 1.5 2003/12/08 01:28:52 dereksmithies * Compiles now with new video plugins. * * Revision 1.4 2003/11/04 03:21:26 dereksmithies * Fix compile on windows OS. * * Revision 1.3 2003/04/29 00:57:21 dereks * Add user interface, option setting for format/input/fake. Works on Linux. * * Revision 1.2 2003/04/28 14:30:21 craigs * Started rearranging code * * Revision 1.1 2003/04/28 08:18:42 craigs * Initial version * */ #include "precompile.h" #include "main.h" #include "version.h" PCREATE_PROCESS(VidTest); #include #include VidTest::VidTest() : PProcess("PwLib Video Example", "vidtest", 1, 0, ReleaseCode, 0) { grabber = NULL; display = NULL; } bool ParseSize(const PString & sizeString, unsigned & width, unsigned & height) { if (sizeString *= "qcif") { width = PVideoDevice::QCIFWidth; height = PVideoDevice::QCIFHeight; return true; } if (sizeString *= "cif") { width = PVideoDevice::CIFWidth; height = PVideoDevice::CIFHeight; return true; } if ((sizeString *= "cif4") || (sizeString *= "4cif")) { width = PVideoDevice::CIF4Width; height = PVideoDevice::CIF4Height; return true; } return sscanf(sizeString, "%ix%i", &width, &height) == 2 && width > 0 && height > 0; } void VidTest::Main() { PArgList & args = GetArguments(); args.Parse("h-help." "-input-driver:" "I-input-device:" "-input-format:" "-input-channel:" "-output-driver:" "O-output-device:" "F-colour-format:" "S-frame-size:" "R-frame-rate:" #if PTRACING "o-output:" "-no-output." "t-trace." "-no-trace." #endif ); #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif if (args.HasOption('h')) { PError << "Available options are: " << endl << endl << "--help : print this help message.\n" << "--input-driver drv : video grabber driver.\n" << "--input-device dev : video grabber device.\n" << "--input-format fmt : video grabber format (\"pal\"/\"ntsc\")\n" << "--input-channel num : video grabber channel.\n" << "--output-driver drv : video display driver to use.\n" << "--output-device dev : video display device to use.\n" << "--colour-format fmt : video colour size (\"rgb24\", \"yuv420\", etc)\n" << "--frame-size size : video frame size (\"qcif\", \"cif\", WxH)\n" << "--frame-rate size : video frame rate (frames/second)\n" #if PTRACING << "-o or --output file : file name for output of log messages\n" << "-t or --trace : degree of verbosity in error log (more times for more detail)\n" #endif << endl << " e.g. ./vidtest --videodevice Philips\\ 680\\ webcam --videosize small " << endl << endl; return; } PINDEX i; PString inputDriverName = args.GetOptionString("input-driver"); if (!inputDriverName.IsEmpty()) { grabber = PVideoInputDevice::CreateDevice(inputDriverName); if (grabber == NULL) { cerr << "Cannot use input driver name \"" << inputDriverName << "\", must be one of:\n"; PStringList drivers = PVideoInputDevice::GetDriverNames(); for (i = 0; i < drivers.GetSize(); i++) cerr << " " << drivers[i] << '\n'; cerr << endl; return; } } PStringList devices = PVideoInputDevice::GetDriversDeviceNames(inputDriverName); if (devices.IsEmpty()) { cerr << "No video input devices present"; if (!inputDriverName.IsEmpty()) cerr << " for driver \"" << inputDriverName << '"'; cerr << endl; return; } PString inputDeviceName = args.GetOptionString("input-device"); if (inputDeviceName.IsEmpty()) inputDeviceName = devices[0]; if (grabber == NULL) grabber = PVideoInputDevice::CreateDeviceByName(inputDeviceName); if (grabber == NULL || !grabber->Open(inputDeviceName, false)) { cerr << "Cannot use input device name \"" << inputDeviceName << "\", must be one of:\n"; for (i = 0; i < devices.GetSize(); i++) cerr << " " << devices[i] << '\n'; cerr << endl; return; } cout << "Grabber "; if (!inputDriverName.IsEmpty()) cout << "driver \"" << inputDriverName << "\" and "; cout << "device \"" << grabber->GetDeviceName() << "\" opened." << endl; if (args.HasOption("input-format")) { PVideoDevice::VideoFormat format; PCaselessString formatString = args.GetOptionString("input-format"); if (formatString == "PAL") format = PVideoDevice::PAL; else if (formatString == "NTSC") format = PVideoDevice::NTSC; else if (formatString == "SECAM") format = PVideoDevice::SECAM; else if (formatString == "Auto") format = PVideoDevice::Auto; else { cerr << "Illegal video input format name \"" << formatString << '"' << endl; return; } if (!grabber->SetVideoFormat(format)) { cerr << "Video input device could not be set to format \"" << formatString << '"' << endl; return; } } cout << "Grabber input format set to " << grabber->GetVideoFormat() << endl; if (args.HasOption("input-channel")) { int videoInput = args.GetOptionString("input-channel").AsInteger(); if (!grabber->SetChannel(videoInput)) { cerr << "Video input device could not be set to channel " << videoInput << endl; return; } } cout << "Grabber input channel set to " << grabber->GetChannel() << endl; int frameRate; if (args.HasOption("frame-rate")) frameRate = args.GetOptionString("frame-rate").AsInteger(); else frameRate = 15; if (!grabber->SetFrameRate(frameRate)) { cerr << "Video input device could not be set to frame rate " << frameRate << endl; return; } cout << "Grabber frame rate set to " << grabber->GetFrameRate() << endl; PString outputDriverName = args.GetOptionString("output-driver"); if (!outputDriverName.IsEmpty()) { display = PVideoOutputDevice::CreateDevice(outputDriverName); if (display == NULL) { cerr << "Cannot use output driver name \"" << inputDriverName << "\", must be one of:\n"; PStringList drivers = PVideoOutputDevice::GetDriverNames(); for (i = 0; i < drivers.GetSize(); i++) cerr << " " << drivers[i] << '\n'; cerr << endl; return; } } devices = PVideoOutputDevice::GetDriversDeviceNames(outputDriverName); if (devices.IsEmpty()) { cerr << "No video output devices present"; if (!outputDriverName.IsEmpty()) cerr << " for driver \"" << outputDriverName << '"'; cerr << endl; return; } PString outputDeviceName = args.GetOptionString("output-device"); if (outputDeviceName.IsEmpty()) { outputDeviceName = devices[0]; if (outputDeviceName == "NULL" && devices.GetSize() > 1) outputDeviceName = devices[1]; } if (display == NULL) display = PVideoOutputDevice::CreateDeviceByName(outputDeviceName); if (display == NULL || !display->Open(outputDeviceName, false)) { cerr << "Cannot use output device name \"" << outputDeviceName << "\", must be one of:\n"; for (i = 0; i < devices.GetSize(); i++) cerr << " " << devices[i] << '\n'; cerr << endl; return; } cout << "Display "; if (!outputDriverName.IsEmpty()) cout << "driver \"" << outputDriverName << "\" and "; cout << "device \"" << display->GetDeviceName() << "\" opened." << endl; unsigned width, height; if (args.HasOption("frame-size")) { PString sizeString = args.GetOptionString("frame-size"); if (!ParseSize(sizeString, width, height)) { cerr << "Illegal video frame size \"" << sizeString << '"' << endl; return; } } else { width = PVideoDevice::QCIFWidth; height = PVideoDevice::QCIFHeight; } if (!grabber->SetFrameSizeConverter(width, height, FALSE)) { cerr << "Video input device could not be set to size " << width << 'x' << height << endl; return; } cout << "Grabber frame size set to " << grabber->GetFrameWidth() << 'x' << grabber->GetFrameHeight() << endl; if (!display->SetFrameSizeConverter(width, height, FALSE)) { cerr << "Video output device could not be set to size " << width << 'x' << height << endl; return; } cout << "Display frame size set to " << display->GetFrameWidth() << 'x' << display->GetFrameHeight() << endl; PCaselessString colourFormat = args.GetOptionString("colour-format", "RGB24").ToUpper(); if (!grabber->SetColourFormatConverter(colourFormat) ) { cerr << "Video input device could not be set to colour format \"" << colourFormat << '"' << endl; return; } cout << "Grabber colour format set to " << grabber->GetColourFormat() << " ("; if (colourFormat == grabber->GetColourFormat()) cout << "native"; else cout << "converted to " << colourFormat; cout << ')' << endl; if (!display->SetColourFormatConverter(colourFormat)) { cerr << "Video output device could not be set to colour format \"" << colourFormat << '"' << endl; return; } cout << "Diaplay colour format set to " << display->GetColourFormat() << " ("; if (colourFormat == display->GetColourFormat()) cout << "native"; else cout << "converted from " << colourFormat; cout << ')' << endl; PThread::Create(PCREATE_NOTIFIER(GrabAndDisplay), 0, PThread::NoAutoDeleteThread, PThread::NormalPriority, "GrabAndDisplay"); // command line for (;;) { // display the prompt cout << "vidtest> " << flush; PCaselessString cmd; cin >> cmd; if (cmd == "q" || cmd == "x" || cmd == "quit" || cmd == "exit") break; if (cmd == "fg") { if (!grabber->SetVFlipState(!grabber->GetVFlipState())) cout << "\nCould not toggle Vflip state of video input device" << endl; continue; } if (cmd == "fd") { if (!display->SetVFlipState(!display->GetVFlipState())) cout << "\nCould not toggle Vflip state of video output device" << endl; continue; } unsigned width, height; if (ParseSize(cmd, width, height)) { pauseGrabAndDisplay.Signal(); if (!grabber->SetFrameSizeConverter(width, height, FALSE)) cout << "Video input device could not be set to size " << width << 'x' << height << endl; if (!display->SetFrameSizeConverter(width, height, FALSE)) cout << "Video output device could not be set to size " << width << 'x' << height << endl; resumeGrabAndDisplay.Signal(); continue; } cout << "Select:\n" " fg : Flip video input top to bottom\n" " fd : Flip video output top to bottom\n" " qcif : Set size of grab & display to qcif\n" " cif : Set size of grab & display to cif\n" " WxH : Set size of grab & display W by H\n" " Q or X : Exit program\n" << endl; } // end for cout << "Exiting." << endl; exitGrabAndDisplay.Signal(); } void VidTest::GrabAndDisplay(PThread &, INT) { PBYTEArray frame; unsigned frameCount = 0; bool oldGrabberState = true; bool oldDisplayState = true; grabber->Start(); display->Start(); PTimeInterval startTick = PTimer::Tick(); while (!exitGrabAndDisplay.Wait(0)) { bool grabberState = grabber->GetFrame(frame); if (oldGrabberState != grabberState) { oldGrabberState = grabberState; cerr << "Frame grab " << (grabberState ? "restored." : "failed!") << endl; } bool displayState = display->SetFrameData(0, 0, grabber->GetFrameWidth(), grabber->GetFrameHeight(), frame); if (oldDisplayState != displayState) { oldDisplayState = displayState; cerr << "Frame display " << (displayState ? "restored." : "failed!") << endl; } if (pauseGrabAndDisplay.Wait(0)) { pauseGrabAndDisplay.Acknowledge(); resumeGrabAndDisplay.Wait(); } frameCount++; } PTimeInterval duration = PTimer::Tick() - startTick; cout << frameCount << " frames over " << duration << " seconds at " << (frameCount*1000.0/duration.GetMilliSeconds()) << " fps." << endl; exitGrabAndDisplay.Acknowledge(); } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vidtest/main.h0100644000176200056700000000413210276071173017625 0ustar releasepostincr/* * main.h * * PWLib application header file for vidtest * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: main.h,v $ * Revision 1.3 2005/08/09 09:08:11 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.2.12.1 2005/07/17 09:25:31 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.2 2003/04/29 00:57:21 dereks * Add user interface, option setting for format/input/fake. Works on Linux. * * Revision 1.1 2003/04/28 08:18:42 craigs * Initial version * */ #ifndef _Vidtest_MAIN_H #define _Vidtest_MAIN_H class VidTest : public PProcess { PCLASSINFO(VidTest, PProcess) public: VidTest(); virtual void Main(); protected: PDECLARE_NOTIFIER(PThread, VidTest, GrabAndDisplay); PVideoInputDevice * grabber; PVideoOutputDevice * display; PSyncPointAck exitGrabAndDisplay; PSyncPointAck pauseGrabAndDisplay; PSyncPoint resumeGrabAndDisplay; }; #endif // _Vidtest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vidtest/precompile.cxx0100644000176200056700000000202107653161742021415 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for vidtest * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.cxx,v $ * Revision 1.1 2003/04/28 08:18:42 craigs * Initial version * */ #include "precompile.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vidtest/precompile.h0100644000176200056700000000220207653161742021043 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for vidtest * * Precompiled header generation file. * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: precompile.h,v $ * Revision 1.1 2003/04/28 08:18:42 craigs * Initial version * * Revision 1.1 2003/02/20 01:10:52 robertj * Changed precompiled header so can precompile more than just ptlib.h * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vidtest/version.h0100644000176200056700000000222107653161742020372 0ustar releasepostincr/* * main.h * * PWLib application header file for vidtest * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * Library dependencies: * * pwlib: v1.4.0 CVS tag: v1_4_0 * openh323: v1.10.0 CVS tag: v1_10_0 */ #ifndef _Vidtest_VERSION_H #define _Vidtest_VERSION_H #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #define BUILD_TYPE AlphaCode #define BUILD_NUMBER 1 #endif // _Vidtest_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vidtest/vidtest.dsp0100644000176200056700000000757610034006206020724 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="vidtest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=vidtest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "vidtest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "vidtest.mak" CFG="vidtest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "vidtest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "vidtest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "vidtest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\lib" !ELSEIF "$(CFG)" == "vidtest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"precompile.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib vfw32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\lib" !ENDIF # Begin Target # Name "vidtest - Win32 Release" # Name "vidtest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"precompile.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\precompile.h # End Source File # Begin Source File SOURCE=.\version.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/vidtest/vidtest.dsw0100644000176200056700000000077407653161742020750 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "vidtest"=.\vidtest.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/vidtest/vidtest.vcproj0100644000176200056700000001253610266437315021451 0ustar releasepostincr pwlib_v1_10_2/samples/vxmltest/0040755000176200056700000000000010512262773016740 5ustar releasepostincrpwlib_v1_10_2/samples/vxmltest/main.cxx0100644000176200056700000001024010071006066020371 0ustar releasepostincr/* * main.cxx * * PWLib application source file for vxmltest * * Main program entry point. * * Copyright 2002 Equivalence * * $Log: main.cxx,v $ * Revision 1.5 2004/07/01 13:05:58 rjongbloed * Rewrite of plug in system to use single global variable for all factories to avoid all sorts * of issues with startup orders and Windows DLL multiple instances. * * Revision 1.4 2004/06/19 09:00:35 csoutheren * Updated for TTS changes * * Revision 1.3 2004/06/02 08:30:22 csoutheren * Tweaks to avoid some problems with reading single bytes from a PCM stream * * Revision 1.2 2003/09/26 13:41:31 rjongbloed * Added special test to give more indicative error if try to compile without Expat support. * * Revision 1.1 2002/08/06 05:26:33 craigs * Initial version * */ #include #include #include #if !P_EXPAT #error Must have Expat XML support for this application #endif #include "main.h" PCREATE_PROCESS(Vxmltest); #define BUFFER_SIZE 1024 class ChannelCopyThread : public PThread { PCLASSINFO(ChannelCopyThread, PThread); public: ChannelCopyThread(PChannel & _from, PChannel & _to) : PThread(1000, NoAutoDeleteThread), from(_from), to(_to) { Resume(); } void Main(); protected: PChannel & from; PChannel & to; }; void ChannelCopyThread::Main() { for (;;) { from.SetReadTimeout(P_MAX_INDEX); PBYTEArray readData; if (!from.Read(readData.GetPointer(BUFFER_SIZE), 2)) { PTRACE(2, "Read error 1"); break; } from.SetReadTimeout(0); if (!from.Read(readData.GetPointer()+2, BUFFER_SIZE-2)) { if (from.GetErrorCode(PChannel::LastReadError) != PChannel::Timeout) { PTRACE(2, "Read error 2"); break; } } readData.SetSize(from.GetLastReadCount()+2); if (readData.GetSize() > 0) { if (!to.Write((const BYTE *)readData, readData.GetSize())) { PTRACE(2, "Write error"); break; } } } } Vxmltest::Vxmltest() : PProcess("Equivalence", "vxmltest", 1, 0, AlphaCode, 1) { } void Vxmltest::Main() { PArgList & args = GetArguments(); args.Parse( "t.-trace." "o:output:" "-tts:" ); #if PTRACING PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL, PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine); #endif if (args.GetCount() < 1) { PError << "usage: vxmltest [opts] doc\n"; return; } PTextToSpeech * tts = NULL; PFactory::KeyList_T engines = PFactory::GetKeyList(); if (engines.size() != 0) tts = PFactory::CreateInstance(engines[0]); if (tts == NULL) { PError << "error: cannot select default text to speech engine" << endl; return; } vxml = new PVXMLSession(tts); PString device = PSoundChannel::GetDefaultDevice(PSoundChannel::Player); PSoundChannel player; if (!player.Open(device, PSoundChannel::Player)) { PError << "error: cannot open sound device \"" << device << "\"" << endl; return; } cout << "Using audio device \"" << device << "\"" << endl; if (!vxml->Load(args[0])) { PError << "error: cannot loading VXML document \"" << args[0] << "\" - " << vxml->GetXMLError() << endl; return; } if (!vxml->Open(TRUE)) { PError << "error: cannot open VXML device in PCM mode" << endl; return; } cout << "Starting media" << endl; PThread * thread1 = new ChannelCopyThread(*vxml, player); inputRunning = TRUE; PThread * inputThread = PThread::Create(PCREATE_NOTIFIER(InputThread), 0, NoAutoDeleteThread); thread1->WaitForTermination(); inputRunning = FALSE; cout << "Press a key to continue" << endl; inputThread->WaitForTermination(); cout << "Media finished" << endl; } void Vxmltest::InputThread(PThread &, INT) { PConsoleChannel console(PConsoleChannel::StandardInput); while (inputRunning) { console.SetReadTimeout(100); int ch = console.ReadChar(); if (ch > 0) vxml->OnUserInput(PString((char)ch)); } } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vxmltest/main.h0100644000176200056700000000133610057310036020023 0ustar releasepostincr/* * main.h * * PWLib application header file for vxmltest * * Copyright 2002 Equivalence * * $Log: main.h,v $ * Revision 1.2 2004/06/02 08:30:22 csoutheren * Tweaks to avoid some problems with reading single bytes from a PCM stream * * Revision 1.1 2002/08/06 05:26:33 craigs * Initial version * */ #ifndef _Vxmltest_MAIN_H #define _Vxmltest_MAIN_H class PVXMLSession; class Vxmltest : public PProcess { PCLASSINFO(Vxmltest, PProcess) public: Vxmltest(); void Main(); PDECLARE_NOTIFIER(PThread, Vxmltest, InputThread); protected: BOOL inputRunning; PVXMLSession * vxml; }; #endif // _Vxmltest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vxmltest/precompile.cxx0100644000176200056700000000053407523657011021623 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for vxmltest * * Precompiled header generation file. * * Copyright 2002 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2002/08/06 05:26:33 craigs * Initial version * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/vxmltest/root.vxml0100644000176200056700000000104110057310036020612 0ustar releasepostincr
Select one of choice 1 choice 2 You selected 1 You selected 2
pwlib_v1_10_2/samples/vxmltest/vxmltest.dsp0100644000176200056700000000732410034006206021323 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="vxmltest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=vxmltest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "vxmltest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "vxmltest.mak" CFG="vxmltest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "vxmltest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "vxmltest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "vxmltest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlibs.lib winmm.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "vxmltest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib winmm.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "vxmltest - Win32 Release" # Name "vxmltest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/vxmltest/vxmltest.vcproj0100644000176200056700000001216410075461150022046 0ustar releasepostincr pwlib_v1_10_2/samples/xmlrpc/0040755000176200056700000000000010512262773016357 5ustar releasepostincrpwlib_v1_10_2/samples/xmlrpc/Makefile0100644000176200056700000000016507450020212020001 0ustar releasepostincrPROG = xmlrpc SOURCES := main.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/xmlrpc/main.cxx0100644000176200056700000002003507735041014020020 0ustar releasepostincr/* * main.cxx * * PWLib application source file for XMLRPCApp * * Main program entry point. * * Copyright 2002 Equivalence * * $Log: main.cxx,v $ * Revision 1.7 2003/09/26 13:41:32 rjongbloed * Added special test to give more indicative error if try to compile without Expat support. * * Revision 1.6 2003/04/15 03:00:41 robertj * Added array support to XML/RPC * Fixed XML/RPC parsing when lots of white space in raw XML, caused by * big fix to base XML parser not returning internal data elements. * * Revision 1.5 2002/12/04 02:09:17 robertj * Changed macro name prefix to PXMLRPC * * Revision 1.4 2002/12/04 00:16:18 robertj * Large enhancement to create automatically encoding and decoding structures * using macros to build a class. * * Revision 1.3 2002/10/04 05:16:44 craigs * Changed for new XMLRPC code * * Revision 1.2 2002/03/27 01:54:40 craigs * Added ability to send random struct as request * Added ability to preview request without sending * * Revision 1.1 2002/03/26 07:05:28 craigs * Initial version * */ /* Example command lines http://time.xmlrpc.com/RPC2 currentTime.getCurrentTime http://www.mirrorproject.com/xmlrpc mirror.Random http://xmlrpc.usefulinc.com/demo/server.php system.listMethods http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoString "A test!" -i http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoInteger 12 -f http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoFloat 3.121 -a http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoStringArray One Two Three Four -a -i http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoIntegerArray 11 222 3333 44444 -a -f http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoIntegerArray 1.1 22.23 333.333 4444.4444 -s http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoStruct first 1st second 2nd third 3rd -a -s http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoStructArray first 1st second 2nd third 3rd "," fourth 4th fifth 5th "," sixth 6th "," seventh 7th eigth 8th ninth 9th tenth 10th --echo-struct http://xmlrpc.usefulinc.com/demo/server.php interopEchoTests.echoStruct -s http://10.0.2.13:6666/RPC2 Function1 key value */ #include #include "main.h" #include #if !P_EXPAT #error Must have Expat XML support for this application #endif PXMLRPC_STRUCT_BEGIN(NestedStruct) PXMLRPC_STRING (NestedStruct, PString, another_string); PXMLRPC_INTEGER (NestedStruct, int, another_integer); PXMLRPC_STRUCT_END() PXMLRPC_STRUCT_BEGIN (TestStruct) PXMLRPC_STRING_INIT (TestStruct, PString, a_string, "A string!"); PXMLRPC_INTEGER_INIT (TestStruct, int, an_integer, 12); PXMLRPC_BOOLEAN_INIT (TestStruct, BOOL, a_boolean, TRUE); PXMLRPC_DOUBLE_INIT (TestStruct, double, a_float, 3.14159); PXMLRPC_DATETIME (TestStruct, PTime, a_date); PXMLRPC_BINARY (TestStruct, PBYTEArray, a_binary); PXMLRPC_ARRAY_STRING (TestStruct, PStringArray, PCaselessString, a_string_array); PXMLRPC_ARRAY_INTEGER(TestStruct, int, an_integer_array); PXMLRPC_ARRAY_DOUBLE (TestStruct, float, a_float_array); PXMLRPC_STRUCT (TestStruct, NestedStruct, nested_struct); PXMLRPC_ARRAY_STRUCT (TestStruct, NestedStruct, array_struct); PXMLRPC_STRUCT_END() PCREATE_PROCESS(XMLRPCApp); ///////////////////////////////////////////////////////////////////////////// XMLRPCApp::XMLRPCApp() : PProcess("Equivalence", "XMLRPCApp", 1, 0, AlphaCode, 1) { } void XMLRPCApp::Main() { PINDEX i; PArgList & args = GetArguments(); args.Parse("a-array." "d-debug." "f-float." "i-integer." "o-output:" "s-struct." "t-trace." "-echo-struct." ); PTrace::Initialise(args.GetOptionCount('t'), args.HasOption('o') ? (const char *)args.GetOptionString('o') : NULL); if (args.GetCount() < 2) { PError << "usage: xmlrpc url method [parms...]" << endl; return; } PString url = args[0]; PString method = args[1]; PXMLRPC rpc(url); PXMLRPCBlock request(method); PXMLRPCBlock response; if (args.HasOption("echo-struct")) { TestStruct ts; ts.a_date -= PTimeInterval(0, 0, 0, 0, 5); ts.a_binary.SetSize(10); for (i = 0; i < 10; i++) ts.a_binary[i] = (BYTE)(i+1); ts.a_string_array.SetSize(3); ts.a_string_array[0] = "first"; ts.a_string_array[1] = "second"; ts.a_string_array[2] = "third"; ts.an_integer_array.SetSize(7); for (i = 0; i < ts.an_integer_array.GetSize(); i++) ts.an_integer_array[i] = i+1; ts.a_float_array.SetSize(5); for (i = 0; i < ts.a_float_array.GetSize(); i++) ts.a_float_array[i] = (float)(1.0/(i+2)); ts.nested_struct.another_string = "Another string!"; ts.nested_struct.another_integer = 345; ts.array_struct.SetSize(2); ts.array_struct.SetAt(0, new NestedStruct); ts.array_struct[0].another_string = "Structure one"; ts.array_struct[0].another_integer = 11111; ts.array_struct.SetAt(1, new NestedStruct); ts.array_struct[1].another_string = "Structure two"; ts.array_struct[1].another_integer = 22222; request.AddParam(ts); } else { if (args.HasOption('a')) { if (args.HasOption('s')) { PArray array; PStringToString dict; PString key; for (i = 2; i < args.GetCount(); i++) { if (args[i] == ",") { array.SetAt(array.GetSize(), new PStringToString(dict)); dict = PStringToString(); key = PString::Empty(); } else if (key.IsEmpty()) key = args[i]; else { dict.SetAt(key, args[i]); key = PString::Empty(); } } if (!dict.IsEmpty()) array.SetAt(array.GetSize(), new PStringToString(dict)); request.AddArray(array); } else if (args.HasOption('i')) request.AddArray(args.GetParameters(2), "int"); else if (args.HasOption('f')) request.AddArray(args.GetParameters(2), "double"); else request.AddArray(args.GetParameters(2)); } else if (args.HasOption('s')) { PStringToString dict; for (i = 2; (i+1) < args.GetCount(); i += 2) { PString key = args[i]; PString value = args[i+1]; dict.SetAt(key, value); } request.AddStruct(dict); } else { for (i = 2; i < args.GetCount(); i++) { if (args.HasOption('i')) request.AddParam(args[i].AsInteger()); else if (args.HasOption('f')) request.AddParam(args[i].AsReal()); else request.AddParam(args[i]); } } } if (args.HasOption('d')) cout << "Request = " << request << endl; if (!rpc.MakeRequest(request, response)) { PError << "Error in request (" << rpc.GetFaultCode() << ") : " << rpc.GetFaultText() << endl; return; } // scan through the response and print it out cout << "Response" << endl; for (i = 0; i < response.GetParamCount(); i++) { cout << " " << i << ": "; PString type; PString val; if (response.GetParam(i, type, val)) { cout << type << " = "; if (type == "struct") { PStringToString dict; response.GetParam(i, dict); cout << '\n' << dict; } else if (type == "array") { PStringArray array; response.GetParam(i, array); cout << '\n' << setfill('\n') << array << setfill(' '); } else cout << val; } else cout << "error: " << response.GetFaultText(); cout << endl; } if (args.HasOption("echo-struct")) { TestStruct ts; ts.a_date = PTime(0); if (response.GetParam(0, ts)) cout << "Parsed response:\n" << ts; else cout << "Failed to parse resonse: " << response.GetFaultText(); cout << endl; } } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpc/main.h0100644000176200056700000000073507450016670017456 0ustar releasepostincr/* * main.h * * PWLib application header file for XMLRPCApp * * Copyright 2002 Equivalence * * $Log: main.h,v $ * Revision 1.1 2002/03/26 07:05:28 craigs * Initial version * */ #ifndef _XMLRPCApp_MAIN_H #define _XMLRPCApp_MAIN_H class XMLRPCApp : public PProcess { PCLASSINFO(XMLRPCApp, PProcess) public: XMLRPCApp(); void Main(); }; #endif // _XMLRPCApp_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpc/precompile.cxx0100644000176200056700000000053207450016670021237 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for xmlrpc * * Precompiled header generation file. * * Copyright 2002 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2002/03/26 07:05:28 craigs * Initial version * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpc/xmlrpc.dsp0100644000176200056700000000727710034006206020370 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="xmlrpc" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=xmlrpc - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "xmlrpc.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "xmlrpc.mak" CFG="xmlrpc - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "xmlrpc - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "xmlrpc - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "xmlrpc - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "xmlrpc - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # SUBTRACT LINK32 /map !ENDIF # Begin Target # Name "xmlrpc - Win32 Release" # Name "xmlrpc - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project pwlib_v1_10_2/samples/xmlrpc/xmlrpc.dsw0100644000176200056700000000147107450016670020403 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "Console Components"="..\pwlib\src\ptlib\msos\Console Components.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "xmlrpc"=.\xmlrpc.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name Console Components End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/xmlrpc/xmlrpc.vcproj0100644000176200056700000001141510034010211021061 0ustar releasepostincr pwlib_v1_10_2/samples/xmlrpcsrvr/0040755000176200056700000000000010512262773017274 5ustar releasepostincrpwlib_v1_10_2/samples/xmlrpcsrvr/Makefile0100644000176200056700000000020307555536214020733 0ustar releasepostincrPROG = xmlrpcsrvr SOURCES := main.cxx custom.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak pwlib_v1_10_2/samples/xmlrpcsrvr/custom.cxx0100644000176200056700000000615310343317555021335 0ustar releasepostincr/* * custom.cxx * * PWLib application source file for xmlrpcsrvr * * Customisable application configurationfor OEMs. * * Copyright 2001 Equivalence Pty. Ltd. */ #ifdef RC_INVOKED #include #else #include #include "custom.h" #endif #define MAJOR_VERSION 1 #define MINOR_VERSION 0 #ifndef BUILD_TYPE #define BUILD_TYPE ReleaseCode #endif #ifndef BUILD_NUMBER #define BUILD_NUMBER 1 #endif //////////////////////////////////////////////////// // // Variables required for PHTTPServiceProcess // //////////////////////////////////////////////////// #ifndef PRODUCT_NAME_TEXT #define PRODUCT_NAME_TEXT "PWLib XML/RPC Server" #endif #ifndef EXE_NAME_TEXT #define EXE_NAME_TEXT "xmlrpcsrvr" #endif #ifndef MANUFACTURER_TEXT #define MANUFACTURER_TEXT "Equivalence Pty. Ltd." #endif #ifndef COPYRIGHT_HOLDER #define COPYRIGHT_HOLDER MANUFACTURER_TEXT #endif #ifndef GIF_NAME #define GIF_NAME EXE_NAME_TEXT ".gif" #define GIF_WIDTH 380 #define GIF_HEIGHT 101 #endif #ifndef EMAIL #define EMAIL NULL #endif #ifndef HOME_PAGE #define HOME_PAGE NULL #endif #ifndef PRODUCT_NAME_HTML #define PRODUCT_NAME_HTML PRODUCT_NAME_TEXT #endif #ifdef RC_INVOKED #define AlphaCode alpha #define BetaCode beta #define ReleaseCode pl #define MkStr2(s) #s #define MkStr(s) MkStr2(s) #if BUILD_NUMBER==0 #define VERSION_STRING \ MkStr(MAJOR_VERSION) "." MkStr(MINOR_VERSION) #else #define VERSION_STRING \ MkStr(MAJOR_VERSION) "." MkStr(MINOR_VERSION) MkStr(BUILD_TYPE) MkStr(BUILD_NUMBER) #endif VS_VERSION_INFO VERSIONINFO #define alpha 1 #define beta 2 #define pl 3 FILEVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_TYPE,BUILD_NUMBER PRODUCTVERSION MAJOR_VERSION,MINOR_VERSION,BUILD_TYPE,BUILD_NUMBER #undef alpha #undef beta #undef pl FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG #else FILEFLAGS 0 #endif FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "0c0904b0" BEGIN VALUE "CompanyName", MANUFACTURER_TEXT "\0" VALUE "FileDescription", PRODUCT_NAME_TEXT "\0" VALUE "FileVersion", VERSION_STRING "\0" VALUE "InternalName", EXE_NAME_TEXT "\0" VALUE "LegalCopyright", "Copyright " COPYRIGHT_HOLDER " 2001\0" VALUE "OriginalFilename", EXE_NAME_TEXT ".exe\0" VALUE "ProductName", PRODUCT_NAME_TEXT "\0" VALUE "ProductVersion", VERSION_STRING "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0xc09, 1200 END END #else PHTTPServiceProcess::Info ProductInfo = { PRODUCT_NAME_TEXT, MANUFACTURER_TEXT, MAJOR_VERSION, MINOR_VERSION, PProcess::BUILD_TYPE, BUILD_NUMBER, __TIME__ __DATE__, {{ 0 }}, { NULL }, 0, {{ 0 }}, // Only relevent for commercial apps HOME_PAGE, EMAIL, PRODUCT_NAME_HTML, NULL, // GIF HTML, use calculated from below GIF_NAME, GIF_WIDTH, GIF_HEIGHT }; #endif // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpcsrvr/custom.h0100644000176200056700000000072107546532454020765 0ustar releasepostincr/* * custom.h * * PWLib application header file for xmlrpcsrvr * * Customisable application configurationfor OEMs. * * Copyright 2002 Equivalence * * $Log: custom.h,v $ * Revision 1.1 2002/10/02 08:58:20 craigs * Initial version * */ #include enum { SkName, SkCompany, SkEMail, NumSecuredKeys }; extern PHTTPServiceProcess::Info ProductInfo; // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpcsrvr/main.cxx0100644000176200056700000001045507735041014020742 0ustar releasepostincr/* * main.cxx * * PWLib application source file for xmlrpcsrvr * * Main program entry point. * * Copyright 2002 Equivalence * * $Log: main.cxx,v $ * Revision 1.4 2003/09/26 13:41:32 rjongbloed * Added special test to give more indicative error if try to compile without Expat support. * * Revision 1.3 2003/04/17 00:03:23 craigs * Changed default port from 6666 to 8000 to remove conflicts with other programs * that use that port by default * * Revision 1.2 2002/10/23 15:58:18 craigs * Fixed problem with parsing requests, and added sample return value * * Revision 1.1 2002/10/02 08:58:20 craigs * Initial version * */ #include #include "main.h" #include "custom.h" #if !P_EXPAT #error Must have Expat XML support for this application #endif PCREATE_PROCESS(Xmlrpcsrvr); const WORD DefaultHTTPPort = 8000; Xmlrpcsrvr::Xmlrpcsrvr() : PHTTPServiceProcess(ProductInfo) { xmlrpcServer = NULL; } BOOL Xmlrpcsrvr::OnStart() { GetFile().GetDirectory().Change(); httpNameSpace.AddResource(new PHTTPDirectory("data", "data")); httpNameSpace.AddResource(new PServiceHTTPDirectory("html", "html")); xmlrpcServer = new PXMLRPCServerResource(); xmlrpcServer->SetMethod("Function1", PCREATE_NOTIFIER(FunctionNotifier)); return PHTTPServiceProcess::OnStart(); } void Xmlrpcsrvr::OnStop() { PHTTPServiceProcess::OnStop(); delete xmlrpcServer; xmlrpcServer = NULL; } void Xmlrpcsrvr::OnConfigChanged() { } void Xmlrpcsrvr::OnControl() { } PString Xmlrpcsrvr::GetPageGraphic() { return Xmlrpcsrvr::GetPageGraphic(); } void Xmlrpcsrvr::AddUnregisteredText(PHTML &) { } BOOL Xmlrpcsrvr::Initialise(const char * initMsg) { // create the home page static const char welcomeHtml[] = "welcome.html"; if (PFile::Exists(welcomeHtml)) httpNameSpace.AddResource(new PServiceHTTPFile(welcomeHtml, TRUE), PHTTPSpace::Overwrite); else { PHTML html; html << PHTML::Title("Welcome to "+GetName()) << PHTML::Body() << "
\r\n" << PHTML::Heading(1) << "Welcome to " << gifHTML << PHTML::Heading(1) << PProcess::GetOSClass() << ' ' << PProcess::GetOSName() << " Version " << GetVersion(TRUE) << PHTML::BreakLine() << ' ' << compilationDate.AsString("d MMMM yy") << PHTML::BreakLine() << "by" << PHTML::BreakLine() << PHTML::Heading(3) << PHTML::HotLink(GetHomePage()) << GetManufacturer() << PHTML::HotLink() << PHTML::Heading(3) << PHTML::HotLink(PString("mailto:")+GetEMailAddress()) << GetEMailAddress() << PHTML::HotLink() << PHTML::Paragraph() << PHTML::HRule() << PHTML::Paragraph() << PHTML::HotLink("http://www.equival.com.au/xmlrpcsrvr/relnotes/" + GetVersion(TRUE) + ".html") << "Release notes" << PHTML::HotLink() << " on this version of " << GetProductName() << " are available." << PHTML::Paragraph() << PHTML::HRule() << GetCopyrightText() << PHTML::Body(); httpNameSpace.AddResource(new PServiceHTTPString("welcome.html", html), PHTTPSpace::Overwrite); } // note we do NOT use Overwrite httpNameSpace.AddResource(xmlrpcServer); // set up the HTTP port for listening & start the first HTTP thread if (ListenForHTTP(DefaultHTTPPort)) PSYSTEMLOG(Info, "Opened master socket for HTTP: " << httpListeningSocket->GetPort()); else { PSYSTEMLOG(Fatal, "Cannot run without HTTP port: " << httpListeningSocket->GetErrorText()); return FALSE; } PSYSTEMLOG(Info, "Service " << GetName() << ' ' << initMsg); return TRUE; } void Xmlrpcsrvr::Main() { Suspend(); } void Xmlrpcsrvr::FunctionNotifier(PXMLRPCServerParms & args, INT) { PTRACE(1, "XMLRPC function called"); PINDEX i; for (i = 0; i < args.request.GetParamCount(); i++) { PStringToString dict; PString type; PString value; if (args.request.GetParam(i, dict)) PTRACE(2, "XMLRPC argument " << i << " is struct: " << dict); else if (args.request.GetParam(i, type, value)) PTRACE(2, "XMLRPC argument " << i << " is " << type << " with value " << value); else PTRACE(2, "Cannot parse XMLRPC argument " << i); } args.response.AddParam("return value"); } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpcsrvr/main.h0100644000176200056700000000160207546532454020376 0ustar releasepostincr/* * main.h * * PWLib application header file for xmlrpcsrvr * * Copyright 2002 Equivalence * * $Log: main.h,v $ * Revision 1.1 2002/10/02 08:58:20 craigs * Initial version * */ #ifndef _Xmlrpcsrvr_MAIN_H #define _Xmlrpcsrvr_MAIN_H #include #include class Xmlrpcsrvr : public PHTTPServiceProcess { PCLASSINFO(Xmlrpcsrvr, PHTTPServiceProcess) public: Xmlrpcsrvr(); void Main(); BOOL OnStart(); void OnStop(); void OnConfigChanged(); void OnControl(); PString GetPageGraphic(); void AddUnregisteredText(PHTML & html); BOOL Initialise(const char * initMsg); PDECLARE_NOTIFIER(PXMLRPCServerParms, Xmlrpcsrvr, FunctionNotifier); protected: PXMLRPCServerResource * xmlrpcServer; }; #endif // _Xmlrpcsrvr_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpcsrvr/messages.mc0100644000176200056700000000051407546532454021432 0ustar releasepostincrMessageId=0x1 Language=English Fatal Error . MessageId=0x2 Language=English Error . MessageId=0x3 Language=English Warning . MessageId=0x4 Language=English Information . MessageId=0x5 Language=English Debug 1 . MessageId=0x6 Language=English Debug 2 . MessageId=0x7 Language=English Debug 3 . MessageId=0x1000 Language=English %1 . pwlib_v1_10_2/samples/xmlrpcsrvr/precompile.cxx0100644000176200056700000000053607546532454022171 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for xmlrpcsrvr * * Precompiled header generation file. * * Copyright 2002 Equivalence * * $Log: precompile.cxx,v $ * Revision 1.1 2002/10/02 08:58:20 craigs * Initial version * */ #include // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmlrpcsrvr/xmlrpcsrvr.dsp0100644000176200056700000001310210034006207022203 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="xmlrpcsrvr" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=xmlrpcsrvr - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "xmlrpcsrvr.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "xmlrpcsrvr.mak" CFG="xmlrpcsrvr - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "xmlrpcsrvr - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "xmlrpcsrvr - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "xmlrpcsrvr - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /c # ADD CPP /nologo /MD /W4 /GR /GX /O2 /D "NDEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "NDEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:windows /machine:I386 !ELSEIF "$(CFG)" == "xmlrpcsrvr - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W4 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "PTRACING" /Yu"ptlib.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" # ADD RSC /l 0xc09 /d "_DEBUG" /d "_AFXDLL" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibd.lib comdlg32.lib winspool.lib wsock32.lib mpr.lib kernel32.lib user32.lib gdi32.lib shell32.lib advapi32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "xmlrpcsrvr - Win32 Release" # Name "xmlrpcsrvr - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\custom.cxx # SUBTRACT CPP /YX /Yc /Yu # End Source File # Begin Source File SOURCE=.\main.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"ptlib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\custom.h # End Source File # Begin Source File SOURCE=.\main.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\xmlrpcsrvr.ico # End Source File # End Group # Begin Source File SOURCE=.\messages.mc !IF "$(CFG)" == "xmlrpcsrvr - Win32 Release" # Begin Custom Build - Building event log resources. InputDir=. IntDir=.\Release TargetName=xmlrpcsrvr InputPath=.\messages.mc InputName=messages BuildCmds= \ mc -h $(IntDir) -r $(IntDir) $(InputPath) \ echo 1 ICON $(InputDir)\$(TargetName).ico >> $(IntDir)\$(InputName).rc \ echo RCINCLUDE $(InputDir)\custom.cxx >> $(IntDir)\$(InputName).rc \ rc -i$(IntDir) -fo$(IntDir)\$(InputName).res $(IntDir)\$(InputName).rc \ "$(IntDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(IntDir)\$(InputName).rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(IntDir)\MSG00001.bin" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(IntDir)\$(InputName).res" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) # End Custom Build !ELSEIF "$(CFG)" == "xmlrpcsrvr - Win32 Debug" # Begin Custom Build - Building event log resources. InputDir=. IntDir=.\Debug TargetName=xmlrpcsrvr InputPath=.\messages.mc InputName=messages BuildCmds= \ mc -h $(IntDir) -r $(IntDir) $(InputPath) \ echo 1 ICON $(InputDir)\$(TargetName).ico >> $(IntDir)\$(InputName).rc \ echo RCINCLUDE $(InputDir)\custom.cxx >> $(IntDir)\$(InputName).rc \ rc -i$(IntDir) -fo$(IntDir)\$(InputName).res $(IntDir)\$(InputName).rc \ "$(IntDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(IntDir)\$(InputName).rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(IntDir)\MSG00001.bin" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(IntDir)\$(InputName).res" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) # End Custom Build !ENDIF # End Source File # End Target # End Project pwlib_v1_10_2/samples/xmlrpcsrvr/xmlrpcsrvr.dsw0100644000176200056700000000230207546532454022240 0ustar releasepostincrMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "Console"=..\..\src\ptlib\msos\Console.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "Console Components"="..\..\src\ptlib\msos\Console Components.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "PTLib"=..\..\src\ptlib\msos\PTLib.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "xmlrpcsrvr"=.\xmlrpcsrvr.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name Console Components End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### pwlib_v1_10_2/samples/xmlrpcsrvr/xmlrpcsrvr.ico0100644000176200056700000000207607546532454022225 0ustar releasepostincr 0& V( @?<80 0    0 8<?????'t3t9t<d>?Fit(this); GetSizer()->SetSizeHints(this); Centre(); ////@end _ConnectDialog creation return TRUE; } /*! * Control creation for ConnectDialog */ void _ConnectDialog::CreateControls() { ////@begin _ConnectDialog content construction _ConnectDialog* item1 = this; wxBoxSizer* item2 = new wxBoxSizer(wxVERTICAL); item1->SetSizer(item2); item1->SetAutoLayout(TRUE); wxFlexGridSizer* item3 = new wxFlexGridSizer(2, 2, 0, 0); item2->Add(item3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); wxStaticText* item4 = new wxStaticText( item1, wxID_STATIC, _("User ID"), wxDefaultPosition, wxDefaultSize, 0 ); item3->Add(item4, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxTextCtrl* item5 = new wxTextCtrl( item1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxSize(150, -1), 0 ); m_JID = item5; if (ShowToolTips()) item5->SetToolTip(_("Enter your jabber user id")); item3->Add(item5, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxStaticText* item6 = new wxStaticText( item1, wxID_STATIC, _("Password"), wxDefaultPosition, wxDefaultSize, 0 ); item3->Add(item6, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxTextCtrl* item7 = new wxTextCtrl( item1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxSize(150, -1), wxTE_PASSWORD ); m_Pwd = item7; if (ShowToolTips()) item7->SetToolTip(_("Enter your password")); item3->Add(item7, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxStaticText* item8 = new wxStaticText( item1, wxID_STATIC, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); item3->Add(item8, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxCheckBox* item9 = new wxCheckBox( item1, ID_CHECKBOX, _("Remember password"), wxDefaultPosition, wxDefaultSize, 0 ); m_RememberPwd = item9; item9->SetValue(FALSE); item9->SetHelpText(_("Check to save the password")); if (ShowToolTips()) item9->SetToolTip(_("Check to save the password")); item3->Add(item9, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxBoxSizer* item10 = new wxBoxSizer(wxHORIZONTAL); item2->Add(item10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); wxButton* item11 = new wxButton( item1, wxID_OK, _("Ok"), wxDefaultPosition, wxDefaultSize, 0 ); item11->SetDefault(); item10->Add(item11, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxButton* item12 = new wxButton( item1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); item10->Add(item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); ////@end _ConnectDialog content construction } /*! * Should we show tooltips? */ bool _ConnectDialog::ShowToolTips() { return TRUE; } pwlib_v1_10_2/samples/xmpptest/ConnectDialog.h0100644000176200056700000000503010047356205021610 0ustar releasepostincr///////////////////////////////////////////////////////////////////////////// // Name: ConnectDialog.h // Purpose: // Author: Federico Pinna // Modified by: // Created: 05/02/04 16:23:19 // RCS-ID: // Copyright: (c) 2004 Reitek S.p.A. // Licence: ///////////////////////////////////////////////////////////////////////////// #ifndef _CONNECTDIALOG_H_ #define _CONNECTDIALOG_H_ #if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "ConnectDialog.cxx" #endif /*! * Includes */ ////@begin includes ////@end includes /*! * Forward declarations */ ////@begin forward declarations ////@end forward declarations /*! * Control identifiers */ ////@begin control identifiers #define ID_DIALOG 10000 #define SYMBOL__CONNECTDIALOG_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL #define SYMBOL__CONNECTDIALOG_TITLE _("Connect") #define SYMBOL__CONNECTDIALOG_IDNAME ID_DIALOG #define SYMBOL__CONNECTDIALOG_SIZE wxSize(400, 300) #define SYMBOL__CONNECTDIALOG_POSITION wxDefaultPosition #define ID_TEXTCTRL 10001 #define ID_TEXTCTRL1 10002 #define ID_CHECKBOX 10003 ////@end control identifiers /*! * Compatibility */ #ifndef wxCLOSE_BOX #define wxCLOSE_BOX 0x1000 #endif /*! * _ConnectDialog class declaration */ class _ConnectDialog: public wxDialog { DECLARE_CLASS( _ConnectDialog ) DECLARE_EVENT_TABLE() public: /// Constructors _ConnectDialog( ); _ConnectDialog( wxWindow* parent, wxWindowID id = SYMBOL__CONNECTDIALOG_IDNAME, const wxString& caption = SYMBOL__CONNECTDIALOG_TITLE, const wxPoint& pos = SYMBOL__CONNECTDIALOG_POSITION, const wxSize& size = SYMBOL__CONNECTDIALOG_SIZE, long style = SYMBOL__CONNECTDIALOG_STYLE ); /// Creation bool Create( wxWindow* parent, wxWindowID id = SYMBOL__CONNECTDIALOG_IDNAME, const wxString& caption = SYMBOL__CONNECTDIALOG_TITLE, const wxPoint& pos = SYMBOL__CONNECTDIALOG_POSITION, const wxSize& size = SYMBOL__CONNECTDIALOG_SIZE, long style = SYMBOL__CONNECTDIALOG_STYLE ); /// Creates the controls and sizers void CreateControls(); ////@begin _ConnectDialog event handler declarations ////@end _ConnectDialog event handler declarations ////@begin _ConnectDialog member function declarations ////@end _ConnectDialog member function declarations /// Should we show tooltips? static bool ShowToolTips(); ////@begin _ConnectDialog member variables wxTextCtrl* m_JID; wxTextCtrl* m_Pwd; wxCheckBox* m_RememberPwd; ////@end _ConnectDialog member variables }; #endif // _CONNECTDIALOG_H_ pwlib_v1_10_2/samples/xmpptest/MainFrame.cxx0100644000176200056700000000706410275612277021331 0ustar releasepostincr///////////////////////////////////////////////////////////////////////////// // Name: MainFrame.cxx // Purpose: // Author: Federico Pinna // Modified by: // Created: 05/02/04 23:19:32 // RCS-ID: // Copyright: (c) 2004 Reitek S.p.A. // Licence: ///////////////////////////////////////////////////////////////////////////// #if defined(__GNUG__) && !defined(__APPLE__) #pragma implementation "MainFrame.h" #endif // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif ////@begin includes ////@end includes #include "main.h" ////@begin XPM images ////@end XPM images /*! * MainFrame type definition */ IMPLEMENT_CLASS( MainFrame, wxFrame ) /*! * MainFrame event table definition */ BEGIN_EVENT_TABLE( MainFrame, wxFrame ) ////@begin MainFrame event table entries EVT_MENU( ID_MENU, MainFrame::OnConnect ) EVT_MENU( ID_MENU1, MainFrame::OnDisconnect ) EVT_MENU( ID_MENU2, MainFrame::OnQuit ) ////@end MainFrame event table entries END_EVENT_TABLE() /*! * MainFrame constructors */ MainFrame::MainFrame( ) { } MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Create( parent, id, caption, pos, size, style ); } /*! * MainFrame creator */ bool MainFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { ////@begin MainFrame member initialisation m_RosterTree = NULL; ////@end MainFrame member initialisation ////@begin MainFrame creation wxFrame::Create( parent, id, caption, pos, size, style ); CreateControls(); Centre(); ////@end MainFrame creation return TRUE; } /*! * Control creation for MainFrame */ void MainFrame::CreateControls() { ////@begin MainFrame content construction MainFrame* item1 = this; wxStatusBar* item8 = new wxStatusBar( item1, ID_STATUSBAR, wxST_SIZEGRIP|wxNO_BORDER ); item8->SetFieldsCount(2); item1->SetStatusBar(item8); wxPanel* item9 = new wxPanel( item1, ID_PANEL, wxDefaultPosition, wxSize(100, 80), wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); wxGridSizer* item10 = new wxGridSizer(1, 1, 0, 0); item9->SetSizer(item10); item9->SetAutoLayout(TRUE); wxTreeCtrl* item11 = new wxTreeCtrl( item9, ID_TREECTRL, wxDefaultPosition, wxSize(100, 100), wxTR_HAS_BUTTONS |wxTR_HIDE_ROOT|wxTR_SINGLE ); m_RosterTree = item11; item10->Add(item11, 0, wxGROW|wxGROW, 5); wxMenuBar* menuBar = new wxMenuBar; wxMenu* item3 = new wxMenu; item3->Append(ID_MENU, _("Connect"), _T(""), wxITEM_NORMAL); item3->Append(ID_MENU1, _("&Disconnect"), _T(""), wxITEM_NORMAL); item3->AppendSeparator(); item3->Append(ID_MENU2, _("E&xit"), _T(""), wxITEM_NORMAL); menuBar->Append(item3, _("File")); item1->SetMenuBar(menuBar); ////@end MainFrame content construction } /*! * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU */ void MainFrame::OnConnect( wxCommandEvent& event ) { // Insert custom code here event.Skip(); } /*! * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU1 */ void MainFrame::OnDisconnect( wxCommandEvent& event ) { // Insert custom code here event.Skip(); } /*! * wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU2 */ void MainFrame::OnQuit( wxCommandEvent& event ) { // Insert custom code here event.Skip(); } /*! * Should we show tooltips? */ bool MainFrame::ShowToolTips() { return TRUE; } pwlib_v1_10_2/samples/xmpptest/MainFrame.h0100644000176200056700000000545210047356205020746 0ustar releasepostincr///////////////////////////////////////////////////////////////////////////// // Name: MainFrame.h // Purpose: // Author: Federico Pinna // Modified by: // Created: 05/02/04 23:19:32 // RCS-ID: // Copyright: (c) 2004 Reitek S.p.A. // Licence: ///////////////////////////////////////////////////////////////////////////// #ifndef _MAINFRAME_H_ #define _MAINFRAME_H_ #if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "MainFrame.cxx" #endif /*! * Includes */ ////@begin includes #include "wx/frame.h" #include "wx/statusbr.h" #include "wx/treectrl.h" ////@end includes /*! * Forward declarations */ ////@begin forward declarations class wxTreeCtrl; ////@end forward declarations /*! * Control identifiers */ ////@begin control identifiers #define ID_FRAME 10000 #define SYMBOL_MAINFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX #define SYMBOL_MAINFRAME_TITLE _("MainFrame") #define SYMBOL_MAINFRAME_IDNAME ID_FRAME #define SYMBOL_MAINFRAME_SIZE wxSize(280, 500) #define SYMBOL_MAINFRAME_POSITION wxDefaultPosition #define ID_MENU 10001 #define ID_MENU1 10005 #define ID_MENU2 10006 #define ID_STATUSBAR 10002 #define ID_PANEL 10003 #define ID_TREECTRL 10004 ////@end control identifiers /*! * Compatibility */ #ifndef wxCLOSE_BOX #define wxCLOSE_BOX 0x1000 #endif /*! * MainFrame class declaration */ class MainFrame: public wxFrame { DECLARE_CLASS( MainFrame ) DECLARE_EVENT_TABLE() public: /// Constructors MainFrame( ); MainFrame( wxWindow* parent, wxWindowID id = SYMBOL_MAINFRAME_IDNAME, const wxString& caption = SYMBOL_MAINFRAME_TITLE, const wxPoint& pos = SYMBOL_MAINFRAME_POSITION, const wxSize& size = SYMBOL_MAINFRAME_SIZE, long style = SYMBOL_MAINFRAME_STYLE ); bool Create( wxWindow* parent, wxWindowID id = SYMBOL_MAINFRAME_IDNAME, const wxString& caption = SYMBOL_MAINFRAME_TITLE, const wxPoint& pos = SYMBOL_MAINFRAME_POSITION, const wxSize& size = SYMBOL_MAINFRAME_SIZE, long style = SYMBOL_MAINFRAME_STYLE ); /// Creates the controls and sizers void CreateControls(); ////@begin MainFrame event handler declarations /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU virtual void OnConnect( wxCommandEvent& event ); /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU1 virtual void OnDisconnect( wxCommandEvent& event ); /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU2 virtual void OnQuit( wxCommandEvent& event ); ////@end MainFrame event handler declarations ////@begin MainFrame member function declarations ////@end MainFrame member function declarations /// Should we show tooltips? static bool ShowToolTips(); ////@begin MainFrame member variables wxTreeCtrl* m_RosterTree; ////@end MainFrame member variables }; #endif // _MAINFRAME_H_ pwlib_v1_10_2/samples/xmpptest/ReadMe.txt0100644000176200056700000000104510424674554020637 0ustar releasepostincrThe following files were removed in order to be compatible with the Debian distribution guidelines draft-ietf-xmpp-core-22.txt draft-ietf-xmpp-im-21.txt I'm not going to even try and understand why, but seeing as these files are old versions of documents available in many places on the Internet, I see no reason to make an issue of this. The following link is for those perverse individuals who want to try and understand what this is all about. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=365176 Craig Southeren, 30 April 2006pwlib_v1_10_2/samples/xmpptest/main.cxx0100644000176200056700000001326210047356205020404 0ustar releasepostincr/* * main.cxx * * PWLib application source file for XMPPTest * * Main program entry point. * * Copyright 2004 Reitek S.p.A. * * $Log: main.cxx,v $ * Revision 1.2 2004/05/09 07:23:49 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * Revision 1.1 2004/04/26 01:51:58 rjongbloed * More implementation of XMPP, thanks a lot to Federico Pinna & Reitek S.p.A. * * */ #include "main.h" #if !P_EXPAT #error Must have XML support for this application #endif /////////////////////////////////////////////////////////////////////////////// #include "ConnectDialog.h" class ConnectDialog : public _ConnectDialog { public: ConnectDialog(wxWindow *parent) : _ConnectDialog(parent) { } void SetJID(const PString& jid); void SetPwd(const PString& pwd); void SetRememberPwd(bool b = true); XMPP::JID GetJID() const; PString GetPwd() const; bool GetRememberPwd() const; }; void ConnectDialog::SetJID(const PString& jid) { if (m_JID) m_JID->SetValue((const char *)jid); } void ConnectDialog::SetPwd(const PString& pwd) { if (m_Pwd) m_Pwd->SetValue((const char *)pwd); } void ConnectDialog::SetRememberPwd(bool b) { if (m_RememberPwd) m_RememberPwd->SetValue(b); } XMPP::JID ConnectDialog::GetJID() const { return m_JID != NULL ? XMPP::JID(PString((const char *)m_JID->GetValue())) : PString::Empty(); } PString ConnectDialog::GetPwd() const { return m_Pwd != NULL ? (const char *)m_Pwd->GetValue() : PString::Empty(); } bool ConnectDialog::GetRememberPwd() const { return m_RememberPwd != NULL ? m_RememberPwd->GetValue() : false; } /////////////////////////////////////////////////////////////////////////////// /* BEGIN_EVENT_TABLE(XMPPFrame, wxFrame) EVT_SIZE(XMPPFrame::OnSize) EVT_MENU(XMPPFrame::MENU_FILE_CONNECT, XMPPFrame::OnConnect) EVT_MENU(XMPPFrame::MENU_FILE_DISCONNECT, XMPPFrame::OnDisconnect) EVT_MENU(XMPPFrame::MENU_FILE_QUIT, XMPPFrame::OnQuit) END_EVENT_TABLE() */ XMPPFrame::XMPPFrame() : MainFrame(NULL), m_Roster(new XMPP::Roster), m_Client(NULL) { m_Roster->RosterChangedHandlers().Add(new PCREATE_SMART_NOTIFIER(OnRosterChanged)); Show(TRUE); } XMPPFrame::~XMPPFrame() { } void XMPPFrame::OnConnect(wxCommandEvent& WXUNUSED(event)) { ConnectDialog * dlg = new ConnectDialog(this); if (m_Client != NULL) { dlg->SetJID(m_Client->GetJID()); // and the password... } if (dlg->ShowModal() == wxID_CANCEL) return; XMPP::JID jid = dlg->GetJID(); PString pwd = dlg->GetPwd(); dlg->Destroy(); if (m_Client != NULL) { m_Client->Stop(); if (!m_Client->IsTerminated()) m_Client->WaitForTermination(); delete m_Client; } m_Client = new XMPP::C2S::StreamHandler(jid, pwd); m_Client->SessionEstablishedHandlers().Add(new PCREATE_SMART_NOTIFIER(OnSessionEstablished)); m_Client->SessionReleasedHandlers().Add(new PCREATE_SMART_NOTIFIER(OnSessionReleased)); m_Client->MessageHandlers().Add(new PCREATE_SMART_NOTIFIER(OnMessage)); SetStatusText("Connecting...", 0); m_Client->Start(); } void XMPPFrame::OnDisconnect(wxCommandEvent& WXUNUSED(event)) { if (m_Client == NULL) return; m_Client->Stop(); if (!m_Client->IsTerminated()) m_Client->WaitForTermination(); delete m_Client; m_Client = NULL; } void XMPPFrame::OnQuit(wxCommandEvent& event) { OnDisconnect(event); Close(TRUE); } void XMPPFrame::OnSessionEstablished(XMPP::C2S::StreamHandler& client, INT) { SetStatusText("Connected", 0); m_Roster->Attach(m_Client); } void XMPPFrame::OnSessionReleased(XMPP::C2S::StreamHandler& client, INT) { SetStatusText("Disconnected", 0); m_Roster->Detach(); } void XMPPFrame::OnMessage(XMPP::Message& msg, INT) { // If it's valid and it's not in-band data if (msg.GetElement("data") == NULL) { wxMessageDialog dialog(this, (const char *)msg.GetBody(), (const char *)msg.GetFrom(), wxOK); dialog.ShowModal(); } } void XMPPFrame::OnRosterChanged(XMPP::Roster&, INT) { // rebuild the tree m_RosterTree->DeleteAllItems(); wxTreeItemId rootID = m_RosterTree->AddRoot(_T("root")); PDictionary groups; const XMPP::Roster::ItemList& l = m_Roster->GetItems(); for (PINDEX i = 0, imax = l.GetSize() ; i < imax ; i++) { const XMPP::Roster::Item& item = l[i]; const PStringSet& s = item.GetGroups(); for (PINDEX j = 0, jmax = s.GetSize() ; j < jmax ; j++) { const PString& key = s.GetKeyAt(j); wxTreeItemId g_id; if (!groups.Contains(key)) { g_id = m_RosterTree->AppendItem(rootID, (const char *)key); groups.SetAt(key, new POrdinalKey(g_id)); } g_id = (PINDEX)groups[key]; wxTreeItemId i_id = m_RosterTree->AppendItem(g_id, (const char *)item.GetName()); m_RosterTree->Expand(g_id); const XMPP::Roster::Item::PresenceInfo& pres = item.GetPresence(); for (PINDEX k = 0, kmax = pres.GetSize() ; k < kmax ; k++) { PString res = pres.GetKeyAt(k); if (pres[res].GetType() == XMPP::Presence::Available) { PString show; pres[res].GetShow(&show); res += " - " + show; m_RosterTree->AppendItem(i_id, (const char *)res); } } m_RosterTree->Expand(i_id); } } } /////////////////////////////////////////////////////////////////////////////// IMPLEMENT_APP(XMPPTest) XMPPTest::XMPPTest() : PProcess("Reitek S.p.A.", "XMPPTest", 1, 0, AlphaCode, 1) { } bool XMPPTest::OnInit() { #if PTRACING PTrace::Initialise(10, "jabber.log", PTrace::Blocks | PTrace::DateAndTime | PTrace::Thread | PTrace::FileAndLine); #endif // Create the main frame window SetTopWindow(new XMPPFrame()); return true; } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmpptest/main.h0100644000176200056700000000412510275612277020036 0ustar releasepostincr/* * main.h * * PWLib application header file for XMPPTest * * Copyright 2004 Reitek S.p.A. * * $Log: main.h,v $ * Revision 1.3 2005/08/08 08:15:59 rjongbloed * Fixed precompiled header usage * * Revision 1.2 2004/05/09 07:23:49 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * Revision 1.1 2004/04/26 01:51:58 rjongbloed * More implementation of XMPP, thanks a lot to Federico Pinna & Reitek S.p.A. * */ #ifndef _XMPPTest_MAIN_H #define _XMPPTest_MAIN_H #include #include #include #include #include #include #include "MainFrame.h" class XMPPFrameBase : public PObject { PCLASSINFO(XMPPFrameBase, PObject); PDECLARE_SMART_NOTIFIEE; protected: XMPPFrameBase() { PCREATE_SMART_NOTIFIEE; } PDECLARE_SMART_NOTIFIER(XMPP::C2S::StreamHandler, XMPPFrameBase, OnSessionEstablished) = 0; PDECLARE_SMART_NOTIFIER(XMPP::C2S::StreamHandler, XMPPFrameBase, OnSessionReleased) = 0; PDECLARE_SMART_NOTIFIER(XMPP::Message, XMPPFrameBase, OnMessage) = 0; PDECLARE_SMART_NOTIFIER(XMPP::Roster, XMPPFrameBase, OnRosterChanged) = 0; }; class XMPPFrame : public MainFrame, public XMPPFrameBase { // DECLARE_EVENT_TABLE() public: XMPPFrame(); ~XMPPFrame(); protected: // wxWidgets events virtual void OnConnect(wxCommandEvent& event); virtual void OnDisconnect(wxCommandEvent& event); virtual void OnQuit(wxCommandEvent& event); // pwlib events virtual void OnSessionEstablished(XMPP::C2S::StreamHandler&, INT); virtual void OnSessionReleased(XMPP::C2S::StreamHandler&, INT); virtual void OnMessage(XMPP::Message&, INT); virtual void OnRosterChanged(XMPP::Roster&, INT); private: XMPP::Roster * m_Roster; XMPP::C2S::StreamHandler * m_Client; }; class XMPPTest : public wxApp, public PProcess { PCLASSINFO(XMPPTest, PProcess); public: XMPPTest(); void Main() { } protected: // Initialise wxWidgets virtual bool OnInit(); }; #endif // _XMPPTest_MAIN_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmpptest/precompile.cxx0100644000176200056700000000076610275612277021633 0ustar releasepostincr/* * precompile.cxx * * PWLib application source file for XMPPTest * * Precompiled header generation file. * * Copyright 2004 Reitek S.p.A. * * $Log: precompile.cxx,v $ * Revision 1.2 2005/08/08 08:15:59 rjongbloed * Fixed precompiled header usage * * Revision 1.1 2004/04/26 01:51:58 rjongbloed * More implementation of XMPP, thanks a lot to Federico Pinna & Reitek S.p.A. * * */ #include "main.h" // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/samples/xmpptest/xmpptest.dsp0100644000176200056700000001141510277300052021320 0ustar releasepostincr# Microsoft Developer Studio Project File - Name="xmpptest" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=xmpptest - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "xmpptest.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "xmpptest.mak" CFG="xmpptest - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "xmpptest - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "xmpptest - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "xmpptest - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "$(WXDIR)\include" /I "$(WXDIR)\lib\vc_lib\msw" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"main.h" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x410 /d "NDEBUG" # ADD RSC /l 0x410 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 # ADD LINK32 ptclib.lib ptlib.lib wxmsw26_core.lib wxbase26.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib rpcrt4.lib wsock32.lib /nologo /subsystem:windows /machine:I386 /libpath:"$(WXDIR)\lib\vc_lib" !ELSEIF "$(CFG)" == "xmpptest - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "$(WXDIR)\include" /I "$(WXDIR)\lib\vc_lib\mswd" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /Yu"main.h" /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x410 /d "_DEBUG" # ADD RSC /l 0x410 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 ptclibd.lib ptlibsd.lib wxmsw26d_core.lib wxbase26d.lib kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib uuid.lib rpcrt4.lib ole32.lib oleaut32.lib imm32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"$(WXDIR)\lib\vc_lib" !ENDIF # Begin Target # Name "xmpptest - Win32 Release" # Name "xmpptest - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=.\ConnectDialog.cxx # End Source File # Begin Source File SOURCE=.\main.cxx !IF "$(CFG)" == "xmpptest - Win32 Release" !ELSEIF "$(CFG)" == "xmpptest - Win32 Debug" # ADD CPP /Yu !ENDIF # End Source File # Begin Source File SOURCE=.\MainFrame.cxx # End Source File # Begin Source File SOURCE=.\precompile.cxx # ADD CPP /Yc"main.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=.\ConnectDialog.h # End Source File # Begin Source File SOURCE=.\main.h # End Source File # Begin Source File SOURCE=.\MainFrame.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # Begin Source File SOURCE=".\draft-ietf-xmpp-core-22.txt" # End Source File # Begin Source File SOURCE=".\draft-ietf-xmpp-im-21.txt" # End Source File # End Target # End Project pwlib_v1_10_2/samples/xmpptest/xmpptest.vcproj0100644000176200056700000001620210276332413022041 0ustar releasepostincr pwlib_v1_10_2/ReadMe.txt0100644000176200056700000014142710072174371015307 0ustar releasepostincr Portable Windows Libary ======================= Contents -------- 1. Introduction 2. Apologies 3. CVS Access 4. Building PWLib 5. Using PWLib 6. IPv6 issues 7. Platform Specific Issues 8. Conclusion 9. Licensing ================================================================================ 1. Introduction --------------- PWLib is a moderately large class library that has its genesis many years ago as a method to product applications to run on both Microsoft Windows and Unix X-Windows systems. It also was to have a Macintosh port as well but this never eventuated. The parts of the library relating to GUI functions have also been removed. Since then the system has grown to include many classes that assist in writing complete multi-platform applications. Classes for I/O portability, multi-threading portability, aid in producing unix daemons and NT services portably and all sorts of internet protocols were added over the years. All this over and above basic "container" classes such as arrays, linear lists, sorted lists (RB Tree) and dictionaries (hash tables) which were all created before STL was standardized. Future versions of PWLib will see many of these classes replaced or supplemented by STL. The library was used extensively for all our in-house products. Then we decided to support the open H323 project by throwing in some of the code written for one of our products. Thus, required PWLib so it got thrown into the open source world as well. ================================================================================ 2. Apologies (not) ------------------ As you start using the library, the inevitable question "why did they do it that way?" will come up. The more experienced out there will know that there are several reasons for the way things are: * Carefully considered design, * Workarounds for portability and compiler subtleties, * History, it may be too hard to change an early design decision, * Complete arbitrariness, the absence of any compelling reason. So, when you ask the next question "why didn't you do it this way?" The answer will be one of the above. The last one being a synonym for "we didn't think of that!" The bottom line is, use the library as is or change it as you require. You can even send in suggestions for improvements (or merely changes) and we may (or may not) include them in the base line code. Just do not send us any mail starting with the words "Why did you..." as the answer is quite likely to be "Because!" ================================================================================ 3. CVS Access ------------- There is a public CVS archive available at cvs.sourceforge.net. To avoid everyone getting all of the code platforms, we have provided CVS "modules" that allow the Windows and Unix source trees to be extracted seperately. The available modules are: pwlib This ReadMe.txt file only ptlib_unix Unix libraries only ptlib_win32 Windows libraries only pwlib_win32 Windows libraries + GUI (no longer supported) openh323 OpenH323 only Note that the ptlib_unix, ptlib_win32 and pwlib_win32 modules all extract subcomponents of the pwlib directory tree using the CVS modules file - they are not different directories. To extract one of these modules, use a command line like the following: cvs -z3 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/openh323 co module where "module" is one of the module names specified above. If you would like see the structure of the CVS, then use the View CVS tool at: http://cvs.sourceforge.net/viewcvs.py/openh323/ ================================================================================ 4. Building PWLib ----------------- This library is multi-platform, however there are only two major build systems that are used. The Microsoft DevStudio environment for Windows and the GNU make system for all of the various unix systems. SPECIAL NOTE FOR MSVC 6 USERS: ------------------------------ If you are using MSVC 6 then please run the "msvc6_upgrade.bat" script in the PWLIB top directory before continuing. If you skip this step, you will not be able to compile PWLib on MSVC 6. If you change the build environment to bypass this step, then DLL versions of PWLib will not function correctly. For more information, please see: http://www.voxgratia.org/docs/pwlib_windows.html#msvc_headers 4.1. For Windows ---------------- Note that more complete instructions can be found at the following URL, but here are the basics: http://www.voxgratia.org/docs/pwlib_windows.html 1. Note you will need the bison and flex tools to compile some parts of the system. You can get a copy from http://www.openh323.org/bin/flexbison.zip, follow the instructions included in that package and put the executables somewhere in your path. 2. Start MSVC (v5, v6 or v7 (.NET)). If you have another compiler you are on your own! Add these folders to the Include Files path as follows: In VisualStudio v5/6 go into the Tools menu, Options item, Directories tab. In VisualStudio v7, go into the Tools menu, Options item. In the Options dialog, open the Projects folder, VC++ Directories item. In the 'Show Directories for:' list, select 'Include files'. C:\PWLib\Include Add the following to the Lib Files path and the Executable Files path: C:\PWLib\Lib The Lib folder is created as parts of PWLib are built. Also add this directory to your PATH environment variable (so the MergeSym tool can be found). 2. The build should automatically create a file pwlib/include/ptbuildopts.h via the configure.exe program that should be in the pwlib directory. If you have any problems try running the program directly from a command line. Use ".\configure --help" to get information on options such as forcing a feature or library dependency. Note there are additional notes in the "Platform Specific Issues" on how to compile the various libraries in a manner suitable for use by PWLib under Windows. 3. In VisualStudio v5/6 open the pwlib.dsw file in the pwlib top directory. If you have the minimum library it will come up with several requests to find .dsp files, just cancel past these. In VisualStudio v7 open the pwlib.sln file in the pwlib top directory. 4. That's it, now you're on your own! These are the project relationships: project dependencies output ------- ------------ ------ Console (none) ptlibs.lib MergeSym ptlibs.lib mergesym.exe PTLib ptlibs.lib, mergesym.exe ptlib.dll & lib Console Components (none) ptclib.lib MSDevWizard (none) PWLibWizard.awx XMLRPC ptlibs.lib, ptclib.lib xmlrpc.exe PacketVXD (none) epacket.vxd Debug versions append 'd' to filename, ie: ptlibsd.lib. MSDevWizard will not build in VisualStudio v7 and so is not included as a project. -------------------------------------------------------------------------------- 4.2. For unix. -------------- 1. If you have not put pwlib it into your home directory (~/pwlib) then you will have to defined the environment variable PWLIBDIR to point to the correct directory. Also make sure you have added the $PWLIBDIR/lib directory to your LD_LIBRARY_PATH environment variable if you intend to use shared libraries (the default). 2. Build the debug and release versions of the PWLib library as follows: cd ~/pwlib ./configure make This may take some time. Note, you will need bison and flex for this to compile, most unix systems have these. WARNING: there is a bug in most of the bison.simple files. See below for details. PWLib requires GNU Make. If GNU Make (gmake) is not your default make program (eg FreeBSD users), you will need to install GNU Make first and then use cd ~/pwlib ./configure gmake If you are getting huge numbers of errors during the compile, then it is likely your platform is not supported, or you have incorrectly set the OSTYPE and MACHTYPE variables. 3. That's all there is to it, you are now on your own! Bison problem under Unix The bison.simple file on many releases will not compile with the options used by the PWLib getdate.y grammar. The options are required to make the date parser thread safe so it is necessary to edit the bison.simple file to fix the problem. The file is usually at /usr/lib/bison.simple but in the tradition of unix could actually be anywhere. We leave it up to you to find it. The code: /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ int yyparse (void); #endif should be changed to /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ #ifndef YYPARSE_PARAM int yyparse (void); #endif #endif To prevent the incorrect function prototype from being defined. The getdate.y should then produce a getdate.tab.c file that will actually compile. ================================================================================ 5. Using PWLib -------------- What documentation there is consists of this document and all of the header files. It was intended that a post processer go through the header files and produces HTML help files, but this never got completed. 5.1. Tutorial ------------- Detailed tutorials will almost certainly not be forthcoming. However, at least giving you an indication on how to start an application would be usefull, so here is the infamous "Hello world!" program. // hello.cxx #include class Hello : public PProcess { PCLASSINFO(Hello, PProcess) public: void Main(); }; PCREATE_PROCESS(Hello) void Hello::Main() { cout << "Hello world!\n"; } // End of hello.cxx The CREATE_PROCESS macro actually defines the main() function and creates an instance of Hello. This assures that everything is initialised in the correct order. C++ does initialisation of global statics badly (and destruction is even worse), so try to put everything into your PProcess descedent rather than globals. A GUI application is very similar but is descended off PApplication rather than PProcess, and would create a window as a descendent off the PMainWindow class. The following is a simple Makefile for Unix platforms for the hello world program. # Simple makefile for PTLib PROG = hello SOURCES = hello.cxx ifndef PWLIBDIR PWLIBDIR=$(HOME)/pwlib endif include $(PWLIBDIR)/make/ptlib.mak # End of Makefile -------------------------------------------------------------------------------- 5.2. PWlib Classes ------------------ The classes in PWLib fall into the following broad categories Containers I/O Threads & Processes 5.2.1. Containers While there are a number of container classes you wourld rarely actually descend off them, you would use macros that declare type safe descendents. These are simply templates instantiations when using a compiler that supports templates in a simple manner (GNU C++ does not qualify in our opinion). 5.2.2. I/O There are many classes descendend from a basic primitive call a PChannel, which represents an entity for doing I/O. There are classes for files, serial ports, various types of socket and pipes to sub-processes. 5.2.3. Threads & Processes These classes support lightweight threading and functionality to do with the process as a whole (for example argument parsing). The threading will be pre-emptive on platforms that support it (Win32, platforms with pthreads eg Linux and FreeBSD) and cooperative on those that don't. ================================================================================ 6. IPv6 support in pwlib ------------------------ The IPv6 support in pwlib is still experimental. You have to get the latest CVS version to compile it (does work since 7th November 2002). Pwlib can be compiled with or without the IPv6 support. When compiled with the IPv6 support, applications using only IPv4 are still fully backward compatible. Pwlib is able to manage simultaneously IPv4 and IPv6 connections. -------------------------------------------------------------------------------- 6.1. Windows platforms ---------------------- According to microsoft, IPv6 is not supported under 9x, experimental on Win2000, supported on XP. You must use a compiler with IPv6 aware includes and libraries: - VC6 must be patched to support RFC 2553 structure. (See 7.1 and 7.2 for patch) - .Net should be ok (to be confirmed) The port as been performed with VC6 patched on a win2000 platform. For more informations about IPv6 support: Microsoft IPv6 support: http://research.microsoft.com/msripv6/ IPv6 for win2000: http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp IPv6 for XP: http://www.microsoft.com/windowsxp/pro/techinfo/administration/ipv6/default.asp 6.1.1. Windows platforms: Win2000 --------------------------------- Go to Microsoft win2000 IPv6 tech preview web page. http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp Download the 'tpipv6-001205.exe' file and read carrefully the faq. http://msdn.microsoft.com/downloads/sdks/platform/tpipv6/faq.asp This program is designed for win2000 English Service pack 1. To install it on newer Service pack, you have to modify some files. Again, read the Faq. This install the IPv6 driver and the IPv6 includes. 6.1.2. Windows platforms: XP ---------------------------- Read the IPv6 faq for windows XP http://www.microsoft.com/windowsxp/pro/techinfo/administration/ipv6/default.asp The 'ipv6 install' command installs only the IPv6 drivers. You need to install additionnals IPv6 includes for VC6. .NET should be ready. (to be confirmed ....) 6.1.3. Compiling ---------------- To compile pwlib and openh323 with the IPv6 support you have to set an environment variable: IPV6FLAG=1 Set it using: [Start]/[Configuration pannel]/[System]/[Environment] Add the IPv6 SDK include path in your Visual C++ 6 environment: [Tools]/[Options]/[Directories]/[Include files] -------------------------------------------------------------------------------- 6.2. Linux platforms -------------------- Recent Linux distributions support IPv6. 2.4 kernels are IPv6 aware. Linux IPv6 Faq: http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/ 6.2.1. Enabling IPv6 support ---------------------------- IPv6 can be compiled statically in the kernel or compiled as a module. To load the IPv6 module, as 'root' #modprobe ipv6 6.2.2. Compiling -------------- Check that IPv6 is really on #ls /proc/net/if_inet6 If this file exists, then IPv6 support is compiled in pwlib and openh323. -------------------------------------------------------------------------------- 6.3. Testing ------------ The test application sources can be found in the directory: openh323/samples/simple Once compiled the binaries are in simple/debug, release, obj_linux_x86_d, or obj_linux_x86_r. Under windows, the test application is simple.exe Under linux, the test application is simh323 IPv6 support can be tested on only one machine. Just open two shell/command windows. 6.3.1. IPv6 Address and port notation ------------------------------------- IPv4 address and port are written in dot notation: xx.xx.xx.xx:4000 IPv6 global address are written in semi-colon notation: [xx:xx:xx:xx::xx]:4000 IPv6 scoped address ad a field for the scope: [xx:xx:xx:xx::xx%scope]:4000 Exemples: Global address [3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5]:4000 [3ffe:0b80:0002:f9c1::500b:0ea5]:4000 Scoped address [fe80::232:56ff:fe95:315%lnc0]:4000 Scoped address are not supported yet. 6.3.2. Tests configuration -------------------------- Tests 1,2,3 run on a single dual stack machine. IPv4 Address: 127.0.0.1, 10.0.0.6 IPv6 Address: ::1, 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 Tests 4,5,6 run on two dual stack machine. PC1 IPv4 Address: 10.0.0.6 IPv6 Address: ::1, 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 PC2 IPv4 Address: 10.0.0.8 IPv6 Address: ::1, 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6 6.3.3. Test 1: IPv4 <--> IPv4 local call ---------------------------------------- This test checks the backward compatibility with IPv4 In first shell/command window, listen on 127.0.0.1, wait for a call. simple.exe -tttt -n -i 127.0.0.1 -l -a In second shell/command window, listen on 10.0.0.6, call 127.0.0.1 simple.exe -tttt -n -i 10.0.0.6 -n 127.0.0.1 6.3.4. Test 2: IPv6 <--> IPv6 local call ---------------------------------------- This test checks the IPv6 support In first shell/command window, listen on ::1, wait for a call. simple.exe -tttt -n -i ::1 -l -a In second shell/command window, listen on IPv6 address, call ::1 simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 -n [::1] 6.3.5. Test 3: IPv4 <--> IPv6 local call ---------------------------------------- This test checks that simultaneous IPv4 and IPv6 calls are supported. In first shell/command window, listen on 127.0.0.1, wait for a call. simple.exe -tttt -n -i 127.0.0.1 -l -a In second shell/command window, listen on IPv6 address, call 127.0.0.1 simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 -n 127.0.0.1 6.3.6. Test 4: IPv4 <--> IPv4 call between two hosts ---------------------------------------------------- This test checks the backward compatibility with IPv4 First host, listen on 10.0.0.6, wait for a call. simple.exe -tttt -n -i 127.0.0.1 -l -a Second host, listen on 10.0.0.8, call 10.0.0.6 simple.exe -tttt -n -i 10.0.0.8 -n 10.0.0.6 6.3.7. Test 5: IPv6 <--> IPv6 call between two hosts ---------------------------------------------------- This test checks the IPv6 support First host, listen on 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5, wait for a call. simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 -l -a Second host, listen on 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6, call 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6 -n [3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5] 6.3.8. Test 6: IPv4 <--> IPv6 call between two hosts ---------------------------------------------------- This test checks that simultaneous IPv4 and IPv6 calls are supported. First host, listen on 10.0.0.6, wait for a call. simple.exe -tttt -n -i 10.0.0.6 -l -a Second host, listen on 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6, call 10.0.0.6 simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6 -n 10.0.0.6 -------------------------------------------------------------------------------- 6.4. Known limitations -------------------- You must use IPv6 address with global scope. Tests with IPv6 local link address fail. -------------------------------------------------------------------------------- 6.5. Questions -------------- 6.5.1. How to patch my VC6 includes files ? ----------------------------------------- To patch you Developper studio Visual C++ version 6, just edit the file "C:\Program Files\Microsoft Visual Studio\VC98\Include\ws2tcpip.h", and add the sin6_scope_id field in the sockadd_in6 structure. struct sockaddr_in6 { short sin6_family; /* AF_INET6 */ u_short sin6_port; /* Transport level port number */ u_long sin6_flowinfo; /* IPv6 flow information */ struct in_addr6 sin6_addr; /* IPv6 address */ u_long sin6_scope_id; /* scope id (new in RFC2553) */ <--- Add this one }; This may have an impact on you system stability, use it only on experimental platforms. Using .NET compiler should be a better solution. 6.5.2. Why do I need to modify my Visual C++6 include files ? ----------------------------------------------------------- Visual Studio C++ version 6 implements the old RFC 2133 in file "ws2tcpip.h". RFC 2133 defines a 24 byte sockaddr_in6 structure. struct sockaddr_in6 { short sin6_family; /* AF_INET6 */ u_short sin6_port; /* Transport level port number */ u_long sin6_flowinfo; /* IPv6 flow information */ struct in_addr6 sin6_addr; /* IPv6 address */ }; This RFC as been replaced by RFC 2553. RFC 2133 defines a 28 byte addsock_in6 structure. struct sockaddr_in6 { short sin6_family; /* AF_INET6 */ u_short sin6_port; /* Transport level port number */ u_long sin6_flowinfo; /* IPv6 flow information */ struct in_addr6 sin6_addr; /* IPv6 address */ u_long sin6_scope_id; /* scope id (new in RFC2553) */ }; 6.5.3. How to get an ipv6 address with a Global scope ? ----------------------------------------------------- 6.5.3.1. Manually ----------------- Set one manually if you're not connected to IPv4 Internet or IPv6 backbone: #ip -6 addr add 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 dev eth0 (this address is owned by freenet6.net). Check the address is set. #ifconfig eth0 Lien encap:Ethernet HWaddr 00:08:D5:10:C7:BB inet adr:12.0.0.2 Bcast:12.255.255.255 Masque:255.0.0.0 adr inet6: 3ffe:b80:2:f9c1::500b:ea5/128 Scope:Global <- - - Ok, Global scope adr inet6: fe80::208:c7ff:fe59:bbc7/10 Scope:Lien <- - - [ Can't use this one ] UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:9 carrier:0 collisions:0 RX bytes:0 (0.0 b) TX bytes:534 (534.0 b) 6.5.3.2. Tunnel broker ---------------------- Get one from a free IPv6 tunnel broker. Exemple: http://www.freenet6.net : Canadian tunnel broker http://tb.ngnet.it : Italian tunnel broker (Telecom Italia Research) Note: The current (10/2002) freenet6 windows binary is buggy, use it to get the values, and set manually your tunnel. -------------------------------------------------------------------------------- 6.6. Troubles ------------ 6.6.1. Listen on ::1:1720 failed: Address family not supported by protocol ----------------------------------------------------------------------- IPv6 module is not loaded in the kernel. #modprobe ipv6 6.6.2. SimpleH323 TCP Could not open H.323 listener port on 1720 -------------------------------------------------------------- Add some traces: -t on the command line. 6.6.3. SimpleH323 TCP Listen on fe80::2b0:d0ff:fedf:d6bf:1720 failed: Invalid argument ------------------------------------------------------------------------------------ This address is a local scope address. As the scope_id field is always set to 0, its value is invalid. Use address with global scope. ================================================================================ 7. Platform Specific Issues --------------------------- PWLib has been ported to several platforms. However on some systems not all of the functionality has been implemented. This could be due to lack of support at the OS level or simply due to lack of time or documentation when developing the port. -------------------------------------------------------------------------------- 7.1. FreeBSD Issues ------------------- Port Maintained by Roger Hardiman GetRouteTable() in socket.cxx has been added. It is used by OenH323Proxy, but is not fully tested. -------------------------------------------------------------------------------- 7.2. OpenBSD Issues ------------------- Port Maintained by Roger Hardiman GetRouteTable() in socket.cxx has been added. It is used by OenH323Proxy, but is not fully tested. -------------------------------------------------------------------------------- 7.3. NetBSD Issues ------------------ Port Maintained by Roger Hardiman GetRouteTable() in socket.cxx has been added. It is used by OenH323Proxy, but is not fully tested. There are now three ways to do pthreads in NetBSD. a) unproven threads - from the packages tree. b) GNU pth threads - from the packages tree. c) Native pthreads - added to the kernel on 15th January 2003. The choice can be made by editing pwlib/make/unix.mak Native threads is the default and the best solution. -------------------------------------------------------------------------------- 7.4. Mac OS X (Darwin) Issues ----------------------------- Port maintained by Roger Hardiman but recently Shawn Pai-Hsiang Hsiao has been leading development. Threads cannot be suspended once they are running, and trying to Suspend a running thread will generate an Assertion Error. Theads can be created in 'suspended' mode and then started with Resume This is due to a lack of pthread_kill() in Dawrin 1.2 See http://www.publicsource.apple.com/bugs/X/Libraries/2686231.html GetRouteTable() in socket.cxx has been added. It is used by OenH323Proxy, but is not fully tested. localtime_r() and gm_time() are missing. So in osutil.cxx I have implemented os_localtime() and os_gmtime() with localtime() and gm_time() which may not be thread safe. There is also no implementation for dynamic library functions. Audio is supported using the coreaudio library. Video support is being added by Shawn and users interested in this should check Shawn's web site at http://sourceforge.net/projects/xmeeting/ -------------------------------------------------------------------------------- 7.5. BeOS Issues ---------------- Port Maintained by Yuri Kiryanov . Current version supported is BeOS 5.0.2. Most important issue is lack of variable sample frequency from system sound producer node. I made quite a few attempts to implement sound resampler in code, even with help of Be engineers, but eventually decided to wait until new Media Kit with resampler built-in. Also network code needed more things, as OOB, which was promised in BONE. BONE will allow to make less #defines in network code as well. As update will hit the Net, I'll get back to it ASAP. Look for more port-related info on http://www.dogsbone.com/be -------------------------------------------------------------------------------- 7.6. Windows CE Issues ---------------------- Port Maintained by Yuri Kiryanov . Versions supported is 2.x and 3.x (PocketPC). Look for more port-related info on http://www.pocketbone.com Detailed how-to provided by Frank Naranjo . An html version of this readme is available at ; http://www.mivideo.net/videophone 7.6.1. HOW-TO build and test Windows CE OpenH323 Port POCKETBONE ---------------------------------------------------------------- March 30 2002, Currently, there is NO source available that compiles and Tx/Rx Video and Audio for pocketbone. Only the released binary 10b1 in Oct 2001 works! The current CVS version Mar 30 2002, is supposed to be 10b1, but its' internaly noted as 0.9beta1. Since the code in the CVS has not changed much since October when the 10b1 version was released, maybe with the right #ifdef DEFINES and registry keys configured it might work. We will dig into the diffs, and debug this unfinished release. But, maybe Yuri Kiryanov might release source and its related binary for a version that works one day, along with all the required configuration parameters to build it. It would be nice to be in a ZIP file, so it is not subject to changes, as in the CVS. 7.6.2. Collecting the Required Files ------------------------------------ There are three source modules required to build Pocketbone, two of them, openh323 and pwlib libraries and the contributed pocketbone module. Using WinCVS u can get the latest sources from CVS at openh323.org . Using CVS you should 'checkout' the 'pwlib', 'openh323' and 'contrib' modules. You can save some time and space and 'checkout' only the 'contrib/pocketbone' module. Make certain when u checkout pwlib and openh323 that the .vcp files are there. If not, u can always access them thru the web interface for CVS at openh323.org. You will also need the eVC ( embedded Visual C 3.0) software from Microsoft to build it. The new eVC version 4.0 is available FREE for 120 day trial now ( since Feb 2002 ). You cannot use MS Visual Studio to build an embedded system. The new eVC 4.0 has not been used to build pocketbone yet from the CVS or herein. Place all three source modules in a single directory. i.e.., contrib,openh323 and pwlib. ( note that pocketbone is in the contrib directory ). Using eVC, open the project workspace located in the contrib/pocketbone (Pocketbone.vcp). It should automatically find the other two modules (openh323 and pwlib ) and load their respective .vcp files. 7.6.3. Steps to Build POCKETBONE -------------------------------- To build POCKETBONE you first need to build the two libraries, pwlib and openh323. You should build these two libraries using MS Visual C++, they will need to be built with eVC for the embedded solution. Both PWLIB and OPENH323 directories contain a .VCP file included within the POCKETBONE sources. Before you can build POCKETBONE however, you will need to configure your eVC so it knows where to find the required include, library and executable files. A .VCP project file is available within each of the three source modules in the CVS or ZIP files. -When you download the zip files or the versions from the CVS, your source directory tree should look like this: < Your source dir > \ contrib \ Pocketbone < Your source dir > \ pwlib < Your source dir > \ openh323 The pockebone.vcw file expects this configuration. Once you start eVC, all you need to do is open the project file; < Your source dir> \ contrib \ pocketbone \ pocketbone.vcw eVC will then find the other project files for PWLIB and OPENH323, otherwise it will ask you. Select which CPU or platform version to create; the emulator version X86EMDbg,or the ARM version. The ARM versions have a DEBUG and RELEASE version. Select the Platform :"Pocket PC",CPUs:" Win32(WCE ARM)" selection. Set of directories which you have to be defined in eVC regardless of target platform: Tools->Options->Directories, option Include files. ------------------------------------------------- < Standard include paths > < Your source dir > \ pwlib \ include \ ptlib \ wince < Your source dir > \ pwlib \ include \ ptlib \ wince \ sys < Your source dir > \ pwlib \ include \ pwlib \ mswin < Your source dir > \ pwlib \ include \ ptlib \ msos < Your source dir > \ pwlib \ include < Your source dir > \ openh323 \ include < Your gapi source dir > \ inc Get Gapi source files at; http://www.microsoft.com/mobile/downloads/developer/gapi.asp Here are some 'fake' functions to avoid needing Platform Builder or loading SNMP libraries for gatekeeper functionality. ( thanks to Jehan Bing ) http://www.mivideo.net/jh_snmp_c.txt Platform Builder 3.0 was free under an 120 day evaluation, just as the new 4.0 platform builder ( since Feb 20002) which also includes the new 4.0 eVC. It is NOT necessary to build pocketbone with the SNMP libraries provided you include the 'fake' calls in Jehan Bing's functions file provided above. Tools->Options->Directories, option Executeable AND Library . ------------------------------------------------------------ < Your source dir for location of ptlib.dll > < Your source dir for location of Gapi files ( gx.dll ) > \ lib < Your source dir > PWLIB \ Lib (even if does not exist ) < Your source dir > OPENH323 \ Lib ( even if doesn't exist ) < Your source dir for location of snmpapi.lib and snmp_mibii.lib > ( if you have Platform builder ) click forZip file for eVC 4.0 Platform Builder Libraries ) Using the BUILD ALL start the build process. The PWLIB library is built first, then the OPENH323 library, then finally the POCKETBONE executable. the EVC will automatically download the executable to the iPAQ should you have activeSync and the iPAQ in the cradle.eVC will copy the executeable to the start menu. To run select POCKETBONE from the 'start' menu . Enter an IP using the keyboard, nit the buttons, since the do not always work right. The keypad buttons only works on the 9a1 version. Make any Option settings required such as gatekeeper, trace, or audio settings. Then press 'Call' to initiate the call. You should hear and see the other party right away. On some versions full screen video is displayed. There will be a button to toggle from this full screen in the future, along with Volume and mute buttons. You are on your own ! Please test and make any comments here regarding any problems or suggestions. In order to build POCKETBONE for other platforms, all you need to do is select the different platforms. Although, there will undoubtedly be changes required in the source for different platforms. These changes can usually be handled with #ifdef statements in the code. In order to maintain a single set of source files for different platforms. 7.6.4. Latest CVS version March 20 2002 --------------------------------------- PWLIB.zip ( 7,424 Kb) "http://www.mivideo.net/videophone/cvs 4 20 pwlib.zip" OPENH323.zip ( 22,887 Kb) "http://www.mivideo.net/videophone/cvs 4 20 openh323.zip" CONTRIB.zip ( 5,034 Kb) "http://www.mivideo.net/videophone/cvs 4 20 contrib.zip" These zip files contain Complete! BUILT files for ARM and X86em versions using eVC 3.0 and fake SNMP functions file (link above), to avoid using SNMP libraries. For those who asked for it for comparisons ! Noted internally as version 0.9beta1, NOT .10b1 as was stated by Yuri in the archives to be in this CVS version. This version has trace options available along with a ( Remote / Local ) functionality and different bitmap to reflect it. ARM Dbg ( 4,222 Kb) http://www.mivideo.net/videophone/420DPocketBone.exe ARM Rel ( 2,316 Kb ) http://www.mivideo.net/videophone/420RPocketBone.exe Note this version NOT size similar to 9a1 or 10b1 ! Yet, its the latest from the CVS as of date shown ! Other than the different BMPs used in 10b1 what else differs ? testing from 4/22/2002 ; - No Video or Audio Tx/Rx to CuSeeme 5.0.0.43 ( RadVision Stack) - soft reset ! required after calls sometimes to get correct IP - Audio OK when called from Cisco ATA 186 - The Remote and Local tabs have no effect. -Talk button appears even though running on a Pocket PC and the 'walkie-talkie is NOT clicked. 7.6.5. PocketBone 10b1 Binary zip for iPAQ ------------------------------------------ http://www.mivideo.net/videophone/PocketBone10b1.zip ( 2,317,824 bytes 10/24/2001). Screen looks like; http://www.mivideo.net/videophone/PocketBone.jpg Notes : Video receiving from NetMeeting has no green stripes. Transmits test video by default. Internally noted as 0.10beta1. Audio and Video works fine. No trace options. If Full screen option is enabled, there is NO way out of it other than 'soft reset' There is NO known source files for this version ! Neither will there probably ever be. It is the last release from October 2001 before the Open Source version took a back seat to the commercial development of iFON at Tabletmedia.com. http://www.tabletmedia.com/ifon.asp Unpack the binary zip file and copy PocketBone.exe to \Windows\Start Menu and gx.dll to \Windows. 7.6.6. PocketBone .9a1 binary ARMREl ------------------------------------ ( 2,257 Kb 8/9/2001 ) The main bitmap for this version looks like; http://www.mivideo.net/videophone7alpha3b.jpg The working .9a1 binary version from the link below was released as version .9a1. Internally it is noted as 0.7alpha3. This version transmits default H261 video color bar screen. It can receive video and Tx and Rx audio. There are a few problems with this version. Calling from CuSeeme5.0 client sending 160x240 video this version displays video full screen and locks up the display, so you cannot do anything else to restore except a 'soft reset'. 'Your mileage may vary'. Should you have better luck, please let me know at nubeus@bellsouth.net. Also, I have not been able to initiate a call with it. The display shows the [Remote / Local ] tabs along with an [FS] switch at the lower right of the display. It also has an early address book non-working icon where you enter the IP along with icons for [Dialpad / Calls] which are not functioning. The number buttons do work correctly ! The ZIP sources above does NOT build the 0.9a1 version although it was supposed to according to Yuri and the mailing list. The version it creates is noted internally only in trace file as 0.7a3. It connects, but does not transmit video and audio. It crashes when called. Version .9a1 Binary is at http://www.mivideo.net/videophone/PocketBone9a1.zip ( internally noted as 0.7alpha3 !! ) ( 2,250,240 bytes 8/9/2001) Source Zip files which should, but does NOT match binary above ! Pocketbone source Zip (1,952 Kb ) http://www.mivideo.net/pocketbone.zip ARMREl ( 2,257 Kb ) ARMDbg ( 4,177 Kb ) PwLib source Zip ( 1,830 Kb ) http://www.mivideo.net/pwlib.zip OpenH323 source Zip (1,692 Kb) http://www.mivideo.net/openh323.zip 7.6.7. General Usage Notes -------------------------- - PocketBone performs best on iPAQ Pocket PC 2002. An iPAQ 3630 with CE 3.0 and the Pocket PC 2002 update will do fine ! Pocketbone takes up less than 3mb, and getting smaller every version. - By default PocketBone connects to NetMeeting using MS-GSM. If your NetMeeting does not have GSM codec installed, get it here. What Microsoft calls GSM 6.10 is not what everyone understands as GSM 6.10 compression. NetMeeting must be set to "GSM 6.10" (MS-GSM), iPAQ to MS-GSM. Then they connect. - If you are running PocketBone and you found an error saying "Missing components", get gx.dll (part of GAPI) from here and place it to \Windows directory. - To enable gateway call, e.g. through Cisco AS5300, set following: Go to Options/Gates, set gateway IP address, set gatekeeper address, check "Use Gatekeeper", "Require Gatekeeper". Switch to Options/General, set name, e.g. "ipaq" in "User" field. Add your extension, e.g. "3620" and your cisco id, e.g."3620!cisco" to "Aliases". Check "Disable fast-start" to avoid fast-start problems when call connected earlier for expense of clarity of first few seconds of call. You won't be able to receive calls if you are not registered on gatekeeper .You have to rearrange audio codecs located at Options/Audio. Move GSM-06.10 and/or G.711 on top of the list and disable MS-GSM codec. MS-GSM codec is incompatible with non-MS products. - If your connection is good enough, try reduce jitter buffer size ( Options / Audio ). It will decrease audio latency. - Full-duplex sound driver has been released by Compaq for Pocket PC 2000. Get it here (look for Full Duplex Driver link). The off-the-shelf iPaq 2000 is half-duplex. Do not forget to uncheck Walkie-Talkie in Options/Audio and restart the app. - Should you get link error : LINK : fatal error LNK1181: cannot open input file "snmpapi.lib" then the library is not included in "Object/library modules:" at "Project - Settings - Link" in eVC. - Some people reported problems with building code when compiler reports some SNMP includes missing. You will need to obtain Platform Builder, and then add include and lib directory to project settings in order to be able to link snmpapi.lib and snmp_mibii.lib from the Platform Builder directory. (\PUBLIC\COMMON\OAK\LIB\ARM\SA1100\CE\RETAIL). - Video won't work out-of-box on x86 emulator. Get GAPI emulator and try figuring it out. - Supports full-screen CIF video. Audio clicking removed - If you had installed an old version before, please remove old registry settings located at: HKEY_CURRENT_USER\Software\OpenH323\PocketBone\CurrentVersion - To enable video receive with QCIF size, make sure registry has "VideoSize"=1 and "H261_QCIF"=1. - If you have problems on connection, go to registry and disable video receiving.Find following key in registry: HKEY_CURRENT_USER\Software\OpenH323\PocketBone\CurrentVersion\Options Then add DWORD value of 0 with name of "VideoSize". - In order to improve UDP performance ( videoconferencing ) you have to change registry setting on iPAQ value to 16(maximum) HKEY_LOCAL_MACHINE\Comm\Afd On NetMeeting go to Video settings, choose "Better Image". - If you get following when trying to run PocketBone: "Cannot find PocketBone or one of it's components. Make sure the path and file name are correct and all the required libraries are available...", install GAPI (Game API) gx.h and gx.dll. - When in Walkie-Talkie mode, re-assign a recorder button on your iPAQ to PocketBone. It will allow you to use this recorder button as a switch to change PocketBone from "listen" mode to "talk" mode and back. Only required when iPAQ is used in half-duplex. Version .9a1 and .10b1 work fine in full duplex on a PPC. rfer to; http://www.mivideo.net/Buttons.jpg 7.6.8. Testing -------------- Ohphone can be used to test Pocketbone as well as Netmeeting. Although Netmeeting does not hold up to the H323 standard well. and has been forsaken for the new Instant Messenger from Microsoft. CuSeeme 5.0 on the other hand is built with the RadVision H323 stack, a better implementation of the H323 standard. Pocketbone adheres thru the work of many contributors of the openh323.org project to the H323 v4 standard. It does not have patented codecs integrated due to licensing restrictions but there are hooks in it should the codec be recognized in the system. Please refer to the openh323.org site for details. Cisco ATA 186 IP phones, either in H323 or when set to IP phones work quite well . Testing has been done on HP Jornada and Casio PDAs. Results will soon follow along with configurations, notes and source Zip files. 7.6.9. Links ------------ Keep in touch with the PDA global activities thru http://www.infosync.no/ 7.6.10. Futures -------------- Porting to other platforms such as Palm, and other CPUs such as MIPS, SH3, SH4 are not too difficult. HOW-TO step-by-step will be provided as new platforms are ported and tested. If you have ported this to another platform, your configuration info would be appreciated. Please forward comments of this how-to page to nubeus@bellsouth.net an html version of this readme is available at ; http://www.mivideo.net/videophone -------------------------------------------------------------------------------- 7.7. Solaris Issues ------------------- On Solaris 8, you need to install GNU Ld (the loader) to get shared libraries to compile. (otherwise there is an error with -soname) You can get around this by using the static libraries and compiling with make optnoshared and make debugnoshared There is currently no implementation of GetRouteTable() in socket.cxx so OpenH323Proxy will not work. -------------------------------------------------------------------------------- 7.8. Build libraries under Windows ---------------------------------- Unfortunately building libraries that were intended for Unix based systems under Windows can sometimes be difficult. Here are some notes on the subsystems that PWLib uses. 7.8.1. OpenSSL under Windows ---------------------------- The standard build for OpenSSL off http://www.openssl.org does work though it is rather tricky and requires things like Perl to be installed on your Windows box. However the build does work and is correct for PWlib use. Make sure you build the non-DLL Debug and Release versions. 7.8.2. EXPAT under Windows --------------------------- The easiest way is to get the one in the OpenH323 CVS. This is guranteed to work. Use the following command to do this: cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/openh323 co external/expat and then use the expat.dsw file to build the Debug and Release libraries. 7.8.3. OpenLDAP under Windows --------------------------- To use OpenLDAP with PWLib you have to compile the OpenLDAP library as a DLL. Unfortunately, the standard distribution does not do this. So there is a file in PWLib called pwlib/tools/openldap-2.1.12-win32.zip which contains altered build files for that version of OpenLDAP. Note if you have a different version these files may not work. To build the DLL: 1 Get OpenLDAP v 2.1.17 via tar file at ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.1.17.tgz or anonymous CVS using tag at :pserver:anonymous@cvs.OpenLDAP.org:/repo/OpenLDAP using tag OPENLDAP_REL_ENG_2_1_17 2 Unpack it somewhere, eg c:\work\openldap 3 Unzip the openldap-2.1.17-win32.zip file that directory 4 Open openldap/build/main.dsw 5 use Batch build to and select the "dll" project and build the "DLL Debug" and "DLL Release" targets. 6 Put the resulting openldap/DLLRelease/openldap.dll and openldap/DLLDebug/openldapd.dll files in your path. 7.8.4 SDL under Windows ----------------------- Version 1.2.5 has support for Windows and MSVC so you just need to download it from http://www.libsdl.org/ and follow the build instructions. 7.8.5 SASL under Windows ------------------------ The standard distribution of Cyrus SASL comes with makefiles for Windows and clear instructions on how to build the library. The current implementation in PWLib was tested with Cyrus SASL version 2.1.18. Tarballs can be downloaded from: http://asg.web.cmu.edu/sasl/sasl-library.html -------------------------------------------------------------------------------- 7.9. ESD (Esound) ----------------- Most targets come with native sound support. However there is also support for the ESD (esound) daemon which provides full duplex audio via network sockets. To compile pwlib to use ESD, you need to set the ESDDIR environment variable to point to the directory you have installed ESD into. Then compile pwlib. ================================================================================ 8. Conclusion ------------- This package is far from a "product". There is very limited documentation and support will be on an ad-hoc basis, send us an e-mail and we will probably answer your question if it isn't too difficult. It is supplied mainly to support the open H323 project, but that shouldn't stop you from using it in whatever project you have in mind if you so desire. We like it and use it all the time, and we don't want to get into any religious wars of this class library over that one. ================================================================================ 9. Licensing ------------ The bulk of this library is licensed under the MPL (Mozilla Public License) version 1.0. In simple terms this license allows you to use the library for any purpose, commercial or otherwise, provided the library is kept in tact as a separate entity and any changes made to the library are made publicly available under the same (MPL) license. It is important to realise that that refers to changes to the library and not your application that is merely linked to the library. Note that due to a restriction in the GPL, any application you write that uses anything another than GPL, eg our library with MPL, is technically in breach of the GPL license. However, it should be noted that MPL does not care about the license of the final application, and as only the author of the GPL application is in breach of his own license and is unlikely to sue themselves for that breach, in practice there is no problem with a GPL application using an MPL or any other commercial library. The random number generator is based on code originally by Bob Jenkins. Portions of this library are from the REGEX library and is under the following license: Copyright 1992, 1993, 1994, 1997 Henry Spencer. All rights reserved. This software is not subject to any license of the American Telephone and Telegraph Company or of the Regents of the University of California. Permission is granted to anyone to use this software for any purpose on any computer system, and to alter it and redistribute it, subject to the following restrictions: 1. The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from flaws in it. 2. The origin of this software must not be misrepresented, either by explicit claim or by omission. Since few users ever read sources, credits must appear in the documentation. 3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Since few users ever read sources, credits must appear in the documentation. 4. This notice may not be removed or altered. The in-band DTMF decoding code was taken from FreeBSD's dtmfdecode.c application written by Poul-Henning Kamp. It has the following license: * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- ================================================================================ Equivalence Pty. Ltd. Home of OpenH323 and the Open Phone Abstraction Library (OPAL) support@equival.com.au http://www.equival.com.au (US Mirror - http://www.equival.com) ================================================================================ pwlib_v1_10_2/mpl-1.0.htm0100644000176200056700000004730306651562510015211 0ustar releasepostincrMozilla Public License version 1.0

MOZILLA PUBLIC LICENSE
Version 1.0


1. Definitions.

    1.1. ``Contributor'' means each entity that creates or contributes to the creation of Modifications.

    1.2. ``Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.

    1.3. ``Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.

    1.4. ``Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.

    1.5. ``Executable'' means Covered Code in any form other than Source Code.

    1.6. ``Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.

    1.7. ``Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.

    1.8. ``License'' means this document.

    1.9. ``Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:

      A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.

      B. Any new file that contains any part of the Original Code or previous Modifications.

    1.10. ``Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.

    1.11. ``Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.

    1.12. ``You'' means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, ``You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, ``control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.

2. Source Code License.
    2.1. The Initial Developer Grant.
    The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:

      (a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and

      (b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell (``Utilize'') the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations.

    2.2. Contributor Grant.
    Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:

      (a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and

      (b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations.

3. Distribution Obligations.
    3.1. Application of License.
    The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.

    3.2. Availability of Source Code.
    Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.

    3.3. Description of Modifications.
    You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.

    3.4. Intellectual Property Matters

      (a) Third Party Claims.
      If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled ``LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.

      (b) Contributor APIs.
      If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file.

    3.5. Required Notices.
    You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.

    3.6. Distribution of Executable Versions.
    You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.

    3.7. Larger Works.
    You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.

4. Inability to Comply Due to Statute or Regulation.

    If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.

5. Application of this License.
    This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code.
6. Versions of the License.
    6.1. New Versions.
    Netscape Communications Corporation (``Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.

    6.2. Effect of New Versions.
    Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.

    6.3. Derivative Works.
    If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)

7. DISCLAIMER OF WARRANTY.
    COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
8. TERMINATION.
    This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
9. LIMITATION OF LIABILITY.
    UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
10. U.S. GOVERNMENT END USERS.
    The Covered Code is a ``commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer software'' and ``commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
11. MISCELLANEOUS.
    This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the United States of America: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Santa Clara County, California, under the auspices of JAMS/EndDispute; and (c) any litigation relating to this Agreement shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
12. RESPONSIBILITY FOR CLAIMS.
    Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute responsibility on an equitable basis.
EXHIBIT A.
    ``The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/

    Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.

    The Original Code is ______________________________________.

    The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved.

    Contributor(s): ______________________________________.''

pwlib_v1_10_2/History.txt0100644000176200056700000004107307246405475015622 0ustar releasepostincrPortable Windows Library Modification History ============================================= current code ------------ Complete Mac OS X (using Darwin 1.2) port. Release 1.1pl19 --------------- More bullet proofing of PER decoder, could crash if given garbage data to decode. Fixed problem in ASN parser with BER encoding of ASN with optional fields. Fixed missing immediate expiry date on string and file HTTP Service classes HTTP resources. Added macro to do server side includes of signed or unsigned chunks of HTML in HTTP Service classes. Added flag to globally ignore HTML signatures in HTTP Service classes (useful for develeopment). Improved the HTTP form management classes. Added RFC822 aware channel class for doing internet mail via existing POP3 and SMTP classes, includes content transfer encoding and automatic base64 translation. Fixed crash if used PBase64::ProcessEncoding() with zero length. Fixed bug in base64 encoder, overwriting memory buffer. Added certificate and private key classes to OpenSSL interface. Fixed problem with propagation of the error text through to indirect channel. Fixed compiler ambiguities in PTimeInterval constructor. Added static function to create a new thread class and automatically run a function on another class in the context of that thread. Added function to change auto delete flag on a thread. Added assert when get nested mutex. Fixed problem with PSemaphore::WillBlock actually locking semaphore. Fixed bug un Linux version where HTML macros didn't work correctly in PHTTPService applications. Improved PString sprintf functions so no longer limited to 1000 characters. Fixed bug in unix version where subsequent config file opening uses first opened filename. Changed PConfig to allow writing of config files whilst config file is open. Changed unix config file code to allow writing of config files whilst config file is open. Fixed problem in unix thrading where thread that uses PThread::Current() in destructor crashes. Various fixes for Motif and Qt build. Various fixes for BeOS build. Various fixes for BSD build. Release 1.1pl18 ------------ Added ability to change the persistent connection parameters (timeout etc) in HTTP server class. Fixed bug in HTTP form updating SELECT fields from registry. Fixed OpenSSL support so can operate as a server channel. SSL channel changes, added error functions, removed need to have openssl include directory in app. Added mechanism by which a service can get at new HTTP connections, eg to add SSL. Fixed resize of multi-line edit box windows, again. Fixed problem with no control value update if press "Enter" to close dialog. Added ability to have multiple lines with the same key in PConfig. Removed assert for empty key name so can set registry default key for a section. Removed PAssert with registry access denied error, changed to PTRACE. Fixed subtle difference between Unix and Win32 section names (ignore trailing backslash) in PConfig files. Fixed silly mistake in runtime_malloc() function, should return a pointer! Improved multithreaded reliability of the timers under stress. Fixed problem with no new lines in trace output to stderr. Added Windows 2000 to operating system reporting. Fixed problem with bothnoshared target in makefile Release 1.1pl17 ------------ AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). Start of Nucleus++ port. Fixed bug in setting current value of options in select form fields. Added ability to get at the PTraceStream without timestamps etc, use UINT_MAX trace level. Added more guards for NULL PStrings in PConfigArg handling. Removed some warnings on compiling colour icons in PWRC. Fixed problems in decompile of .ICO file with multiple icons in PWRC. Added ability to append resources to existing file in PWRC. Fixed bug that causes crash when gettng cursor/selection position in a PEditBox. Added flags for controlling file sharing. Added start of video I/O abstraction classes. Added runtime_malloc() function for cases where memory check code must be bypassed. Fixed bug when PWaveFormat is assigned to itself. Fixed shutdown issues with buffers in use in PSoundChannel. Fixed potential race condition in OSS initialise (Unix sound). Fixed BSD compatibility for OSS sound usage. Release 1.1pl16 ------------ Added PConfigArgs class so can save program arguments to config files. Removed static global ojects that require construction as they cause phantom memory leaks when using the GNU compiler. Added microseconds to string output of PTime. Added strcasecmp macro, BSDish version of stricmp. Added mutex to PSoundChannel buffer structure to avoid rare but quite possible multi-threading crashes. Added tcp.h to get TCP_NODELAY for setsockopt call to pmachdep.h. Fixed missing default on PTopLevelWindow::Show() function. Fixed support for older FreeBSD (location of sysctrl program). Added variables for standard programs ar and ranlib, plus making the use of ranlib optional according to another variable. Fixed bug in restarting free running timers, would not always happen. Fixed problem with stream output width in PTimeInterval. Fixed uninitialised microseconds on some PTime constructors. Added display of thread name in SystemLog. Fixed problem where lastReadCount was not zeroed if no read occurred in a PChannel. Added OSS unix implementation for PlayFile command. Fixed race condition causing asserts in ballon help. Added directory search path argument for external DEF files in MergeSym. This allows correct building of DLLs that use ptlib.dll. Fixed bug for symbols in external DEF file actively removed from merged DEF file in MergeSym. Fixed production error for ValueSet in asn parser. Release 1.1pl15 ------------ Added option to rename imported module names in ASN parser, allows generated code #include filename matching to what would be generated elsewhere by the applications make system. Added ability to remove optional field in ASN sequence. Added simple static play functions for sound files. Added constructor to do PString conversion to PTimeInterval parsing the string as for stream I/O. Added microseconds field to PTime class. Added parameter so get/setsockopt can have other levels to SOL_SOCKET. Fixed error in check for SIOCGHWADDR define. Caused compile errors on Solaris 2.6 systems (but not 2.5 or 2.7!) Fixed problem with connect() call not timing out according to the readTimeout value of the channel. Removed ptclib/proto directory. Its purpose was lost in time and causes more problems now than it is worth. Added named threads to tracing function. Fixed handling of NULL pointer on current thread in PTRACE output. Fixed infinite recursion on PProcess::Current() = NULL assertion. Added function to determine if PProcess instance has been initialised yet for use by static objects etc. Fixed problem with asserts generating continuous output when input is redirected and especially when EOF is read. Added the ability to get a stack dump on assert on unix systems by calling gdb on the fly. Changes to build system to make GUI selection under Unix systems easier. Changed DEBUG build to always be static libraries, an opt build will use the shared libraries. Add support for OpenBSD. Some BeOS port changes. Some VxWorks port changes, still not complete. Add some Mac OS X port changes, still not complete. Add support for NetBSD. Release 1.14 ------------ Added new improved random number generator. Mainly due to discovered inadaquacies in the MSVC run time version of rand(). Added support for producing shared libraries. Added optimisation to array comparisons if referencing same array. Fixed problem with changing size of referenced objects, reference needed to be broken and wasn't invalidating other references causing crashes. Updated OpenSSL support. Improved FreeBSD support (later versions, OSS sound etc). Fixed some minor BeOS issues. Added support for power PC Linux variant. Fixed ASN PER encoder boundary condition error for constrained integer encoding (values 1, 256 etc). Fixed ASN parsing of multiple IMPORTS and OID's in IMPORTS section. Release 1.13 ------------ Fixed alignment problem in debug memory check code (especially with sparc architecture). Fixed problem in timers startup condition in short duration (< 10 second) timers, timing out immediately. Improved some of the documentation especially the root web page. Release 1.12 ------------ Made static form of ConvertOSError public scope. Added override of new functions for MSVC memory check code. Added functions to get current trace options and level. Fixed display of decimals in milliseconds when precision other than 3. Fixed problem, assuring millisecond accuracy in timestamp of trace output. Improved portability of copy from host_info struct to IP address. Created PCustomListBox to allow native Motif code PStringListBox implementation. Fixed problem with PSemaphore::Wait consuming 100% CPU under unix. Changed semaphore.h inclusion to be dependent upon P_HAS_SEMAPHORE under unix. Added pipe to thread to allow asynchronous abort of socket operations under unix. Added define to only include semaphore libraries on Linux platform Changed semantics of OnClose() to be the same as PTitledWindow in Win32. Fixed problems with creating/deleting dialogs from background threads in Win32. Fixed possible crash accessing IP addresses from SNMP tables in Win32. Fixed bug in GetErrorText() occasionally returning incorrect empty string in Win32. Fixed bug in SetDimensions() to allow for a window with a menu in Win32. Added missing GetLength function for PComboBoxes in Win32. Release 1.11 ------------ Fixed error display for sound channels. Added Windows version of PIPSocket::GetInterfaceTable() function. Changed PTRACE so will output to system log in PServiceProcess applications. Fixed name space problem with PSYSTEMLOG() macro. Allowed some Win32 only access to custom wave format in sound channel. Changed PSemaphore to use Posix semaphores. ASN Parser: Optimised CreateObject() switch statements, collapsing common cases. ASN Parser: Fixed failure to put "using namespace" in every generated .cxx file. Release 1.10 ------------ Fixed usage of inlines in optimised version. Was not inlined. Added ASN compiler #defines for backward support of pre GCC 2.9 compilers. Added ASN compiler #defines to reduce its memory footprint. Added comparison operation to base ASN classes and compiled ASN code. Added support for ANY type in ASN parser. Fixed anomaly to always include non-optional extensions in PER encodings of the ASN parser generated code. Fixed ASN PER encoding problems for large integer values. Fixed incorrect encoding of unknown extensions in ASN PER. Fixed incorrect size of ASN PER OID if zero length encoded. Added ability to get the host/port of the the last packet read/written to UDP socket. Added ability to listen to specific interfaces for IP sockets. Added operator>> for PIPSocket::Address class. Fixed problem with creating windows in background threads, not happening until have a message sent. Fixed problem with calling modal dialog from a background thread. Fixed problem with GUI menu item stopping working on calling SetString(). Changes to aid in breaking I/O locks on thread termination. Still needs more work especially in BSD! Fixed problem with destroying PMutex that is already locked. Fixed termination hang up problem with memory check code under unix pthreads. Added mutex in memory check detection code. Added missing operator on smart pointer to return the pointer! Cleaned up the smart pointer code (macros). Added concatenation function to "base type" arrays. Added "NoWin" option to prevent display of window in command line commands of "Service Process" applications. Added audio loopback psuedo-device (thanks Philip Edelbrock) Fixed bug in display of PTimeIntervals larger than 24 hours. Added missing unix paths include (esp. for VARRUN in svcproc) Added support for libc5 and libc6 compiles under Linux (libc6 uses pthreads). Fixed problem with EINTR causing sound channel reads and write to fail, thanks to phil@netroedge.com! Release 1.09 ------------ Fixed bug when assigning negative number to a cosntrained PASN_Integer. Fixed bug in encoding/decoding OID greater than 2.39 in PER and BER ASN. Changed PASN_Choice cast operators in ASN generated code so no longer "break" const-ness of object. Fixed bug in encoding sequence of constrained primitive type in ASN generated code, constraint not set. Fixed bug in not emitting namespace use clause in ASN generated code. Added "normalisation" of separate sequence of to be single class in ASN generated code. Fixed some 64 bit compatibility issues. Fixed being able to cast an unsigned to a PTimeInterval. Improved resolution of PTimer::Tick() to be millisecond accurate. Rewite to compensate for linux OSS sensitivity to ioctl order. Added code to allow full duplex audio. Fixed build problems with not including oss.cxx in library if OSTYPE not "linux" Fixed bug in PFile::Copy, does not write last chunk of data to new file. Fixed bug when breaking block by closing the PSoundChannel in other thread. Fixed bug in PThread::IsSuspended(), returned exactly the opposite state! Fixed bug in PFilePath::SetType finding dots outside of file name in path. Portability issues, especially n BeOS (thanks Yuri!) Release 1.08 ------------ Fixed bug causing crashes on pass through of unknown extensions in PER encoding. Fixed race condition on indirect channel close, mutex needed in PIndirectChannel. Fixed core dump problem with SIGINT/SIGTERM terminating process. Fixed bug in not returning correct default recorder (waveIn) device under MS Windows. Release 1.07 ------------ Improved tracing yet again. Now has options for adding timestamps, thread ID etc to the trace output as well as the file/line number. Fixed bug in the output code in ASN compiler for string constraints under PER. They were not being set on the correct object causing decode failures (usually via assert). Added PConsoleChannel class to allow access to stdin/stdout/stderr as a PWLib channel. Primarily this is for allow read from stdin to not block the cooperative multithreading. Fixed bug in printing PTimeInterval objects, would leave fll char set to '0'. Also ignored stream width parameter. Release 1.06 ------------ Added better User Interface to make files. Major ASN Parser enhancements for parameterised types etc. Fixed problems with decoding of extensions (signed/unsigned bug) in ASN PER. Fixed date parsing to be forgiving of rubbish at end of date string. Fixed problem with not stopping date parse at end of line. Fixed PTime::GetHour() etc to not crash on time=-1. Fixed ugly little bug in the cooperative multithreading that meant that threads blocked on timers didn't always get rescheduled. Changed channel output flush to remove double Write() call. This caused problems on TCP/IP stuff getting a packet for the first byte and then another pacet for the rest of the buffer. Added retries to DNS lookup if get temporary error. Fixed race condition in doing Select() on closed sockets. Could go into infinite wait. Added ability to open file as standard input, output and error streams. Added function to get default audio device. Added initialisers to string containers (list, sorted list and set). Release 1.05 ------------ Changed build to allow for 64 bit processors (Alpha port). Minor changes to support egcs compiler. Added SIGHUP and SIGWINCH handlers to increase and decrease the log level respectively in a service (daemon) application. Release 1.04 ------------ Large numbers of changes to support automated documentation system doc++. Utilised full grammar parsing for dates. Simultaneous MSVC 6 and MSVC 5 compatibility. Improved trace facility adding trace levels and #define to remove all trace code. Various BeOS port modifications. Fixed bug in IP access control lists compatibility with unix hosts.allow and hosts.deny files. Added support for UDP in SOCKS 5 classes. Added [] operator PIPSocket::Address to get the bytes out of an IP address. Fixed ability to have PMEMORY_CHECK on/off on both debug/release versions. Sound driver interface implementation to Linux OSS specification. Release 1.03 ------------ Very slack in not producing histories for earlier versions. ------------------------------------------------------------------------------ pwlib_v1_10_2/version.h0100644000176200056700000000233610475420243015241 0ustar releasepostincr/* * version.h * * Version number header file for PWLib * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. */ #ifndef _PWLib_VERSION_H #define _PWLib_VERSION_H /* WARNING: You MUST NOT add any comments to the #defines which follow or add extra commented out #defines as this will confuse the parser which extracts the version numbers */ #define MAJOR_VERSION 1 #define MINOR_VERSION 10 #define BUILD_TYPE ReleaseCode #define BUILD_NUMBER 2 #endif // _PWLib_VERSION_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/pwlib.dxx0100644000176200056700000002643410050554121015242 0ustar releasepostincr/**@name Portable Windows Libaray A multi-platform operating system and GUI abstraction system for application development. @memo A Portable Text and GUI C/C++ Class Libarary. @version 1.2.0 @author Equivalence Pty. Ltd. */ //@{ /**@name Introduction \begin{center} {\Large{\bf Welcome to the wonderful world of PWLib}} \end{center} PWLib is a moderately large class library that has its genesis many years ago as a method to product applications to run on both Microsoft Windows and Unix X-Windows systems. It also was to have a Macintosh port as well but this never eventuated. Since then the system has grown to having quite good application to areas other than mere Windows GUI portability. Classes for I/O portability, multi-threading portability, aid in producing unix daemons and NT services portably and all sorts of internet protocols were added over the years. All this over and above basic "container" classes such as arrays, linear lists, sorted lists (RB Tree) and dictionaries (hash tables) which were all created before STL became the answer to all our prayers. Unfortunately, due to intertia and the GNU C++ inadequate support of templates, this library will probably not be ported to STL in the near future. The library was used extensively for all our in-house products. Then we decided to support the open H323 project by throwing in some of the code written for one of our products. Thus, required PWLib so it got thrown into the open source world as well. \begin{center} {\Large{\bf Enjoy!}} \end{center} */ /**@name Using PWLib Detailed tutorials will almost certainly not be forthcoming. However, at least giving you an indication on how to start an application would be usefull, so here is the infamous "Hello world!" program. \begin{verbatim} // hello.cxx #include class Hello : public PProcess { PCLASSINFO(Hello, PProcess) public: void Main(); }; PCREATE_PROCESS(Hello) void Hello::Main() { cout << "Hello world!\n"; } // End of hello.cxx \end{verbatim} The \Ref{CREATE_PROCESS} macro actually defines the #main()# function and creates an instance of Hello. This assures that everything is initialised in the correct order. C++ does initialisation of global statics badly (and destruction is even worse), so try to put everything into your PProcess descedent rather than globals. A GUI application is very similar but is descended off \Ref{PApplication} rather than \Ref{PProcess}, and would create a window as a descendent off the \Ref{PMainWindow} class. @memo Brief examples. */ /**@name Console Mode Classes This as far as possible "normalises" different operating systems to a single API so the same application can be compiled without modification. @memo Classes that embody operating system abstractions. */ //@{ /**@name Base Object Class @memo The base class for all other clasess in the system, plus some additional low level support classes/functions eg memory management. */ //@{ //@Include: include/ptlib/object.h //@} /**@name Container Classes @memo Classes that contain other objects. */ //@{ //@Include: include/ptlib/contain.h //@Include: include/ptlib/array.h //@Include: include/ptlib/lists.h //@Include: include/ptlib/dict.h //@Include: include/ptlib/pstring.h //@} /**@name I/O Channel Classes @memo Classes that perform general I/O */ //@{ //@Include: include/ptlib/channel.h //@Include: include/ptlib/indchan.h //@Include: include/ptlib/conchan.h //@Include: include/ptlib/pipechan.h //@Include: include/ptlib/serchan.h //@Include: include/ptlib/file.h //@Include: include/ptlib/textfile.h //@Include: include/ptlib/sfile.h //@Include: include/ptlib/filepath.h //@Include: include/ptlib/pdirect.h //@Include: include/ptlib/vconvert.h //@} /**@name Socket Classes @memo Classes that perform Berkely Sockets I/O */ //@{ //@Include: include/ptlib/socket.h //@Include: include/ptlib/ipsock.h //@Include: include/ptlib/ipdsock.h //@Include: include/ptlib/udpsock.h //@Include: include/ptlib/tcpsock.h //@Include: include/ptlib/icmpsock.h //@Include: include/ptlib/ipxsock.h //@Include: include/ptlib/spxsock.h //@Include: include/ptlib/ethsock.h //@} /**@name Process and Thread Classes @memo Classes that handle processes, multi-threading and synchronsiation. */ //@{ //@Include: include/ptlib/pprocess.h //@Include: include/ptlib/svcproc.h //@Include: include/ptlib/thread.h //@Include: include/ptlib/semaphor.h //@Include: include/ptlib/mutex.h //@Include: include/ptlib/syncpoint.h //@Include: include/ptlib/syncthrd.h //@} /**@name Miscellaneous Classes */ //@{ //@Include: include/ptlib/args.h //@Include: include/ptlib/config.h //@Include: include/ptlib/ptime.h //@Include: include/ptlib/timeint.h //@Include: include/ptlib/timer.h //@Include: include/ptlib/dynalink.h //@Include: include/ptlib/sound.h //@Include: include/ptlib/video.h //@Include: include/ptlib/videoio.h //@Include: include/ptlib/remconn.h //@Include: include/ptlib/mail.h //@} //@} /**@name Console Mode Components These classes provide a large amount of higher level functionality that is built on the basic Console Classes which provides the Operating System abstractions. @memo Non-operating system specific classes that may be used as components in applications. */ //@{ /**@name Internet Protocol Classes */ //@{ //@Include: include/ptclib/inetprot.h //@Include: include/ptclib/inetmail.h //@Include: include/ptclib/mime.h //@Include: include/ptclib/ftp.h //@Include: include/ptclib/telnet.h //@Include: include/ptclib/socks.h //@} /**@name HTTP Classes */ //@{ //@Include: include/ptclib/http.h //@Include: include/ptclib/url.h //@Include: include/ptclib/html.h //@Include: include/ptclib/httpform.h //@Include: include/ptclib/httpsvc.h //@} /**@name ASN.1 Support Classes */ //@{ //@Include: include/ptclib/asner.h //@} /**@name Miscellaneous Classes */ //@{ //@Include: include/ptclib/modem.h //@Include: include/ptclib/ipacl.h //@Include: include/ptclib/random.h //@Include: include/ptclib/cypher.h //@Include: include/ptclib/pssl.h //@Include: include/ptclib/pwavfile.h //@Include: include/ptclib/dtmf.h //@} //@} /**@name GUI Mode Classes These classes abstract Graphics User Interface elements for use by multiple platforms. Each element is implemented in the native manner for that platform eg X Windows/Motif. @memo Classes that embody windowing system abstractions. */ //@{ /**@name Interactor Classes */ //@{ //@Include: include/pwlib/interact.h //@Include: include/pwlib/ilayout.h //@Include: include/pwlib/titlewnd.h //@Include: include/pwlib/toplwnd.h //@Include: include/pwlib/mdidoc.h //@Include: include/pwlib/mdiframe.h //@Include: include/pwlib/scrollab.h //@Include: include/pwlib/popup.h //@Include: include/pwlib/balloon.h //@} /**@name Menu Classes */ //@{ //@Include: include/pwlib/menuent.h //@Include: include/pwlib/rootmenu.h //@Include: include/pwlib/submenu.h //@Include: include/pwlib/menuitem.h //@Include: include/pwlib/menusep.h //@} /**@name Control Classes */ //@{ //@Include: include/pwlib/control.h //@Include: include/pwlib/ncontrol.h //@Include: include/pwlib/pbutton.h //@Include: include/pwlib/tbutton.h //@Include: include/pwlib/ibutton.h //@Include: include/pwlib/rbutton.h //@Include: include/pwlib/checkbox.h //@Include: include/pwlib/check3.h //@Include: include/pwlib/choicbox.h //@Include: include/pwlib/combobox.h //@Include: include/pwlib/listbox.h //@Include: include/pwlib/clistbox.h //@Include: include/pwlib/slistbox.h //@Include: include/pwlib/listview.h //@Include: include/pwlib/editbox.h //@Include: include/pwlib/meditbox.h //@Include: include/pwlib/pwedbox.h //@Include: include/pwlib/numedbox.h //@Include: include/pwlib/intedit.h //@Include: include/pwlib/realedit.h //@Include: include/pwlib/scrollb.h //@Include: include/pwlib/hscrollb.h //@Include: include/pwlib/vscrollb.h //@Include: include/pwlib/stattext.h //@Include: include/pwlib/staticon.h //@Include: include/pwlib/statrect.h //@Include: include/pwlib/statbox.h //@} /**@name Dialog Classes */ //@{ //@Include: include/pwlib/dialog.h //@Include: include/pwlib/modaldlg.h //@Include: include/pwlib/floatdlg.h //@Include: include/pwlib/simpdlg.h //@Include: include/pwlib/opendlg.h //@Include: include/pwlib/filedlg.h //@Include: include/pwlib/savedlg.h //@Include: include/pwlib/dirdlg.h //@Include: include/pwlib/fontdlg.h //@Include: include/pwlib/pclrdlg.h //@Include: include/pwlib/printdlg.h //@Include: include/pwlib/prjobdlg.h //@Include: include/pwlib/prsetdlg.h //@} /**@name Graphics Classes */ //@{ //@Include: include/pwlib/point.h //@Include: include/pwlib/dim.h //@Include: include/pwlib/rect.h //@Include: include/pwlib/region.h //@Include: include/pwlib/colour.h //@Include: include/pwlib/rcolour.h //@Include: include/pwlib/font.h //@Include: include/pwlib/rfont.h //@Include: include/pwlib/fontfam.h //@Include: include/pwlib/palette.h //@Include: include/pwlib/pattern.h //@Include: include/pwlib/canstate.h //@Include: include/pwlib/canvas.h //@Include: include/pwlib/icanvas.h //@Include: include/pwlib/dcanvas.h //@Include: include/pwlib/rcanvas.h //@Include: include/pwlib/mcanvas.h //@Include: include/pwlib/pcanvas.h //@Include: include/pwlib/image.h //@Include: include/pwlib/pict.h //@Include: include/pwlib/pixels.h //@Include: include/pwlib/pixels1.h //@Include: include/pwlib/pixels2.h //@Include: include/pwlib/pixels24.h //@Include: include/pwlib/pixels32.h //@Include: include/pwlib/pixels4.h //@Include: include/pwlib/pixels8.h //@} /**@name Miscellaneous Classes */ //@{ //@Include: include/pwlib/applicat.h //@Include: include/pwlib/stdresid.h //@Include: include/pwlib/resdata.h //@Include: include/pwlib/rstring.h //@Include: include/pwlib/caret.h //@Include: include/pwlib/cursor.h //@Include: include/pwlib/icon.h //@Include: include/pwlib/imgicon.h //@Include: include/pwlib/clipbrd.h //@Include: include/pwlib/keycode.h //@Include: include/pwlib/prinfo.h //@Include: include/pwlib/commands.h //@Include: include/pwlib/mailgui.h //@} //@} /**@name GUI Mode Components These classes provide a large amount of higher level functionality that is built on the basic GUI Classes which provides the GUI system abstractions. @memo Non-windowing system specific classes that may be used as components in applications. */ //@{ /**@name Tool and Status Bars */ //@{ //@Include: include/pwclib/toolbars.h //@} /**@name Window Splitter Controls */ //@{ //@Include: include/pwclib/splitter.h //@} /**@name Wizard Dialog */ //@{ //@Include: include/pwclib/wizard.h //@} /**@name ANSI Terminal Control */ //@{ //@Include: include/pwclib/ansiterm.h //@} /**@name Geometric Shapes */ //@{ //@Include: include/pwclib/shapes.h //@} /**@name Miscellaneous Classes */ //@{ //@Include: include/pwclib/progress.h //@} //@} //@} pwlib_v1_10_2/ReadMe_QOS.txt0100644000176200056700000001405410233153565016025 0ustar releasepostincr README ========== ========== This document explains the revised QOS implementation for PTLIB and openh323. ============ Update 25.4.05: 802.1p/q is now supported natively however is disabled To enable set the Static PUDPSocket::disableQoS = FALSE; QoS support is now negotiated between the calling parties and will only functions when both parties have. 1. Enabled QoS within Openh323 (as above) 2. Window XP OS 3. Managed NIC with 802.1p enabled.(May have to Set Manually) ============ Contents: 1) Setting a QOS specification in openh323 2) Diffserv support 3) 802.1Q support 4) Windows 2000 issues 5) Windows XP and Server 2003 issues 1) Setting a QOS specification in openh323 ========================================== The basic approach is as follows: **** RTP_QOS * rtpqos = new RTP_QOS; rtpqos->dataQoS.SetWinServiceType(DWORD winServiceType); rtpqos->dataQoS.SetAvgBytesPerSec(DWORD avgBytesPerSec); rtpqos->dataQoS.SetMaxFrameBytes(DWORD maxFrameBytes); rtpqos->dataQoS.SetPeakBytesPerSec(DWORD peakBytesPerSec); rtpqos->dataQoS.SetDSCP(int DSCPvalue); [If desired: rtpqos->controlQoS.SetWinServiceType(...) etc.] H323Capability * cap = new xxxxx; cap->AttachQoS(rtpqos); SetCapability(....); **** Notes: i) winServiceType is either SERVICETYPE_GUARANTEED, SERVICETYPE_CONTROLLEDLOAD, SERVICETYPE_BESTEFFORT, or SERVICETYPE_PNOTSPECIFIED ii) for Windows XP or Windows Server 2003, if setting aaaaa as SERVICETYPE_GUARANTEED or SERVICETYPE_CONTROLLEDLOAD then avgBytesPerSec, maxFrameBytes, and peakBytesPerSec MUST be set to appropriate values iii) Calling SetDSCP(DSCPvalue) has no effect on Windows XP or Windows Server 2003 but on other platforms (earlier versions of Windows, and Linux) it will set the DSCP directly. SetDSCP(-1) clears the effect of any previous call to SetDSCP() iv) on platforms other than WinXP or Windows Server 2003, if SetDSCP(...) is not called but SetWinServiceType(...) is, then an appropriate DSCP substitution will be made. The substitutions can be changed globally by calling PQoS::SetDSCPAlternative(DWORD winServiceType, UINT DSCP) v) if an RTP_QOS is not attached to a capability, the H323Endpoint::rtpIpTypeofService will be used to set IP_TOS but this has no effect on WinXP or Windows Server 2003 (and see below for notes relating to Windows 2000) 2) Diffserv support =================== Setting of DSCP on packets is supported for most Windows and Linux platforms. The mechanism is platform-dependent: Windows XP and Windows Server 2003: ----------------------------------- Based on the parameters passed to PQoS::SetWinServiceType(...), PQoS::SetAvgBytesPerSec(...), PQoS::SetMaxFrameBytes(...) and PQoS::SetPeakBytesPerSec(...) Linux and earlier versions of Windows: -------------------------------------- Based either on: a) the parameter passed to PQoS::SetDSCP(...), or b) the parameter passed to PQoS::SetWinServiceType(...) plus (optionally) the parameters passed to any calls to PQoS::SetDSCPAlternative(...) Unsupported Windows versions ---------------------------- Windows ME - setsockopt/IP_TOS appears to be unsupported and it is impossible to turn off RSVP signalling for GQOS Windows NT4 without SP4 - there is a known problem using setsockopt/IP_TOS on unconnected UDP sockets. SP4 solves this problem (see Microsoft KB article Q196358). 3) 802.1Q support ================= Where enabled, 802.1Q is supported on Windows XP and Windows Server 2003 based on the same calls as for Diffserv support on these platforms A note for developers --------------------- In principle, it is possible to support 802.1Q on Windows 2000, but this is not implemented for the following reason. Currently, Winsock support in openh323 writes to UDP sockets using sendto(...) on unconnected UDP sockets. As a result, setting QOS using GQOS (which enables 802.1Q) requires that the QUALITYOFSERVICE structure include a QOS_DESTADDR. QOS_DESTADDR is not supported on Windows 2000. If anyone wants to rewrite pwlib winsock support to use WSASendTo, or openh323 to use connected UDP sockets, it should then - in principle - be possible to remove the requirement for QOS_DESTADDR and use the GQOS API on Windows 2000. However, note the "in principle". This principle has not been tested! 4) Windows 2000 support ======================= Diffserv support on Windows 2000 is implemented using the traditional setsockopt(...) approach with an IP_TOS parameter. The reason for using this approach rather than the GQOS API is explained in the note to section 3 above. In order to enable the use of setsockopt(...) with IP_TOS on Windows 2000, it is necessary to set the following registry setting (unset by default): HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\DisableUserTOSSetting = 0 After setting this, you will need to reboot the machine. A note for those horrified by this ---------------------------------- Unfortunately, even if someone does enable the use of GQOS on Windows 2000, it will still be necessary to make a non-default registry setting. This is because by default, Windows 2000 implements RSVP (ie intserv rather than diffserv). On the grounds that nobody actually uses intserv, PTLIB disables RSVP in its calls to GQOS, but then to enable diffserv it is necessary to set: HKLM\System\CurrentControlSet\Services\Qossp\EnablePriorityBoost = 1 Sorry! Blame Microsoft... 5) Windows XP and Server 2003 support ===================================== The approach used for QOS support on these platforms does not allow the DSCP or 802.1Q COS to be set directly. However, it should be possible for the system administrator to modify the DSCP that is used for any of the service types specified in the call to PQoS::SetWinServiceType(...). To do this: * run "mmc" * go to File\Add/Remove Snap-in * add the Group Policy object (shows up as Local Computer Policy) * within Local COmputer Policy, go to: Computer Configuration\Administrative Templates\Netrwork\QoS Packet Scheduler. This will allow you to configure DSCP and Layer-2 priority values (802.1Q COS). Note that only Guaranteed service type, Controlled load service type, and Best effort service type are supported. pwlib_v1_10_2/pwlib.dxy0100644000176200056700000002460410052053040015234 0ustar releasepostincr/*! \mainpage Portable Windows Library \section contents Table of Contents \li \ref intro \li \ref overview \li \ref using \li \ref base \li \ref components \li \ref history \section intro Introduction This document provides reference information for the PWLib C++ class library. It is not intended as a tutorial document. Last updated 17 May, 2004 Copyright (C) 1999-2003 Equivalence Pty Ltd, All right reserved Portions Copyright (C) 2004 Post Increment, All Rights Reserved \section overview Overview PWLib is a moderately large C++ class library that originated many years ago as a method to produce applications that run on both Microsoft Windows and Unix X-Windows systems. It also was to have a Macintosh port as well, but this never eventuated. Since then, the availability of multi-platform GUI toolkits such as KDE and wxWindows, and the development of the OpenH323 project as primary user of the library, has emphasised the focus on networking, I/O portability, multi-threading and portability. Mostly, the library is used to create high performance and highly portable network-centric applications. In addition to these high level functions, basic "container" classes such as arrays, linear lists, sorted lists (RB Tree) and dictionaries (hash tables) are available. These were created before the emergence of STL as a standard, so unfortunately these constructs are incompatible with iterators and generic algorithms. Development continues in this area, and future versions of PWLIB will see increased use of, and compatibility with, STL The library is used extensively by many companies for both commercial and Open Source products. The motivation in making PWLib available as Open Source was primarily to support the OpenH323 project, but it is definitely useful as a stand-alone library. The classes within PWLib are seperated into two types: \ref base and \ref components The \ref base contain all of the essential support for constructs such as containers, threads and sockets that are dependent on platform specific features. All PWLib programs will require the \ref base The \ref components implement functionality that is usually platform independent, and may not be required for all programs. On some platforms (notably Windows) the \ref base and \ref components may be divided into discrete library archives. Other platforms (notably Unix platforms) combine all of the code into a single library and rely on the linker to omit code that is not required. Note that previous versions of PWLib also contained GUI classes and GUI components, but support for these classes has been discontinued. \section using Using PWLib Tutorial introductions for PWLib are available elsewhere (see http://toncar.cz/openh323/tut), but some information on how to create a simple program is always useful. Here is the canonical "Hello world!" program written using the PWLib infrastructure. \verbatim // hello.cxx #include class Hello : public PProcess { PCLASSINFO(Hello, PProcess) public: void Main(); }; PCREATE_PROCESS(Hello) void Hello::Main() { cout << "Hello world!\n"; } // End of hello.cxx \endverbatim The PCREATE_PROCESS macro actually defines the #main()# function and creates an instance of Hello. This assures that everything is initialised in the correct order. C++ does initialisation of global statics badly (and destruction is even worse), so try to put everything into your PProcess descedent rather than globals. \section base Base Classes \subsection object_h Base Object Classes \li PObject - the base class for all other classes in the PWLib \li PContainer - the base class for all reference-counted classes in PWLib \li PAbstractArray - base class for array of objects. Equivalent to the STL vector template class \li PAbstractList - base class for lists of objects. Equivalent to the STL list template class \li PAbstractDictionary - base class for dictionaries. Equivalent to the STL map template class \li PString - base class for the string abstraction. Equivalent to the STL string class. \subsection channel I/O Channel Classes Classes that perform general I/O using the PChannel abstraction \li PChannel - base class for all I/O channels \li PIndirectChannel - a channel that encapsulates another channel \li PConsoleChannel - channel for accessing the system console \li PPipeChannel - execute a program and access input and output as a PChannel \li PSerialChannel - access a serial communications port as a PChannel \li PFile - access files on the host operating system using PChannels \li PTextFile - access text files on the host operating system as PChannels \li PStructuredFile - access files on the host operating system as arrays of structured records \li PFilePath - access directories on the host operating system \li PVideoChannel - read or write data to a video device as a PChannel. See also PVideoDevice and PColourConverter \li PSoundChannel - read or write data to sound device as a PChannel \subsection socket Socket Classes Implementation of a network sockets abstraction (roughly based on Berkeley sockets) \li PSocket - base class for all network sockets \li PIPSocket - base class for all sockets using the IP protocol \li PUDPSocket - IP socket using the UDP protocol \li PTCPSocket - IP socket using the TCP/IP protocol \li PICMPSocket - IP socket using the ICMP protocl \li PIPXSocket - base class for sockets using the IPX protocol \li PEthSocket - socket interface for raw Ethernet interfaces \subsection thread Process and Thread Classes Classes that handle processes, multi-threading and synchronsiation. \li PProcess - implements the primary thread of control for a running program \li PServiceProcess - implements a "daemon" or "system process" \li PThread - abstracts a thread of control or execution context \li PSemaphore - synchronisation primitive based on a counter \li PMutex - synchronisation primitive based on mutual exclusion \li PCriticalSection - synchronisation primitive implementing exclusive access to a critical code section \li PSyncPoint - allows multiple threads to sychronise to a specific code point. See also PSyncPointAck \li PAtomicInteger - implements an integer counter with atomic increment and decrement operations \subsection misc Miscellaneous Classes \li PArgList - parse a command line passed to a console program \li PConfig - provide persistent storage for program settings using a platform-appropriate mechanism \li PTime - abstracts the notion of a wall-clock time and date \li PTimeInterval - abstracts the notion of a time interval as the difference between two PTime values \li PDynaLink - implements a dynamically loadable code module \li PRemoteConnection - controls for a dialup network connection \li PMail - send an email using a platform-appropriate mechanism \li PPluginManager - manage plugin code modules \li PAbstractFactory - an implementation of the "Abstract Factory" paradigm using templates \li PSmartPointer - a reference counted pointer \li PNotifier - a notifier function that allows any class to call a member function on any other class \li PSmartNotifierFunction - a smart notifier function that uses object IDs rather than pointers \section components Console Components \subsection http HTTP Classes Implementation of the HTTP protocol \li PHTTP - base class for HTTP protocol. See also PHTTPClient and PHTTPServer \li PURL - parse and maniulate uniform resource locations \li PHTML - a string stream that formats HTML information \li PHTTPForm - allows the creation of HTTP forms \li PHTTPServiceProcess - a PServiceProcess descendant that contains a HTTP server \subsection protocol Protocol Classes Implementation of various Internet-related protocols. Some of these are implemented within PWLib - some require external libraries for support \li PInternetProtocol - base class for all text-based Internet protocols \li PPOP3 - base class for POP3 protocol classes. See also PPOP3Client and PPOP3Server \li PSMTMP - base class for SMTP protocol classes. See also PSMTPClient and PSMTPServer \li PFTP - base class for FTP protocol classes. See also PFTPClient and FTPServer \li PMIMEInfo - implements a list of key-value pairs in MIME format \li PTelnetSocket - implements the TELNET protocol \li PSocksProtocol - base class for SOCKS protocol implementation. See also PSocks4Socket, PSocks5Socket, PSocksSocket, PSocksUDPSocket \li PSTUNClient - implementation of a STUN client \li PSNMP - base classs for SNMP protocol implementations. See also PSNMPClient and PSNMPServer \li PSSLChannel - PIndirectChannel that implements the SSL protocol via OpenSSL. \li PSASL - implements the SASL protocol via the Cyrus SASL library \li PXMLRPC - implements the XMLRPC protocol via the Expat XML library and the HTTP classes \li PSOAPClient - implements a SOAP client \li PLDAPSession - implements a LDAP client via the OpenLDAP library \li PILSSession - implements a ILS client via the OpenLDAP library \li XMPP::Stream - implements a XMPP (Jabber) stream as a PChannel. \subsection misccomponents Miscellaneous Classes \li PModem - a descendant of PSerialChannel that is customised for modems that obey the AT command set \li PIpAccessControlList - a list of entries that allow specification of a range of IP addresses or networks \li PRandom - a random number generator \li PCypher - implementation of various code cyphers such as PMessageDigest5, PTEACypher, and PMessageDigestSHA1 \li PWAVFile - implements a AIFF format WAV file \li PDTMFDecoder - decodes DTMF digits from a stream of PCM data \li PMemoryFile - implements a PFile descendant that stores data in memory \li PSDLVideoDevice - implement a vide display device using the SDL library \li PXML - Implements a parser for XML using the Expat library \li PVXMLChannel - Implements a parser for the VXML language \li PTextToSpeech - Implement a Text to Speech converter \subsection asn ASN.1 Support Classes \li PASN_Array \li PASN_BitString \li PASN_BMPString \li PASN_Boolean \li PASN_Choice \li PASN_ConstrainedObject \li PASN_ConstrainedString \li PASN_Enumeration \li PASN_GeneralisedTime \li PASN_Integer \li PASN_Null \li PASN_Object \li PASN_ObjectId \li PASN_OctetString \li PASN_Real \li PASN_Sequence \li PASN_Set \li PASN_Stream \li PASN_UniversalTime \subsection history History \li 17 May 2004 - Converted from Doc++ to Doxygen format by Craig Southeren */ pwlib_v1_10_2/pwlib_cfg.dxy0100644000176200056700000014407610475420243016075 0ustar releasepostincr# Doxyfile 1.4.5 # 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 #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = PWLib # 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 = 1.10.2 # 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 = . # 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: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # 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 = NO # 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 the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_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 DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = 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 = 8 # 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 = # 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 # 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 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 #--------------------------------------------------------------------------- # 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 = YES # 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 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 = YES # 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_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 YES. SHOW_DIRECTORIES = 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 = #--------------------------------------------------------------------------- # 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 = NO # 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 = #--------------------------------------------------------------------------- # 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 = ./pwlib.dxy \ ./include/ptlib \ ./include/ptclib # 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 FILE_PATTERNS = # 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 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 (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = 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 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 compressed 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 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 # 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 # If the GENERATE_TREEVIEW tag is set to YES, 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. GENERATE_TREEVIEW = NO # 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 #--------------------------------------------------------------------------- # 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 = NO # 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 = NO # 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 = NO # 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 = DOCPLUSLUS \ DOC_PLUS_PLUS # 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 # 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 = NO # 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 = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = YES # 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 tags 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 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 MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # 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 a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # 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 #--------------------------------------------------------------------------- # Configuration::additions 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 pwlib_v1_10_2/include/0040755000176200056700000000000010512262773015031 5ustar releasepostincrpwlib_v1_10_2/include/ptclib/0040755000176200056700000000000010512262773016306 5ustar releasepostincrpwlib_v1_10_2/include/ptclib/asnber.h0100644000176200056700000000520607712346222017731 0ustar releasepostincr/* * asnper.h * * Abstract Syntax Notation Encoding Rules classes * * Portable Windows Library * */ #ifdef P_INCLUDE_BER /** Class for ASN basic Encoding Rules stream. */ class PBER_Stream : public PASN_Stream { PCLASSINFO(PBER_Stream, PASN_Stream); public: PBER_Stream(); PBER_Stream(const PBYTEArray & bytes); PBER_Stream(const BYTE * buf, PINDEX size); PBER_Stream & operator=(const PBYTEArray & bytes); virtual BOOL Read(PChannel & chan); virtual BOOL Write(PChannel & chan); virtual BOOL NullDecode(PASN_Null &); virtual void NullEncode(const PASN_Null &); virtual BOOL BooleanDecode(PASN_Boolean &); virtual void BooleanEncode(const PASN_Boolean &); virtual BOOL IntegerDecode(PASN_Integer &); virtual void IntegerEncode(const PASN_Integer &); virtual BOOL EnumerationDecode(PASN_Enumeration &); virtual void EnumerationEncode(const PASN_Enumeration &); virtual BOOL RealDecode(PASN_Real &); virtual void RealEncode(const PASN_Real &); virtual BOOL ObjectIdDecode(PASN_ObjectId &); virtual void ObjectIdEncode(const PASN_ObjectId &); virtual BOOL BitStringDecode(PASN_BitString &); virtual void BitStringEncode(const PASN_BitString &); virtual BOOL OctetStringDecode(PASN_OctetString &); virtual void OctetStringEncode(const PASN_OctetString &); virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &); virtual void ConstrainedStringEncode(const PASN_ConstrainedString &); virtual BOOL BMPStringDecode(PASN_BMPString &); virtual void BMPStringEncode(const PASN_BMPString &); virtual BOOL ChoiceDecode(PASN_Choice &); virtual void ChoiceEncode(const PASN_Choice &); virtual BOOL ArrayDecode(PASN_Array &); virtual void ArrayEncode(const PASN_Array &); virtual BOOL SequencePreambleDecode(PASN_Sequence &); virtual void SequencePreambleEncode(const PASN_Sequence &); virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &); virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &); virtual BOOL SequenceUnknownDecode(PASN_Sequence &); virtual void SequenceUnknownEncode(const PASN_Sequence &); virtual PASN_Object * CreateObject(unsigned tag, PASN_Object::TagClass tagClass, BOOL primitive) const; BOOL HeaderDecode(unsigned & tagVal, PASN_Object::TagClass & tagClass, BOOL & primitive, unsigned & len); BOOL HeaderDecode(PASN_Object & obj, unsigned & len); void HeaderEncode(const PASN_Object & obj); }; #endif pwlib_v1_10_2/include/ptclib/asner.h0100644000176200056700000011356210341461131017561 0ustar releasepostincr/* * asner.h * * Abstract Syntax Notation Encoding Rules classes * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: asner.h,v $ * Revision 1.46 2005/11/25 01:01:13 csoutheren * Applied patch #1351168 * PWlib various fixes * * Revision 1.45 2005/06/07 06:25:53 csoutheren * Applied patch 1199897 to increase speed of ASN parser debugging output * Thanks to Dmitriy * * Revision 1.44 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.43 2004/04/18 04:33:35 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.42 2003/12/14 10:21:29 rjongbloed * Fixed bug in length incorrectlty decoded from ASN and (apparently) rare circumstances. Thanks pangxg@hotmail.com. * Cleaned up return values to be BOOL rather than int for some functions. * * Revision 1.41 2003/08/18 23:32:22 rjongbloed * Micro optimisation suggested by Chih-Wei Huang * * Revision 1.40 2003/08/01 16:00:51 csoutheren * Changed #if to #ifdef to (maybe) avoid compiler problems with gcc 2.95.2 * * Revision 1.39 2003/08/01 02:12:34 csoutheren * Changed to allow easy isolation of PER, BER and XER encoding/decoding routines * * Revision 1.38 2003/04/22 23:39:09 craigs * Changed some functions from protected to public for MacOSX. Thanks to Hugo Santos * * Revision 1.37 2003/04/17 14:44:44 craigs * Removed MacOS specific defines to make some attributes public * Thanks to Hugo Santos and apologies to Roger Hardiman * * Revision 1.36 2003/02/26 01:57:44 robertj * Added XML encoding rules to ASN system, thanks Federico Pinna * * Revision 1.35 2003/02/01 13:25:52 robertj * Added function to add new elements directly to ASN array. * * Revision 1.34 2003/01/24 23:43:43 robertj * Fixed subtle problems with the use of MAX keyword for unsigned numbers, * should beUINT_MAX not INT_MAX, thanks Stevie Gray for pointing it out. * * Revision 1.33 2002/11/26 23:29:18 robertj * Added missing const to DecodeSubType() function. * * Revision 1.32 2002/11/06 22:47:23 robertj * Fixed header comment (copyright etc) * * Revision 1.31 2002/10/31 05:50:49 robertj * Changed to use new UTF-8/UCS-2 conversion functions on PString. * * Revision 1.30 2002/10/10 14:37:40 rogerh * In two of the PASN classes make the protected members public. This * makes OpenH323 compile in Mac OS X 10.2.1 * * Revision 1.29 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.28 2002/05/29 01:22:35 robertj * Added ability to set object id from unsigned integer arrays. * * Revision 1.27 2002/05/21 04:23:40 robertj * Fixed problem with ASN encoding/decoding unsconstrained negative numbers, * * Revision 1.26 2002/05/14 06:59:31 robertj * Added more bullet proofing so a malformed PDU cannot cause teh decoder * to try and allocate huge arrays and consume all CPU and memory on a * system. A configurable limit of 100 is set for things like SEQUENCE OF. * * Revision 1.25 2001/12/13 09:13:28 robertj * Added function get get oid as a string. * Added functions to compare oid to PString. * * Revision 1.24 2001/09/14 01:59:59 robertj * Fixed problem with incorrectly initialised PASN_Choice sub-object. * * Revision 1.23 2001/08/06 01:39:02 robertj * Added assignement operator with RHS of PASN_BMPString to classes * descended from PASN_BMPString. * * Revision 1.22 2001/06/14 02:14:12 robertj * Added functions to encode and decode another ASN type that is inside * an octet string, useful for ANY or EXTERNAL types etc. * * Revision 1.21 2001/04/30 06:47:04 robertj * Fixed problem with en/decoding more than 16 extension fields in a sequence. * * Revision 1.20 2001/04/26 08:15:58 robertj * Fixed problem with ASN compile of single constraints on enumerations. * * Revision 1.19 2001/04/23 04:40:14 robertj * Added ASN standard types GeneralizedTime and UTCTime * * Revision 1.18 2001/04/12 03:25:22 robertj * Fixed PASN_Boolean cosntructor to be compatible with usage in ASN parser. * Changed all PASN_xxx types so constructor can take real type as only * parameter. eg PASN_OctetString s = "fred"; * * Revision 1.17 2001/03/21 03:32:35 robertj * Aded ability to get at the data bits buffer in a PASN_BitString * * Revision 1.16 2001/01/24 04:36:56 robertj * Added more bulletproofing to ASN structures to obey constraints. * * Revision 1.15 2000/10/26 11:09:07 robertj * More bullet proofing of PER decoder, changed bit type to be unsigned. * * Revision 1.14 2000/10/25 04:05:44 robertj * More bullet proofing of PER decoder. * * Revision 1.13 2000/07/11 18:23:03 robertj * Added ability to set/get BMP string data as PWORDArray. * * Revision 1.12 2000/04/10 17:30:42 robertj * Added [] operator for char access on ASN string classes. * * Revision 1.11 2000/02/29 06:32:12 robertj * Added ability to remove optional field in sequence, thanks Dave Harvey. * * Revision 1.10 1999/08/09 13:02:45 robertj * dded ASN compiler #defines for backward support of pre GCC 2.9 compilers. * Added ASN compiler #defines to reduce its memory footprint. * * Revision 1.9 1999/07/22 06:48:51 robertj * Added comparison operation to base ASN classes and compiled ASN code. * Added support for ANY type in ASN parser. * * Revision 1.8 1999/03/09 09:34:05 robertj * Fixed typo's. * * Revision 1.7 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.6 1998/09/23 06:19:21 robertj * Added open source copyright license. * * Revision 1.5 1998/05/21 04:26:53 robertj * Fixed numerous PER problems. * * Revision 1.4 1998/05/07 05:19:28 robertj * Fixed problems with using copy constructor/assignment oeprator on PASN_Objects. * * Revision 1.3 1997/12/18 05:08:13 robertj * Added function to get choice discriminat`or name. * * Revision 1.2 1997/12/11 10:35:42 robertj * Support for new ASN file parser. * */ #ifndef _ASNER_H #define _ASNER_H #ifdef P_USE_PRAGMA #pragma interface #endif // provide options to omit vertain encodings, if needed #define P_INCLUDE_PER #define P_INCLUDE_BER #define P_INCLUDE_XER class PASN_Stream; class PBER_Stream; class PPER_Stream; #if P_EXPAT class PXER_Stream; class PXMLElement; #else #undef P_INCLUDE_XER #endif #include ///////////////////////////////////////////////////////////////////////////// /** Base class for ASN encoding/decoding. */ class PASN_Object : public PObject { PCLASSINFO(PASN_Object, PObject); public: /** Return a string giving the type of the object */ virtual PString GetTypeAsString() const = 0; PINDEX GetObjectLength() const; virtual PINDEX GetDataLength() const = 0; virtual BOOL IsPrimitive() const { return TRUE; } virtual BOOL Decode(PASN_Stream &) = 0; virtual void Encode(PASN_Stream &) const = 0; BOOL IsExtendable() const { return extendable; } void SetExtendable(BOOL ext = TRUE) { extendable = ext; } enum TagClass { UniversalTagClass, ApplicationTagClass, ContextSpecificTagClass, PrivateTagClass, DefaultTagClass }; TagClass GetTagClass() const { return tagClass; } enum UniversalTags { InvalidUniversalTag, UniversalBoolean, UniversalInteger, UniversalBitString, UniversalOctetString, UniversalNull, UniversalObjectId, UniversalObjectDescriptor, UniversalExternalType, UniversalReal, UniversalEnumeration, UniversalEmbeddedPDV, UniversalSequence = 16, UniversalSet, UniversalNumericString, UniversalPrintableString, UniversalTeletexString, UniversalVideotexString, UniversalIA5String, UniversalUTCTime, UniversalGeneralisedTime, UniversalGeneralizedTime = UniversalGeneralisedTime, UniversalGraphicString, UniversalVisibleString, UniversalGeneralString, UniversalUniversalString, UniversalBMPString = 30 }; unsigned GetTag() const { return tag; } virtual void SetTag(unsigned newTag, TagClass tagClass = DefaultTagClass); enum ConstraintType { Unconstrained, PartiallyConstrained, FixedConstraint, ExtendableConstraint }; enum MinimumValueTag { MinimumValue = INT_MIN }; enum MaximumValueTag { MaximumValue = INT_MAX }; void SetConstraints(ConstraintType type, int value) { SetConstraintBounds(type, value, value); } void SetConstraints(ConstraintType, int lower, MaximumValueTag /*upper*/) { SetConstraintBounds(PartiallyConstrained, (int)lower, lower < 0 ? INT_MAX : UINT_MAX); } void SetConstraints(ConstraintType, MinimumValueTag lower, unsigned upper) { SetConstraintBounds(PartiallyConstrained, (int)lower, (unsigned)upper); } void SetConstraints(ConstraintType, MinimumValueTag lower, MaximumValueTag upper) { SetConstraintBounds(PartiallyConstrained, (int)lower, (unsigned)upper); } void SetConstraints(ConstraintType type, int lower, unsigned upper) { SetConstraintBounds(type, lower, upper); } virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual void SetCharacterSet(ConstraintType ctype, const char * charSet); virtual void SetCharacterSet(ConstraintType ctype, unsigned firstChar, unsigned lastChar); static PINDEX GetMaximumArraySize(); static void SetMaximumArraySize(PINDEX sz); static PINDEX GetMaximumStringSize(); static void SetMaximumStringSize(PINDEX sz); protected: PASN_Object(unsigned tag, TagClass tagClass, BOOL extend = FALSE); /// PER extension capability BOOL extendable; /// BER tag class TagClass tagClass; /// ASN object tag unsigned tag; }; /** Base class for constrained ASN encoding/decoding. */ class PASN_ConstrainedObject : public PASN_Object { PCLASSINFO(PASN_ConstrainedObject, PASN_Object); public: BOOL IsConstrained() const { return constraint != Unconstrained; } int GetLowerLimit() const { return lowerLimit; } unsigned GetUpperLimit() const { return upperLimit; } BOOL ConstrainedLengthDecode(PPER_Stream & strm, unsigned & length); void ConstrainedLengthEncode(PPER_Stream & strm, unsigned length) const; BOOL ConstraintEncode(PPER_Stream & strm, unsigned value) const; protected: virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); PASN_ConstrainedObject(unsigned tag, TagClass tagClass); ConstraintType constraint; int lowerLimit; unsigned upperLimit; }; /** Class for ASN Null type. */ class PASN_Null : public PASN_Object { PCLASSINFO(PASN_Null, PASN_Object); public: PASN_Null(unsigned tag = UniversalNull, TagClass tagClass = UniversalTagClass); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; }; /** Class for ASN Boolean type. */ class PASN_Boolean : public PASN_Object { PCLASSINFO(PASN_Boolean, PASN_Object); public: PASN_Boolean(BOOL val = FALSE); PASN_Boolean(unsigned tag, TagClass tagClass, BOOL val = FALSE); PASN_Boolean & operator=(BOOL v) { value = v; return *this; } operator BOOL() const { return value; } BOOL GetValue() const { return value; } void SetValue(BOOL v) { value = v; } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; protected: BOOL value; }; /** Class for ASN Integer type. */ class PASN_Integer : public PASN_ConstrainedObject { PCLASSINFO(PASN_Integer, PASN_ConstrainedObject); public: PASN_Integer(unsigned val = 0); PASN_Integer(unsigned tag, TagClass tagClass, unsigned val = 0); PASN_Integer & operator=(unsigned value); operator unsigned() const { return value; } unsigned GetValue() const { return value; } void SetValue(unsigned v) { operator=(v); } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; #endif BOOL IsUnsigned() const; protected: unsigned value; }; struct PASN_Names{ char * name; PINDEX value; }; /** Class for ASN Enumerated type. */ class PASN_Enumeration : public PASN_Object { PCLASSINFO(PASN_Enumeration, PASN_Object); public: PASN_Enumeration(unsigned val = 0); PASN_Enumeration(unsigned tag, TagClass tagClass, unsigned nEnums = P_MAX_INDEX, BOOL extendable = FALSE, unsigned val = 0); PASN_Enumeration(unsigned tag, TagClass tagClass, unsigned nEnums, BOOL extendable, const PASN_Names * nameSpec, unsigned namesCnt, unsigned val = 0); PASN_Enumeration & operator=(unsigned v) { value = v; return *this; } operator unsigned() const { return value; } unsigned GetValue() const { return value; } void SetValue(unsigned v) { value = v; } unsigned GetMaximum() const { return maxEnumValue; } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; #endif #ifdef P_INCLUDE_XER virtual BOOL DecodeXER(PXER_Stream & strm); virtual void EncodeXER(PXER_Stream & strm) const; #endif PINDEX GetValueByName(PString name) const; protected: unsigned maxEnumValue; unsigned value; const PASN_Names *names; unsigned namesCount; }; /** Class for ASN floating point type. */ class PASN_Real : public PASN_Object { PCLASSINFO(PASN_Real, PASN_Object); public: PASN_Real(double val = 0); PASN_Real(unsigned tag, TagClass tagClass, double val = 0); PASN_Real & operator=(double val) { value = val; return *this; } operator double() const { return value; } double GetValue() const { return value; } void SetValue(double v) { value = v; } virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; protected: double value; }; /** Class for ASN Object Identifier type. */ class PASN_ObjectId : public PASN_Object { PCLASSINFO(PASN_ObjectId, PASN_Object); public: PASN_ObjectId(const char * dotstr = NULL); PASN_ObjectId(unsigned tag, TagClass tagClass); PASN_ObjectId(const PASN_ObjectId & other); PASN_ObjectId & operator=(const PASN_ObjectId & other); PASN_ObjectId & operator=(const char * dotstr); PASN_ObjectId & operator=(const PString & dotstr); PASN_ObjectId & operator=(const PUnsignedArray & numbers); void SetValue(const PString & dotstr); void SetValue(const PUnsignedArray & numbers) { value = numbers; } void SetValue(const unsigned * numbers, PINDEX size); bool operator==(const char * dotstr) const; bool operator!=(const char * dotstr) const { return !operator==(dotstr); } bool operator==(const PString & dotstr) const { return operator==((const char *)dotstr); } bool operator!=(const PString & dotstr) const { return !operator==((const char *)dotstr); } bool operator==(const PASN_ObjectId & id) const { return value == id.value; } PINDEX GetSize() const { return value.GetSize(); } unsigned operator[](PINDEX idx) const { return value[idx]; } const PUnsignedArray & GetValue() const { return value; } PString AsString() const; virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL CommonDecode(PASN_Stream & strm, unsigned dataLen); void CommonEncode(PBYTEArray & eObjId) const; protected: PUnsignedArray value; }; /** Class for ASN Bit String type. */ class PASN_BitString : public PASN_ConstrainedObject { PCLASSINFO(PASN_BitString, PASN_ConstrainedObject); public: PASN_BitString(unsigned nBits = 0, const BYTE * buf = NULL); PASN_BitString(unsigned tag, TagClass tagClass, unsigned nBits = 0); PASN_BitString(const PASN_BitString & other); PASN_BitString & operator=(const PASN_BitString & other); void SetData(unsigned nBits, const PBYTEArray & bytes); void SetData(unsigned nBits, const BYTE * buf, PINDEX size = 0); const BYTE * GetDataPointer() const { return bitData; } unsigned GetSize() const { return totalBits; } BOOL SetSize(unsigned nBits); bool operator[](PINDEX bit) const; void Set(unsigned bit); void Clear(unsigned bit); void Invert(unsigned bit); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_BER BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const; #endif #ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; #endif BOOL DecodeSequenceExtensionBitmap(PPER_Stream & strm); void EncodeSequenceExtensionBitmap(PPER_Stream & strm) const; protected: unsigned totalBits; PBYTEArray bitData; }; /** Class for ASN Octet String type. */ class PASN_OctetString : public PASN_ConstrainedObject { PCLASSINFO(PASN_OctetString, PASN_ConstrainedObject); public: PASN_OctetString(const char * str = NULL, PINDEX size = 0); PASN_OctetString(unsigned tag, TagClass tagClass); PASN_OctetString(const PASN_OctetString & other); PASN_OctetString & operator=(const PASN_OctetString & other); PASN_OctetString & operator=(const char * str); PASN_OctetString & operator=(const PString & str); PASN_OctetString & operator=(const PBYTEArray & arr); void SetValue(const char * str) { operator=(str); } void SetValue(const PString & str) { operator=(str); } void SetValue(const PBYTEArray & arr) { operator=(arr); } void SetValue(const BYTE * data, PINDEX len); const PBYTEArray & GetValue() const { return value; } operator const PBYTEArray &() const { return value; } operator const BYTE *() const { return value; } PString AsString() const; BYTE operator[](PINDEX i) const { return value[i]; } BYTE & operator[](PINDEX i) { return value[i]; } BYTE * GetPointer(PINDEX sz = 0) { return value.GetPointer(sz); } PINDEX GetSize() const { return value.GetSize(); } BOOL SetSize(PINDEX newSize); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; #endif BOOL DecodeSubType(PASN_Object &) const; void EncodeSubType(const PASN_Object &); protected: PBYTEArray value; }; /** Base class for ASN String types. */ class PASN_ConstrainedString : public PASN_ConstrainedObject { PCLASSINFO(PASN_ConstrainedString, PASN_ConstrainedObject); public: PASN_ConstrainedString & operator=(const char * str); PASN_ConstrainedString & operator=(const PString & str) { return operator=((const char *)str); } operator const PString &() const { return value; } const PString & GetValue() const { return value; } void SetValue(const char * v) { operator=(v); } void SetValue(const PString & v) { operator=(v); } char operator[](PINDEX idx) const { return value[idx]; } void SetCharacterSet(ConstraintType ctype, const char * charSet); void SetCharacterSet(ConstraintType ctype, unsigned firstChar = 0, unsigned lastChar = 255); void SetCharacterSet(const char * charSet, PINDEX size, ConstraintType ctype); virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_BER BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const; #endif #ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; #endif protected: PASN_ConstrainedString(const char * canonicalSet, PINDEX setSize, unsigned tag, TagClass tagClass); PString value; PCharArray characterSet; const char * canonicalSet; PINDEX canonicalSetSize; unsigned canonicalSetBits; unsigned charSetUnalignedBits; unsigned charSetAlignedBits; }; #define DECLARE_STRING_CLASS(name) \ class PASN_##name##String : public PASN_ConstrainedString { \ PCLASSINFO(PASN_##name##String, PASN_ConstrainedString); \ public: \ PASN_##name##String(const char * str = NULL); \ PASN_##name##String(unsigned tag, TagClass tagClass); \ PASN_##name##String & operator=(const char * str); \ PASN_##name##String & operator=(const PString & str); \ virtual PObject * Clone() const; \ virtual PString GetTypeAsString() const; \ } DECLARE_STRING_CLASS(Numeric); DECLARE_STRING_CLASS(Printable); DECLARE_STRING_CLASS(Visible); DECLARE_STRING_CLASS(IA5); DECLARE_STRING_CLASS(General); /** Class for ASN BMP (16 bit) String type. */ class PASN_BMPString : public PASN_ConstrainedObject { PCLASSINFO(PASN_BMPString, PASN_ConstrainedObject); public: PASN_BMPString(const char * str = NULL); PASN_BMPString(const PWORDArray & wstr); PASN_BMPString(unsigned tag, TagClass tagClass); PASN_BMPString(const PASN_BMPString & other); PASN_BMPString & operator=(const PASN_BMPString & other); PASN_BMPString & operator=(const char * v) { return operator=(PString(v).AsUCS2()); } PASN_BMPString & operator=(const PString & v) { return operator=(v.AsUCS2()); } PASN_BMPString & operator=(const PWORDArray & v); operator PString() const { return GetValue(); } operator PWORDArray() const { return value; } PString GetValue() const { return value; } void GetValue(PWORDArray & v) const { v = value; } void SetValue(const char * v) { operator=(PString(v).AsUCS2()); } void SetValue(const PString & v) { operator=(v.AsUCS2()); } void SetValue(const PWORDArray & v) { operator=(v); } void SetValue(const PASN_BMPString & v) { operator=(v.value); } void SetCharacterSet(ConstraintType ctype, const char * charSet); void SetCharacterSet(ConstraintType ctype, const PWORDArray & charSet); void SetCharacterSet(ConstraintType ctype, unsigned firstChar, unsigned lastChar); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_BER BOOL DecodeBER(PBER_Stream & strm, unsigned len); void EncodeBER(PBER_Stream & strm) const; #endif #ifdef P_INCLUDE_PER BOOL DecodePER(PPER_Stream & strm); void EncodePER(PPER_Stream & strm) const; #endif protected: void Construct(); BOOL IsLegalCharacter(WORD ch); PWORDArray value; PWORDArray characterSet; WORD firstChar, lastChar; unsigned charSetUnalignedBits; unsigned charSetAlignedBits; }; class PASN_GeneralisedTime : public PASN_VisibleString { PCLASSINFO(PASN_GeneralisedTime, PASN_VisibleString); public: PASN_GeneralisedTime() : PASN_VisibleString(UniversalGeneralisedTime, UniversalTagClass) { } PASN_GeneralisedTime(const PTime & time) : PASN_VisibleString(UniversalGeneralisedTime, UniversalTagClass) { SetValue(time); } PASN_GeneralisedTime(unsigned tag, TagClass tagClass) : PASN_VisibleString(tag, tagClass) { } PASN_GeneralisedTime & operator=(const PTime & time); void SetValue(const PTime & time) { operator=(time); } PTime GetValue() const; }; class PASN_UniversalTime : public PASN_VisibleString { PCLASSINFO(PASN_UniversalTime, PASN_VisibleString); public: PASN_UniversalTime() : PASN_VisibleString(UniversalUTCTime, UniversalTagClass) { } PASN_UniversalTime(const PTime & time) : PASN_VisibleString(UniversalUTCTime, UniversalTagClass) { SetValue(time); } PASN_UniversalTime(unsigned tag, TagClass tagClass) : PASN_VisibleString(tag, tagClass) { } PASN_UniversalTime & operator=(const PTime & time); void SetValue(const PTime & time) { operator=(time); } PTime GetValue() const; }; class PASN_Sequence; /** Class for ASN Choice type. */ class PASN_Choice : public PASN_Object { PCLASSINFO(PASN_Choice, PASN_Object); public: ~PASN_Choice(); virtual void SetTag(unsigned newTag, TagClass tagClass = DefaultTagClass); PString GetTagName() const; PASN_Object & GetObject() const; BOOL IsValid() const { return choice != NULL; } #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 operator PASN_Null &() const; operator PASN_Boolean &() const; operator PASN_Integer &() const; operator PASN_Enumeration &() const; operator PASN_Real &() const; operator PASN_ObjectId &() const; operator PASN_BitString &() const; operator PASN_OctetString &() const; operator PASN_NumericString &() const; operator PASN_PrintableString &() const; operator PASN_VisibleString &() const; operator PASN_IA5String &() const; operator PASN_GeneralString &() const; operator PASN_BMPString &() const; operator PASN_Sequence &() const; #else operator PASN_Null &(); operator PASN_Boolean &(); operator PASN_Integer &(); operator PASN_Enumeration &(); operator PASN_Real &(); operator PASN_ObjectId &(); operator PASN_BitString &(); operator PASN_OctetString &(); operator PASN_NumericString &(); operator PASN_PrintableString &(); operator PASN_VisibleString &(); operator PASN_IA5String &(); operator PASN_GeneralString &(); operator PASN_BMPString &(); operator PASN_Sequence &(); operator const PASN_Null &() const; operator const PASN_Boolean &() const; operator const PASN_Integer &() const; operator const PASN_Enumeration &() const; operator const PASN_Real &() const; operator const PASN_ObjectId &() const; operator const PASN_BitString &() const; operator const PASN_OctetString &() const; operator const PASN_NumericString &() const; operator const PASN_PrintableString &() const; operator const PASN_VisibleString &() const; operator const PASN_IA5String &() const; operator const PASN_GeneralString &() const; operator const PASN_BMPString &() const; operator const PASN_Sequence &() const; #endif virtual BOOL CreateObject() = 0; virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL IsPrimitive() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; #ifdef P_INCLUDE_PER virtual BOOL DecodePER(PPER_Stream &); virtual void EncodePER(PPER_Stream &) const; #endif #ifdef P_INCLUDE_XER BOOL DecodeXER(PXER_Stream &); void EncodeXER(PXER_Stream &) const; #endif PASN_Choice & operator=(const PASN_Choice & other); PINDEX GetValueByName(PString name) const; protected: PASN_Choice(unsigned nChoices = 0, BOOL extend = FALSE); PASN_Choice(unsigned tag, TagClass tagClass, unsigned nChoices, BOOL extend); PASN_Choice(unsigned tag, TagClass tagClass, unsigned nChoices, BOOL extend, const PASN_Names * nameSpec,unsigned namesCnt); PASN_Choice(const PASN_Choice & other); BOOL CheckCreate() const; unsigned numChoices; PASN_Object * choice; const PASN_Names *names; unsigned namesCount; }; PARRAY(PASN_ObjectArray, PASN_Object); /** Class for ASN Sequence type. */ class PASN_Sequence : public PASN_Object { PCLASSINFO(PASN_Sequence, PASN_Object); public: PASN_Sequence(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass, unsigned nOpts = 0, BOOL extend = FALSE, unsigned nExtend = 0); PASN_Sequence(const PASN_Sequence & other); PASN_Sequence & operator=(const PASN_Sequence & other); PINDEX GetSize() const { return fields.GetSize(); } BOOL SetSize(PINDEX newSize); PASN_Object & operator[](PINDEX i) const { return fields[i]; } BOOL HasOptionalField(PINDEX opt) const; void IncludeOptionalField(PINDEX opt); void RemoveOptionalField(PINDEX opt); virtual Comparison Compare(const PObject & obj) const; virtual PObject * Clone() const; virtual void PrintOn(ostream & strm) const; virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL IsPrimitive() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; BOOL PreambleDecode(PASN_Stream & strm); void PreambleEncode(PASN_Stream & strm) const; BOOL KnownExtensionDecode(PASN_Stream & strm, PINDEX fld, PASN_Object & field); void KnownExtensionEncode(PASN_Stream & strm, PINDEX fld, const PASN_Object & field) const; BOOL UnknownExtensionsDecode(PASN_Stream & strm); void UnknownExtensionsEncode(PASN_Stream & strm) const; #ifdef P_INCLUDE_BER BOOL PreambleDecodeBER(PBER_Stream & strm); void PreambleEncodeBER(PBER_Stream & strm) const; BOOL KnownExtensionDecodeBER(PBER_Stream & strm, PINDEX fld, PASN_Object & field); void KnownExtensionEncodeBER(PBER_Stream & strm, PINDEX fld, const PASN_Object & field) const; BOOL UnknownExtensionsDecodeBER(PBER_Stream & strm); void UnknownExtensionsEncodeBER(PBER_Stream & strm) const; #endif #ifdef P_INCLUDE_PER BOOL PreambleDecodePER(PPER_Stream & strm); void PreambleEncodePER(PPER_Stream & strm) const; BOOL KnownExtensionDecodePER(PPER_Stream & strm, PINDEX fld, PASN_Object & field); void KnownExtensionEncodePER(PPER_Stream & strm, PINDEX fld, const PASN_Object & field) const; BOOL UnknownExtensionsDecodePER(PPER_Stream & strm); void UnknownExtensionsEncodePER(PPER_Stream & strm) const; #endif #ifdef P_INCLUDE_XER virtual BOOL PreambleDecodeXER(PXER_Stream & strm); virtual void PreambleEncodeXER(PXER_Stream & strm) const; virtual BOOL KnownExtensionDecodeXER(PXER_Stream & strm, PINDEX fld, PASN_Object & field); virtual void KnownExtensionEncodeXER(PXER_Stream & strm, PINDEX fld, const PASN_Object & field) const; virtual BOOL UnknownExtensionsDecodeXER(PXER_Stream & strm); virtual void UnknownExtensionsEncodeXER(PXER_Stream & strm) const; #endif protected: BOOL NoExtensionsToDecode(PPER_Stream & strm); BOOL NoExtensionsToEncode(PPER_Stream & strm); PASN_ObjectArray fields; PASN_BitString optionMap; int knownExtensions; int totalExtensions; PASN_BitString extensionMap; PINDEX endBasicEncoding; }; /** Class for ASN Set type. */ class PASN_Set : public PASN_Sequence { PCLASSINFO(PASN_Set, PASN_Sequence); public: PASN_Set(unsigned tag = UniversalSet, TagClass tagClass = UniversalTagClass, unsigned nOpts = 0, BOOL extend = FALSE, unsigned nExtend = 0); virtual PObject * Clone() const; virtual PString GetTypeAsString() const; }; /** Class for ASN Array type. */ class PASN_Array : public PASN_ConstrainedObject { PCLASSINFO(PASN_Array, PASN_ConstrainedObject); public: PINDEX GetSize() const { return array.GetSize(); } BOOL SetSize(PINDEX newSize); PASN_Object & operator[](PINDEX i) const { return array[i]; } void Append(PASN_Object * obj) { array.SetAt(array.GetSize(), obj); } void RemoveAt(PINDEX i) { array.RemoveAt(i); } void RemoveAll() { array.RemoveAll(); } virtual Comparison Compare(const PObject & obj) const; virtual void PrintOn(ostream & strm) const; virtual void SetConstraintBounds(ConstraintType type, int lower, unsigned upper); virtual PString GetTypeAsString() const; virtual PINDEX GetDataLength() const; virtual BOOL IsPrimitive() const; virtual BOOL Decode(PASN_Stream &); virtual void Encode(PASN_Stream &) const; virtual PASN_Object * CreateObject() const = 0; PASN_Array & operator=(const PASN_Array & other); protected: PASN_Array(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); PASN_Array(const PASN_Array & other); PASN_ObjectArray array; }; ///////////////////////////////////////////////////////////////////////////// /** Base class for ASN decoder/encoder stream. */ class PASN_Stream : public PBYTEArray { PCLASSINFO(PASN_Stream, PBYTEArray); public: PASN_Stream(); PASN_Stream(const PBYTEArray & bytes); PASN_Stream(const BYTE * buf, PINDEX size); void PrintOn(ostream & strm) const; PINDEX GetPosition() const { return byteOffset; } void SetPosition(PINDEX newPos); BOOL IsAtEnd() { return byteOffset >= GetSize(); } void ResetDecoder(); void BeginEncoding(); void CompleteEncoding(); virtual BOOL Read(PChannel & chan) = 0; virtual BOOL Write(PChannel & chan) = 0; virtual BOOL NullDecode(PASN_Null &) = 0; virtual void NullEncode(const PASN_Null &) = 0; virtual BOOL BooleanDecode(PASN_Boolean &) = 0; virtual void BooleanEncode(const PASN_Boolean &) = 0; virtual BOOL IntegerDecode(PASN_Integer &) = 0; virtual void IntegerEncode(const PASN_Integer &) = 0; virtual BOOL EnumerationDecode(PASN_Enumeration &) = 0; virtual void EnumerationEncode(const PASN_Enumeration &) = 0; virtual BOOL RealDecode(PASN_Real &) = 0; virtual void RealEncode(const PASN_Real &) = 0; virtual BOOL ObjectIdDecode(PASN_ObjectId &) = 0; virtual void ObjectIdEncode(const PASN_ObjectId &) = 0; virtual BOOL BitStringDecode(PASN_BitString &) = 0; virtual void BitStringEncode(const PASN_BitString &) = 0; virtual BOOL OctetStringDecode(PASN_OctetString &) = 0; virtual void OctetStringEncode(const PASN_OctetString &) = 0; virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &) = 0; virtual void ConstrainedStringEncode(const PASN_ConstrainedString &) = 0; virtual BOOL BMPStringDecode(PASN_BMPString &) = 0; virtual void BMPStringEncode(const PASN_BMPString &) = 0; virtual BOOL ChoiceDecode(PASN_Choice &) = 0; virtual void ChoiceEncode(const PASN_Choice &) = 0; virtual BOOL ArrayDecode(PASN_Array &) = 0; virtual void ArrayEncode(const PASN_Array &) = 0; virtual BOOL SequencePreambleDecode(PASN_Sequence &) = 0; virtual void SequencePreambleEncode(const PASN_Sequence &) = 0; virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &) = 0; virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &) = 0; virtual BOOL SequenceUnknownDecode(PASN_Sequence &) = 0; virtual void SequenceUnknownEncode(const PASN_Sequence &) = 0; BYTE ByteDecode(); void ByteEncode(unsigned value); unsigned BlockDecode(BYTE * bufptr, unsigned nBytes); void BlockEncode(const BYTE * bufptr, PINDEX nBytes); void ByteAlign(); protected: PINDEX byteOffset; unsigned bitOffset; private: void Construct(); }; #ifdef P_INCLUDE_PER #include "asnper.h" #endif #ifdef P_INCLUDE_BER #include "asnber.h" #endif #ifdef P_INCLUDE_XER #include "asnxer.h" #endif #endif // _ASNER_H pwlib_v1_10_2/include/ptclib/asnper.h0100644000176200056700000000571107767034651017762 0ustar releasepostincr/* * asnper.h * * Abstract Syntax Notation Encoding Rules classes * * Portable Windows Library * */ #ifdef P_INCLUDE_PER /** Class for ASN Packed Encoding Rules stream. */ class PPER_Stream : public PASN_Stream { PCLASSINFO(PPER_Stream, PASN_Stream); public: PPER_Stream(BOOL aligned = TRUE); PPER_Stream(const PBYTEArray & bytes, BOOL aligned = TRUE); PPER_Stream(const BYTE * buf, PINDEX size, BOOL aligned = TRUE); PPER_Stream & operator=(const PBYTEArray & bytes); unsigned GetBitsLeft() const; virtual BOOL Read(PChannel & chan); virtual BOOL Write(PChannel & chan); virtual BOOL NullDecode(PASN_Null &); virtual void NullEncode(const PASN_Null &); virtual BOOL BooleanDecode(PASN_Boolean &); virtual void BooleanEncode(const PASN_Boolean &); virtual BOOL IntegerDecode(PASN_Integer &); virtual void IntegerEncode(const PASN_Integer &); virtual BOOL EnumerationDecode(PASN_Enumeration &); virtual void EnumerationEncode(const PASN_Enumeration &); virtual BOOL RealDecode(PASN_Real &); virtual void RealEncode(const PASN_Real &); virtual BOOL ObjectIdDecode(PASN_ObjectId &); virtual void ObjectIdEncode(const PASN_ObjectId &); virtual BOOL BitStringDecode(PASN_BitString &); virtual void BitStringEncode(const PASN_BitString &); virtual BOOL OctetStringDecode(PASN_OctetString &); virtual void OctetStringEncode(const PASN_OctetString &); virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &); virtual void ConstrainedStringEncode(const PASN_ConstrainedString &); virtual BOOL BMPStringDecode(PASN_BMPString &); virtual void BMPStringEncode(const PASN_BMPString &); virtual BOOL ChoiceDecode(PASN_Choice &); virtual void ChoiceEncode(const PASN_Choice &); virtual BOOL ArrayDecode(PASN_Array &); virtual void ArrayEncode(const PASN_Array &); virtual BOOL SequencePreambleDecode(PASN_Sequence &); virtual void SequencePreambleEncode(const PASN_Sequence &); virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &); virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &); virtual BOOL SequenceUnknownDecode(PASN_Sequence &); virtual void SequenceUnknownEncode(const PASN_Sequence &); BOOL IsAligned() const { return aligned; } BOOL SingleBitDecode(); void SingleBitEncode(BOOL value); BOOL MultiBitDecode(unsigned nBits, unsigned & value); void MultiBitEncode(unsigned value, unsigned nBits); BOOL SmallUnsignedDecode(unsigned & value); void SmallUnsignedEncode(unsigned value); BOOL LengthDecode(unsigned lower, unsigned upper, unsigned & len); void LengthEncode(unsigned len, unsigned lower, unsigned upper); BOOL UnsignedDecode(unsigned lower, unsigned upper, unsigned & value); void UnsignedEncode(int value, unsigned lower, unsigned upper); void AnyTypeEncode(const PASN_Object * value); protected: BOOL aligned; }; #endif pwlib_v1_10_2/include/ptclib/asnxer.h0100644000176200056700000000457307712346222017765 0ustar releasepostincr/* * asnxer.h * * Abstract Syntax Notation Encoding Rules classes * * Portable Windows Library * */ #ifdef P_INCLUDE_XER /** Class for ASN XML Encoding Rules stream. */ class PXER_Stream : public PASN_Stream { PCLASSINFO(PXER_Stream, PASN_Stream); public: PXER_Stream(PXMLElement * elem); PXER_Stream(PXMLElement * elem, const PBYTEArray & bytes); PXER_Stream(PXMLElement * elem, const BYTE * buf, PINDEX size); virtual BOOL Read(PChannel & chan); virtual BOOL Write(PChannel & chan); virtual BOOL NullDecode(PASN_Null &); virtual void NullEncode(const PASN_Null &); virtual BOOL BooleanDecode(PASN_Boolean &); virtual void BooleanEncode(const PASN_Boolean &); virtual BOOL IntegerDecode(PASN_Integer &); virtual void IntegerEncode(const PASN_Integer &); virtual BOOL EnumerationDecode(PASN_Enumeration &); virtual void EnumerationEncode(const PASN_Enumeration &); virtual BOOL RealDecode(PASN_Real &); virtual void RealEncode(const PASN_Real &); virtual BOOL ObjectIdDecode(PASN_ObjectId &); virtual void ObjectIdEncode(const PASN_ObjectId &); virtual BOOL BitStringDecode(PASN_BitString &); virtual void BitStringEncode(const PASN_BitString &); virtual BOOL OctetStringDecode(PASN_OctetString &); virtual void OctetStringEncode(const PASN_OctetString &); virtual BOOL ConstrainedStringDecode(PASN_ConstrainedString &); virtual void ConstrainedStringEncode(const PASN_ConstrainedString &); virtual BOOL BMPStringDecode(PASN_BMPString &); virtual void BMPStringEncode(const PASN_BMPString &); virtual BOOL ChoiceDecode(PASN_Choice &); virtual void ChoiceEncode(const PASN_Choice &); virtual BOOL ArrayDecode(PASN_Array &); virtual void ArrayEncode(const PASN_Array &); virtual BOOL SequencePreambleDecode(PASN_Sequence &); virtual void SequencePreambleEncode(const PASN_Sequence &); virtual BOOL SequenceKnownDecode(PASN_Sequence &, PINDEX, PASN_Object &); virtual void SequenceKnownEncode(const PASN_Sequence &, PINDEX, const PASN_Object &); virtual BOOL SequenceUnknownDecode(PASN_Sequence &); virtual void SequenceUnknownEncode(const PASN_Sequence &); PXMLElement * GetCurrentElement() { return position; } PXMLElement * SetCurrentElement(PXMLElement * elem) { return position = elem; } protected: PXMLElement * position; }; #endif pwlib_v1_10_2/include/ptclib/cypher.h0100644000176200056700000006750410343317551017757 0ustar releasepostincr/* * cypher.h * * Encryption support classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: cypher.h,v $ * Revision 1.23 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.22 2005/01/26 05:37:40 csoutheren * Added ability to remove config file support * * Revision 1.21 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.20 2004/03/23 05:59:17 csoutheren * Moved the Base64 routines into cypher.cxx, which is a more sensible * place and reduces the inclusion of unrelated code * * Revision 1.19 2004/02/04 02:31:34 csoutheren * Remove SHA-1 functions when OpenSSL is disabled * * Revision 1.18 2003/04/17 03:34:07 craigs * Fixed problem with delete'ing a void * * * Revision 1.17 2003/04/10 07:02:38 craigs * Fixed link problem in MD5 class * * Revision 1.16 2003/04/10 06:16:30 craigs * Added SHA-1 digest * * Revision 1.15 2002/11/06 22:47:23 robertj * Fixed header comment (copyright etc) * * Revision 1.14 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.13 2001/09/10 00:28:21 robertj * Fixed extra CR in comments. * * Revision 1.12 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.11 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.10 1998/09/23 06:19:24 robertj * Added open source copyright license. * * Revision 1.9 1997/10/10 10:44:01 robertj * Fixed bug in password encryption, missing string terminator. * * Revision 1.8 1996/11/16 10:50:24 robertj * Fixed bug in registration order form showing incorrect check code when have key. * * Revision 1.7 1996/07/15 10:29:38 robertj * Changed memory block cypher conversion functions to be void *. * Changed key types to be structures rather than arrays to avoid pinter/reference confusion by compilers. * * Revision 1.6 1996/03/17 05:47:00 robertj * Changed secured config to allow for expiry dates. * * Revision 1.5 1996/03/16 04:36:43 robertj * Redesign of secure config to accommodate expiry dates and option values passed in security key code. * * Revision 1.4 1996/02/25 02:52:46 robertj * Further secure config development. * * Revision 1.3 1996/01/28 14:16:11 robertj * Further implementation of secure config. * * Revision 1.2 1996/01/28 02:41:00 robertj * Removal of MemoryPointer classes as usage didn't work for GNU. * Added the secure configuration mechanism for protecting applications. * * Revision 1.1 1996/01/23 13:04:20 robertj * Initial revision * */ #ifndef _PCYPHER #define _PCYPHER #ifdef P_USE_PRAGMA #pragma interface #endif #include /** This class is used to encode/decode data using the MIME standard base64 encoding mechanism as defined in RFC1521. To encode a large block of data use the following seqeunce: \begin{verbatim} PBase64 base; base.StartEncoding(); while (Read(dataChunk)) { base.ProcessEncoding(dataChunk); out << base.GetEncodedString(); } out << base.CompleteEncoding(); \end{verbatim} if smaller blocks that fit easily in memory are to be encoded the #Encode()# functions can be used to everything in one go. To decode a large block of data use the following sequence: \begin{verbatim} PBase64 base; base.StartDecoding(); while (Read(str) && ProcessDecoding(str)) Write(base.GetDecodedData()); Write(base.GetDecodedData()); \end{verbatim} if smaller blocks that fit easily in memory are to be decoded the #Decode()# functions can be used to everything in one go. */ class PBase64 : public PObject { PCLASSINFO(PBase64, PObject); public: /** Construct a base 64 encoder/decoder and initialise both encode and decode members as in #StartEncoding()# and #StartDecoding()#. */ PBase64(); void StartEncoding( BOOL useCRLFs = TRUE // Use CR, LF pairs in end of line characters. ); // Begin a base 64 encoding operation, initialising the object instance. void ProcessEncoding( const PString & str // String to be encoded ); void ProcessEncoding( const char * cstr // C String to be encoded ); void ProcessEncoding( const PBYTEArray & data // Data block to be encoded ); void ProcessEncoding( const void * dataBlock, // Pointer to data to be encoded PINDEX length // Length of the data block. ); // Incorporate the specified data into the base 64 encoding. /** Get the partial Base64 string for the data encoded so far. @return Base64 encoded string for the processed data. */ PString GetEncodedString(); /** Complete the base 64 encoding and return the remainder of the encoded Base64 string. Previous data may have been already removed by the #GetInterim()# function. @return Base64 encoded string for the processed data. */ PString CompleteEncoding(); static PString Encode( const PString & str // String to be encoded to Base64 ); static PString Encode( const char * cstr // C String to be encoded to Base64 ); static PString Encode( const PBYTEArray & data // Data block to be encoded to Base64 ); static PString Encode( const void * dataBlock, // Pointer to data to be encoded to Base64 PINDEX length // Length of the data block. ); // Encode the data in memory to Base 64 data returnin the string. void StartDecoding(); // Begin a base 64 decoding operation, initialising the object instance. /** Incorporate the specified data into the base 64 decoding. @return TRUE if block was last in the Base64 encoded string. */ BOOL ProcessDecoding( const PString & str // String to be encoded ); BOOL ProcessDecoding( const char * cstr // C String to be encoded ); /** Get the data decoded so far from the Base64 strings processed. @return Decoded data for the processed Base64 string. */ BOOL GetDecodedData( void * dataBlock, // Pointer to data to be decoded from base64 PINDEX length // Length of the data block. ); PBYTEArray GetDecodedData(); /** Return a flag to indicate that the input was decoded without any extraneous or illegal characters in it that were ignored. This does not mean that the data is not valid, only that it is suspect. @return Decoded data for the processed Base64 string. */ BOOL IsDecodeOK() { return perfectDecode; } /** Convert a printable text string to binary data using the Internet MIME standard base 64 content transfer encoding. The base64 string is checked and TRUE returned if all perfectly correct. If FALSE is returned then the string had extraneous or illegal characters in it that were ignored. This does not mean that the data is not valid, only that it is suspect. @return Base 64 string decoded from input string. */ static PString Decode( const PString & str // Encoded base64 string to be decoded. ); static BOOL Decode( const PString & str, // Encoded base64 string to be decoded. PBYTEArray & data // Converted binary data from base64. ); static BOOL Decode( const PString & str, // Encoded base64 string to be decoded. void * dataBlock, // Pointer to data to be decoded from base64 PINDEX length // Length of the data block. ); private: void OutputBase64(const BYTE * data); PString encodedString; PINDEX encodeLength; BYTE saveTriple[3]; PINDEX saveCount; PINDEX nextLine; BOOL useCRLFs; BOOL perfectDecode; PINDEX quadPosition; PBYTEArray decodedData; PINDEX decodeSize; }; class PMessageDigest : public PObject { PCLASSINFO(PMessageDigest, PObject) public: /// Create a new message digestor PMessageDigest(); class Result { public: PINDEX GetSize() const { return value.GetSize(); } const BYTE * GetPointer() const { return (const BYTE *)value; } private: PBYTEArray value; friend class PMessageDigest5; friend class PMessageDigestSHA1; }; /// Begin a Message Digest operation, initialising the object instance. virtual void Start() = 0; virtual void Process( const void * dataBlock, ///< Pointer to data to be part of the MD5 PINDEX length ///< Length of the data block. ); /** Incorporate the specified data into the message digest. */ virtual void Process( const PString & str ///< String to be part of the MD5 ); /** Incorporate the specified data into the message digest. */ virtual void Process( const char * cstr ///< C String to be part of the MD5 ); /** Incorporate the specified data into the message digest. */ virtual void Process( const PBYTEArray & data ///< Data block to be part of the MD5 ); /** Complete the message digest and return the magic number result. The parameterless form returns the MD5 code as a Base64 string. @return Base64 encoded MD5 code for the processed data. */ virtual PString CompleteDigest(); virtual void CompleteDigest( Result & result ///< The resultant 128 bit MD5 code ); protected: virtual void InternalProcess( const void * dataBlock, ///< Pointer to data to be part of the MD5 PINDEX length ///< Length of the data block. ) = 0; virtual void InternalCompleteDigest( Result & result ///< The resultant 128 bit MD5 code ) = 0; }; /** MD5 Message Digest. A class to produce a Message Digest for a block of text/data using the MD5 algorithm as defined in RFC1321 by Ronald Rivest of MIT Laboratory for Computer Science and RSA Data Security, Inc. */ class PMessageDigest5 : public PMessageDigest { PCLASSINFO(PMessageDigest5, PMessageDigest) public: /// Create a new message digestor PMessageDigest5(); /// Begin a Message Digest operation, initialising the object instance. void Start(); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const PString & str ///< String to be encoded to MD5 ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const PString & str, ///< String to be encoded to MD5 Result & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const char * cstr ///< C String to be encoded to MD5 ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const char * cstr, ///< C String to be encoded to MD5 Result & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const PBYTEArray & data ///< Data block to be encoded to MD5 ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const PBYTEArray & data, ///< Data block to be encoded to MD5 Result & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const void * dataBlock, ///< Pointer to data to be encoded to MD5 PINDEX length ///< Length of the data block. ); /** Encode the data in memory to and MD5 hash value. @return Base64 encoded MD5 code for the processed data. */ static void Encode( const void * dataBlock, ///< Pointer to data to be encoded to MD5 PINDEX length, ///< Length of the data block. Result & result ///< The resultant 128 bit MD5 code ); // backwards compatibility functions class Code { private: PUInt32l value[4]; friend class PMessageDigest5; }; /** Encode the data in memory to and MD5 hash value. */ static void Encode( const PString & str, ///< String to be encoded to MD5 Code & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const char * cstr, ///< C String to be encoded to MD5 Code & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const PBYTEArray & data, ///< Data block to be encoded to MD5 Code & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. @return Base64 encoded MD5 code for the processed data. */ static void Encode( const void * dataBlock, ///< Pointer to data to be encoded to MD5 PINDEX length, ///< Length of the data block. Code & result ///< The resultant 128 bit MD5 code ); virtual void Complete( Code & result ///< The resultant 128 bit MD5 code ); virtual PString Complete(); protected: virtual void InternalProcess( const void * dataBlock, ///< Pointer to data to be part of the MD5 PINDEX length ///< Length of the data block. ); virtual void InternalCompleteDigest( Result & result ///< The resultant 128 bit MD5 code ); private: void Transform(const BYTE * block); /// input buffer BYTE buffer[64]; /// state (ABCD) DWORD state[4]; /// number of bits, modulo 2^64 (lsb first) PUInt64 count; }; #if P_SSL /** SHA1 Digest. A class to produce a Message Digest for a block of text/data using the SHA-1 algorithm */ class PMessageDigestSHA1 : public PMessageDigest { PCLASSINFO(PMessageDigestSHA1, PMessageDigest) public: /// Create a new message digestor PMessageDigestSHA1(); ~PMessageDigestSHA1(); /// Begin a Message Digest operation, initialising the object instance. void Start(); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const PString & str ///< String to be encoded to MD5 ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const PString & str, ///< String to be encoded to MD5 Result & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const char * cstr ///< C String to be encoded to MD5 ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const char * cstr, ///< C String to be encoded to MD5 Result & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const PBYTEArray & data ///< Data block to be encoded to MD5 ); /** Encode the data in memory to and MD5 hash value. */ static void Encode( const PBYTEArray & data, ///< Data block to be encoded to MD5 Result & result ///< The resultant 128 bit MD5 code ); /** Encode the data in memory to and MD5 hash value. */ static PString Encode( const void * dataBlock, ///< Pointer to data to be encoded to MD5 PINDEX length ///< Length of the data block. ); /** Encode the data in memory to and MD5 hash value. @return Base64 encoded MD5 code for the processed data. */ static void Encode( const void * dataBlock, ///< Pointer to data to be encoded to MD5 PINDEX length, ///< Length of the data block. Result & result ///< The resultant 128 bit MD5 code ); protected: virtual void InternalProcess( const void * dataBlock, ///< Pointer to data to be part of the MD5 PINDEX length ///< Length of the data block. ); void InternalCompleteDigest( Result & result ///< The resultant 128 bit MD5 code ); private: void * shaContext; }; #endif /**This abstract class defines an encryption/decryption algortihm. A specific algorithm is implemented in a descendent class. */ class PCypher : public PObject { PCLASSINFO(PCypher, PObject) public: /// Mechanism by which sequential blocks are linked. enum BlockChainMode { ElectronicCodebook, ECB = ElectronicCodebook, CypherBlockChaining, CBC = CypherBlockChaining, OutputFeedback, OFB = OutputFeedback, CypherFeedback, CFB = CypherFeedback, NumBlockChainModes }; // New functions for class /**Encode the data. */ PString Encode( const PString & str ///< Clear text string to be encoded. ); /**Encode the data. */ PString Encode( const PBYTEArray & clear ///< Clear text binary data to be encoded. ); /**Encode the data. */ PString Encode( const void * data, ///< Clear text binary data to be encoded. PINDEX length ///< Number of bytes of data to be encoded. ); /**Encode the data. */ void Encode( const PBYTEArray & clear, ///< Clear text binary data to be encoded. PBYTEArray & coded ///< Encoded data. ); /**Encode the data. The data is encoded using the algorithm embodied by the descendent class and the key specifed in the construction of the objects instance. The first form takes a string and returns an encoded string. The second form takes arbitrary binary data bytes and returns an encoded string. In both cases the encoded string is always 7 bit printable ASCII suitable for use in mail systems etc. The final form takes and arbitrary block of bytes and encodes them into another block of binary data. @return encoded string. */ void Encode( const void * data, // Clear text binary data to be encoded. PINDEX length, // Number of bytes of data to be encoded. PBYTEArray & coded // Encoded data. ); /**Decode the data. */ PString Decode( const PString & cypher ///< Base64 Cypher text string to be decoded. ); /**Decode the data. */ BOOL Decode( const PString & cypher, ///< Base64 Cypher text string to be decoded. PString & clear ///< Clear text string decoded. ); /**Decode the data. */ BOOL Decode( const PString & cypher, ///< Base64 Cypher text string to be decoded. PBYTEArray & clear ///< Clear text binary data decoded. ); /**Decode the data. */ PINDEX Decode( const PString & cypher, ///< Base64 Cypher text string to be decoded. void * data, ///< Clear text binary data decoded. PINDEX length ///< Maximum number of bytes of data decoded. ); /**Decode the data. */ PINDEX Decode( const PBYTEArray & coded, ///< Encoded data (cyphertext). void * data, ///< Clear text binary data decoded. PINDEX length ///< Maximum number of bytes of data decoded. ); /**Decode the data. Decode the data using the algorithm embodied by the descendent class and the key specifed in the construction of the objects instance. The first form takes a string and returns a decoded string. The second form takes an encoded string and returns arbitrary binary data bytes. In both cases the encoded string is always 7 bit printable ASCII suitable for use in mail systems etc. The final form takes and arbitrary block of bytes and decodes them into another block of binary data. @return decoded string. */ BOOL Decode( const PBYTEArray & coded, ///< Encoded data (cyphertext). PBYTEArray & clear ///< Clear text binary data decoded. ); protected: /** Create a new encryption object instance. */ PCypher( PINDEX blockSize, ///< Size of encryption blocks (in bits) BlockChainMode chainMode ///< Block chain mode ); PCypher( const void * keyData, ///< Key for the encryption/decryption algorithm. PINDEX keyLength, ///< Length of the key. PINDEX blockSize, ///< Size of encryption blocks (in bits) BlockChainMode chainMode ///< Block chain mode ); /** Initialise the encoding/decoding sequence. */ virtual void Initialise( BOOL encoding ///< Flag for encoding/decoding sequence about to start. ) = 0; /** Encode an n bit block of memory according to the encryption algorithm. */ virtual void EncodeBlock( const void * in, ///< Pointer to clear n bit block. void * out ///< Pointer to coded n bit block. ) = 0; /** Dencode an n bit block of memory according to the encryption algorithm. */ virtual void DecodeBlock( const void * in, ///< Pointer to coded n bit block. void * out ///< Pointer to clear n bit block. ) = 0; /// Key for the encryption/decryption. PBYTEArray key; /// Size of each encryption block in bytes PINDEX blockSize; /// Mode for sequential encryption each block BlockChainMode chainMode; }; /** Tiny Encryption Algorithm. This class implements the Tiny Encryption Algorithm by David Wheeler and Roger Needham at Cambridge University. This is a simple algorithm using a 128 bit binary key and encrypts data in 64 bit blocks. */ class PTEACypher : public PCypher { PCLASSINFO(PTEACypher, PCypher) public: struct Key { BYTE value[16]; }; /** Create a new TEA encryption object instance. The parameterless version automatically generates a new, random, key. */ PTEACypher( BlockChainMode chainMode = ElectronicCodebook ///< Block chain mode ); PTEACypher( const Key & keyData, ///< Key for the encryption/decryption algorithm. BlockChainMode chainMode = ElectronicCodebook ///< Block chain mode ); /** Set the key used by this encryption method. */ void SetKey( const Key & newKey ///< Variable to take the key used by cypher. ); /** Get the key used by this encryption method. */ void GetKey( Key & newKey ///< Variable to take the key used by cypher. ) const; /** Generate a new key suitable for use for encryption using random data. */ static void GenerateKey( Key & newKey ///< Variable to take the newly generated key. ); protected: /** Initialise the encoding/decoding sequence. */ virtual void Initialise( BOOL encoding ///< Flag for encoding/decoding sequence about to start. ); /** Encode an n bit block of memory according to the encryption algorithm. */ virtual void EncodeBlock( const void * in, ///< Pointer to clear n bit block. void * out ///< Pointer to coded n bit block. ); /** Decode an n bit block of memory according to the encryption algorithm. */ virtual void DecodeBlock( const void * in, ///< Pointer to coded n bit block. void * out ///< Pointer to clear n bit block. ); private: DWORD k0, k1, k2, k3; }; #ifdef P_CONFIG_FILE class PSecureConfig : public PConfig { PCLASSINFO(PSecureConfig, PConfig) /* This class defines a set of configuration keys which may be secured by an encrypted hash function. Thus values contained in keys specified by this class cannot be changed without invalidating the hash function. */ public: PSecureConfig( const PTEACypher::Key & productKey, // Key to decrypt validation code. const PStringArray & securedKeys, // List of secured keys. Source src = Application // Standard source for the configuration. ); PSecureConfig( const PTEACypher::Key & productKey, // Key to decrypt validation code. const char * const * securedKeyArray, // List of secured keys. PINDEX count, // Number of secured keys in list. Source src = Application // Standard source for the configuration. ); /* Create a secured configuration. The default section for the configuration keys is "Secured Options", the default security key is "Validation" and the defualt prefix string is "Pending:". The user can descend from this class and change any of the member variable for the names of keys or the configuration file section. */ // New functions for class const PStringArray & GetSecuredKeys() const { return securedKeys; } /* Get the list of secured keys in the configuration file section. @return Array of strings for the secured keys. */ const PString & GetSecurityKey() const { return securityKey; } /* Get the security keys name in the configuration file section. @return String for the security values key. */ const PString & GetExpiryDateKey() const { return expiryDateKey; } /* Get the expiry date keys name in the configuration file section. @return String for the expiry date values key. */ const PString & GetOptionBitsKey() const { return optionBitsKey; } /* Get the Option Bits keys name in the configuration file section. @return String for the Option Bits values key. */ const PString & GetPendingPrefix() const { return pendingPrefix; } /* Get the pending prefix name in the configuration file section. @return String for the pending prefix. */ void GetProductKey( PTEACypher::Key & productKey // Variable to receive the product key. ) const; /* Get the pending prefix name in the configuration file section. @return String for the pending prefix. */ enum ValidationState { Defaults, Pending, IsValid, Expired, Invalid }; ValidationState GetValidation() const; /* Check the current values attached to the keys specified in the constructor against an encoded validation key. @return State of the validation keys. */ BOOL ValidatePending(); /* Validate a pending secured option list for the product. All secured keys with the pendingPrefix name will be checked against the value of the field securityKey. If they match then they are copied to the secured variables. @return TRUE if secure key values are valid. */ void ResetPending(); /* "Unvalidate" a security configuration going back to a pending state, usually used after an Invalid response was recieved from the GetValidation() function. */ protected: PTEACypher::Key productKey; PStringArray securedKeys; PString securityKey; PString expiryDateKey; PString optionBitsKey; PString pendingPrefix; }; #endif // P_CONFIG_FILE #endif // _PCYPHER // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/delaychan.h0100644000176200056700000001311710343317551020404 0ustar releasepostincr/* * delaychan.h * * Class for implementing a serial queue channel in memory. * * Portable Windows Library * * Copyright (c) 2001 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: delaychan.h,v $ * Revision 1.6 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.5 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.4 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.3 2002/02/25 11:05:02 rogerh * New Delay code which solves the accumulated error problem. Based on ideas * by Tomasz Motylewski , Roger and Craig. * * Revision 1.2 2002/01/15 03:55:43 craigs * Added PAdaptiveDelay class * * Revision 1.1 2001/07/10 03:07:07 robertj * Added queue channel and delay channel classes to ptclib. * */ #ifndef _DELAYCHAN_H #define _DELAYCHAN_H #ifdef P_USE_PRAGMA #pragma interface #endif #include /** Class for implementing an "adaptive" delay. This class will cause the the caller to, on average, delay the specified number of milliseconds between calls. This can be used to simulate hardware timing for a sofwtare only device */ class PAdaptiveDelay : public PObject { PCLASSINFO(PAdaptiveDelay, PObject); public: PAdaptiveDelay(); BOOL Delay(int time); void Restart(); protected: BOOL firstTime; PTime targetTime; }; /** Class for implementing a "delay line" channel. This indirect channel can be placed in a channel I/O chain to limit the speed of I/O. This can be useful if blocking is not available and buffers could be overwritten if the I/O occurs at full speed. There are two modes of operation. In stream more, data can be read/written no faster than a fixed time for a fixed number of bytes. So, for example, you can say than 320 bytes must take 20 milliseconds, and thus if the application writes 640 byets it will delay 40 milliseconds before the next write. In frame mode, the rate limiting applies to individual read or write operations. So you can say that each read takes 30 milliseconds even if on 4 bytes is read, and the same time if 24 bytes are read. */ class PDelayChannel : public PIndirectChannel { PCLASSINFO(PDelayChannel, PIndirectChannel); public: /**@name Construction */ //@{ enum Mode { DelayReadsOnly, DelayWritesOnly, DelayReadsAndWrites }; /** Create a new delay channel with the specified delays. A value of zero for the numBytes parameter indicates that the delay is in frame mode. The maximum skip time is the number of milliseconds that the delay may "catch up" by using zero delays. This is caused by the Read() or Write() not being called for a time by external factors. */ PDelayChannel( Mode mode, ///< Mode for delay channel unsigned frameDelay, ///< Delay time in milliseconds PINDEX frameSize = 0, ///< Bytes to apply to the delay time. unsigned maximumSlip = 250, ///< Maximum slip time in milliseconds unsigned minimumDelay = 10 ///< Minimim delay (usually OS time slice) ); //@} /**@name Overrides from class PChannel */ //@{ /**Low level read from the file channel. The read timeout is ignored for file I/O. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the file channel. The write timeout is ignored for file I/O. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); //@} protected: virtual void Wait(PINDEX count, PTimeInterval & nextTick); Mode mode; unsigned frameDelay; PINDEX frameSize; PTimeInterval maximumSlip; PTimeInterval minimumDelay; PTimeInterval nextReadTick; PTimeInterval nextWriteTick; }; #endif // _DELAYCHAN_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/dtmf.h0100644000176200056700000001126610343317551017411 0ustar releasepostincr/* * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * * Extract DTMF signals from 16 bit PCM audio * * Originally written by Poul-Henning Kamp * Made into a C++ class by Roger Hardiman , January 2002 * * $Log: dtmf.h,v $ * Revision 1.7 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.6 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.5 2004/09/09 23:50:48 csoutheren * Fixed problem with duplicate definition of sinetab causing problems * * Revision 1.4 2004/09/09 05:23:37 dereksmithies * Add utility function to report on dtmf characters used. * * Revision 1.3 2004/09/09 04:00:00 csoutheren * Added DTMF encoding functions * * Revision 1.2 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.1 2002/01/23 11:43:26 rogerh * Add DTMF Decoder class. This can be passed PCM audio data * (at 16 bit, 8 KHz) and returns any DTMF codes detected. * Tested with NetMeeting sending DTMF over a G.711 stream. * */ #ifndef _DTMF_H #define _DTMF_H #ifdef P_USE_PRAGMA #pragma interface #endif #include class PDTMFDecoder : public PObject { PCLASSINFO(PDTMFDecoder, PObject) public: PDTMFDecoder(); PString Decode(const void *buf, PINDEX bytes); protected: // key lookup table (initialised once) char key[256]; // frequency table (initialised once) int p1[8]; // variables to be retained on each cycle of the decode function int h[8], k[8], y[8]; int nn, so, ia; }; /** * this class can be used to generate PCM data for tones (such as DTMF) * at a sample rate of 8khz */ class PDTMFEncoder : public PBYTEArray { PCLASSINFO(PDTMFEncoder, PBYTEArray) public: enum { DefaultToneLen = 100 }; /** * Create PCM data for the specified DTMF sequence */ inline PDTMFEncoder( const char * dtmf = NULL, ///< character string to encode unsigned len = DefaultToneLen ///< length of each DTMF tone in milliseconds ) { if (dtmf != NULL) AddTone(dtmf, len); } /** * Add the PCM data for the specified tone to the buffer */ void AddTone( char ch, ///< character to encode unsigned len = DefaultToneLen ///< length of DTMF tone in milliseconds ); /** * Add the PCM data for the specified tone sequence to the buffer */ void AddTone( const PString & str, ///< string to encode unsigned len = DefaultToneLen ///< length of DTMF tone in milliseconds ); /** * Add the PCM data for the specified dual-frequency tone to the buffer * freq2 can be zero, which will generate a single frequency tone */ void AddTone( double freq1, // primary frequency double freq2 = 0, // secondary frequency, or 0 if no secondary frequency unsigned len = DefaultToneLen // length of DTMF tone in milliseconds ); /** * Generate PCM data for a single cadence of the US standard ring tone * of 440/480hz for 2 seconds, followed by 5 seconds of silence */ void GenerateRingBackTone() { AddTone(440, 480, 2000); AddTone(0, 0, 4000); } /** * Generate PCM data for 1 second of US standard dial tone * of 350/440hz */ void GenerateDialTone() { AddTone(350, 440, 1000); } /** * Generate PCM data for a single cadence of the US standard busy tone * of 480/620hz for 1/2 second, 1/2 second of silence */ void GenerateBusyTone() { AddTone(480, 620, 500); AddTone(0, 0, 500); } /** * Convenience function to get the ASCII character for a DTMF index, * where the index varies from 0 to 15 * * @returns ASCII value */ char DtmfChar( PINDEX i ///< index of tone ); protected: static PMutex & GetMutex(); static BOOL sineTabInit; static void MakeSineTable(); static inline double sine(unsigned int ptr) { return sinetab[ptr >> (32-11)]; } static double sinetab[1 << 11]; }; #endif /* _DTMF_H */ pwlib_v1_10_2/include/ptclib/enum.h0100644000176200056700000000740110343317551017417 0ustar releasepostincr/* * pdns.h * * PWLib library for ENUM lookup * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: enum.h,v $ * Revision 1.5 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2005/08/31 23:55:48 csoutheren * Fixed typo * * Revision 1.3 2005/08/31 05:55:03 shorne * Reworked ENUM to craigs' exacting requirements * * Revision 1.2 2005/08/31 04:07:52 shorne * added ability to set ENUM Servers at runtime * * Revision 1.1 2004/05/31 13:56:37 csoutheren * Added implementation of ENUM resolution of E.164 numbers by DNS * */ #if P_DNS #ifndef _PENUM_H #define _PENUM_H #ifdef P_USE_PRAGMA #pragma interface #endif #include namespace PDNS { #ifndef NAPTR_SRV #define NAPTR_SRV 35 #endif /////////////////////////////////////////////////////////////////////////// class NAPTRRecord : public PObject { PCLASSINFO(NAPTRRecord, PObject); public: Comparison Compare(const PObject & obj) const; void PrintOn(ostream & strm) const; WORD order; WORD preference; PString flags; PString service; PString regex; PString replacement; }; PDECLARE_SORTED_LIST(NAPTRRecordList, PDNS::NAPTRRecord) public: void PrintOn(ostream & strm) const; NAPTRRecord * GetFirst(const char * service = NULL); NAPTRRecord * GetNext(const char * service = NULL); PDNS::NAPTRRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results); void UnlockOrder() { orderLocked = FALSE; } protected: PINDEX currentPos; int lastOrder; BOOL orderLocked; }; inline BOOL GetRecords(const PString & domain, NAPTRRecordList & recordList) { return Lookup(domain, recordList); } /** * Set the default ENUM domain search list */ void SetENUMServers(const PStringArray & serverlist); /** * Perform a lookup of the specified DN using the specified service * and domain list. Returns the resultant URL * * @return TRUE if the DN could be resolved, else FALSE */ BOOL ENUMLookup( const PString & dn, ///< DN to lookup const PString & service, ///< ENUM service to use const PStringArray & domains, ///< list of ENUM domains to search PString & URL ///< resolved URL, if return value is TRUE ); /** * Perform a lookup of the specified DN using the specified service * using the default domain list. Returns the resultant URL. * * This function uses the default domain list, which can be set by the SetENUMServers function * * @return TRUE if the DN could be resolved, else FALSE */ BOOL ENUMLookup(const PString & dn, ///< DN to lookup const PString & service, ///< ENUM service to use PString & URL ///< resolved URL, if return value is TRUE ); }; // namespace PDNS #endif // _PENUM_H #endif // P_DNS // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/ftp.h0100644000176200056700000003527110343317551017252 0ustar releasepostincr/* * ftp.h * * File Transfer Protocol Server/Client channel classes * As per RFC 959 and RFC 1123 * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ftp.h,v $ * Revision 1.18 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.17 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.16 2003/09/17 05:43:49 csoutheren * Removed recursive includes * * Revision 1.15 2002/11/06 22:47:23 robertj * Fixed header comment (copyright etc) * * Revision 1.14 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.13 2001/09/10 00:28:21 robertj * Fixed extra CR in comments. * * Revision 1.12 2000/06/21 01:01:21 robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.11 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.10 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.9 1998/11/30 02:50:45 robertj * New directory structure * * Revision 1.8 1998/09/23 06:19:26 robertj * Added open source copyright license. * * Revision 1.7 1996/10/26 01:39:41 robertj * Added check for security breach using 3 way FTP transfer or use of privileged PORT. * * Revision 1.6 1996/09/14 13:09:08 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.5 1996/05/23 09:56:24 robertj * Changed FTP so can do passive/active mode on all data transfers. * * Revision 1.4 1996/03/31 08:45:57 robertj * Added QUIT command sent on FTP socket close. * * Revision 1.3 1996/03/26 00:50:28 robertj * FTP Client Implementation. * * Revision 1.2 1996/03/18 13:33:10 robertj * Fixed incompatibilities to GNU compiler where PINDEX != int. * * Revision 1.1 1996/03/04 12:14:18 robertj * Initial revision * */ #ifndef _PFTPSOCKET #define _PFTPSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /** File Transfer Protocol base class. */ class PFTP : public PInternetProtocol { PCLASSINFO(PFTP, PInternetProtocol); public: /// FTP commands enum Commands { USER, PASS, ACCT, CWD, CDUP, SMNT, QUIT, REIN, PORT, PASV, TYPE, STRU, MODE, RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MKD, PWD, LIST, NLST, SITE, SYST, STATcmd, HELP, NOOP, NumCommands }; /// Types for file transfer enum RepresentationType { ASCII, EBCDIC, Image }; /// File transfer mode on data channel enum DataChannelType { NormalPort, Passive }; /// Listing types enum NameTypes { ShortNames, DetailedNames }; /** Send the PORT command for a transfer. @return Boolean indicated PORT command was successful */ BOOL SendPORT( const PIPSocket::Address & addr, ///< Address for PORT connection. IP address to connect back to WORD port ///< Port number for PORT connection. ); protected: /// Construct an ineternal File Transfer Protocol channel. PFTP(); }; /** File Transfer Protocol client channel class. */ class PFTPClient : public PFTP { PCLASSINFO(PFTPClient, PFTP); public: /// Declare an FTP client socket. PFTPClient(); /// Delete and close the socket. ~PFTPClient(); /**@name Overrides from class PSocket. */ //@{ /** Close the socket, and if connected as a client, QUITs from server. @return TRUE if the channel was closed and the QUIT accepted by the server. */ virtual BOOL Close(); //@} /**@name New functions for class */ //@{ /** Log in to the remote host for FTP. @return TRUE if the log in was successfull. */ BOOL LogIn( const PString & username, ///< User name for FTP log in. const PString & password ///< Password for the specified user name. ); /** Get the type of the remote FTP server system, eg Unix, WindowsNT etc. @return String for the type of system. */ PString GetSystemType(); /** Set the transfer type. @return TRUE if transfer type set. */ BOOL SetType( RepresentationType type ///< RepresentationTypeof file to transfer ); /** Change the current directory on the remote FTP host. @return TRUE if the log in was successfull. */ BOOL ChangeDirectory( const PString & dirPath ///< New directory ); /** Get the current working directory on the remote FTP host. @return String for the directory path, or empty string if an error occurred. */ PString GetCurrentDirectory(); /** Get a list of files from the current working directory on the remote FTP host. @return String array for the files in the directory. */ PStringArray GetDirectoryNames( NameTypes type = ShortNames, ///< Detail level on a directory entry. DataChannelType channel = Passive ///< Data channel type. ); /** Get a list of files from the current working directory on the remote FTP host. @return String array for the files in the directory. */ PStringArray GetDirectoryNames( const PString & path, ///< Name to get details for. NameTypes type = ShortNames, ///< Detail level on a directory entry. DataChannelType channel = Passive ///< Data channel type. ); /** Get status information for the file path specified. @return String giving file status. */ PString GetFileStatus( const PString & path, ///< Path to get status for. DataChannelType channel = Passive ///< Data channel type. ); /**Begin retreiving a file from the remote FTP server. The second parameter indicates that the transfer is on a normal or passive data channel. In short, a normal transfer the server connects to the client and in passive mode the client connects to the server. @return Socket to read data from, or NULL if an error occurred. */ PTCPSocket * GetFile( const PString & filename, ///< Name of file to get DataChannelType channel = NormalPort ///< Data channel type. ); /**Begin storing a file to the remote FTP server. The second parameter indicates that the transfer is on a normal or passive data channel. In short, a normal transfer the server connects to the client and in passive mode the client connects to the server. @return Socket to write data to, or NULL if an error occurred. */ PTCPSocket * PutFile( const PString & filename, ///< Name of file to get DataChannelType channel = NormalPort ///< Data channel type. ); //@} protected: /// Call back to verify open succeeded in an PInternetProtocol class virtual BOOL OnOpen(); PTCPSocket * NormalClientTransfer( Commands cmd, const PString & args ); PTCPSocket * PassiveClientTransfer( Commands cmd, const PString & args ); /// Port number on remote system WORD remotePort; }; /** File Transfer Protocol server channel class. */ class PFTPServer : public PFTP { PCLASSINFO(PFTPServer, PFTP); public: enum { MaxIllegalPasswords = 3 }; /// declare a server socket PFTPServer(); PFTPServer( const PString & readyString ///< Sign on string on connection ready. ); /// Delete the server, cleaning up passive sockets. ~PFTPServer(); // New functions for class /** Get the string printed when a user logs in default value is a string giving the user name */ virtual PString GetHelloString(const PString & user) const; /// return the string printed just before exiting virtual PString GetGoodbyeString(const PString & user) const; /// return the string to be returned by the SYST command virtual PString GetSystemTypeString() const; /// return the thirdPartyPort flag, allowing 3 host put and get. BOOL GetAllowThirdPartyPort() const { return thirdPartyPort; } /// Set the thirdPartyPort flag. void SetAllowThirdPartyPort(BOOL state) { thirdPartyPort = state; } /** Process commands, dispatching to the appropriate virtual function. This is used when the socket is acting as a server. @return TRUE if more processing may be done, FALSE if the QUIT command was received or the #OnUnknown()# function returns FALSE. */ BOOL ProcessCommand(); /** Dispatching to the appropriate virtual function. This is used when the socket is acting as a server. @return TRUE if more processing may be done, FALSE if the QUIT command was received or the #OnUnknown()# function returns FALSE. */ virtual BOOL DispatchCommand( PINDEX code, ///< Parsed command code. const PString & args ///< Arguments to command. ); /** Check to see if the command requires the server to be logged in before it may be processed. @return TRUE if the command required the user to be logged in. */ virtual BOOL CheckLoginRequired( PINDEX cmd ///< Command to check if log in required. ); /** Validate the user name and password for access. After three invalid attempts, the socket will close and FALSE is returned. Default implementation returns TRUE for all strings. @return TRUE if user can access, otherwise FALSE */ virtual BOOL AuthoriseUser( const PString & user, ///< User name to authorise. const PString & password, ///< Password supplied for the user. BOOL & replied ///< Indication that a reply was sent to client. ); /** Handle an unknown command. @return TRUE if more processing may be done, FALSE if the #ProcessCommand()# function is to return FALSE. */ virtual BOOL OnUnknown( const PCaselessString & command ///< Complete command line received. ); /** Handle an error in command. @return TRUE if more processing may be done, FALSE if the #ProcessCommand()# function is to return FALSE. */ virtual void OnError( PINDEX errorCode, ///< Error code to use PINDEX cmdNum, ///< Command that had the error. const char * msg ///< Error message. ); /// Called for syntax errors in commands. virtual void OnSyntaxError( PINDEX cmdNum ///< Command that had the syntax error. ); /// Called for unimplemented commands. virtual void OnNotImplemented( PINDEX cmdNum ///< Command that was not implemented. ); /// Called for successful commands. virtual void OnCommandSuccessful( PINDEX cmdNum ///< Command that had was successful. ); // the following commands must be implemented by all servers // and can be performed without logging in virtual BOOL OnUSER(const PCaselessString & args); virtual BOOL OnPASS(const PCaselessString & args); // officially optional, but should be done virtual BOOL OnQUIT(const PCaselessString & args); virtual BOOL OnPORT(const PCaselessString & args); virtual BOOL OnSTRU(const PCaselessString & args); virtual BOOL OnMODE(const PCaselessString & args); virtual BOOL OnTYPE(const PCaselessString & args); virtual BOOL OnNOOP(const PCaselessString & args); virtual BOOL OnSYST(const PCaselessString & args); virtual BOOL OnSTAT(const PCaselessString & args); // the following commands must be implemented by all servers // and cannot be performed without logging in virtual BOOL OnRETR(const PCaselessString & args); virtual BOOL OnSTOR(const PCaselessString & args); virtual BOOL OnACCT(const PCaselessString & args); virtual BOOL OnAPPE(const PCaselessString & args); virtual BOOL OnRNFR(const PCaselessString & args); virtual BOOL OnRNTO(const PCaselessString & args); virtual BOOL OnDELE(const PCaselessString & args); virtual BOOL OnCWD(const PCaselessString & args); virtual BOOL OnCDUP(const PCaselessString & args); virtual BOOL OnRMD(const PCaselessString & args); virtual BOOL OnMKD(const PCaselessString & args); virtual BOOL OnPWD(const PCaselessString & args); virtual BOOL OnLIST(const PCaselessString & args); virtual BOOL OnNLST(const PCaselessString & args); virtual BOOL OnPASV(const PCaselessString & args); // the following commands are optional and can be performed without // logging in virtual BOOL OnHELP(const PCaselessString & args); virtual BOOL OnSITE(const PCaselessString & args); virtual BOOL OnABOR(const PCaselessString & args); // the following commands are optional and cannot be performed // without logging in virtual BOOL OnSMNT(const PCaselessString & args); virtual BOOL OnREIN(const PCaselessString & args); virtual BOOL OnSTOU(const PCaselessString & args); virtual BOOL OnALLO(const PCaselessString & args); virtual BOOL OnREST(const PCaselessString & args); /// Send the specified file to the client. void SendToClient( const PFilePath & filename ///< File name to send. ); protected: /// Call back to verify open succeeded in an PInternetProtocol class BOOL OnOpen(); void Construct(); PString readyString; BOOL thirdPartyPort; enum { NotConnected, NeedUser, NeedPassword, Connected, ClientConnect } state; PIPSocket::Address remoteHost; WORD remotePort; PTCPSocket * passiveSocket; char type; char structure; char mode; PString userName; int illegalPasswordCount; }; #endif // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/html.h0100644000176200056700000007071610343317551017430 0ustar releasepostincr/* * html.h * * HyperText Markup Language stream classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: html.h,v $ * Revision 1.27 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.26 2005/10/30 23:25:51 csoutheren * Fixed formatting * Removed throw() declarations (PWLib does not do exceptions) * Removed duplicate destructor declarations and definitions * * Revision 1.25 2005/10/30 19:41:53 dominance * fixed most of the warnings occuring during compilation * * Revision 1.24 2005/03/19 02:52:53 csoutheren * Fix warnings from gcc 4.1-20050313 shapshot * * Revision 1.23 2002/11/06 22:47:23 robertj * Fixed header comment (copyright etc) * * Revision 1.22 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.21 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.20 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.19 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.18 1998/09/23 06:19:27 robertj * Added open source copyright license. * * Revision 1.17 1997/07/08 13:15:31 robertj * DLL support. * * Revision 1.16 1997/06/16 13:18:02 robertj * Set Is() function to be const as it should have been. * * Revision 1.15 1996/08/17 10:00:18 robertj * Changes for Windows DLL support. * * Revision 1.14 1996/06/28 13:08:41 robertj * Changed PHTML class so can create html fragments. * Fixed nesting problem in tables. * * Revision 1.13 1996/06/01 04:18:40 robertj * Fixed bug in RadioButton, having 2 VALUE fields * * Revision 1.12 1996/04/14 02:52:02 robertj * Added hidden fields to HTML. * * Revision 1.11 1996/03/12 11:30:00 robertj * Fixed resetting of HTML output using operator=. * * Revision 1.10 1996/03/10 13:14:53 robertj * Simplified some of the classes and added catch all string for attributes. * * Revision 1.9 1996/03/03 07:36:44 robertj * Added missing public's to standard character attribute classes. * * Revision 1.8 1996/02/25 11:14:19 robertj * Radio button support for forms. * * Revision 1.7 1996/02/19 13:18:25 robertj * Removed MSC_VER test as now completely removed from WIN16 library. * * Revision 1.6 1996/02/08 11:50:38 robertj * More implementation. * * Revision 1.5 1996/02/03 11:01:25 robertj * Further implementation. * * Revision 1.4 1996/01/28 14:15:56 robertj * More comments. * * Revision 1.3 1996/01/28 02:45:38 robertj * Further implementation. * * Revision 1.2 1996/01/26 02:24:24 robertj * Further implemetation. * * Revision 1.1 1996/01/24 23:45:37 robertj * Initial revision * */ #ifndef _PHTML #define _PHTML #ifdef P_USE_PRAGMA #pragma interface #endif ////////////////////////////////////////////////////////////////////////////// // PHTML /** This class describes a HyperText markup Language string as used by the World Wide Web and the #PURL# and #PHTTPSocket# class. All of the standard stream I/O operators, manipulators etc will operate on the PString class. */ class PHTML : public PStringStream { PCLASSINFO(PHTML, PStringStream) public: enum ElementInSet { InHTML, InHead, InBody, InTitle, InHeading, InDivision, InPreFormat, InAnchor, InNote, InAddress, InBlockQuote, InCredit, InBold, InItalic, InTeleType, InUnderline, InStrikeThrough, InBig, InSmall, InSubscript, InSuperscript, InEmphasis, InCite, InStrong, InCode, InSample, InKeyboard, InVariable, InDefinition, InQuote, InAuthor, InPerson, InAcronym, InAbbrev, InInsertedText, InDeletedText, InList, InListHeading, InDefinitionTerm, InTable, InForm, InSelect, InTextArea, NumElementsInSet }; /** Construct a new HTML object. If a title is specified in the constructor then the HEAD, TITLE and BODY elements are output and the string is used in a H1 element. */ PHTML( ElementInSet initialState = NumElementsInSet ); PHTML( const char * cstr ///< C string representation of the title string. ); PHTML( const PString & str ///< String representation of the title string. ); ~PHTML(); /** Restart the HTML string output using the specified value as the new title. If title is empty then no HEAD or TITLE elements are placed into the HTML. */ PHTML & operator=( const PHTML & html ///< HTML stream to make a copy of. ) { AssignContents(html); return *this; } PHTML & operator=( const PString & str ///< String for title in restating HTML. ) { AssignContents(str); return *this; } PHTML & operator=( const char * cstr ///< String for title in restating HTML. ) { AssignContents(PString(cstr)); return *this; } PHTML & operator=( char ch ///< String for title in restating HTML. ) { AssignContents(PString(ch)); return *this; } // New functions for class. BOOL Is(ElementInSet elmt) const; void Set(ElementInSet elmt); void Clr(ElementInSet elmt); void Toggle(ElementInSet elmt); class Element { public: virtual ~Element() {} protected: enum OptionalCRLF { NoCRLF, OpenCRLF, CloseCRLF, BothCRLF }; Element( const char * nam, const char * att, ElementInSet elmt, ElementInSet req, OptionalCRLF opt ) { name = nam; attr= att; inElement = elmt; reqElement = req; crlf = opt; } virtual void Output(PHTML & html) const; virtual void AddAttr(PHTML & html) const; private: const char * name; const char * attr; ElementInSet inElement; ElementInSet reqElement; OptionalCRLF crlf; friend ostream & operator<<(ostream & strm, const Element & elmt) { elmt.Output((PHTML&)strm); return strm; } }; class HTML : public Element { public: HTML(const char * attr = NULL); virtual ~HTML() {} }; class Head : public Element { public: Head(); virtual ~Head() {} protected: virtual void Output(PHTML & html) const; }; class Body : public Element { public: Body(const char * attr = NULL); virtual ~Body() {} protected: virtual void Output(PHTML & html) const; }; class Title : public Element { public: Title(); Title(const char * titleCStr); Title(const PString & titleStr); virtual ~Title() {} protected: virtual void Output(PHTML & html) const; private: const char * titleString; }; class Banner : public Element { public: Banner(const char * attr = NULL); virtual ~Banner() {} }; class Division : public Element { public: Division(const char * attr = NULL); virtual ~Division() {} }; class Heading : public Element { public: Heading(int number, int sequence = 0, int skip = 0, const char * attr = NULL); Heading(int number, const char * image, int sequence = 0, int skip = 0, const char * attr = NULL); Heading(int number, const PString & imageStr, int sequence = 0, int skip = 0, const char * attr = NULL); virtual ~Heading() {} protected: virtual void AddAttr(PHTML & html) const; private: int num; const char * srcString; int seqNum, skipSeq; }; class BreakLine : public Element { public: BreakLine(const char * attr = NULL); virtual ~BreakLine() {} }; class Paragraph : public Element { public: Paragraph(const char * attr = NULL); virtual ~Paragraph() {} }; class PreFormat : public Element { public: PreFormat(int widthInChars = 0, const char * attr = NULL); virtual ~PreFormat() {} protected: virtual void AddAttr(PHTML & html) const; private: int width; }; class HotLink : public Element { public: HotLink(const char * href = NULL, const char * attr = NULL); virtual ~HotLink() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * hrefString; }; class Target : public Element { public: Target(const char * name = NULL, const char * attr = NULL); virtual ~Target() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * nameString; }; class ImageElement : public Element { protected: ImageElement(const char * nam, const char * attr, ElementInSet elmt, ElementInSet req, OptionalCRLF opt, const char * image); virtual ~ImageElement() {} virtual void AddAttr(PHTML & html) const; const char * srcString; }; class Image : public ImageElement { public: Image(const char * src, int width = 0, int height = 0, const char * attr = NULL); Image(const char * src, const char * alt, int width = 0, int height = 0, const char * attr = NULL); virtual ~Image() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * altString; int width, height; }; class HRule : public ImageElement { public: HRule(const char * image = NULL, const char * attr = NULL); virtual ~HRule() {} }; class Note : public ImageElement { public: Note(const char * image = NULL, const char * attr = NULL); virtual ~Note() {} }; class Address : public Element { public: Address(const char * attr = NULL); virtual ~Address() {} }; class BlockQuote : public Element { public: BlockQuote(const char * attr = NULL); virtual ~BlockQuote() {} }; class Credit : public Element { public: Credit(const char * attr = NULL); virtual ~Credit() {} }; class SetTab : public Element { public: SetTab(const char * id, const char * attr = NULL); virtual ~SetTab() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * ident; }; class Tab : public Element { public: Tab(int indent, const char * attr = NULL); Tab(const char * id, const char * attr = NULL); virtual ~Tab() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * ident; int indentSize; }; class Bold : public Element { public: Bold() : Element("B", NULL, InBold, InBody, NoCRLF) { } virtual ~Bold() {} }; class Italic : public Element { public: Italic() : Element("I", NULL, InItalic, InBody, NoCRLF) { } virtual ~Italic() {} }; class TeleType : public Element { public: TeleType() : Element("TT", NULL, InTeleType, InBody, NoCRLF) { } virtual ~TeleType() {} }; class Underline : public Element { public: Underline() : Element("U", NULL, InUnderline, InBody, NoCRLF) { } virtual ~Underline() {} }; class StrikeThrough : public Element { public: StrikeThrough() : Element("S", NULL, InStrikeThrough, InBody, NoCRLF) { } virtual ~StrikeThrough() {} }; class Big : public Element { public: Big() : Element("BIG", NULL, InBig, InBody, NoCRLF) { } virtual ~Big() {} }; class Small : public Element { public: Small() : Element("SMALL", NULL, InSmall, InBody, NoCRLF) { } virtual ~Small() {} }; class Subscript : public Element { public: Subscript() : Element("SUB", NULL, InSubscript, InBody, NoCRLF) { } virtual ~Subscript() {} }; class Superscript : public Element { public: Superscript() : Element("SUP", NULL, InSuperscript, InBody, NoCRLF) { } virtual ~Superscript() {} }; class Emphasis : public Element { public: Emphasis() : Element("EM", NULL, InEmphasis, InBody, NoCRLF) { } virtual ~Emphasis() {} }; class Cite : public Element { public: Cite() : Element("CITE", NULL, InCite, InBody, NoCRLF) { } virtual ~Cite() {} }; class Strong : public Element { public: Strong() : Element("STRONG", NULL, InStrong, InBody, NoCRLF) { } virtual ~Strong() {} }; class Code : public Element { public: Code() : Element("CODE", NULL, InCode, InBody, NoCRLF) { } virtual ~Code() {} }; class Sample : public Element { public: Sample() : Element("SAMP", NULL, InSample, InBody, NoCRLF) { } virtual ~Sample() {} }; class Keyboard : public Element { public: Keyboard() : Element("KBD", NULL, InKeyboard, InBody, NoCRLF) { } virtual ~Keyboard() {} }; class Variable : public Element { public: Variable() : Element("VAR", NULL, InVariable, InBody, NoCRLF) { } virtual ~Variable() {} }; class Definition : public Element { public: Definition() : Element("DFN", NULL, InDefinition, InBody, NoCRLF) { } virtual ~Definition() {} }; class Quote : public Element { public: Quote() : Element("Q", NULL, InQuote, InBody, NoCRLF) { } virtual ~Quote() {} }; class Author : public Element { public: Author() : Element("AU", NULL, InAuthor, InBody, NoCRLF) { } virtual ~Author() {} }; class Person : public Element { public: Person() : Element("PERSON", NULL, InPerson, InBody, NoCRLF) { } virtual ~Person() {} }; class Acronym : public Element { public: Acronym() : Element("ACRONYM", NULL, InAcronym, InBody, NoCRLF) { } virtual ~Acronym() {} }; class Abbrev : public Element { public: Abbrev() : Element("ABBREV", NULL, InAbbrev, InBody, NoCRLF) { } virtual ~Abbrev() {} }; class InsertedText : public Element { public: InsertedText() : Element("INS", NULL, InInsertedText, InBody, NoCRLF) { } virtual ~InsertedText() {} }; class DeletedText : public Element { public: DeletedText() : Element("DEL", NULL, InDeletedText, InBody, NoCRLF) { } public: virtual ~DeletedText() {} }; class SimpleList : public Element { public: SimpleList(const char * attr = NULL); virtual ~SimpleList() {} protected: virtual void AddAttr(PHTML & html) const; }; class BulletList : public Element { public: BulletList(const char * attr = NULL); virtual ~BulletList() {} }; class OrderedList : public Element { public: OrderedList(int seqNum = 0, const char * attr = NULL); virtual ~OrderedList() {} protected: virtual void AddAttr(PHTML & html) const; private: int sequenceNum; }; class DefinitionList : public Element { public: DefinitionList(const char * attr = NULL); virtual ~DefinitionList() {} }; class ListHeading : public Element { public: ListHeading(const char * attr = NULL); virtual ~ListHeading() {} }; class ListItem : public Element { public: ListItem(int skip = 0, const char * attr = NULL); virtual ~ListItem() {} protected: virtual void AddAttr(PHTML & html) const; private: int skipSeq; }; class DefinitionTerm : public Element { public: DefinitionTerm(const char * attr = NULL); virtual ~DefinitionTerm() {} protected: virtual void Output(PHTML & html) const; }; class DefinitionItem : public Element { public: DefinitionItem(const char * attr = NULL); virtual ~DefinitionItem() {} protected: virtual void Output(PHTML & html) const; }; enum BorderCodes { NoBorder, Border }; class TableStart : public Element { public: TableStart(const char * attr = NULL); TableStart(BorderCodes border, const char * attr = NULL); virtual ~TableStart() {} protected: virtual void Output(PHTML & html) const; virtual void AddAttr(PHTML & html) const; private: BOOL borderFlag; }; friend class TableStart; class TableEnd : public Element { public: TableEnd(); virtual ~TableEnd() {} protected: virtual void Output(PHTML & html) const; }; friend class TableEnd; class TableRow : public Element { public: TableRow(const char * attr = NULL); virtual ~TableRow() {} }; class TableHeader : public Element { public: TableHeader(const char * attr = NULL); virtual ~TableHeader() {} }; class TableData : public Element { public: TableData(const char * attr = NULL); virtual ~TableData() {} }; class Form : public Element { public: Form( const char * method = NULL, const char * action = NULL, const char * encoding = NULL, const char * script = NULL ); virtual ~Form() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * methodString; const char * actionString; const char * mimeTypeString; const char * scriptString; }; enum DisableCodes { Enabled, Disabled }; class FieldElement : public Element { protected: FieldElement( const char * nam, const char * attr, ElementInSet elmt, OptionalCRLF opt, DisableCodes disabled ); virtual ~FieldElement() {} virtual void AddAttr(PHTML & html) const; private: BOOL disabledFlag; }; class Select : public FieldElement { public: Select( const char * fname = NULL, const char * attr = NULL ); Select( const char * fname, DisableCodes disabled, const char * attr = NULL ); virtual ~Select() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * nameString; }; enum SelectionCodes { NotSelected, Selected }; class Option : public FieldElement { public: Option( const char * attr = NULL ); Option( SelectionCodes select, const char * attr = NULL ); Option( DisableCodes disabled, const char * attr = NULL ); Option( SelectionCodes select, DisableCodes disabled, const char * attr = NULL ); virtual ~Option() {} protected: virtual void AddAttr(PHTML & html) const; private: BOOL selectedFlag; }; class FormField : public FieldElement { protected: FormField( const char * nam, const char * attr, ElementInSet elmt, OptionalCRLF opt, DisableCodes disabled, const char * fname ); virtual ~FormField() {} virtual void AddAttr(PHTML & html) const; private: const char * nameString; }; class TextArea : public FormField { public: TextArea( const char * fname, DisableCodes disabled = Enabled, const char * attr = NULL ); TextArea( const char * fname, int rows, int cols, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~TextArea() {} protected: virtual void AddAttr(PHTML & html) const; private: int numRows, numCols; }; class InputField : public FormField { protected: InputField( const char * type, const char * fname, DisableCodes disabled, const char * attr ); virtual ~InputField() {} virtual void AddAttr(PHTML & html) const; private: const char * typeString; }; class HiddenField : public InputField { public: HiddenField( const char * fname, const char * value, const char * attr = NULL ); virtual ~HiddenField() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * valueString; }; class InputText : public InputField { public: InputText( const char * fname, int size, const char * init = NULL, const char * attr = NULL ); InputText( const char * fname, int size, DisableCodes disabled, const char * attr = NULL ); InputText( const char * fname, int size, int maxLength, DisableCodes disabled = Enabled, const char * attr = NULL ); InputText( const char * fname, int size, const char * init, int maxLength, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~InputText() {} protected: InputText( const char * type, const char * fname, int size, const char * init, int maxLength, DisableCodes disabled, const char * attr ); virtual void AddAttr(PHTML & html) const; private: const char * value; int width, length; }; class InputPassword : public InputText { public: InputPassword( const char * fname, int size, const char * init = NULL, const char * attr = NULL ); InputPassword( const char * fname, int size, DisableCodes disabled, const char * attr = NULL ); InputPassword( const char * fname, int size, int maxLength, DisableCodes disabled = Enabled, const char * attr = NULL ); InputPassword( const char * fname, int size, const char * init, int maxLength, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~InputPassword() {} }; enum CheckedCodes { UnChecked, Checked }; class RadioButton : public InputField { public: RadioButton( const char * fname, const char * value, const char * attr = NULL ); RadioButton( const char * fname, const char * value, DisableCodes disabled, const char * attr = NULL ); RadioButton( const char * fname, const char * value, CheckedCodes check, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~RadioButton() {} protected: RadioButton( const char * type, const char * fname, const char * value, CheckedCodes check, DisableCodes disabled, const char * attr ); virtual void AddAttr(PHTML & html) const; private: const char * valueString; BOOL checkedFlag; }; class CheckBox : public RadioButton { public: CheckBox( const char * fname, const char * attr = NULL ); CheckBox( const char * fname, DisableCodes disabled, const char * attr = NULL ); CheckBox( const char * fname, CheckedCodes check, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~CheckBox() {} }; class InputRange : public InputField { public: InputRange( const char * fname, int min, int max, int value = 0, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~InputRange() {} protected: virtual void AddAttr(PHTML & html) const; private: int minValue, maxValue, initValue; }; class InputFile : public InputField { public: InputFile( const char * fname, const char * accept = NULL, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~InputFile() {} protected: virtual void AddAttr(PHTML & html) const; private: const char * acceptString; }; class InputImage : public InputField { public: InputImage( const char * fname, const char * src = NULL, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~InputImage() {} protected: InputImage( const char * type, const char * fname, const char * src, DisableCodes disabled, const char * attr ); virtual void AddAttr(PHTML & html) const; private: const char * srcString; }; class InputScribble : public InputImage { public: InputScribble( const char * fname, const char * src = NULL, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~InputScribble() {} }; class ResetButton : public InputImage { public: ResetButton( const char * title, const char * fname = NULL, const char * src = NULL, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~ResetButton() {} protected: ResetButton( const char * type, const char * title, const char * fname = NULL, const char * src = NULL, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual void AddAttr(PHTML & html) const; private: const char * titleString; }; class SubmitButton : public ResetButton { public: SubmitButton( const char * title, const char * fname = NULL, const char * src = NULL, DisableCodes disabled = Enabled, const char * attr = NULL ); virtual ~SubmitButton() {} }; protected: virtual void AssignContents(const PContainer & c); private: ElementInSet initialElement; BYTE elementSet[NumElementsInSet/8+1]; PINDEX tableNestLevel; }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/http.h0100644000176200056700000020073610343317551017440 0ustar releasepostincr/* * http.h * * HyperText Transport Protocol classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: http.h,v $ * Revision 1.60 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.59 2005/01/03 12:48:41 csoutheren * Added new configure options and ability to disable/enable modules * * Revision 1.58 2004/10/23 11:34:59 ykiryanov * Added ifdef _WIN32_WCE for PocketPC 2003 SDK port * * Revision 1.57 2002/12/03 22:37:36 robertj * Removed get document that just returns a content length as the chunked * transfer encoding makes this very dangerous. * Added GetTextDocument() to get a URL content into a PString. * Added a version pf PostData() that gets the reponse content into a PString. * Added ReadContentBody() that takes a PString, not just PBYTEArray. * * Revision 1.56 2002/11/06 22:47:23 robertj * Fixed header comment (copyright etc) * * Revision 1.55 2002/10/10 04:43:43 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.54 2002/10/02 08:54:34 craigs * Added support for XMLRPC server * * Revision 1.53 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.52 2002/05/08 05:38:53 robertj * Added PHTTPTailFile resource to do a unix 'tail -f' of a file. * * Revision 1.51 2001/10/31 01:34:47 robertj * Added extra const for constant HTTP tag name strings. * Changes to support HTTP v1.1 chunked transfer encoding. * * Revision 1.50 2001/10/03 00:26:34 robertj * Upgraded client to HTTP/1.1 and for chunked mode entity bodies. * * Revision 1.49 2001/09/28 08:55:15 robertj * More changes to support restartable PHTTPClient * * Revision 1.48 2001/09/28 00:42:54 robertj * Added automatic setting of some outward MIME fields. * Added "user agent" string field for automatic inclusion. * Added function to read the contents of the HTTP request. * * Revision 1.47 2001/08/28 06:44:30 craigs * Added ability to override PHTTPServer creation * * Revision 1.46 2001/03/14 01:49:54 craigs * Added ability to handle multi-part form POST commands * * Revision 1.45 2001/02/22 05:26:47 robertj * Added "nicer" version of GetDocument in HTTP client class. * * Revision 1.44 2001/01/15 06:16:53 robertj * Set HTTP resource members to private to assure are not modified by * dscendents in non-threadsafe manner. * * Revision 1.43 2000/09/04 03:57:58 robertj * Added ability to change the persistent connection parameters (timeout etc). * * Revision 1.42 2000/05/02 08:28:10 craigs * Removed "memory leaks" caused by brain-dead GNU linker * * Revision 1.41 1999/09/17 01:11:14 robertj * Fixed some documentation typos. * * Revision 1.40 1999/05/13 04:04:04 robertj * Fixed problem of initialised commandName in ConnectionInfo. * * Revision 1.39 1999/05/04 15:26:01 robertj * Improved HTTP/1.1 compatibility (pass through user commands). * Fixed problems with quicktime installer. * * Revision 1.38 1999/04/21 01:58:08 robertj * Fixed problem with reading data for request using second form of PHTTPRequestInfo constructor. * * Revision 1.37 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.36 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.35 1998/11/30 02:50:47 robertj * New directory structure * * Revision 1.34 1998/10/31 12:49:21 robertj * Added read/write mutex to the HTTP space variable to avoid thread crashes. * * Revision 1.33 1998/10/25 01:00:46 craigs * Added ability to specify per-directory authorisation for PHTTPDirectory * * Revision 1.32 1998/09/23 06:19:29 robertj * Added open source copyright license. * * Revision 1.31 1998/07/24 06:58:42 robertj * Changed PostData function so just has string for data instead of dictionary. * * Revision 1.30 1998/06/16 03:33:33 robertj * Changed TCP connection shutdown to be parameterised. * Propagated persistence and proxy flags in new connection info instances. * * Revision 1.29 1998/04/14 03:42:59 robertj * Fixed error code propagation in HTTP client. * * Revision 1.28 1998/02/03 06:29:38 robertj * Added local address and port to PHTTPRequest. * * Revision 1.27 1998/01/26 00:24:24 robertj * Added more information to PHTTPConnectionInfo. * Added function to allow HTTPClient to automatically connect if URL has hostname. * * Revision 1.26 1997/10/30 10:22:52 robertj * Added multiple user basic authorisation scheme. * * Revision 1.25 1997/10/03 13:30:15 craigs * Added ability to access client socket from within HTTP resources * * Revision 1.24 1997/03/28 04:40:22 robertj * Added tags for cookies. * * Revision 1.23 1997/01/12 04:15:19 robertj * Globalised MIME tag strings. * * Revision 1.22 1996/10/26 03:31:05 robertj * Changed OnError so can pass in full HTML page as parameter. * * Revision 1.21 1996/09/14 13:09:10 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.20 1996/08/22 13:20:55 robertj * Fixed bug in authorisation, missing virtual prevented polymorphism. * * Revision 1.19 1996/08/19 13:44:06 robertj * Fixed authorisation so if have no user/password on basic authentication, does not require it. * * Revision 1.18 1996/06/28 13:15:23 robertj * Modified HTTPAuthority so gets PHTTPReqest (mainly for URL) passed in. * Moved HTTP form resource to another compilation module. * * Revision 1.17 1996/06/07 13:52:20 robertj * Added PUT to HTTP proxy FTP. Necessitating redisign of entity body processing. * * Revision 1.16 1996/05/23 10:00:52 robertj * Added common function for GET and HEAD commands. * Fixed status codes to be the actual status code instead of sequential enum. * This fixed some problems with proxy pass through of status codes. * * Revision 1.14 1996/03/31 08:46:51 robertj * HTTP 1.1 upgrade. * * Revision 1.13 1996/03/17 05:41:57 robertj * Added hit count to PHTTPResource. * * Revision 1.12 1996/03/16 04:39:55 robertj * Added ParseReponse() for splitting reponse line into code and info. * Added client side support for HTTP socket. * Added hooks for proxy support in HTTP socket. * * Revision 1.11 1996/03/10 13:15:23 robertj * Redesign to make resources thread safe. * * Revision 1.10 1996/03/02 03:12:55 robertj * Added radio button and selection boxes to HTTP form resource. * * Revision 1.9 1996/02/25 11:14:21 robertj * Radio button support for forms. * * Revision 1.8 1996/02/25 02:57:48 robertj * Removed pass through HTTP resource. * * Revision 1.7 1996/02/19 13:25:43 robertj * Added overwrite option to AddResource(). * Added get/set string to PHTTPString resource. * Moved nested classes from PHTTPForm. * * Revision 1.6 1996/02/13 13:09:16 robertj * Added extra parameters to callback function in PHTTPResources, required * by descendants to make informed decisions on data being loaded. * * Revision 1.5 1996/02/08 12:04:19 robertj * Redesign of resource object callback virtuals. * Added HTML form resource type. * * Revision 1.4 1996/02/03 11:03:32 robertj * Added ismodified since and expires time checking. * Added PHTTPString that defaults to empty string. * * Revision 1.3 1996/01/28 14:15:38 robertj * Changed PCharArray in OnLoadData to PString for convenience in mangling data. * Beginning of pass through resource type. * * Revision 1.2 1996/01/26 02:24:26 robertj * Further implemetation. * * Revision 1.1 1996/01/23 13:04:20 robertj * Initial revision * */ #ifndef _PHTTP #define _PHTTP #ifdef P_USE_PRAGMA #pragma interface #endif #include #include #include #include #ifdef P_HTTPSVC #include ////////////////////////////////////////////////////////////////////////////// // PHTTPSpace class PHTTPResource; /** This class describes a name space that a Universal Resource Locator operates in. Each section of the hierarchy field of the URL points to a leg in the tree specified by this class. */ class PHTTPSpace : public PContainer { PCONTAINERINFO(PHTTPSpace, PContainer) public: /// Constructor for HTTP URL Name Space PHTTPSpace(); // New functions for class. enum AddOptions { /// Generate error if resource already exists ErrorOnExist, /// Overwrite the existing resource at URL location Overwrite }; /** Add a new resource to the URL space. If there is already a resource at the location in the tree, or that location in the tree is already in the path to another resource then the function will fail. The overwrite flag can be used to replace an existing resource. The function will still fail if the resource is on a partial path to another resource but not if it is a leaf node. @return TRUE if resource added, FALSE if failed. */ BOOL AddResource( PHTTPResource * resource, ///< Resource to add to the name space. AddOptions overwrite = ErrorOnExist ///< Flag to overwrite an existing resource if it already exists. ); /** Delete an existing resource to the URL space. If there is not a resource at the location in the tree, or that location in the tree is in the path to another resource then the function will fail. @return TRUE if resource deleted, FALSE if failed. */ BOOL DelResource( const PURL & url ///< URL to search for in the name space. ); /** Locate the resource specified by the URL in the URL name space. @return The resource found or NULL if no resource at that position in hiearchy. */ PHTTPResource * FindResource( const PURL & url ///< URL to search for in the name space. ); /** This function attempts to acquire the mutex for reading. */ void StartRead() const { mutex->StartRead(); } /** This function attempts to release the mutex for reading. */ void EndRead() const { mutex->EndRead(); } /** This function attempts to acquire the mutex for writing. */ void StartWrite() const { mutex->StartWrite(); } /** This function attempts to release the mutex for writing. */ void EndWrite() const { mutex->EndWrite(); } protected: PReadWriteMutex * mutex; class Node; PSORTED_LIST(ChildList, Node); class Node : public PString { PCLASSINFO(Node, PString) public: Node(const PString & name, Node * parentNode); ~Node(); Node * parent; ChildList children; PHTTPResource * resource; } * root; private: BOOL SetSize(PINDEX) { return FALSE; } }; #endif // P_HTTPSVC #ifdef _WIN32_WCE #undef TRACE #endif ////////////////////////////////////////////////////////////////////////////// // PHTTP /** A common base class for TCP/IP socket for the HyperText Transfer Protocol version 1.0 client and server. */ class PHTTP : public PInternetProtocol { PCLASSINFO(PHTTP, PInternetProtocol) public: // New functions for class. enum Commands { // HTTP/1.0 commands GET, HEAD, POST, // HTTP/1.1 commands PUT, DELETE, TRACE, OPTIONS, // HTTPS command CONNECT, NumCommands }; enum StatusCode { Continue = 100, ///< 100 - Continue SwitchingProtocols, ///< 101 - upgrade allowed RequestOK = 200, ///< 200 - request has succeeded Created, ///< 201 - new resource created: entity body contains URL Accepted, ///< 202 - request accepted, but not yet completed NonAuthoritativeInformation, ///< 203 - not definitive entity header NoContent, ///< 204 - no new information ResetContent, ///< 205 - contents have been reset PartialContent, ///< 206 - partial GET succeeded MultipleChoices = 300, ///< 300 - requested resource available elsewehere MovedPermanently, ///< 301 - resource moved permanently: location field has new URL MovedTemporarily, ///< 302 - resource moved temporarily: location field has new URL SeeOther, ///< 303 - see other URL NotModified, ///< 304 - document has not been modified UseProxy, ///< 305 - proxy redirect BadRequest = 400, ///< 400 - request malformed or not understood UnAuthorised, ///< 401 - request requires authentication PaymentRequired, ///< 402 - reserved Forbidden, ///< 403 - request is refused due to unsufficient authorisation NotFound, ///< 404 - resource cannot be found MethodNotAllowed, ///< 405 - not allowed on this resource NoneAcceptable, ///< 406 - encoding not acceptable ProxyAuthenticationRequired, ///< 407 - must authenticate with proxy first RequestTimeout, ///< 408 - server timeout on request Conflict, ///< 409 - resource conflict on action Gone, ///< 410 - resource gone away LengthRequired, ///< 411 - no Content-Length UnlessTrue, ///< 412 - no Range header for TRUE Unless InternalServerError = 500, ///< 500 - server has encountered an unexpected error NotImplemented, ///< 501 - server does not implement request BadGateway, ///< 502 - error whilst acting as gateway ServiceUnavailable, ///< 503 - server temporarily unable to service request GatewayTimeout ///< 504 - timeout whilst talking to gateway }; // Common MIME header tags static const char * const AllowTag; static const char * const AuthorizationTag; static const char * const ContentEncodingTag; static const char * const ContentLengthTag; static const char * const ContentTypeTag; static const char * const DateTag; static const char * const ExpiresTag; static const char * const FromTag; static const char * const IfModifiedSinceTag; static const char * const LastModifiedTag; static const char * const LocationTag; static const char * const PragmaTag; static const char * const PragmaNoCacheTag; static const char * const RefererTag; static const char * const ServerTag; static const char * const UserAgentTag; static const char * const WWWAuthenticateTag; static const char * const MIMEVersionTag; static const char * const ConnectionTag; static const char * const KeepAliveTag; static const char * const TransferEncodingTag; static const char * const ChunkedTag; static const char * const ProxyConnectionTag; static const char * const ProxyAuthorizationTag; static const char * const ProxyAuthenticateTag; static const char * const ForwardedTag; static const char * const SetCookieTag; static const char * const CookieTag; protected: /** Create a TCP/IP HTTP protocol channel. */ PHTTP(); /** Parse a response line string into a response code and any extra info on the line. Results are placed into the member variables lastResponseCode and lastResponseInfo. The default bahaviour looks for a space or a '-' and splits the code and info either side of that character, then returns FALSE. @return Position of continuation character in response, 0 if no continuation lines are possible. */ virtual PINDEX ParseResponse( const PString & line ///< Input response line to be parsed ); }; ////////////////////////////////////////////////////////////////////////////// // PHTTPClient /** A TCP/IP socket for the HyperText Transfer Protocol version 1.0. When acting as a client, the procedure is to make the connection to a remote server, then to retrieve a document using the following procedure:

      PHTTPSocket web("webserver");
      if (web.IsOpen()) {
        PINDEX len;
        if (web.GetDocument("http://www.someone.com/somewhere/url", len)) {
          PString html = web.ReadString(len);
          if (!html.IsEmpty())
            ProcessHTML(html);
        }
        else
           PError << "Could not get page." << endl;
      }
      else
         PError << "HTTP conection failed." << endl;
      
*/ class PHTTPClient : public PHTTP { PCLASSINFO(PHTTPClient, PHTTP) public: /// Create a new HTTP client channel. PHTTPClient(); PHTTPClient( const PString & userAgentName ); // New functions for class. /** Send a command and wait for the response header (including MIME fields). Note that a body may still be on its way even if lasResponseCode is not 200! @return TRUE if all of header returned and ready to receive body. */ int ExecuteCommand( Commands cmd, const PURL & url, PMIMEInfo & outMIME, const PString & dataBody, PMIMEInfo & replyMime, BOOL persist = TRUE ); int ExecuteCommand( const PString & cmdName, const PURL & url, PMIMEInfo & outMIME, const PString & dataBody, PMIMEInfo & replyMime, BOOL persist = TRUE ); /// Write a HTTP command to server BOOL WriteCommand( Commands cmd, const PString & url, PMIMEInfo & outMIME, const PString & dataBody ); BOOL WriteCommand( const PString & cmdName, const PString & url, PMIMEInfo & outMIME, const PString & dataBody ); /// Read a response from the server BOOL ReadResponse( PMIMEInfo & replyMIME ); /// Read the body of the HTTP command BOOL ReadContentBody( PMIMEInfo & replyMIME, PBYTEArray & body ); BOOL ReadContentBody( PMIMEInfo & replyMIME, PString & body ); /** Get the document specified by the URL. @return TRUE if document is being transferred. */ BOOL GetTextDocument( const PURL & url, ///< Universal Resource Locator for document. PString & document, ///< Body read BOOL persist = TRUE ///< if TRUE, enable HTTP persistence ); /** Get the document specified by the URL. @return TRUE if document is being transferred. */ BOOL GetDocument( const PURL & url, ///< Universal Resource Locator for document. PMIMEInfo & outMIME, ///< MIME info in request PMIMEInfo & replyMIME, ///< MIME info in response BOOL persist = TRUE ///< if TRUE, enable HTTP persistence ); /** Get the header for the document specified by the URL. @return TRUE if document header is being transferred. */ BOOL GetHeader( const PURL & url, ///< Universal Resource Locator for document. PMIMEInfo & outMIME, ///< MIME info in request PMIMEInfo & replyMIME, ///< MIME info in response BOOL persist = TRUE ///< if TRUE, enable HTTP persistence ); /** Post the data specified to the URL. @return TRUE if document is being transferred. */ BOOL PostData( const PURL & url, ///< Universal Resource Locator for document. PMIMEInfo & outMIME, ///< MIME info in request const PString & data, ///< Information posted to the HTTP server. PMIMEInfo & replyMIME, ///< MIME info in response BOOL persist = TRUE ///< if TRUE, enable HTTP persistence ); /** Post the data specified to the URL. @return TRUE if document is being transferred. */ BOOL PostData( const PURL & url, ///< Universal Resource Locator for document. PMIMEInfo & outMIME, ///< MIME info in request const PString & data, ///< Information posted to the HTTP server. PMIMEInfo & replyMIME, ///< MIME info in response PString & replyBody, ///< Body of response BOOL persist = TRUE ///< if TRUE, enable HTTP persistence ); protected: BOOL AssureConnect(const PURL & url, PMIMEInfo & outMIME); BOOL InternalReadContentBody( PMIMEInfo & replyMIME, PAbstractArray & body ); PString userAgentName; }; #ifdef P_HTTPSVC ////////////////////////////////////////////////////////////////////////////// // PMultipartFormInfo /** This object describes the information associated with a multi-part form entry */ class PMultipartFormInfo : public PObject { PCLASSINFO(PMultipartFormInfo, PObject); public: PMIMEInfo mime; PString body; }; PARRAY(PMultipartFormInfoArray, PMultipartFormInfo); ////////////////////////////////////////////////////////////////////////////// // PHTTPConnectionInfo class PHTTPServer; /** This object describes the connectiono associated with a HyperText Transport Protocol request. This information is required by handler functions on #PHTTPResource# descendant classes to manage the connection correctly. */ class PHTTPConnectionInfo : public PObject { PCLASSINFO(PHTTPConnectionInfo, PObject) public: PHTTPConnectionInfo(); PHTTP::Commands GetCommandCode() const { return commandCode; } const PString & GetCommandName() const { return commandName; } const PURL & GetURL() const { return url; } const PMIMEInfo & GetMIME() const { return mimeInfo; } void SetMIME(const PString & tag, const PString & value); BOOL IsCompatible(int major, int minor) const; BOOL IsPersistant() const { return isPersistant; } BOOL WasPersistant() const { return wasPersistant; } BOOL IsProxyConnection() const { return isProxyConnection; } int GetMajorVersion() const { return majorVersion; } int GetMinorVersion() const { return minorVersion; } long GetEntityBodyLength() const { return entityBodyLength; } /**Get the maximum time a persistent connection may persist. */ PTimeInterval GetPersistenceTimeout() const { return persistenceTimeout; } /**Set the maximum time a persistent connection may persist. */ void SetPersistenceTimeout(const PTimeInterval & t) { persistenceTimeout = t; } /**Get the maximum number of transations (GET/POST etc) for persistent connection. If this is zero then there is no maximum. */ unsigned GetPersistenceMaximumTransations() const { return persistenceMaximum; } /**Set the maximum number of transations (GET/POST etc) for persistent connection. If this is zero then there is no maximum. */ void SetPersistenceMaximumTransations(unsigned m) { persistenceMaximum = m; } const PMultipartFormInfoArray & GetMultipartFormInfo() const { return multipartFormInfoArray; } void ResetMultipartFormInfo() { multipartFormInfoArray.RemoveAll(); } PString GetEntityBody() const { return entityBody; } protected: BOOL Initialise(PHTTPServer & server, PString & args); void DecodeMultipartFormInfo(const PString & type, const PString & entityBody); PHTTP::Commands commandCode; PString commandName; PURL url; PMIMEInfo mimeInfo; BOOL isPersistant; BOOL wasPersistant; BOOL isProxyConnection; int majorVersion; int minorVersion; PString entityBody; // original entity body (POST only) long entityBodyLength; PTimeInterval persistenceTimeout; unsigned persistenceMaximum; PMultipartFormInfoArray multipartFormInfoArray; friend class PHTTPServer; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPServer /** A TCP/IP socket for the HyperText Transfer Protocol version 1.0. When acting as a server, a descendant class would be created to override at least the #HandleOpenMailbox()#, #HandleSendMessage()# and #HandleDeleteMessage()# functions. Other functions may be overridden for further enhancement to the sockets capabilities, but these will give a basic POP3 server functionality. The server socket thread would continuously call the #ProcessMessage()# function until it returns FALSE. This will then call the appropriate virtual function on parsing the POP3 protocol. */ class PHTTPServer : public PHTTP { PCLASSINFO(PHTTPServer, PHTTP) public: /** Create a TCP/IP HTTP protocol socket channel. The form with the single port parameter creates an unopened socket, the form with the address parameter makes a connection to a remote system, opening the socket. The form with the socket parameter opens the socket to an incoming call from a "listening" socket. */ PHTTPServer(); PHTTPServer( const PHTTPSpace & urlSpace ///< Name space to use for URLs received. ); // New functions for class. /** Get the name of the server. @return String name of the server. */ virtual PString GetServerName() const; /** Get the name space being used by the HTTP server socket. @return URL name space tree. */ PHTTPSpace & GetURLSpace() { return urlSpace; } /// Use a new URL name space for this HTTP socket. void SetURLSpace( const PHTTPSpace & space ///< New URL name space to use. ); /** Process commands, dispatching to the appropriate virtual function. This is used when the socket is acting as a server. @return TRUE if the request specified persistant mode and the request version allows it, FALSE if the socket closed, timed out, the protocol does not allow persistant mode, or the client did not request it timed out */ virtual BOOL ProcessCommand(); /** Handle a GET command from a client. The default implementation looks up the URL in the name space declared by the #PHTTPSpace# class tree and despatches to the #PHTTPResource# object contained therein. @return TRUE if the connection may persist, FALSE if the connection must close If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnGET( const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /** Handle a HEAD command from a client. The default implemetation looks up the URL in the name space declared by the #PHTTPSpace# class tree and despatches to the #PHTTPResource# object contained therein. @return TRUE if the connection may persist, FALSE if the connection must close If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnHEAD( const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /** Handle a POST command from a client. The default implementation looks up the URL in the name space declared by the #PHTTPSpace# class tree and despatches to the #PHTTPResource# object contained therein. @return TRUE if the connection may persist, FALSE if the connection must close If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnPOST( const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PStringToString & data, ///< Variables provided in the POST data. const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /** Handle a proxy command request from a client. This will only get called if the request was not for this particular server. If it was a proxy request for this server (host and port number) then the appropriate #OnGET()#, #OnHEAD()# or #OnPOST()# command is called. The default implementation returns OnError(BadGateway). @return TRUE if the connection may persist, FALSE if the connection must close If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnProxy( const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /** Read the entity body associated with a HTTP request, and close the socket if not a persistant connection. @return The entity body of the command */ virtual PString ReadEntityBody(); /** Handle an unknown command. @return TRUE if the connection may persist, FALSE if the connection must close */ virtual BOOL OnUnknown( const PCaselessString & command, ///< Complete command line received. const PHTTPConnectionInfo & connectInfo ///< HTTP connection information ); /** Write a command reply back to the client, and construct some of the outgoing MIME fields. The MIME fields are not sent. The bodySize parameter determines the size of the entity body associated with the response. If bodySize is >= 0, then a ContentLength field will be added to the outgoing MIME headers if one does not already exist. If bodySize is < 0, then it is assumed that the size of the entity body is unknown, or has already been added, and no ContentLength field will be constructed. If the version of the request is less than 1.0, then this function does nothing. @return TRUE if requires v1.1 chunked transfer encoding. */ BOOL StartResponse( StatusCode code, ///< Status code for the response. PMIMEInfo & headers, ///< MIME variables included in response. long bodySize ///< Size of the rest of the response. ); /** Write an error response for the specified code. Depending on the code parameter this function will also send a HTML version of the status code for display on the remote client viewer. @return TRUE if the connection may persist, FALSE if the connection must close */ virtual BOOL OnError( StatusCode code, ///< Status code for the error response. const PCaselessString & extra, ///< Extra information included in the response. const PHTTPConnectionInfo & connectInfo ///< HTTP connection information ); /** Set the default mime info */ void SetDefaultMIMEInfo( PMIMEInfo & info, ///< Extra MIME information in command. const PHTTPConnectionInfo & connectInfo ); /**Get the connection info for this connection. */ PHTTPConnectionInfo & GetConnectionInfo() { return connectInfo; } protected: void Construct(); PHTTPSpace urlSpace; PHTTPConnectionInfo connectInfo; unsigned transactionCount; PTimeInterval nextTimeout; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPRequest /** This object describes a HyperText Transport Protocol request. An individual request is passed to handler functions on #PHTTPResource# descendant classes. */ class PHTTPRequest : public PObject { PCLASSINFO(PHTTPRequest, PObject) public: PHTTPRequest( const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & inMIME, ///< Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo, ///< multipart form information (if any) PHTTPServer & server ///< Server channel that request initiated on ); PHTTPServer & server; ///< Server channel that request initiated on const PURL & url; ///< Universal Resource Locator for document. const PMIMEInfo & inMIME; ///< Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo; ///< multipart form information, if any PHTTP::StatusCode code; ///< Status code for OnError() reply. PMIMEInfo outMIME; ///< MIME information used in reply. PString entityBody; ///< original entity body (POST only) PINDEX contentSize; ///< Size of the body of the resource data. PIPSocket::Address origin; ///< IP address of origin host for request PIPSocket::Address localAddr; ///< IP address of local interface for request WORD localPort; ///< Port number of local server for request }; ////////////////////////////////////////////////////////////////////////////// // PHTTPAuthority /** This abstract class describes the authorisation mechanism for a Universal Resource Locator. */ class PHTTPAuthority : public PObject { PCLASSINFO(PHTTPAuthority, PObject) public: // New functions for class. /** Get the realm or name space for the user authorisation name and password as required by the basic authorisation system of HTTP/1.0. @return String for the authorisation realm name. */ virtual PString GetRealm( const PHTTPRequest & request ///< Request information. ) const = 0; /** Validate the user and password provided by the remote HTTP client for the realm specified by the class instance. @return TRUE if the user and password are authorised in the realm. */ virtual BOOL Validate( const PHTTPRequest & request, ///< Request information. const PString & authInfo ///< Authority information string. ) const = 0; /** Determine if the authorisation is to be applied. This could be used to distinguish between net requiring authorisation and requiring autorisation but having no password. The default behaviour is to return TRUE. @return TRUE if the authorisation in the realm is to be applied. */ virtual BOOL IsActive() const; protected: static void DecodeBasicAuthority( const PString & authInfo, ///< Authority information string. PString & username, ///< User name decoded from authInfo PString & password ///< Password decoded from authInfo ); }; ////////////////////////////////////////////////////////////////////////////// // PHTTPSimpleAuth /** This class describes the simplest authorisation mechanism for a Universal Resource Locator, a fixed realm, username and password. */ class PHTTPSimpleAuth : public PHTTPAuthority { PCLASSINFO(PHTTPSimpleAuth, PHTTPAuthority) public: PHTTPSimpleAuth( const PString & realm, ///< Name space for the username and password. const PString & username, ///< Username that this object wiull authorise. const PString & password ///< Password for the above username. ); // Construct the simple authorisation structure. // Overrides from class PObject. /** Create a copy of the class on the heap. This is used by the #PHTTPResource# classes for maintaining authorisation to resources. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; // Overrides from class PHTTPAuthority. /** Get the realm or name space for the user authorisation name and password as required by the basic authorisation system of HTTP/1.0. @return String for the authorisation realm name. */ virtual PString GetRealm( const PHTTPRequest & request ///< Request information. ) const; /** Validate the user and password provided by the remote HTTP client for the realm specified by the class instance. @return TRUE if the user and password are authorised in the realm. */ virtual BOOL Validate( const PHTTPRequest & request, ///< Request information. const PString & authInfo ///< Authority information string. ) const; /** Determine if the authorisation is to be applied. This could be used to distinguish between net requiring authorisation and requiring autorisation but having no password. The default behaviour is to return TRUE. @return TRUE if the authorisation in the realm is to be applied. */ virtual BOOL IsActive() const; /** Get the user name allocated to this simple authorisation. @return String for the authorisation user name. */ const PString & GetUserName() const { return username; } /** Get the password allocated to this simple authorisation. @return String for the authorisation password. */ const PString & GetPassword() const { return password; } protected: PString realm; PString username; PString password; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPMultiSimpAuth /** This class describes the simple authorisation mechanism for a Universal Resource Locator, a fixed realm, multiple usernames and passwords. */ class PHTTPMultiSimpAuth : public PHTTPAuthority { PCLASSINFO(PHTTPMultiSimpAuth, PHTTPAuthority) public: PHTTPMultiSimpAuth( const PString & realm ///< Name space for the username and password. ); PHTTPMultiSimpAuth( const PString & realm, ///< Name space for the usernames. const PStringToString & userList ///< List of usernames and passwords. ); // Construct the simple authorisation structure. // Overrides from class PObject. /** Create a copy of the class on the heap. This is used by the #PHTTPResource# classes for maintaining authorisation to resources. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; // Overrides from class PHTTPAuthority. /** Get the realm or name space for the user authorisation name and password as required by the basic authorisation system of HTTP/1.0. @return String for the authorisation realm name. */ virtual PString GetRealm( const PHTTPRequest & request ///< Request information. ) const; /** Validate the user and password provided by the remote HTTP client for the realm specified by the class instance. @return TRUE if the user and password are authorised in the realm. */ virtual BOOL Validate( const PHTTPRequest & request, ///< Request information. const PString & authInfo ///< Authority information string. ) const; /** Determine if the authirisation is to be applied. This could be used to distinguish between net requiring authorisation and requiring autorisation but having no password. The default behaviour is to return TRUE. @return TRUE if the authorisation in the realm is to be applied. */ virtual BOOL IsActive() const; /** Get the user name allocated to this simple authorisation. @return String for the authorisation user name. */ void AddUser( const PString & username, ///< Username that this object wiull authorise. const PString & password ///< Password for the above username. ); protected: PString realm; PStringToString users; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPResource /** This object describes a HyperText Transport Protocol resource. A tree of these resources are available to the #PHTTPSocket# class. */ class PHTTPResource : public PObject { PCLASSINFO(PHTTPResource, PObject) protected: PHTTPResource( const PURL & url ///< Name of the resource in URL space. ); PHTTPResource( const PURL & url, ///< Name of the resource in URL space. const PHTTPAuthority & auth ///< Authorisation for the resource. ); PHTTPResource( const PURL & url, ///< Name of the resource in URL space. const PString & contentType ///< MIME content type for the resource. ); PHTTPResource( const PURL & url, ///< Name of the resource in URL space. const PString & contentType, ///< MIME content type for the resource. const PHTTPAuthority & auth ///< Authorisation for the resource. ); // Create a new HTTP Resource. public: virtual ~PHTTPResource(); // Destroy the HTTP Resource. // New functions for class. /** Get the URL for this resource. @return The URL for this resource. */ const PURL & GetURL() const { return baseURL; } /** Get the current content type for the resource. @return string for the current MIME content type. */ const PString & GetContentType() const { return contentType; } /** Get the current authority for the resource. @return Pointer to authority or NULL if unrestricted. */ PHTTPAuthority * GetAuthority() const { return authority; } /** Set the current authority for the resource. */ void SetAuthority( const PHTTPAuthority & auth ///< authority to set ); /** Set the current authority for the resource to unrestricted. */ void ClearAuthority(); /** Get the current hit count for the resource. This is the total number of times the resource was asked for by a remote client. @return Hit count for the resource. */ DWORD GetHitCount() const { return hitCount; } void ClearHitCount() { hitCount = 0; } // Clear the hit count for the resource. /** Handle the GET command passed from the HTTP socket. The default action is to check the authorisation for the resource and call the virtuals #LoadHeaders()# and #OnGETData()# to get a resource to be sent to the socket. @return TRUE if the connection may persist, FALSE if the connection must close. If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnGET( PHTTPServer & server, ///< HTTP server that received the request const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /**Send the data associated with a GET command. The default action calls #SendData()#. @return TRUE if the connection may persist, FALSE if the connection must close. If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnGETData( PHTTPServer & server, ///< HTTP server that received the request const PURL & url, ///< Universal Resource Locator for document const PHTTPConnectionInfo & connectInfo, ///< HTTP connection information PHTTPRequest & request ///< request state information ); /** Handle the HEAD command passed from the HTTP socket. The default action is to check the authorisation for the resource and call the virtual #LoadHeaders()# to get the header information to be sent to the socket. @return TRUE if the connection may persist, FALSE if the connection must close If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnHEAD( PHTTPServer & server, ///< HTTP server that received the request const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /** Handle the POST command passed from the HTTP socket. The default action is to check the authorisation for the resource and call the virtual #Post()# function to handle the data being received. @return TRUE if the connection may persist, FALSE if the connection must close If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnPOST( PHTTPServer & server, ///< HTTP server that received the request const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PStringToString & data, ///< Variables in the POST data. const PHTTPConnectionInfo & conInfo ///< HTTP connection information ); /**Send the data associated with a POST command. The default action calls #Post()#. @return TRUE if the connection may persist, FALSE if the connection must close. If there is no ContentLength field in the response, this value must be FALSE for correct operation. */ virtual BOOL OnPOSTData( PHTTPRequest & request, ///< request information const PStringToString & data ///< Variables in the POST data. ); /** Check to see if the resource has been modified since the date specified. @return TRUE if has been modified since. */ virtual BOOL IsModifiedSince( const PTime & when ///< Time to see if modified later than ); /** Get a block of data (eg HTML) that the resource contains. @return Status of load operation. */ virtual BOOL GetExpirationDate( PTime & when ///< Time that the resource expires ); /** Create a new request block for this type of resource. The default behaviour is to create a new PHTTPRequest instance. @return Pointer to instance of PHTTPRequest descendant class. */ virtual PHTTPRequest * CreateRequest( const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & inMIME, ///< Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo, ///< additional information for multi-part posts PHTTPServer & socket ///< socket used for request ); /** Get the headers for block of data (eg HTML) that the resource contains. This will fill in all the fields of the outMIME parameter required by the resource and return the status for the load. @return TRUE if all OK, FALSE if an error occurred. */ virtual BOOL LoadHeaders( PHTTPRequest & request ///< Information on this request. ) = 0; /**Send the data associated with a command. The default action is to call the virtual #LoadData()# to get a resource to be sent to the socket. */ virtual void SendData( PHTTPRequest & request ///< information for this request ); /** Get a block of data that the resource contains. The default behaviour is to call the #LoadText()# function and if successful, call the #OnLoadedText()# function. @return TRUE if there is still more to load. */ virtual BOOL LoadData( PHTTPRequest & request, ///< Information on this request. PCharArray & data ///< Data used in reply. ); /** Get a block of text data (eg HTML) that the resource contains. The default behaviour is to assert, one of #LoadText()# or #LoadData()# functions must be overridden for correct operation. @return String for loaded text. */ virtual PString LoadText( PHTTPRequest & request ///< Information on this request. ); /** This is called after the text has been loaded and may be used to customise or otherwise mangle a loaded piece of text. Typically this is used with HTML responses. The default action for this function is to do nothing. */ virtual void OnLoadedText( PHTTPRequest & request, ///< Information on this request. PString & text ///< Data used in reply. ); /** Get a block of data (eg HTML) that the resource contains. The default action for this function is to do nothing and return success. @return TRUE if the connection may persist, FALSE if the connection must close */ virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); protected: /** See if the resource is authorised given the mime info */ virtual BOOL CheckAuthority( PHTTPServer & server, ///< Server to send response to. const PHTTPRequest & request, ///< Information on this request. const PHTTPConnectionInfo & conInfo ///< Information on the connection ); static BOOL CheckAuthority( PHTTPAuthority & authority, PHTTPServer & server, const PHTTPRequest & request, const PHTTPConnectionInfo & connectInfo ); /** common code for GET and HEAD commands */ virtual BOOL OnGETOrHEAD( PHTTPServer & server, ///< HTTP server that received the request const PURL & url, ///< Universal Resource Locator for document. const PMIMEInfo & info, ///< Extra MIME information in command. const PHTTPConnectionInfo & conInfo, BOOL IsGet ); /// Base URL for the resource, may accept URLS with a longer hierarchy PURL baseURL; /// MIME content type for the resource PString contentType; /// Authorisation method for the resource PHTTPAuthority * authority; /// COunt of number of times resource was accessed. volatile DWORD hitCount; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPString /** This object describes a HyperText Transport Protocol resource which is a string kept in memory. For instance a pre-calculated HTML string could be set in this type of resource. */ class PHTTPString : public PHTTPResource { PCLASSINFO(PHTTPString, PHTTPResource) public: /** Contruct a new simple string resource for the HTTP space. If no MIME content type is specified then a default type is "text/html". */ PHTTPString( const PURL & url // Name of the resource in URL space. ); PHTTPString( const PURL & url, // Name of the resource in URL space. const PHTTPAuthority & auth // Authorisation for the resource. ); PHTTPString( const PURL & url, // Name of the resource in URL space. const PString & str // String to return in this resource. ); PHTTPString( const PURL & url, // Name of the resource in URL space. const PString & str, // String to return in this resource. const PString & contentType // MIME content type for the file. ); PHTTPString( const PURL & url, // Name of the resource in URL space. const PString & str, // String to return in this resource. const PHTTPAuthority & auth // Authorisation for the resource. ); PHTTPString( const PURL & url, // Name of the resource in URL space. const PString & str, // String to return in this resource. const PString & contentType, // MIME content type for the file. const PHTTPAuthority & auth // Authorisation for the resource. ); // Overrides from class PHTTPResource /** Get the headers for block of data (eg HTML) that the resource contains. This will fill in all the fields of the outMIME parameter required by the resource and return the status for the load. @return TRUE if all OK, FALSE if an error occurred. */ virtual BOOL LoadHeaders( PHTTPRequest & request // Information on this request. ); /** Get a block of text data (eg HTML) that the resource contains. The default behaviour is to assert, one of #LoadText()# or #LoadData()# functions must be overridden for correct operation. @return String for loaded text. */ virtual PString LoadText( PHTTPRequest & request // Information on this request. ); // New functions for class. /** Get the string for this resource. @return String for resource. */ const PString & GetString() { return string; } /** Set the string to be returned by this resource. */ void SetString( const PString & str // New string for the resource. ) { string = str; } protected: PString string; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPFile /** This object describes a HyperText Transport Protocol resource which is a single file. The file can be anywhere in the file system and is mapped to the specified URL location in the HTTP name space defined by the #PHTTPSpace# class. */ class PHTTPFile : public PHTTPResource { PCLASSINFO(PHTTPFile, PHTTPResource) public: /** Contruct a new simple file resource for the HTTP space. If no MIME content type is specified then a default type is used depending on the file type. For example, "text/html" is used of the file type is ".html" or ".htm". The default for an unknown type is "application/octet-stream". */ PHTTPFile( const PString & filename // file in file system and URL name. ); PHTTPFile( const PString & filename, // file in file system and URL name. const PHTTPAuthority & auth // Authorisation for the resource. ); PHTTPFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file // Location of file in file system. ); PHTTPFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file, // Location of file in file system. const PString & contentType // MIME content type for the file. ); PHTTPFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file, // Location of file in file system. const PHTTPAuthority & auth // Authorisation for the resource. ); PHTTPFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file, // Location of file in file system. const PString & contentType, // MIME content type for the file. const PHTTPAuthority & auth // Authorisation for the resource. ); // Overrides from class PHTTPResource /** Create a new request block for this type of resource. @return Pointer to instance of PHTTPRequest descendant class. */ virtual PHTTPRequest * CreateRequest( const PURL & url, // Universal Resource Locator for document. const PMIMEInfo & inMIME, // Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo, PHTTPServer & socket ); /** Get the headers for block of data (eg HTML) that the resource contains. This will fill in all the fields of the outMIME parameter required by the resource and return the status for the load. @return TRUE if all OK, FALSE if an error occurred. */ virtual BOOL LoadHeaders( PHTTPRequest & request // Information on this request. ); /** Get a block of data that the resource contains. @return TRUE if more to load. */ virtual BOOL LoadData( PHTTPRequest & request, // Information on this request. PCharArray & data // Data used in reply. ); /** Get a block of text data (eg HTML) that the resource contains. The default behaviour is to assert, one of #LoadText()# or #LoadData()# functions must be overridden for correct operation. @return String for loaded text. */ virtual PString LoadText( PHTTPRequest & request // Information on this request. ); protected: PHTTPFile( const PURL & url, // Name of the resource in URL space. int dummy ); // Constructor used by PHTTPDirectory PFilePath filePath; }; class PHTTPFileRequest : public PHTTPRequest { PCLASSINFO(PHTTPFileRequest, PHTTPRequest) public: PHTTPFileRequest( const PURL & url, // Universal Resource Locator for document. const PMIMEInfo & inMIME, // Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo, PHTTPServer & server ); PFile file; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPTailFile /** This object describes a HyperText Transport Protocol resource which is a single file. The file can be anywhere in the file system and is mapped to the specified URL location in the HTTP name space defined by the #PHTTPSpace# class. The difference between this and PHTTPFile is that it continually outputs the contents of the file, as per the unix "tail -f" command. */ class PHTTPTailFile : public PHTTPFile { PCLASSINFO(PHTTPTailFile, PHTTPFile) public: /** Contruct a new simple file resource for the HTTP space. If no MIME content type is specified then a default type is used depending on the file type. For example, "text/html" is used of the file type is ".html" or ".htm". The default for an unknown type is "application/octet-stream". */ PHTTPTailFile( const PString & filename // file in file system and URL name. ); PHTTPTailFile( const PString & filename, // file in file system and URL name. const PHTTPAuthority & auth // Authorisation for the resource. ); PHTTPTailFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file // Location of file in file system. ); PHTTPTailFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file, // Location of file in file system. const PString & contentType // MIME content type for the file. ); PHTTPTailFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file, // Location of file in file system. const PHTTPAuthority & auth // Authorisation for the resource. ); PHTTPTailFile( const PURL & url, // Name of the resource in URL space. const PFilePath & file, // Location of file in file system. const PString & contentType, // MIME content type for the file. const PHTTPAuthority & auth // Authorisation for the resource. ); // Overrides from class PHTTPResource /** Get the headers for block of data (eg HTML) that the resource contains. This will fill in all the fields of the outMIME parameter required by the resource and return the status for the load. @return TRUE if all OK, FALSE if an error occurred. */ virtual BOOL LoadHeaders( PHTTPRequest & request // Information on this request. ); /** Get a block of data that the resource contains. @return TRUE if more to load. */ virtual BOOL LoadData( PHTTPRequest & request, // Information on this request. PCharArray & data // Data used in reply. ); }; ////////////////////////////////////////////////////////////////////////////// // PHTTPDirectory /** This object describes a HyperText Transport Protocol resource which is a set of files in a directory. The directory can be anywhere in the file system and is mapped to the specified URL location in the HTTP name space defined by the #PHTTPSpace# class. All subdirectories and files are available as URL names in the HTTP name space. This effectively grafts a file system directory tree onto the URL name space tree. See the #PMIMEInfo# class for more information on the mappings between file types and MIME types. */ class PHTTPDirectory : public PHTTPFile { PCLASSINFO(PHTTPDirectory, PHTTPFile) public: PHTTPDirectory( const PURL & url, /// Name of the resource in URL space. const PDirectory & dir /// Location of file in file system. ); PHTTPDirectory( const PURL & url, /// Name of the resource in URL space. const PDirectory & dir, /// Location of file in file system. const PHTTPAuthority & auth /// Authorisation for the resource. ); // Construct a new directory resource for HTTP. // Overrides from class PHTTPResource /** Create a new request block for this type of resource. @return Pointer to instance of PHTTPRequest descendant class. */ virtual PHTTPRequest * CreateRequest( const PURL & url, // Universal Resource Locator for document. const PMIMEInfo & inMIME, // Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo, PHTTPServer & socket ); /** Get the headers for block of data (eg HTML) that the resource contains. This will fill in all the fields of the outMIME parameter required by the resource and return the status for the load. @return TRUE if all OK, FALSE if an error occurred. */ virtual BOOL LoadHeaders( PHTTPRequest & request /// Information on this request. ); /** Get a block of text data (eg HTML) that the resource contains. The default behaviour is to assert, one of #LoadText()# or #LoadData()# functions must be overridden for correct operation. @return String for loaded text. */ virtual PString LoadText( PHTTPRequest & request /// Information on this request. ); /** Enable or disable access control using .access files. A directory tree containing a _access file will require authorisation to allow access. This file has contains one or more lines, each containing a username and password seperated by a ":" character. The parameter sets the realm used for authorisation requests. An empty realm disables auhtorisation. */ void EnableAuthorisation(const PString & realm); /** Enable or disable directory listings when a default directory file does not exist */ void AllowDirectories(BOOL enable = TRUE); protected: BOOL CheckAuthority( PHTTPServer & server, // Server to send response to. const PHTTPRequest & request, // Information on this request. const PHTTPConnectionInfo & conInfo // Information on the connection ); BOOL FindAuthorisations(const PDirectory & dir, PString & realm, PStringToString & authorisations); PDirectory basePath; PString authorisationRealm; BOOL allowDirectoryListing; }; class PHTTPDirRequest : public PHTTPFileRequest { PCLASSINFO(PHTTPDirRequest, PHTTPFileRequest) public: PHTTPDirRequest( const PURL & url, // Universal Resource Locator for document. const PMIMEInfo & inMIME, // Extra MIME information in command. const PMultipartFormInfoArray & multipartFormInfo, PHTTPServer & server ); PString fakeIndex; PFilePath realPath; }; #endif // P_HTTPSVC #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/httpform.h0100644000176200056700000006004410343317551020320 0ustar releasepostincr/* * httpform.h * * Forms management using HTTP User Interface. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: httpform.h,v $ * Revision 1.18 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.17 2003/03/24 04:30:41 robertj * Added function to set and get strings from PConfig in correct format for * use with HTTP form array contsructs. * * Revision 1.16 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.15 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.14 2001/10/10 08:07:48 robertj * Fixed large memory leak of strings when doing POST to a form. * * Revision 1.13 2000/12/18 07:12:37 robertj * Added ability to have fixed length array fields. * * Revision 1.12 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.11 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.10 1998/11/30 02:50:48 robertj * New directory structure * * Revision 1.9 1998/09/23 06:19:31 robertj * Added open source copyright license. * * Revision 1.8 1998/08/20 05:45:33 robertj * Fixed bug where substitutions did not always occur if near end of macro block. * * Revision 1.7 1998/01/26 00:25:24 robertj * Major rewrite of HTTP forms management. * * Revision 1.6 1997/08/09 07:46:51 robertj * Fixed problems with value of SELECT fields in form * * Revision 1.5 1997/07/26 11:38:17 robertj * Support for overridable pages in HTTP service applications. * * Revision 1.4 1997/07/08 13:16:12 robertj * Major HTTP form enhancements for lists and arrays of fields. * * Revision 1.3 1997/06/08 04:49:40 robertj * Adding new llist based form field. * * Revision 1.2 1997/04/01 06:01:39 robertj * Allowed value list in drop down box to be modified once created. * * Revision 1.1 1996/06/28 12:55:56 robertj * Initial revision * */ #ifndef _PHTTPFORM #define _PHTTPFORM #ifdef P_USE_PRAGMA #pragma interface #endif #include /////////////////////////////////////////////////////////////////////////////// // PHTTPField /** This class is the abstract base class for fields in a #PHTTPForm# resource type. */ class PHTTPField : public PObject { PCLASSINFO(PHTTPField, PObject) public: PHTTPField( const char * bname, // base name (identifier) for the field. const char * title, // Title text for field (defaults to name). const char * help // Help text for the field. ); // Create a new field in a HTTP form. /** Compare the fields using the field names. @return Comparison of the name fields of the two fields. */ virtual Comparison Compare( const PObject & obj ) const; /** Get the identifier name of the field. @return String for field name. */ const PCaselessString & GetName() const { return fullName; } /** Get the identifier name of the field. @return String for field name. */ const PCaselessString & GetBaseName() const { return baseName; } /** Set the name for the field. */ virtual void SetName( const PString & newName // New name for field ); /** Locate the field naem, recusing down for composite fields. @return Pointer to located field, or NULL if not found. */ virtual const PHTTPField * LocateName( const PString & name // Full field name to locate ) const; /** Get the title of the field. @return String for title placed next to the field. */ const PString & GetTitle() const { return title; } /** Get the title of the field. @return String for title placed next to the field. */ const PString & GetHelp() const { return help; } void SetHelp( const PString & text // Help text. ) { help = text; } void SetHelp( const PString & hotLinkURL, // URL for link to help page. const PString & linkText // Help text in the link. ); void SetHelp( const PString & hotLinkURL, // URL for link to help page. const PString & imageURL, // URL for image to be displayed in link. const PString & imageText // Text in the link when image unavailable. ); // Set the help text for the field. /** Create a new field of the same class as the current field. @return New field object instance. */ virtual PHTTPField * NewField() const = 0; virtual void ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const; // Splice expanded macro substitutions into text string /** Convert the field to HTML form tag for inclusion into the HTTP page. */ virtual void GetHTMLTag( PHTML & html // HTML to receive the fields HTML tag. ) const = 0; /** Convert the field input to HTML for inclusion into the HTTP page. */ virtual PString GetHTMLInput( const PString & input // Source HTML text for input tag. ) const; /** Convert the field input to HTML for inclusion into the HTTP page. */ virtual PString GetHTMLSelect( const PString & selection // Source HTML text for input tag. ) const; /** Convert the field to HTML for inclusion into the HTTP page. */ virtual void GetHTMLHeading( PHTML & html // HTML to receive the field info. ) const; /** Get the string value of the field. @return String for field value. */ virtual PString GetValue(BOOL dflt = FALSE) const = 0; /** Set the value of the field. */ virtual void SetValue( const PString & newValue // New value for the field. ) = 0; /** Get the value of the PConfig to the sub-field. If the field is not composite then it always sets the value as for the non-indexed version. */ virtual void LoadFromConfig( PConfig & cfg // Configuration for value transfer. ); /** Set the value of the sub-field into the PConfig. If the field is not composite then it always sets the value as for the non-indexed version. */ virtual void SaveToConfig( PConfig & cfg // Configuration for value transfer. ) const; /** Validate the new field value before #SetValue()# is called. @return BOOL if the new field value is OK. */ virtual BOOL Validated( const PString & newVal, // Proposed new value for the field. PStringStream & msg // Stream to take error HTML if value not valid. ) const; /** Retrieve all the names in the field and subfields. @return List of strings for each subfield. */ virtual void GetAllNames(PStringList & list) const; /** Set the value of the field in a list of fields. */ virtual void SetAllValues( const PStringToString & data // New value for the field. ); /** Validate the new field value in a list before #SetValue()# is called. @return BOOL if the all the new field values are OK. */ virtual BOOL ValidateAll( const PStringToString & data, // Proposed new value for the field. PStringStream & msg // Stream to take error HTML if value not valid. ) const; BOOL NotYetInHTML() const { return notInHTML; } void SetInHTML() { notInHTML = FALSE; } protected: PCaselessString baseName; PCaselessString fullName; PString title; PString help; BOOL notInHTML; }; PLIST(PHTTPFieldList, PHTTPField); class PHTTPCompositeField : public PHTTPField { PCLASSINFO(PHTTPCompositeField, PHTTPField) public: PHTTPCompositeField( const char * name, // Name (identifier) for the field. const char * title = NULL, // Title text for field (defaults to name). const char * help = NULL // Help text for the field. ); virtual void SetName( const PString & name // New name for field ); virtual const PHTTPField * LocateName( const PString & name // Full field name to locate ) const; virtual PHTTPField * NewField() const; virtual void ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const; virtual void GetHTMLTag( PHTML & html // HTML to receive the field info. ) const; virtual PString GetHTMLInput( const PString & input // Source HTML text for input tag. ) const; virtual void GetHTMLHeading( PHTML & html // HTML to receive the field info. ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newValue // New value for the field. ); virtual void LoadFromConfig( PConfig & cfg // Configuration for value transfer. ); virtual void SaveToConfig( PConfig & cfg // Configuration for value transfer. ) const; virtual void GetAllNames(PStringList & list) const; virtual void SetAllValues( const PStringToString & data // New value for the field. ); virtual BOOL ValidateAll( const PStringToString & data, // Proposed new value for the field. PStringStream & msg // Stream to take error HTML if value not valid. ) const; /** Get the number of sub-fields in the composite field. Note that this is the total including any composite sub-fields, ie, it is the size of the whole tree of primitive fields. @return Returns field count. */ virtual PINDEX GetSize() const; void Append(PHTTPField * fld); PHTTPField & operator[](PINDEX idx) const { return fields[idx]; } void RemoveAt(PINDEX idx) { fields.RemoveAt(idx); } void RemoveAll() { fields.RemoveAll(); } protected: PHTTPFieldList fields; }; class PHTTPSubForm : public PHTTPCompositeField { PCLASSINFO(PHTTPSubForm, PHTTPCompositeField) public: PHTTPSubForm( const PString & subFormName, // URL for the sub-form const char * name, // Name (identifier) for the field. const char * title = NULL, // Title text for field (defaults to name). PINDEX primaryField = 0, // Pimary field whove value is in hot link PINDEX secondaryField = P_MAX_INDEX // Seconary field next to hotlink ); PHTTPField * NewField() const; void GetHTMLTag(PHTML & html) const; void GetHTMLHeading(PHTML & html) const; protected: PString subFormName; PINDEX primary; PINDEX secondary; }; class PHTTPFieldArray : public PHTTPCompositeField { PCLASSINFO(PHTTPFieldArray, PHTTPCompositeField) public: PHTTPFieldArray( PHTTPField * baseField, BOOL ordered, PINDEX fixedSize = 0 ); ~PHTTPFieldArray(); virtual PHTTPField * NewField() const; virtual void ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const; virtual void GetHTMLTag( PHTML & html // HTML to receive the field info. ) const; virtual void LoadFromConfig( PConfig & cfg // Configuration for value transfer. ); virtual void SaveToConfig( PConfig & cfg // Configuration for value transfer. ) const; virtual void SetAllValues( const PStringToString & data // New value for the field. ); virtual PINDEX GetSize() const; void SetSize(PINDEX newSize); PStringArray GetStrings( PConfig & cfg ///< Config file to get strings from ); void SetStrings( PConfig & cfg, ///< Config file to Set strings to const PStringArray & values ///< Strings to set ); protected: void AddBlankField(); void AddArrayControlBox(PHTML & html, PINDEX fld) const; void SetArrayFieldName(PINDEX idx) const; PHTTPField * baseField; BOOL orderedArray; BOOL canAddElements; }; class PHTTPStringField : public PHTTPField { PCLASSINFO(PHTTPStringField, PHTTPField) public: PHTTPStringField( const char * name, PINDEX size, const char * initVal = NULL, const char * help = NULL ); PHTTPStringField( const char * name, const char * title, PINDEX size, const char * initVal = NULL, const char * help = NULL ); virtual PHTTPField * NewField() const; virtual void GetHTMLTag( PHTML & html ///< HTML to receive the field info. ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newVal ); protected: PString value; PString initialValue; PINDEX size; }; class PHTTPPasswordField : public PHTTPStringField { PCLASSINFO(PHTTPPasswordField, PHTTPStringField) public: PHTTPPasswordField( const char * name, PINDEX size, const char * initVal = NULL, const char * help = NULL ); PHTTPPasswordField( const char * name, const char * title, PINDEX size, const char * initVal = NULL, const char * help = NULL ); virtual PHTTPField * NewField() const; virtual void GetHTMLTag( PHTML & html ///< HTML to receive the field info. ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newVal ); static PString Decrypt(const PString & pword); }; class PHTTPIntegerField : public PHTTPField { PCLASSINFO(PHTTPIntegerField, PHTTPField) public: PHTTPIntegerField( const char * name, int low, int high, int initVal = 0, const char * units = NULL, const char * help = NULL ); PHTTPIntegerField( const char * name, const char * title, int low, int high, int initVal = 0, const char * units = NULL, const char * help = NULL ); virtual PHTTPField * NewField() const; virtual void GetHTMLTag( PHTML & html ///< HTML to receive the field info. ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newVal ); virtual void LoadFromConfig( PConfig & cfg ///< Configuration for value transfer. ); virtual void SaveToConfig( PConfig & cfg ///< Configuration for value transfer. ) const; virtual BOOL Validated( const PString & newVal, PStringStream & msg ) const; protected: int low, high, value; int initialValue; PString units; }; class PHTTPBooleanField : public PHTTPField { PCLASSINFO(PHTTPBooleanField, PHTTPField) public: PHTTPBooleanField( const char * name, BOOL initVal = FALSE, const char * help = NULL ); PHTTPBooleanField( const char * name, const char * title, BOOL initVal = FALSE, const char * help = NULL ); virtual PHTTPField * NewField() const; virtual void GetHTMLTag( PHTML & html ///< HTML to receive the field info. ) const; virtual PString GetHTMLInput( const PString & input ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newVal ); virtual void LoadFromConfig( PConfig & cfg ///< Configuration for value transfer. ); virtual void SaveToConfig( PConfig & cfg ///< Configuration for value transfer. ) const; protected: BOOL value, initialValue; }; class PHTTPRadioField : public PHTTPField { PCLASSINFO(PHTTPRadioField, PHTTPField) public: PHTTPRadioField( const char * name, const PStringArray & valueArray, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, const PStringArray & valueArray, const PStringArray & titleArray, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, PINDEX count, const char * const * valueStrings, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, PINDEX count, const char * const * valueStrings, const char * const * titleStrings, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, const char * groupTitle, const PStringArray & valueArray, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, const char * groupTitle, const PStringArray & valueArray, const PStringArray & titleArray, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, const char * groupTitle, PINDEX count, const char * const * valueStrings, PINDEX initVal = 0, const char * help = NULL ); PHTTPRadioField( const char * name, const char * groupTitle, PINDEX count, const char * const * valueStrings, const char * const * titleStrings, PINDEX initVal = 0, const char * help = NULL ); virtual PHTTPField * NewField() const; virtual void GetHTMLTag( PHTML & html ///< HTML to receive the field info. ) const; virtual PString GetHTMLInput( const PString & input ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newVal ); protected: PStringArray values; PStringArray titles; PString value; PString initialValue; }; class PHTTPSelectField : public PHTTPField { PCLASSINFO(PHTTPSelectField, PHTTPField) public: PHTTPSelectField( const char * name, const PStringArray & valueArray, PINDEX initVal = 0, const char * help = NULL ); PHTTPSelectField( const char * name, PINDEX count, const char * const * valueStrings, PINDEX initVal = 0, const char * help = NULL ); PHTTPSelectField( const char * name, const char * title, const PStringArray & valueArray, PINDEX initVal = 0, const char * help = NULL ); PHTTPSelectField( const char * name, const char * title, PINDEX count, const char * const * valueStrings, PINDEX initVal = 0, const char * help = NULL ); virtual PHTTPField * NewField() const; virtual void GetHTMLTag( PHTML & html ///< HTML to receive the field info. ) const; virtual PString GetValue(BOOL dflt = FALSE) const; virtual void SetValue( const PString & newVal ); PStringArray values; protected: PString value; PINDEX initialValue; }; /////////////////////////////////////////////////////////////////////////////// // PHTTPForm class PHTTPForm : public PHTTPString { PCLASSINFO(PHTTPForm, PHTTPString) public: PHTTPForm( const PURL & url ); PHTTPForm( const PURL & url, const PHTTPAuthority & auth ); PHTTPForm( const PURL & url, const PString & html ); PHTTPForm( const PURL & url, const PString & html, const PHTTPAuthority & auth ); virtual void OnLoadedText( PHTTPRequest & request, ///< Information on this request. PString & text ///< Data used in reply. ); virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); PHTTPField * Add( PHTTPField * fld ); void RemoveAllFields() { fields.RemoveAll(); fieldNames.RemoveAll(); } enum BuildOptions { CompleteHTML, InsertIntoForm, InsertIntoHTML }; void BuildHTML( const char * heading ); void BuildHTML( const PString & heading ); void BuildHTML( PHTML & html, BuildOptions option = CompleteHTML ); protected: PHTTPCompositeField fields; PStringSet fieldNames; }; ////////////////////////////////////////////////////////////////////////////// // PHTTPConfig class PHTTPConfig : public PHTTPForm { PCLASSINFO(PHTTPConfig, PHTTPForm) public: PHTTPConfig( const PURL & url, const PString & section ); PHTTPConfig( const PURL & url, const PString & section, const PHTTPAuthority & auth ); PHTTPConfig( const PURL & url, const PString & section, const PString & html ); PHTTPConfig( const PURL & url, const PString & section, const PString & html, const PHTTPAuthority & auth ); virtual void OnLoadedText( PHTTPRequest & request, ///< Information on this request. PString & text ///< Data used in reply. ); virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); /** Load all of the values for the resource from the configuration. */ void LoadFromConfig(); /** Get the configuration file section that the page will alter. @return String for config file section. */ const PString & GetConfigSection() const { return section; } void SetConfigSection( const PString & sect ///< New section for the config page. ) { section = sect; } // Set the configuration file section. /** Add a field that will determine the name opf the secontion into which the other fields are to be added as keys. The section is not created and and error generated if the section already exists. */ PHTTPField * AddSectionField( PHTTPField * sectionFld, ///< Field to set as the section name const char * prefix = NULL, ///< String to attach before the field value const char * suffix = NULL ///< String to attach after the field value ); /** Add fields to the HTTP form for adding a new key to the config file section. */ void AddNewKeyFields( PHTTPField * keyFld, ///< Field for the key to be added. PHTTPField * valFld ///< Field for the value of the key yto be added. ); protected: PString section; PString sectionPrefix; PString sectionSuffix; PHTTPField * sectionField; PHTTPField * keyField; PHTTPField * valField; private: void Construct(); }; ////////////////////////////////////////////////////////////////////////////// // PHTTPConfigSectionList class PHTTPConfigSectionList : public PHTTPString { PCLASSINFO(PHTTPConfigSectionList, PHTTPString) public: PHTTPConfigSectionList( const PURL & url, const PHTTPAuthority & auth, const PString & sectionPrefix, const PString & additionalValueName, const PURL & editSection, const PURL & newSection, const PString & newSectionTitle, PHTML & heading ); virtual void OnLoadedText( PHTTPRequest & request, ///< Information on this request. PString & text ///< Data used in reply. ); virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); protected: PString sectionPrefix; PString additionalValueName; PString newSectionLink; PString newSectionTitle; PString editSectionLink; }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/httpsvc.h0100644000176200056700000004636510343317551020162 0ustar releasepostincr/* * httpsvc.h * * Common classes for service applications using HTTP as the user interface. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: httpsvc.h,v $ * Revision 1.45 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.44 2003/07/15 11:17:45 csoutheren * Added additional constructor for PServiceHTTPString, * Thanks to Federico Pinna * * Revision 1.43 2003/02/19 07:23:17 robertj * Changes to allow for single threaded HTTP service processes. * * Revision 1.42 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.41 2002/07/30 03:47:13 craigs * Added PHTTPServiceString with content type * * Revision 1.40 2002/07/17 08:02:53 robertj * Allowed for adjustable copyright holder * * Revision 1.39 2002/02/05 22:53:14 robertj * Changed default for HTTP listener to reuse addresses. * * Revision 1.38 2001/10/10 08:06:34 robertj * Fixed problem with not shutting down threads when closing listener. * * Revision 1.37 2001/08/28 06:44:30 craigs * Added ability to override PHTTPServer creation * * Revision 1.36 2001/06/23 00:32:15 robertj * Added parameter to be able to set REUSEADDR on listener socket. * * Revision 1.35 2001/03/04 02:24:44 robertj * Removed default OnControl() from http service as cannot get port number. * * Revision 1.34 2001/02/20 02:32:41 robertj * Added PServiceMacro version that can do substitutions on blocks of HTML. * * Revision 1.33 2001/02/15 01:12:15 robertj * Moved some often repeated HTTP service code into PHTTPServiceProcess. * * Revision 1.32 2001/02/14 02:30:59 robertj * Moved HTTP Service Macro facility to public API so can be used by apps. * Added ability to specify the service macro keyword, defaults to "macro". * Added machine macro to get the OS version and hardware. * * Revision 1.31 2000/12/14 08:09:41 robertj * Fixed missing immediate expiry date on string and file service HTTP resourcer. * * Revision 1.30 2000/12/11 13:15:17 robertj * Added macro to include signed or unsigned chunks of HTML. * Added flag to globally ignore HTML signatures (useful for develeopment). * * Revision 1.29 2000/11/02 21:57:00 craigs * Added extra constructor * * Revision 1.28 2000/08/04 12:48:13 robertj * Added mechanism by which a service can get at new HTTP connections, eg to add SSL. * * Revision 1.27 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.26 1998/11/30 02:50:50 robertj * New directory structure * * Revision 1.25 1998/10/29 11:58:51 robertj * Added ability to configure the HTTP threads stack size. * * Revision 1.24 1998/09/23 06:19:34 robertj * Added open source copyright license. * * Revision 1.23 1998/04/01 01:56:47 robertj * Added PServiceHTTPFile constructor so file path and URL can be different. * * Revision 1.22 1998/03/20 03:16:09 robertj * Added special classes for specific sepahores, PMutex and PSyncPoint. * * Revision 1.21 1998/03/17 10:16:00 robertj * Allowed registration page to have HTML override. * * Revision 1.20 1998/02/16 00:15:13 robertj * Major rewrite of application info passed in PHTTPServiceProcess constructor. * * Revision 1.19 1998/01/26 00:28:32 robertj * Removed POrderPage completely from httpsvc. * Added PHTTPAuthority to PHTTPServiceString constructor. * Added option flags to ProcessMacros to automatically load from file etc. * * Revision 1.18 1997/11/10 12:40:05 robertj * Changed SustituteEquivalSequence so can override standard macros. * * Revision 1.17 1997/11/04 06:02:56 robertj * Allowed help gif file name to overridable in PServiceHTML, so can be in subdirectory. * * Revision 1.16 1997/10/30 10:22:35 robertj * Added ability to customise regisration text by application. * * Revision 1.15 1997/08/28 13:56:34 robertj * Fixed bug where HTTP directory was not processed for macros. * * Revision 1.13 1997/08/20 08:48:18 craigs * Added PHTTPServiceDirectory & PHTTPServiceString * * Revision 1.12 1997/07/26 11:38:18 robertj * Support for overridable pages in HTTP service applications. * * Revision 1.11 1997/06/16 14:12:55 robertj * Changed private to protected. * * Revision 1.10 1997/06/16 13:20:14 robertj * Fixed bug where PHTTPThread crashes on exit. * * Revision 1.9 1997/03/02 03:42:19 robertj * Added error logging to standard HTTP Service HTTP Server. * Removed extraneous variables that set GIF file size to zero. * * Revision 1.8 1997/02/05 11:54:52 robertj * Added support for order form page overridiing. * * Revision 1.7 1997/01/27 10:22:33 robertj * Numerous changes to support OEM versions of products. * * Revision 1.6 1996/11/04 03:55:20 robertj * Changed to accept separate copyright and manufacturer strings. * * Revision 1.5 1996/09/14 13:09:12 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.4 1996/08/19 13:43:46 robertj * Fixed race condition in system restart logic. * * Revision 1.3 1996/08/08 13:36:38 robertj * Fixed Registation page so no longer has static link, ie can be DLLed. * * Revision 1.2 1996/06/28 13:15:39 robertj * Moved HTTP form resource to another compilation module. * * Revision 1.1 1996/06/13 13:33:14 robertj * Initial revision * */ #ifndef APPCOMM_H #define APPCOMM_H #include #include #include #include class PHTTPServiceProcess; ///////////////////////////////////////////////////////////////////// class PHTTPServiceThread : public PThread { PCLASSINFO(PHTTPServiceThread, PThread) public: PHTTPServiceThread(PINDEX stackSize, PHTTPServiceProcess & app); ~PHTTPServiceThread(); void Main(); void Close(); protected: PINDEX myStackSize; PHTTPServiceProcess & process; PTCPSocket * socket; }; ///////////////////////////////////////////////////////////////////// class PHTTPServiceProcess : public PServiceProcess { PCLASSINFO(PHTTPServiceProcess, PServiceProcess) public: enum { MaxSecuredKeys = 10 }; struct Info { const char * productName; const char * manufacturerName; WORD majorVersion; WORD minorVersion; CodeStatus buildStatus; ///< AlphaCode, BetaCode or ReleaseCode WORD buildNumber; const char * compilationDate; PTEACypher::Key productKey; ///< Poduct key for registration const char * securedKeys[MaxSecuredKeys]; ///< Product secured keys for registration PINDEX securedKeyCount; PTEACypher::Key signatureKey; ///< Signature key for encryption of HTML files const char * manufHomePage; ///< WWW address of manufacturers home page const char * email; ///< contact email for manufacturer const char * productHTML; ///< HTML for the product name, if NULL defaults to ///< the productName variable. const char * gifHTML; ///< HTML to show GIF image in page headers, if NULL ///< then the following are used to build one const char * gifFilename; ///< File name for the products GIF file int gifWidth; ///< Size of GIF image, if zero then none is used int gifHeight; ///< in the generated HTML. const char * copyrightHolder; ///< Name of copyright holder const char * copyrightHomePage; ///< Home page for copyright holder const char * copyrightEmail; ///< E-Mail address for copyright holder }; PHTTPServiceProcess(const Info & inf); ~PHTTPServiceProcess(); BOOL OnStart(); void OnStop(); BOOL OnPause(); void OnContinue(); const char * GetServiceDependencies() const; virtual void OnConfigChanged() = 0; virtual BOOL Initialise(const char * initMsg) = 0; BOOL ListenForHTTP( WORD port, PSocket::Reusability reuse = PSocket::CanReuseAddress, PINDEX stackSize = 0x4000 ); BOOL ListenForHTTP( PSocket * listener, PSocket::Reusability reuse = PSocket::CanReuseAddress, PINDEX stackSize = 0x4000 ); virtual PString GetPageGraphic(); void GetPageHeader(PHTML &); void GetPageHeader(PHTML &, const PString & title); virtual PString GetCopyrightText(); const PString & GetMacroKeyword() const { return macroKeyword; } const PTime & GetCompilationDate() const { return compilationDate; } const PString & GetHomePage() const { return manufacturersHomePage; } const PString & GetEMailAddress() const { return manufacturersEmail; } const PString & GetProductName() const { return productNameHTML; } const PTEACypher::Key & GetProductKey() const { return productKey; } const PStringArray & GetSecuredKeys() const { return securedKeys; } const PTEACypher::Key & GetSignatureKey() const { return signatureKey; } BOOL ShouldIgnoreSignatures() const { return ignoreSignatures; } void SetIgnoreSignatures(BOOL ig) { ignoreSignatures = ig; } static PHTTPServiceProcess & Current(); virtual void AddRegisteredText(PHTML & html); virtual void AddUnregisteredText(PHTML & html); virtual BOOL SubstituteEquivalSequence(PHTTPRequest & request, const PString &, PString &); virtual PHTTPServer * CreateHTTPServer(PTCPSocket & socket); virtual PHTTPServer * OnCreateHTTPServer(const PHTTPSpace & urlSpace); PTCPSocket * AcceptHTTP(); BOOL ProcessHTTP(PTCPSocket & socket); protected: PSocket * httpListeningSocket; PHTTPSpace httpNameSpace; PString macroKeyword; PTEACypher::Key productKey; PStringArray securedKeys; PTEACypher::Key signatureKey; BOOL ignoreSignatures; PTime compilationDate; PString manufacturersHomePage; PString manufacturersEmail; PString productNameHTML; PString gifHTML; PString copyrightHolder; PString copyrightHomePage; PString copyrightEmail; void ShutdownListener(); void BeginRestartSystem(); void CompleteRestartSystem(); PThread * restartThread; PLIST(ThreadList, PHTTPServiceThread); ThreadList httpThreads; PMutex httpThreadsMutex; friend class PConfigPage; friend class PConfigSectionsPage; friend class PHTTPServiceThread; }; ///////////////////////////////////////////////////////////////////// class PConfigPage : public PHTTPConfig { PCLASSINFO(PConfigPage, PHTTPConfig) public: PConfigPage( PHTTPServiceProcess & app, const PString & section, const PHTTPAuthority & auth ); PConfigPage( PHTTPServiceProcess & app, const PString & title, const PString & section, const PHTTPAuthority & auth ); void OnLoadedText(PHTTPRequest &, PString & text); BOOL OnPOST( PHTTPServer & server, const PURL & url, const PMIMEInfo & info, const PStringToString & data, const PHTTPConnectionInfo & connectInfo ); virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); protected: virtual BOOL GetExpirationDate( PTime & when ///< Time that the resource expires ); PHTTPServiceProcess & process; }; ///////////////////////////////////////////////////////////////////// class PConfigSectionsPage : public PHTTPConfigSectionList { PCLASSINFO(PConfigSectionsPage, PHTTPConfigSectionList) public: PConfigSectionsPage( PHTTPServiceProcess & app, const PURL & url, const PHTTPAuthority & auth, const PString & prefix, const PString & valueName, const PURL & editSection, const PURL & newSection, const PString & newTitle, PHTML & heading ); void OnLoadedText(PHTTPRequest &, PString & text); BOOL OnPOST( PHTTPServer & server, const PURL & url, const PMIMEInfo & info, const PStringToString & data, const PHTTPConnectionInfo & connectInfo ); virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); protected: virtual BOOL GetExpirationDate( PTime & when ///< Time that the resource expires ); PHTTPServiceProcess & process; }; ///////////////////////////////////////////////////////////////////// class PRegisterPage : public PConfigPage { PCLASSINFO(PRegisterPage, PConfigPage) public: PRegisterPage( PHTTPServiceProcess & app, const PHTTPAuthority & auth ); PString LoadText( PHTTPRequest & request ///< Information on this request. ); void OnLoadedText(PHTTPRequest & request, PString & text); virtual BOOL Post( PHTTPRequest & request, ///< Information on this request. const PStringToString & data, ///< Variables in the POST data. PHTML & replyMessage ///< Reply message for post. ); virtual void AddFields( const PString & prefix ///< Prefix on field names ) = 0; protected: PHTTPServiceProcess & process; }; /////////////////////////////////////////////////////////////////////S class PServiceHTML : public PHTML { PCLASSINFO(PServiceHTML, PHTML) public: PServiceHTML(const char * title, const char * help = NULL, const char * helpGif = "help.gif"); PString ExtractSignature(PString & out); static PString ExtractSignature(const PString & html, PString & out, const char * keyword = "#equival"); PString CalculateSignature(); static PString CalculateSignature(const PString & out); static PString CalculateSignature(const PString & out, const PTEACypher::Key & sig); BOOL CheckSignature(); static BOOL CheckSignature(const PString & html); enum MacroOptions { NoOptions = 0, NeedSignature = 1, LoadFromFile = 2, NoURLOverride = 4, NoSignatureForFile = 8 }; static BOOL ProcessMacros(PHTTPRequest & request, PString & text, const PString & filename, unsigned options); }; /////////////////////////////////////////////////////////////// class PServiceMacro : public PObject { public: PServiceMacro(const char * name, BOOL isBlock); PServiceMacro(const PCaselessString & name, BOOL isBlock); Comparison Compare(const PObject & obj) const; virtual PString Translate( PHTTPRequest & request, const PString & args, const PString & block ) const; protected: const char * macroName; BOOL isMacroBlock; PServiceMacro * link; static PServiceMacro * list; friend class PServiceMacros_list; }; #define P_EMPTY #define PCREATE_SERVICE_MACRO(name, request, args) \ class PServiceMacro_##name : public PServiceMacro { \ public: \ PServiceMacro_##name() : PServiceMacro(#name, FALSE) { } \ PString Translate(PHTTPRequest &, const PString &, const PString &) const; \ }; \ static const PServiceMacro_##name serviceMacro_##name; \ PString PServiceMacro_##name::Translate(PHTTPRequest & request, const PString & args, const PString &) const #define PCREATE_SERVICE_MACRO_BLOCK(name, request, args, block) \ class PServiceMacro_##name : public PServiceMacro { \ public: \ PServiceMacro_##name() : PServiceMacro(#name, TRUE) { } \ PString Translate(PHTTPRequest &, const PString &, const PString &) const; \ }; \ static const PServiceMacro_##name serviceMacro_##name; \ PString PServiceMacro_##name::Translate(PHTTPRequest & request, const PString & args, const PString & block) const /////////////////////////////////////////////////////////////// class PServiceHTTPString : public PHTTPString { PCLASSINFO(PServiceHTTPString, PHTTPString) public: PServiceHTTPString(const PURL & url, const PString & string) : PHTTPString(url, string) { } PServiceHTTPString(const PURL & url, const PHTTPAuthority & auth) : PHTTPString(url, auth) { } PServiceHTTPString(const PURL & url, const PString & string, const PHTTPAuthority & auth) : PHTTPString(url, string, auth) { } PServiceHTTPString(const PURL & url, const PString & string, const PString & contentType) : PHTTPString(url, string, contentType) { } PServiceHTTPString(const PURL & url, const PString & string, const PString & contentType, const PHTTPAuthority & auth) : PHTTPString(url, string, contentType, auth) { } PString LoadText(PHTTPRequest &); protected: virtual BOOL GetExpirationDate( PTime & when ///< Time that the resource expires ); }; class PServiceHTTPFile : public PHTTPFile { PCLASSINFO(PServiceHTTPFile, PHTTPFile) public: PServiceHTTPFile(const PString & filename, BOOL needSig = FALSE) : PHTTPFile(filename) { needSignature = needSig; } PServiceHTTPFile(const PString & filename, const PFilePath & file, BOOL needSig = FALSE) : PHTTPFile(filename, file) { needSignature = needSig; } PServiceHTTPFile(const PString & filename, const PHTTPAuthority & auth, BOOL needSig = FALSE) : PHTTPFile(filename, auth) { needSignature = needSig; } PServiceHTTPFile(const PString & filename, const PFilePath & file, const PHTTPAuthority & auth, BOOL needSig = FALSE) : PHTTPFile(filename, file, auth) { needSignature = needSig; } void OnLoadedText(PHTTPRequest &, PString & text); protected: virtual BOOL GetExpirationDate( PTime & when ///< Time that the resource expires ); BOOL needSignature; }; class PServiceHTTPDirectory : public PHTTPDirectory { PCLASSINFO(PServiceHTTPDirectory, PHTTPDirectory) public: PServiceHTTPDirectory(const PURL & url, const PDirectory & dirname, BOOL needSig = FALSE) : PHTTPDirectory(url, dirname) { needSignature = needSig; } PServiceHTTPDirectory(const PURL & url, const PDirectory & dirname, const PHTTPAuthority & auth, BOOL needSig = FALSE) : PHTTPDirectory(url, dirname, auth) { needSignature = needSig; } void OnLoadedText(PHTTPRequest &, PString & text); protected: virtual BOOL GetExpirationDate( PTime & when ///< Time that the resource expires ); BOOL needSignature; }; #endif pwlib_v1_10_2/include/ptclib/inetmail.h0100644000176200056700000010353410343317551020261 0ustar releasepostincr/* * inetmail.h * * Internet Mail channel classes * Simple Mail Transport Protocol & Post Office Protocol v3 * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): Federico Pinna and Reitek S.p.A. * * $Log: inetmail.h,v $ * Revision 1.20 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.19 2004/04/21 00:29:55 csoutheren * Added SASL authentication to PPOP3Client and PSMTPClient * Thanks to Federico Pinna and Reitek S.p.A. * * Revision 1.18 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.17 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.16 2000/11/10 01:08:11 robertj * Added content transfer encoding and automatic base64 translation. * * Revision 1.15 2000/11/09 06:01:58 robertj * Added MIME version and content disposition to RFC822 class. * * Revision 1.14 2000/11/09 05:50:23 robertj * Added RFC822 aware channel class for doing internet mail. * * Revision 1.13 2000/06/21 01:01:21 robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.12 2000/06/19 11:33:53 robertj * Fixed incorrect comment documentation * * Revision 1.11 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.10 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.9 1998/11/30 02:50:51 robertj * New directory structure * * Revision 1.8 1998/09/23 06:19:36 robertj * Added open source copyright license. * * Revision 1.7 1996/12/21 01:24:15 robertj * Added missing open message to pop server. * * Revision 1.6 1996/09/16 12:57:45 robertj * Removed redundant functions. * * Revision 1.5 1996/09/14 13:17:59 robertj * Renamed file and changed to be a protocol off new indirect channel to separate * the protocol from the low level byte transport channel. * * Revision 1.4 1996/07/27 04:14:49 robertj * Redesign and reimplement of mail sockets. * * Revision 1.3 1996/06/28 13:16:32 robertj * Changed SMTP incoming message handler so can tell when started, processing or ended message. * * Revision 1.2 1996/03/16 04:38:24 robertj * Added ParseReponse() for splitting reponse line into code and info. * * Revision 1.1 1996/01/23 13:04:20 robertj * Initial revision * * Revision 1.3 1995/06/17 11:12:15 robertj * Documentation update. * * Revision 1.2 1995/06/17 00:39:53 robertj * More implementation. * * Revision 1.1 1995/06/04 13:17:16 robertj * Initial revision * */ #ifndef _PMAILPROTOCOL #define _PMAILPROTOCOL #ifdef P_USE_PRAGMA #pragma interface #endif #include #include class PSocket; ////////////////////////////////////////////////////////////////////////////// // PSMTP /** A TCP/IP socket for the Simple Mail Transfer Protocol. When acting as a client, the procedure is to make the connection to a remote server, then to send a message using the following procedure:

      PSMTPClient mail("mailserver");
      if (mail.IsOpen()) {
        mail.BeginMessage("Me@here.com.au", "Fred@somwhere.com");
        mail.Write(myMessage);
        if (!mail.EndMessage())
          PError << "Mail send failed." << endl;
      }
      else
         PError << "Mail conection failed." << endl;
      
When acting as a server, a descendant class would be created to override at least the LookUpName() and HandleMessage() functions. Other functions may be overridden for further enhancement to the sockets capabilities, but these two will give a basic SMTP server functionality. The server socket thread would continuously call the ProcessMessage() function until it returns FALSE. This will then call the appropriate virtual function on parsing the SMTP protocol. */ class PSMTP : public PInternetProtocol { PCLASSINFO(PSMTP, PInternetProtocol) public: // New functions for class. enum Commands { HELO, EHLO, QUIT, HELP, NOOP, TURN, RSET, VRFY, EXPN, RCPT, MAIL, SEND, SAML, SOML, DATA, AUTH, NumCommands }; protected: PSMTP(); // Create a new SMTP protocol channel. }; /** A TCP/IP socket for the Simple Mail Transfer Protocol. When acting as a client, the procedure is to make the connection to a remote server, then to send a message using the following procedure:

      PSMTPSocket mail("mailserver");
      if (mail.IsOpen()) {
        mail.BeginMessage("Me@here.com.au", "Fred@somwhere.com");
        mail.Write(myMessage);
        if (!mail.EndMessage())
          PError << "Mail send failed." << endl;
      }
      else
         PError << "Mail conection failed." << endl;
      
*/ class PSMTPClient : public PSMTP { PCLASSINFO(PSMTPClient, PSMTP) public: /** Create a TCP/IP SMPTP protocol socket channel. The parameterless form creates an unopened socket, the form with the address parameter makes a connection to a remote system, opening the socket. The form with the socket parameter opens the socket to an incoming call from a "listening" socket. */ PSMTPClient(); /** Destroy the channel object. This will close the channel and as a client, QUIT from remote SMTP server. */ ~PSMTPClient(); // Overrides from class PChannel. /** Close the socket, and if connected as a client, QUITs from server. @return TRUE if the channel was closed and the QUIT accepted by the server. */ virtual BOOL Close(); // New functions for class. /** Log into the SMTP server using the mailbox and access codes specified. Login is actually attempted only if the server supports SASL authentication and a common method is found @return TRUE if logged in. */ BOOL LogIn( const PString & username, ///< User name on remote system. const PString & password ///< Password for user name. ); /** Begin transmission of a message using the SMTP socket as a client. This negotiates with the remote server and establishes the protocol state for data transmission. The usual Write() or stream commands may then be used to transmit the data itself. @return TRUE if message was handled, FALSE if an error occurs. */ BOOL BeginMessage( const PString & from, ///< User name of sender. const PString & to, ///< User name of recipient. BOOL eightBitMIME = FALSE ///< Mesage will be 8 bit MIME. ); BOOL BeginMessage( const PString & from, ///< User name of sender. const PStringList & toList, ///< List of user names of recipients. BOOL eightBitMIME = FALSE ///< Mesage will be 8 bit MIME. ); /** End transmission of a message using the SMTP socket as a client. @return TRUE if message was accepted by remote server, FALSE if an error occurs. */ BOOL EndMessage(); protected: BOOL OnOpen(); BOOL haveHello; BOOL extendedHello; BOOL eightBitMIME; PString fromAddress; PStringList toNames; BOOL sendingData; private: BOOL _BeginMessage(); }; /** A TCP/IP socket for the Simple Mail Transfer Protocol. When acting as a client, the procedure is to make the connection to a remote server, then to send a message using the following procedure:

      PSMTPSocket mail("mailserver");
      if (mail.IsOpen()) {
        mail.BeginMessage("Me@here.com.au", "Fred@somwhere.com");
        mail.Write(myMessage);
        if (!mail.EndMessage())
          PError << "Mail send failed." << endl;
      }
      else
         PError << "Mail conection failed." << endl;
      
When acting as a server, a descendant class would be created to override at least the LookUpName() and HandleMessage() functions. Other functions may be overridden for further enhancement to the sockets capabilities, but these two will give a basic SMTP server functionality. The server socket thread would continuously call the ProcessMessage() function until it returns FALSE. This will then call the appropriate virtual function on parsing the SMTP protocol. */ class PSMTPServer : public PSMTP { PCLASSINFO(PSMTPServer, PSMTP) public: /** Create a TCP/IP SMPTP protocol socket channel. The parameterless form creates an unopened socket, the form with the address parameter makes a connection to a remote system, opening the socket. The form with the socket parameter opens the socket to an incoming call from a "listening" socket. */ PSMTPServer(); // New functions for class. /** Process commands, dispatching to the appropriate virtual function. This is used when the socket is acting as a server. @return TRUE if more processing may be done, FALSE if the QUIT command was received or the OnUnknown() function returns FALSE. */ BOOL ProcessCommand(); void ServerReset(); // Reset the state of the SMTP server socket. enum ForwardResult { LocalDomain, ///< User may be on local machine, do LookUpName(). WillForward, ///< User may be forwarded to another SMTP host. CannotForward ///< User cannot be forwarded. }; // Result of forward check /** Determine if a user for this domain may be on the local system, or should be forwarded. @return Result of forward check operation. */ virtual ForwardResult ForwardDomain( PCaselessString & userDomain, ///< Domain for user PCaselessString & forwardDomainList ///< Domains forwarding to ); enum LookUpResult { ValidUser, ///< User name was valid and unique. AmbiguousUser, ///< User name was valid but ambiguous. UnknownUser, ///< User name was invalid. LookUpError ///< Some other error occurred in look up. }; // Result of user name look up /** Look up a name in the context of the SMTP server. The default bahaviour simply returns FALSE. @return Result of name look up operation. */ virtual LookUpResult LookUpName( const PCaselessString & name, ///< Name to look up. PString & expandedName ///< Expanded form of name (if found). ); /** Handle a received message. The buffer parameter contains the partial or complete message received, depending on the completed parameter. The default behaviour is to simply return FALSE; @return TRUE if message was handled, FALSE if an error occurs. */ virtual BOOL HandleMessage( PCharArray & buffer, ///< Buffer containing message data received. BOOL starting, ///< This is the first call for the message. BOOL completed ///< This is the last call for the message. ///< Indication that the entire message has been received. ); protected: BOOL OnOpen(); virtual void OnHELO( const PCaselessString & remoteHost ///< Name of remote host. ); // Start connection. virtual void OnEHLO( const PCaselessString & remoteHost ///< Name of remote host. ); // Start extended SMTP connection. virtual void OnQUIT(); // close connection and die. virtual void OnHELP(); // get help. virtual void OnNOOP(); // do nothing virtual void OnTURN(); // switch places virtual void OnRSET(); // Reset state. virtual void OnVRFY( const PCaselessString & name ///< Name to verify. ); // Verify address. virtual void OnEXPN( const PCaselessString & name ///< Name to expand. ); // Expand alias. virtual void OnRCPT( const PCaselessString & recipient ///< Name of recipient. ); // Designate recipient virtual void OnMAIL( const PCaselessString & sender ///< Name of sender. ); // Designate sender virtual void OnSEND( const PCaselessString & sender ///< Name of sender. ); // send message to screen virtual void OnSAML( const PCaselessString & sender ///< Name of sender. ); // send AND mail virtual void OnSOML( const PCaselessString & sender ///< Name of sender. ); // send OR mail virtual void OnDATA(); // Message text. /** Handle an unknown command. @return TRUE if more processing may be done, FALSE if the ProcessCommand() function is to return FALSE. */ virtual BOOL OnUnknown( const PCaselessString & command ///< Complete command line received. ); virtual void OnSendMail( const PCaselessString & sender ///< Name of sender. ); // Common code for OnMAIL(), OnSEND(), OnSOML() and OnSAML() funtions. /** Read a standard text message that is being received by the socket. The text message is terminated by a line with a '.' character alone. The default behaviour is to read the data into the buffer parameter until either the end of the message or when the messageBufferSize bytes have been read. @return TRUE if partial message received, FALSE if the end of the data was received. */ virtual BOOL OnTextData(PCharArray & buffer, BOOL & completed); /** Read an eight bit MIME message that is being received by the socket. The MIME message is terminated by the CR/LF/./CR/LF sequence. The default behaviour is to read the data into the buffer parameter until either the end of the message or when the messageBufferSize bytes have been read. @return TRUE if partial message received, FALSE if the end of the data was received. */ virtual BOOL OnMIMEData(PCharArray & buffer, BOOL & completed); // Member variables BOOL extendedHello; BOOL eightBitMIME; PString fromAddress; PString fromPath; PStringList toNames; PStringList toDomains; PINDEX messageBufferSize; enum { WasMAIL, WasSEND, WasSAML, WasSOML } sendCommand; StuffState endMIMEDetectState; }; ////////////////////////////////////////////////////////////////////////////// // PPOP3 /** A TCP/IP socket for the Post Office Protocol version 3. When acting as a client, the procedure is to make the connection to a remote server, then to retrieve a message using the following procedure:

      PPOP3Client mail("popserver");
      if (mail.IsOpen()) {
        if (mail.LogIn("Me", "password")) {
          if (mail.GetMessageCount() > 0) {
            PUnsignedArray sizes = mail.GetMessageSizes();
            for (PINDEX i = 0; i < sizes.GetSize(); i++) {
              if (mail.BeginMessage(i+1))
                mail.Read(myMessage, sizes[i]);
              else
                PError << "Error getting mail message." << endl;
            }
          }
          else
            PError << "No mail messages." << endl;
        }
        else
           PError << "Mail log in failed." << endl;
      }
      else
         PError << "Mail conection failed." << endl;
      
When acting as a server, a descendant class would be created to override at least the HandleOpenMailbox(), HandleSendMessage() and HandleDeleteMessage() functions. Other functions may be overridden for further enhancement to the sockets capabilities, but these will give a basic POP3 server functionality. The server socket thread would continuously call the ProcessMessage() function until it returns FALSE. This will then call the appropriate virtual function on parsing the POP3 protocol. */ class PPOP3 : public PInternetProtocol { PCLASSINFO(PPOP3, PInternetProtocol) public: enum Commands { USER, PASS, QUIT, RSET, NOOP, STATcmd, LIST, RETR, DELE, APOP, TOP, UIDL, AUTH, NumCommands }; protected: PPOP3(); /** Parse a response line string into a response code and any extra info on the line. Results are placed into the member variables lastResponseCode and lastResponseInfo. The default bahaviour looks for a space or a '-' and splits the code and info either side of that character, then returns FALSE. @return Position of continuation character in response, 0 if no continuation lines are possible. */ virtual PINDEX ParseResponse( const PString & line ///< Input response line to be parsed ); // Member variables static PString okResponse; static PString errResponse; }; /** A TCP/IP socket for the Post Office Protocol version 3. When acting as a client, the procedure is to make the connection to a remote server, then to retrieve a message using the following procedure:

      PPOP3Client mail;
      if (mail.Connect("popserver")) {
        if (mail.LogIn("Me", "password")) {
          if (mail.GetMessageCount() > 0) {
            PUnsignedArray sizes = mail.GetMessageSizes();
            for (PINDEX i = 0; i < sizes.GetSize(); i++) {
              if (mail.BeginMessage(i+1))
                mail.Read(myMessage, sizes[i]);
              else
                PError << "Error getting mail message." << endl;
            }
          }
          else
            PError << "No mail messages." << endl;
        }
        else
           PError << "Mail log in failed." << endl;
      }
      else
         PError << "Mail conection failed." << endl;
      
*/ class PPOP3Client : public PPOP3 { PCLASSINFO(PPOP3Client, PPOP3) public: /** Create a TCP/IP POP3 protocol socket channel. The parameterless form creates an unopened socket, the form with the address parameter makes a connection to a remote system, opening the socket. The form with the socket parameter opens the socket to an incoming call from a "listening" socket. */ PPOP3Client(); /** Destroy the channel object. This will close the channel and as a client, QUIT from remote POP3 server. */ ~PPOP3Client(); // Overrides from class PChannel. /** Close the socket, and if connected as a client, QUITs from server. @return TRUE if the channel was closed and the QUIT accepted by the server. */ virtual BOOL Close(); // New functions for class. enum LoginOptions { AllowUserPass = 1, ///< Allow the use of the plain old USER/PASS if APOP ///< or SASL are not available UseSASL = 2, ///< Use SASL if the AUTH command is supported by ///< the server AllowClearTextSASL = 4 ///< Allow LOGIN and PLAIN mechanisms to be used }; /** Log into the POP server using the mailbox and access codes specified. @return TRUE if logged in. */ BOOL LogIn( const PString & username, ///< User name on remote system. const PString & password, ///< Password for user name. int options = AllowUserPass ///< See LoginOptions above ); /** Get a count of the number of messages in the mail box. @return Number of messages in mailbox or -1 if an error occurred. */ int GetMessageCount(); /** Get an array of a integers representing the sizes of each of the messages in the mail box. @return Array of integers representing the size of each message. */ PUnsignedArray GetMessageSizes(); /** Get an array of a strings representing the standard internet message headers of each of the messages in the mail box. Note that the remote server may not support this function, in which case an empty array will be returned. @return Array of strings continaing message headers. */ PStringArray GetMessageHeaders(); /* Begin the retrieval of an entire message. The application may then use the PApplicationSocket::ReadLine() function with the unstuffLine parameter set to TRUE. Repeated calls until its return valus is FALSE will read the message headers and body. @return Array of strings continaing message headers. */ BOOL BeginMessage( PINDEX messageNumber /** Number of message to retrieve. This is an integer from 1 to the maximum number of messages available. */ ); /** Delete the message specified from the mail box. @return Array of strings continaing message headers. */ BOOL DeleteMessage( PINDEX messageNumber /* Number of message to retrieve. This is an integer from 1 to the maximum number of messages available. */ ); protected: BOOL OnOpen(); // Member variables BOOL loggedIn; PString apopBanner; }; /** A TCP/IP socket for the Post Office Protocol version 3. When acting as a server, a descendant class would be created to override at least the HandleOpenMailbox(), HandleSendMessage() and HandleDeleteMessage() functions. Other functions may be overridden for further enhancement to the sockets capabilities, but these will give a basic POP3 server functionality. The server socket thread would continuously call the ProcessMessage() function until it returns FALSE. This will then call the appropriate virtual function on parsing the POP3 protocol. */ class PPOP3Server : public PPOP3 { PCLASSINFO(PPOP3Server, PPOP3) public: /** Create a TCP/IP POP3 protocol socket channel. The parameterless form creates an unopened socket, the form with the address parameter makes a connection to a remote system, opening the socket. The form with the socket parameter opens the socket to an incoming call from a "listening" socket. */ PPOP3Server(); // New functions for class. /** Process commands, dispatching to the appropriate virtual function. This is used when the socket is acting as a server. @return TRUE if more processing may be done, FALSE if the QUIT command was received or the OnUnknown() function returns FALSE. */ BOOL ProcessCommand(); /** Log the specified user into the mail system and return sizes of each message in mail box. The user override of this function is expected to populate the protected member fields messageSizes and messageIDs. @return TRUE if user and password were valid. */ virtual BOOL HandleOpenMailbox( const PString & username, ///< User name for mail box const PString & password ///< Password for user name ); /** Handle the sending of the specified message to the remote client. The data written to the socket will automatically have the '.' character stuffing enabled. @return TRUE if successfully sent message. */ virtual void HandleSendMessage( PINDEX messageNumber, ///< Number of message to send. const PString & id, ///< Unique id of message to send. PINDEX lines ///< Nuumber of lines in body of message to send. ); /** Handle the deleting of the specified message from the mail box. This is called when the OnQUIT command is called for each message that was deleted using the DELE command. @return TRUE if successfully sent message. */ virtual void HandleDeleteMessage( PINDEX messageNumber, ///< Number of message to send. const PString & id ///< Unique id of message to send. ); protected: BOOL OnOpen(); virtual void OnUSER( const PString & name ///< Name of user. ); // Specify user name (mailbox). virtual void OnPASS( const PString & passwd ///< Password for account. ); // Specify password and log user in. virtual void OnQUIT(); // End connection, saving all changes (delete messages). virtual void OnRSET(); // Reset connection (undelete messages). virtual void OnNOOP(); // Do nothing. virtual void OnSTAT(); // Get number of messages in mailbox. /** Get the size of a message in mailbox. If msg is 0 then get sizes of all messages in mailbox. */ virtual void OnLIST( PINDEX msg ///< Number of message. ); virtual void OnRETR( PINDEX msg ///< Number of message. ); // Retrieve a message from mailbox. virtual void OnDELE( PINDEX msg ///< Number of message. ); // Delete a message from mailbox. virtual void OnTOP( PINDEX msg, ///< Number of message. PINDEX count ///< Count of messages ); // Get the message header and top count lines of message. /** Get unique ID for message in mailbox. If msg is 0 then get all IDs for all messages in mailbox. */ virtual void OnUIDL( PINDEX msg ///< Number of message. ); /** Handle an unknown command. @return TRUE if more processing may be done, FALSE if the ProcessCommand() function is to return FALSE. */ virtual BOOL OnUnknown( const PCaselessString & command ///< Complete command line received. ); // Member variables PString username; PUnsignedArray messageSizes; PStringArray messageIDs; PBYTEArray messageDeletions; }; /**A channel for sending/receiving RFC822 compliant mail messages. This encpsulates all that is required to send an RFC822 compliant message via another channel. It automatically adds/strips header information from the stream so the Read() and Write() functions only deal with the message body. For example to send a message using the SMTP classes:

      PSMTPClient mail("mailserver");
      if (mail.IsOpen()) {
        PRFC822Channel message;
        message.SetFromAddress("Me@here.com.au");
        message.SetToAddress("Fred@somwhere.com");
        if (message.Open(mail)) {
          if (mail.BeginMessage("Me@here.com.au", "Fred@somwhere.com")) {
            if (!message.Write(myMessageBody))
              PError << "Mail write failed." << endl;
            if (!message.EndMessage())
              PError << "Mail send failed." << endl;
          }
        }
      }
      else
         PError << "Mail conection failed." << endl;
      
*/ class PRFC822Channel : public PIndirectChannel { PCLASSINFO(PRFC822Channel, PIndirectChannel); public: enum Direction { Sending, Receiving }; /**Construct a RFC822 aware channel. */ PRFC822Channel( Direction direction ////< Indicates are sending or receiving a message ); /**Close the channel before destruction. */ ~PRFC822Channel(); // Overrides from class PChannel. /**Close the channel. This assures that all mime fields etc are closed off before closing the underliying channel. */ BOOL Close(); /** Low level write to the channel. This override assures that the header is written before the body that will be output via this function. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /**Begin a new message. This may be used if the object is to encode 2 or more messages sequentially. It resets the internal state of the object. */ void NewMessage( Direction direction ///< Indicates are sending or receiving a message ); /**Enter multipart MIME message mode. This indicates that the message, or individual part within a message as MIME is nestable, is a multipart message. This form returns the boundary indicator string generated internally which must then be used in all subsequent NextPart() calls. Note this must be called before any writes are done to the message or part. */ PString MultipartMessage(); /**Enter multipart MIME message mode. This indicates that the message, or individual part within a message as MIME is nestable, is a multipart message. In this form the user supplies a boundary indicator string which must then be used in all subsequent NextPart() calls. Note this must be called before any writes are done to the message or part. */ BOOL MultipartMessage( const PString & boundary ); /**Indicate that a new multipart message part is to begin. This will close off the previous part, and any nested multipart messages contained therein, and allow a new part to begin. The user may adjust the parts content type and other header fields after this call and before the first write of the parts body. The default Content-Type is "text/plain". Note that all header fields are cleared from the previous part. */ void NextPart( const PString & boundary ); /**Set the sender address. This must be called before any writes are done to the channel. */ void SetFromAddress( const PString & fromAddress ///< Senders e-mail address ); /**Set the recipient address(es). This must be called before any writes are done to the channel. */ void SetToAddress( const PString & toAddress ///< Recipients e-mail address (comma separated) ); /**Set the Carbon Copy address(es). This must be called before any writes are done to the channel. */ void SetCC( const PString & ccAddress ///< Recipients e-mail address (comma separated) ); /**Set the Blind Carbon Copy address(es). This must be called before any writes are done to the channel. */ void SetBCC( const PString & bccAddress ///< Recipients e-mail address (comma separated) ); /**Set the message subject. This must be called before any writes are done to the channel. */ void SetSubject( const PString & subject ///< Subject string ); /**Set the content type. This must be called before any writes are done to the channel. It may be set again immediately after any call to NextPart() when multipart mime is being used. The default Content-Type is "text/plain". */ void SetContentType( const PString & contentType ///< Content type in form major/minor ); /**Set the content disposition for attachments. This must be called before any writes are done to the channel. It may be set again immediately after any call to NextPart() when multipart mime is being used. Note that this will alter the Content-Type field to */ void SetContentAttachment( const PFilePath & filename ///< Attachment filename ); /**Set the content transfer encoding. This must be called before any writes are done to the channel. It may be set again immediately after any call to NextPart() when multipart mime is being used. If the encoding is "base64" (case insensitive) and , all writes will be treated as binary and translated into base64 encoding before output to the underlying channel. */ void SetTransferEncoding( const PString & encoding, ///< Encoding type BOOL autoTranslate = TRUE ///< Automatically convert to encoding type ); /**Set the and arbitrary header field. This must be called before any writes are done to the channel. */ void SetHeaderField( const PString & name, ///< MIME fields tag const PString & value ///< MIME fields contents ); // Common MIME header tags static const char MimeVersionTag[]; static const char FromTag[]; static const char ToTag[]; static const char CCTag[]; static const char BCCTag[]; static const char SubjectTag[]; static const char DateTag[]; static const char ReturnPathTag[]; static const char ReceivedTag[]; static const char MessageIDTag[]; static const char MailerTag[]; static const char ContentTypeTag[]; static const char ContentDispositionTag[]; static const char ContentTransferEncodingTag[]; /**Send this message using an SMTP socket. This will create a PSMTPClient and connect to the specified host then send the message to the remote SMTP server. */ BOOL SendWithSMTP( const PString & hostname ); /**Send this message using an SMTP socket. This assumes PSMTPClient is open the sends the message to the remote SMTP server. */ BOOL SendWithSMTP( PSMTPClient * smtp ); protected: BOOL OnOpen(); BOOL writeHeaders; PMIMEInfo headers; BOOL writePartHeaders; PMIMEInfo partHeaders; PStringList boundaries; PBase64 * base64; }; #endif // _PMAILPROTOCOL // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/inetprot.h0100644000176200056700000003766610343317551020337 0ustar releasepostincr/* * inetprot.h * * Internet Protocol ancestor channel class * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: inetprot.h,v $ * Revision 1.19 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.18 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.17 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.16 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.15 2001/09/26 09:37:04 robertj * Added virtual keyword to a lot of functions so can be overridden. * * Revision 1.14 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.13 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.12 1998/09/23 06:19:40 robertj * Added open source copyright license. * * Revision 1.11 1996/09/14 13:09:13 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.10 1996/05/15 10:07:00 robertj * Added access function to set intercharacter line read timeout. * * Revision 1.9 1996/05/09 12:14:02 robertj * Rewrote the "unread" buffer usage and then used it to improve ReadLine() performance. * * Revision 1.8 1996/03/31 08:43:38 robertj * Added version of WriteCommand() and ExecteCommand() without argument string. * * Revision 1.7 1996/03/16 04:35:32 robertj * Added PString parameter version of UnRead(). * Changed lastResponseCode to an integer. * Added ParseReponse() for splitting reponse line into code and info. * * Revision 1.6 1996/02/13 12:57:05 robertj * Added access to the last response in an application socket. * * Revision 1.5 1996/02/03 11:33:16 robertj * Changed RadCmd() so can distinguish between I/O error and unknown command. * * Revision 1.4 1996/01/23 13:08:43 robertj * Major rewrite for HTTP support. * * Revision 1.3 1995/06/17 11:12:15 robertj * Documentation update. * * Revision 1.2 1995/06/17 00:39:53 robertj * More implementation. * * Revision 1.1 1995/06/04 13:17:16 robertj * Initial revision * */ #ifndef _PINTERNETPROTOCOL #define _PINTERNETPROTOCOL #ifdef P_USE_PRAGMA #pragma interface #endif #include class PSocket; class PIPSocket; /** A TCP/IP socket for process/application layer high level protocols. All of these protocols execute commands and responses in a standard manner. A command consists of a line starting with a short, case insensitive command string terminated by a space or the end of the line. This may be followed by optional arguments. A response to a command is usually a number and/or a short string eg "OK". The response may be followed by additional information about the response but this is not typically used by the protocol. It is only for user information and may be tracked in log files etc. All command and reponse lines of the protocol are terminated by a CR/LF pair. A command or response line may be followed by additional data as determined by the protocol, but this data is "outside" the protocol specification as defined by this class. The default read timeout is to 10 minutes by the constructor. */ class PInternetProtocol : public PIndirectChannel { PCLASSINFO(PInternetProtocol, PIndirectChannel) protected: PInternetProtocol( const char * defaultServiceName, ///< Service name for the protocol. PINDEX cmdCount, ///< Number of command strings. char const * const * cmdNames ///< Strings for each command. ); // Create an unopened TCP/IP protocol socket channel. public: // Overrides from class PChannel. /** Low level read from the channel. This override also supports the mechanism in the UnRead() function allowing characters to be be "put back" into the data stream. This allows a look-ahead required by the logic of some protocols. This is completely independent of the standard iostream mechanisms which do not support the level of timeout control required by the protocols. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /** Low level write to the channel. This override assures that the sequence CR/LF/./CR/LF does not occur by byte stuffing an extra '.' character into the data stream, whenever a line begins with a '.' character. Note that this only occurs if the member variable stuffingState has been set to some value other than DontStuff, usually StuffIdle. Also, if the newLineToCRLF member variable is TRUE then all occurrences of a '\n' character will be translated to a CR/LF pair. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** Set the maximum timeout between characters within a line. Default value is 10 seconds. */ void SetReadLineTimeout( const PTimeInterval & t ); // New functions for class. /** Connect a socket to a remote host for the internet protocol. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address, ///< Address of remote machine to connect to. WORD port = 0 ///< Port number to use for the connection. ); virtual BOOL Connect( const PString & address, ///< Address of remote machine to connect to. const PString & service ///< Service name to use for the connection. ); /** Accept a server socket to a remote host for the internet protocol. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Accept( PSocket & listener ///< Address of remote machine to connect to. ); /** Get the default service name or port number to use in socket connections. @return string for the default service name. */ const PString & GetDefaultService() const; /** Get the eventual socket for the series of indirect channels that may be between the current protocol and the actual I/O channel. This will assert if the I/O channel is not an IP socket. @return TRUE if the string and CR/LF were completely written. */ PIPSocket * GetSocket() const; /** Write a string to the socket channel followed by a CR/LF pair. If there are any lone CR or LF characters in the line parameter string, then these are translated into CR/LF pairs. @return TRUE if the string and CR/LF were completely written. */ virtual BOOL WriteLine( const PString & line ///< String to write as a command line. ); /** Read a string from the socket channel up to a CR/LF pair. If the unstuffLine parameter is set then the function will remove the '.' character from the start of any line that begins with two consecutive '.' characters. A line that has is exclusively a '.' character will make the function return FALSE. Note this function will block for the time specified by the PChannel::SetReadTimeout() function for only the first character in the line. The rest of the characters must each arrive within the time set by the readLineTimeout member variable. The timeout is set back to the original setting when the function returns. @return TRUE if a CR/LF pair was received, FALSE if a timeout or error occurred. */ virtual BOOL ReadLine( PString & line, ///< String to receive a CR/LF terminated line. BOOL allowContinuation = FALSE ///< Flag to handle continued lines. ); /** Put back the characters into the data stream so that the next Read() function call will return them first. */ virtual void UnRead( int ch ///< Individual character to be returned. ); virtual void UnRead( const PString & str ///< String to be put back into data stream. ); virtual void UnRead( const void * buffer, ///< Characters to be put back into data stream. PINDEX len ///< Number of characters to be returned. ); /** Write a single line for a command. The command name for the command number is output, then a space, the the param string followed at the end with a CR/LF pair. If the cmdNumber parameter is outside of the range of valid command names, then the function does not send anything and returns FALSE. This function is typically used by client forms of the socket. @return TRUE if the command was completely written. */ virtual BOOL WriteCommand( PINDEX cmdNumber ///< Number of command to write. ); virtual BOOL WriteCommand( PINDEX cmdNumber, ///< Number of command to write. const PString & param ///< Extra parameters required by the command. ); /** Read a single line of a command which ends with a CR/LF pair. The command number for the command name is parsed from the input, then the remaining text on the line is returned in the args parameter. If the command does not match any of the command names then the entire line is placed in the args parameter and a value of P_MAX_INDEX is returned. Note this function will block for the time specified by the PChannel::SetReadTimeout() function. This function is typically used by server forms of the socket. @return TRUE if something was read, otherwise an I/O error occurred. */ virtual BOOL ReadCommand( PINDEX & num, ///< Number of the command parsed from the command line, or P_MAX_INDEX ///< if no match. PString & args ///< String to receive the arguments to the command. ); /** Write a response code followed by a text string describing the response to a command. The form of the response is to place the code string, then the info string. If the info parameter has multiple lines then each line has the response code at the start. A '-' character separates the code from the text on all lines but the last where a ' ' character is used. The first form assumes that the response code is a 3 digit numerical code. The second form allows for any arbitrary string to be the code. This function is typically used by server forms of the socket. @return TRUE if the response was completely written. */ virtual BOOL WriteResponse( unsigned numericCode, ///< Response code for command response. const PString & info ///< Extra information available after response code. ); virtual BOOL WriteResponse( const PString & code, ///< Response code for command response. const PString & info ///< Extra information available after response code. ); /** Read a response code followed by a text string describing the response to a command. The form of the response is to have the code string, then the info string. The response may have multiple lines in it. A '-' character separates the code from the text on all lines but the last where a ' ' character is used. The info parameter will have placed in it all of the response lines separated by a single '\n' character. The first form places the response code and info into the protected member variables lastResponseCode and lastResponseInfo. This function is typically used by client forms of the socket. @return TRUE if the response was completely read without a socket error. */ virtual BOOL ReadResponse(); virtual BOOL ReadResponse( int & code, ///< Response code for command response. PString & info ///< Extra information available after response code. ); /** Write a command to the socket, using WriteCommand() and await a response using ReadResponse(). The first character of the response is returned, as well as the entire response being saved into the protected member variables lastResponseCode and lastResponseInfo. This function is typically used by client forms of the socket. @return First character of response string or '\0' if a socket error occurred. */ virtual int ExecuteCommand( PINDEX cmdNumber ///< Number of command to write. ); virtual int ExecuteCommand( PINDEX cmdNumber, ///< Number of command to write. const PString & param ///< Extra parameters required by the command. ); /** Return the code associated with the last response received by the socket. @return Response code */ int GetLastResponseCode() const; /** Return the last response received by the socket. @return Response as a string */ PString GetLastResponseInfo() const; protected: /** Parse a response line string into a response code and any extra info on the line. Results are placed into the member variables lastResponseCode and lastResponseInfo. The default bahaviour looks for a space or a '-' and splits the code and info either side of that character, then returns FALSE. @return Position of continuation character in response, 0 if no continuation lines are possible. */ virtual PINDEX ParseResponse( const PString & line ///< Input response line to be parsed ); PString defaultServiceName; // Default Service name to use for the internet protocol socket. PStringArray commandNames; // Names of each of the command codes. PCharArray unReadBuffer; // Buffer for characters put back into the data stream. PINDEX unReadCount; // Buffer count for characters put back into the data stream. PTimeInterval readLineTimeout; // Time for characters in a line to be received. enum StuffState { DontStuff, StuffIdle, StuffCR, StuffCRLF, StuffCRLFdot, StuffCRLFdotCR } stuffingState; // Do byte stuffing of '.' characters in output to the socket channel. BOOL newLineToCRLF; // Translate \n characters to CR/LF pairs. int lastResponseCode; PString lastResponseInfo; // Responses private: BOOL AttachSocket(PIPSocket * socket); }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/ipacl.h0100644000176200056700000003100210343317551017535 0ustar releasepostincr/* * ipacl.h * * IP Access Control Lists * * Portable Windows Library * * Copyright (c) 1998-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ipacl.h,v $ * Revision 1.11 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.10 2005/01/26 05:37:42 csoutheren * Added ability to remove config file support * * Revision 1.9 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.8 2002/07/17 02:54:24 robertj * Added access functions for member variables. * * Revision 1.7 2002/06/19 05:43:17 robertj * Added missing return for getting default allowance flag * * Revision 1.6 2002/06/19 04:02:58 robertj * Added default allowance boolean if ACL empty. * Added ability to override the creation of ACL entry objects with descendents * so an application can add information/functionality to each entry. * * Revision 1.5 2002/02/13 02:07:14 robertj * Added const to IsAllowed() function * * Revision 1.4 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.3 1999/02/25 05:05:15 robertj * Added missing test for hidden entries not to be written to config file * * Revision 1.2 1999/02/08 08:05:39 robertj * Changed semantics of IP access control list for empty list. * * Revision 1.1 1999/01/31 00:59:26 robertj * Added IP Access Control List class to PTLib Components * */ #ifndef _IPACL_H #define _IPACL_H #include /** This class is a single IP access control specification. */ class PIpAccessControlEntry : public PObject { PCLASSINFO(PIpAccessControlEntry, PObject) public: /** Create a new IP access control specification. See the Parse() function for more details on the format of the description parameter. */ PIpAccessControlEntry( PIPSocket::Address addr, PIPSocket::Address msk, BOOL allow ); PIpAccessControlEntry( const PString & description ); /** Set a new IP access control specification. See the Parse() function for more details on the format of the pstr and cstr parameters. */ PIpAccessControlEntry & operator=( const PString & pstr ); PIpAccessControlEntry & operator=( const char * cstr ); /** Compare the two objects and return their relative rank. @return LessThan, EqualTo or GreaterThan according to the relative rank of the objects. */ virtual Comparison Compare( const PObject & obj ///< Object to compare against. ) const; /** Output the contents of the object to the stream. This outputs the same format as the AsString() function. */ virtual void PrintOn( ostream &strm ///< Stream to print the object into. ) const; /** Input the contents of the object from the stream. This expects the next space delimited entry in the stream to be as described in the Parse() function. */ virtual void ReadFrom( istream &strm ///< Stream to read the objects contents from. ); /** Convert the specification to a string, that can be processed by the Parse() function. @return PString representation of the entry. */ PString AsString() const; /** Check the internal fields of the specification for validity. @return TRUE if entry is valid. */ BOOL IsValid(); /** Parse the description string into this IP access control specification. The string may be of several forms: n.n.n.n Simple IP number, this has an implicit mask of 255.255.255.255 n.n. IP with trailing dot, assumes a mask equal to the number of specified octets eg 10.1. is equivalent to 10.1.0.0/255.255.0.0 n.n.n.n/b An IP network using b bits of mask, for example 10.1.0.0/14 is equivalent to 10.0.1.0/255.248.0.0 n.n.n.n/m.m.m.m An IP network using the specified mask hostname A specific host name, this has an implicit mask of 255.255.255.255 .domain.dom Matches an IP number whose cannonical name (found using a reverse DNS lookup) ends with the specified domain. @return TRUE if entry is valid. */ BOOL Parse( const PString & description ///< Description of the specification ); /** Check to see if the specified IP address match any of the conditions specifed in the Parse() function for this entry. @return TRUE if entry can match the address. */ BOOL Match( PIPSocket::Address & address ///< Address to search for ); /**Get the domain part of entry. */ const PString & GetDomain() const { return domain; } /**Get the address part of entry. */ const PIPSocket::Address & GetAddress() const { return address; } /**Get the mask part of entry. */ const PIPSocket::Address & GetMask() const { return mask; } /**Get the allowed flag of entry. */ BOOL IsAllowed() const { return allowed; } /**Get the hidden flag of entry. */ BOOL IsHidden() const { return hidden; } protected: PString domain; PIPSocket::Address address; PIPSocket::Address mask; BOOL allowed; BOOL hidden; }; PSORTED_LIST(PIpAccessControlList_base, PIpAccessControlEntry); /** This class is a list of IP address mask specifications used to validate if an address may or may not be used in a connection. The list may be totally internal to the application, or may use system wide files commonly use under Linux (hosts.allow and hosts.deny file). These will be used regardless of the platform. When a search is done using IsAllowed() function, the first entry that matches the specified IP address is found, and its allow flag returned. The list sorted so that the most specific IP number specification is first and the broadest onse later. The entry with the value having a mask of zero, that is the match all entry, is always last. */ class PIpAccessControlList : public PIpAccessControlList_base { PCLASSINFO(PIpAccessControlList, PIpAccessControlList_base) public: /** Create a new, empty, access control list. */ PIpAccessControlList( BOOL defaultAllowance = TRUE ); /** Load the system wide files commonly use under Linux (hosts.allow and hosts.deny file) for IP access. See the Linux man entries on these files for more information. Note, these files will be loaded regardless of the actual platform used. The directory returned by the PProcess::GetOSConfigDir() function is searched for the files. The daemonName parameter is used as the search argument in the hosts.allow/hosts.deny file. If this is NULL then the PProcess::GetName() function is used. @return TRUE if all the entries in the file were added, if any failed then FALSE is returned. */ BOOL LoadHostsAccess( const char * daemonName = NULL ///< Name of "daemon" application ); #ifdef P_CONFIG_FILE /** Load entries in the list from the configuration file specified. This is equivalent to Load(cfg, "IP Access Control List"). @return TRUE if all the entries in the file were added, if any failed then FALSE is returned. */ BOOL Load( PConfig & cfg ///< Configuration file to load entries from. ); /** Load entries in the list from the configuration file specified, using the base name for the array of configuration file values. The format of entries in the configuration file are suitable for use with the PHTTPConfig classes. @return TRUE if all the entries in the file were added, if any failed then FALSE is returned. */ BOOL Load( PConfig & cfg, ///< Configuration file to load entries from. const PString & baseName ///< Base name string for each entry in file. ); /** Save entries in the list to the configuration file specified. This is equivalent to Save(cfg, "IP Access Control List"). */ void Save( PConfig & cfg ///< Configuration file to save entries to. ); /** Save entries in the list to the configuration file specified, using the base name for the array of configuration file values. The format of entries in the configuration file are suitable for use with the PHTTPConfig classes. */ void Save( PConfig & cfg, ///< Configuration file to save entries to. const PString & baseName ///< Base name string for each entry in file. ); #endif // P_CONFIG_FILE /** Add the specified entry into the list. See the PIpAccessControlEntry class for more details on the format of the description field. @return TRUE if the entries was successfully added. */ BOOL Add( PIpAccessControlEntry * entry ///< Entry for IP match parameters ); BOOL Add( const PString & description ///< Description of the IP match parameters ); BOOL Add( PIPSocket::Address address, ///< IP network address PIPSocket::Address mask, ///< Mask for IP network BOOL allow ///< Flag for if network is allowed or not ); /** Remove the specified entry into the list. See the PIpAccessControlEntry class for more details on the format of the description field. @return TRUE if the entries was successfully removed. */ BOOL Remove( const PString & description ///< Description of the IP match parameters ); BOOL Remove( PIPSocket::Address address, ///< IP network address PIPSocket::Address mask ///< Mask for IP network ); /**Create a new PIpAccessControl specification entry object. This may be used by an application to create descendents of PIpAccessControlEntry when extra information/functionality is required. The default behaviour creates a PIpAccessControlEntry. */ virtual PIpAccessControlEntry * CreateControlEntry( const PString & description ); /**Find the PIpAccessControl specification for the address. */ PIpAccessControlEntry * Find( PIPSocket::Address address ///< IP Address to find ) const; /** Test the address/connection for if it is allowed within this access control list. If the socket form is used the peer address of the connection is tested. If the list is empty then TRUE is returned. If the list is not empty, but the IP address does not match any entries in the list, then FALSE is returned. If a match is made then the allow state of that entry is returned. @return TRUE if the remote host address is allowed. */ BOOL IsAllowed( PTCPSocket & socket ///< Socket to test ) const; BOOL IsAllowed( PIPSocket::Address address ///< IP Address to test ) const; /**Get the default state for allowed access if the list is empty. */ BOOL GetDefaultAllowance() const { return defaultAllowance; } /**Set the default state for allowed access if the list is empty. */ void SetDefaultAllowance(BOOL defAllow) { defaultAllowance = defAllow; } private: BOOL InternalLoadHostsAccess(const PString & daemon, const char * file, BOOL allow); BOOL InternalRemoveEntry(PIpAccessControlEntry & entry); protected: BOOL defaultAllowance; }; #endif // _IPACL_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/memfile.h0100644000176200056700000001244510343317551020075 0ustar releasepostincr/* * memfile.h * * WAV file I/O channel class. * * Portable Windows Library * * Copyright (c) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is * Equivalence Pty Ltd * * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: memfile.h,v $ * Revision 1.6 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.5 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.4 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.3 2002/08/05 05:40:45 robertj * Fixed missing pragma interface/implementation * * Revision 1.2 2002/06/27 03:53:35 robertj * Cleaned up documentation and added Compare() function. * * Revision 1.1 2002/06/26 09:01:19 craigs * Initial version * */ #ifndef _PMEMFILE #define _PMEMFILE #ifdef P_USE_PRAGMA #pragma interface #endif #include /**This class is used to allow a block of memory to substitute for a disk file. */ class PMemoryFile : public PFile { PCLASSINFO(PMemoryFile, PFile); public: /**@name Construction */ //@{ /**Create a new, empty, memory file. */ PMemoryFile(); /**Create a new memory file initialising to the specified content. */ PMemoryFile( const PBYTEArray & data ///< New content filr memory file. ); //@} /**@name Overrides from class PObject */ //@{ /**Determine the relative rank of the two objects. This is essentially the string comparison of the #PFilePath# names of the files. @return relative rank of the file paths. */ Comparison Compare( const PObject & obj ///< Other file to compare against. ) const; //@} /**@name Overrides from class PChannel */ //@{ /**Low level read from the memory file channel. The read timeout is ignored. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the memory file channel. The write timeout is ignored. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); //@} /**@name Overrides from class PFile */ //@{ /**Get the current size of the file. The size of the file corresponds to the size of the data array. @return length of file in bytes. */ off_t GetLength() const; /**Set the size of the file, padding with 0 bytes if it would require expanding the file, or truncating it if being made shorter. @return TRUE if the file size was changed to the length specified. */ BOOL SetLength( off_t len ///< New length of file. ); /**Set the current active position in the file for the next read or write operation. The #pos# variable is a signed number which is added to the specified origin. For #origin == PFile::Start# only positive values for #pos# are meaningful. For #origin == PFile::End# only negative values for #pos# are meaningful. @return TRUE if the new file position was set. */ BOOL SetPosition( off_t pos, ///< New position to set. FilePositionOrigin origin = Start ///< Origin for position change. ); /**Get the current active position in the file for the next read or write operation. @return current file position relative to start of file. */ off_t GetPosition() const; //@} /**@name Overrides from class PFile */ //@{ /**Get the memory data the file has operated with. */ const PBYTEArray & GetData() const { return data; } //@} protected: PBYTEArray data; off_t position; }; #endif // _PMEMFILE // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/mime.h0100644000176200056700000002533110343317551017404 0ustar releasepostincr/* * mime.h * * Multipurpose Internet Mail Extensions support classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: mime.h,v $ * Revision 1.21 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.20 2004/03/23 06:38:51 csoutheren * Update for change in location of Base64 routines * * Revision 1.19 2004/03/23 05:59:17 csoutheren * Moved the Base64 routines into cypher.cxx, which is a more sensible * place and reduces the inclusion of unrelated code * * Revision 1.18 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.17 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.16 2001/10/03 00:24:57 robertj * Split out function for adding a single line of MIME info, reduces * duplicated code and is useful in some other areas such as HTTP/1.1 * * Revision 1.15 2001/09/28 00:41:18 robertj * Added SetInteger() function to set numeric MIME fields. * Removed HasKey() as is confusing due to ancestor Contains(). * Overrides of SetAt() and Contains() to assure PCaselessString used. * * Revision 1.14 2000/11/09 00:18:26 robertj * Cosmetic change: removed blank lines. * * Revision 1.13 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.12 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.11 1998/11/30 02:50:52 robertj * New directory structure * * Revision 1.10 1998/09/23 06:19:42 robertj * Added open source copyright license. * * Revision 1.9 1997/02/05 11:53:11 robertj * Changed construction of MIME dictionary to be delayed untill it is used. * * Revision 1.8 1996/09/14 13:09:15 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.7 1996/07/15 10:28:31 robertj * Changed memory block base64 conversion functions to be void *. * * Revision 1.6 1996/03/16 04:38:09 robertj * Fixed bug in MIME write function, should be const. * * Revision 1.5 1996/02/25 03:04:32 robertj * Added decoding of Base64 to a block of memory instead of PBYTEArray. * * Revision 1.4 1996/01/28 14:14:30 robertj * Further implementation of secure config. * * Revision 1.3 1996/01/28 02:46:07 robertj * Removal of MemoryPointer classes as usage didn't work for GNU. * * Revision 1.2 1996/01/26 02:24:27 robertj * Further implemetation. * * Revision 1.1 1996/01/23 13:06:18 robertj * Initial revision * */ #ifndef _PMIME #define _PMIME #ifdef P_USE_PRAGMA #pragma interface #endif #include #include ////////////////////////////////////////////////////////////////////////////// // PMIMEInfo /** This class contains the Multipurpose Internet Mail Extensions parameters and variables. */ #ifdef DOC_PLUS_PLUS class PMIMEInfo : public PStringToString { #endif PDECLARE_STRING_DICTIONARY(PMIMEInfo, PCaselessString); public: PMIMEInfo( istream &strm ///< Stream to read the objects contents from. ); PMIMEInfo( PInternetProtocol & socket ///< Application socket to read MIME info. ); // Construct a MIME infromation dictionary from the specified source. // Overrides from class PObject /** Output the contents of the MIME dictionary to the stream. This is primarily used by the standard ##operator<<## function. */ virtual void PrintOn( ostream &strm ///< Stream to print the object into. ) const; /** Input the contents of the MIME dictionary from the stream. This is primarily used by the standard ##operator>>## function. */ virtual void ReadFrom( istream &strm ///< Stream to read the objects contents from. ); // Overrides from class PStringToString /**Add a new value to the MIME info. If the value is already in the dictionary then this overrides the previous value. @return TRUE if the object was successfully added. */ BOOL SetAt( const char * key, const PString value ) { return AbstractSetAt(PCaselessString(key), PNEW PString(value)); } /**Add a new value to the MIME info. If the value is already in the dictionary then this overrides the previous value. @return TRUE if the object was successfully added. */ BOOL SetAt( const PString & key, const PString value ) { return AbstractSetAt(PCaselessString(key), PNEW PString(value)); } /**Add a new value to the MIME info. If the value is already in the dictionary then this overrides the previous value. @return TRUE if the object was successfully added. */ BOOL SetAt( const PCaselessString & key, const PString value ) { return AbstractSetAt(PCaselessString(key), PNEW PString(value)); } /** Determine if the specified key is present in the MIME information set. @return TRUE if the MIME variable is present. */ BOOL Contains( const char * key ///< Key into MIME dictionary to get info. ) const { return GetAt(PCaselessString(key)) != NULL; } /** Determine if the specified key is present in the MIME information set. @return TRUE if the MIME variable is present. */ BOOL Contains( const PString & key ///< Key into MIME dictionary to get info. ) const { return GetAt(PCaselessString(key)) != NULL; } /** Determine if the specified key is present in the MIME information set. @return TRUE if the MIME variable is present. */ BOOL Contains( const PCaselessString & key ///< Key into MIME dictionary to get info. ) const { return GetAt(key) != NULL; } // New functions for class. /** Read MIME information from the socket. @return TRUE if the MIME information was successfully read. */ BOOL Read( PInternetProtocol & socket ///< Application socket to read MIME info. ); /** Write MIME information to the socket. @return TRUE if the MIME information was successfully read. */ BOOL Write( PInternetProtocol & socket ///< Application socket to write MIME info. ) const; /**Add a MIME field given a "name: value" format string. Note that if the field name was already in the MIME dictionary then this will append the new value after a '\n' character to the previous value. @return TRUE is a field was added. */ BOOL AddMIME( const PString & line ); /** Get a string for the particular MIME info field with checking for existance. The #dflt# parameter is substituted if the field does not exist in the MIME information read in. @return String for the value of the MIME variable. */ PString GetString( const PString & key, ///< Key into MIME dictionary to get info. const PString & dflt ///< Default value of field if not in MIME info. ) const; /** Get an integer value for the particular MIME info field with checking for existance. The #dflt# parameter is substituted if the field does not exist in the MIME information read in. @return Integer value for the MIME variable. */ long GetInteger( const PString & key, ///< Key into MIME dictionary to get info. long dflt = 0 ///< Default value of field if not in MIME info. ) const; /** Set an integer value for the particular MIME info field. */ void SetInteger( const PCaselessString & key, ///< Key into MIME dictionary to get info. long value ///< New value of field. ); /** Set an association between a file type and a MIME content type. The content type is then sent for any file in the directory sub-tree that has the same extension. Note that if the #merge# parameter if TRUE then the dictionary is merged into the current association list and is not a simple replacement. The default values placed in this dictionary are: \begin{verbatim} ".txt", "text/plain" ".text", "text/plain" ".html", "text/html" ".htm", "text/html" ".aif", "audio/aiff" ".aiff", "audio/aiff" ".au", "audio/basic" ".snd", "audio/basic" ".wav", "audio/wav" ".gif", "image/gif" ".xbm", "image/x-bitmap" ".tif", "image/tiff" ".tiff", "image/tiff" ".jpg", "image/jpeg" ".jpe", "image/jpeg" ".jpeg", "image/jpeg" ".avi", "video/avi" ".mpg", "video/mpeg" ".mpeg", "video/mpeg" ".qt", "video/quicktime" ".mov", "video/quicktime" \end{verbatim} The default content type will be "application/octet-stream". */ static void SetAssociation( const PStringToString & allTypes, ///< MIME content type associations. BOOL merge = TRUE ///< Flag for merging associations. ); static void SetAssociation( const PString & fileType, ///< File type (extension) to match. const PString & contentType ///< MIME content type string. ) { GetContentTypes().SetAt(fileType, contentType); } /** Look up the file type to MIME content type association dictionary and return the MIME content type string. If the file type is not found in the dictionary then the string "application/octet-stream" is returned. @return MIME content type for file type. */ static PString GetContentType( const PString & fileType ///< File type (extension) to look up. ); private: static PStringToString & GetContentTypes(); }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/modem.h0100644000176200056700000004062610343317551017562 0ustar releasepostincr/* * modem.h * * AT command set modem on asynchonous port class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: modem.h,v $ * Revision 1.16 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.15 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.14 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.13 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.12 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.11 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.10 1998/12/02 03:51:39 robertj * Unix compatibility changes * * Revision 1.9 1998/09/23 06:20:53 robertj * Added open source copyright license. * * Revision 1.8 1995/06/17 11:12:46 robertj * Documentation update. * * Revision 1.7 1995/03/14 12:41:51 robertj * Updated documentation to use HTML codes. * * Revision 1.6 1995/01/06 10:31:02 robertj * Documentation. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/08/21 23:43:02 robertj * Moved meta-string transmitter from PModem to PChannel. * * Revision 1.2 1994/07/25 03:32:29 robertj * Fixed bug in GCC with enums. * * Revision 1.1 1994/06/25 11:55:15 robertj * Initial revision * */ #define _PMODEM #ifdef P_USE_PRAGMA #pragma interface #endif #include #ifndef _PSERIALCHANNEL #include #endif /** A class representing a modem attached to a serial port. This adds the usual modem operations to the basic serial port. A modem object is always in a particular state. This state determines what operations are allowed which then move the object to other states. The operations are the exchange of strings in "chat" script. The following defaults are used for command strings: initialise ATZ\r\w2sOK\w100m deinitialise \d2s+++\d2sATH0\r pre-dial ATDT post-dial \r busy reply BUSY no carrier reply NO CARRIER connect reply CONNECT hang up \d2s+++\d2sATH0\r */ class PModem : public PSerialChannel { PCLASSINFO(PModem, PSerialChannel) public: /** Create a modem object on the serial port specified. If no port was specified do not open it. It does not initially have a valid port name. See the PSerialChannel class for more information on the parameters. */ PModem(); PModem( const PString & port, ///< Serial port name to open. DWORD speed = 0, ///< Speed of serial port. BYTE data = 0, ///< Number of data bits for serial port. Parity parity = DefaultParity, ///< Parity for serial port. BYTE stop = 0, ///< Number of stop bits for serial port. FlowControl inputFlow = DefaultFlowControl, ///< Input flow control. FlowControl outputFlow = DefaultFlowControl ///< Output flow control. ); /** Open the modem serial channel obtaining the parameters from standard variables in the configuration file. Note that it assumed that the correct configuration file section is already set. */ PModem( PConfig & cfg ///< Configuration file to read parameters from. ); // Overrides from class PChannel virtual BOOL Close(); // Close the modem serial port channel. // Overrides from class PSerialChannel /** Open the modem serial channel on the specified port. See the PSerialChannel class for more information on the parameters. @return TRUE if the modem serial port was successfully opened. */ virtual BOOL Open( const PString & port, ///< Serial port name to open. DWORD speed = 0, ///< Speed of serial port. BYTE data = 0, ///< Number of data bits for serial port. Parity parity = DefaultParity, ///< Parity for serial port. BYTE stop = 0, ///< Number of stop bits for serial port. FlowControl inputFlow = DefaultFlowControl, ///< Input flow control. FlowControl outputFlow = DefaultFlowControl ///< Output flow control. ); /** Open the modem serial port obtaining the parameters from standard variables in the configuration file. Note that it assumed that the correct configuration file section is already set. @return TRUE if the modem serial port was successfully opened. */ virtual BOOL Open( PConfig & cfg ///< Configuration file to read parameters from. ); virtual void SaveSettings( PConfig & cfg ///< Configuration file to write parameters to. ); // Save the current modem serial port settings into the configuration file. // New member functions /** Set the modem initialisation meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \s before the string. */ void SetInitString( const PString & str ///< New initialisation command string. ); /** Get the modem initialisation meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for initialisation command. */ PString GetInitString() const; /** The modem is in a state that allows the initialise to start. @return TRUE if the Initialise() function may proceeed. */ BOOL CanInitialise() const; /** Send the initialisation meta-command string to the modem. The return value indicates that the conditions for the operation to start were met, ie the serial port was open etc and the command was successfully sent with all replies met. @return TRUE if command string sent successfully and the objects state has changed. */ BOOL Initialise(); /** Set the modem de-initialisation meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \s before the string. */ void SetDeinitString( const PString & str ///< New de-initialisation command string. ); /** Get the modem de-initialisation meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for de-initialisation command. */ PString GetDeinitString() const; /** The modem is in a state that allows the de-initialise to start. @return TRUE if the Deinitialise() function may proceeed. */ BOOL CanDeinitialise() const; /** Send the de-initialisation meta-command string to the modem. The return value indicates that the conditions for the operation to start were met, ie the serial port was open etc and the command was successfully sent with all replies met. @return TRUE if command string sent successfully and the objects state has changed. */ BOOL Deinitialise(); /** Set the modem pre-dial meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \s before the string. */ void SetPreDialString( const PString & str ///< New pre-dial command string. ); /** Get the modem pre-dial meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for pre-dial command. */ PString GetPreDialString() const; /** Set the modem post-dial meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is not an implied \s before the string, unlike the pre-dial string. */ void SetPostDialString( const PString & str ///< New post-dial command string. ); /** Get the modem post-dial meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for post-dial command. */ PString GetPostDialString() const; /** Set the modem busy response meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \w120s before the string. Also the \s and \d commands do not operate and will simply terminate the string match. */ void SetBusyString( const PString & str ///< New busy response command string. ); /** Get the modem busy response meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for busy response command. */ PString GetBusyString() const; /** Set the modem no carrier response meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \w120s before the string. Also the \s and \d commands do not operate and will simply terminate the string match. */ void SetNoCarrierString( const PString & str ///< New no carrier response command string. ); /** Get the modem no carrier response meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for no carrier response command. */ PString GetNoCarrierString() const; /** Set the modem connect response meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \w120s before the string. Also the \s and \d commands do not operate and will simply terminate the string match. */ void SetConnectString( const PString & str ///< New connect response command string. ); /** Get the modem connect response meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for connect response command. */ PString GetConnectString() const; /** The modem is in a state that allows the dial to start. @return TRUE if the Dial() function may proceeed. */ BOOL CanDial() const; /** Send the dial meta-command strings to the modem. The return value indicates that the conditions for the operation to start were met, ie the serial port was open etc and the command was successfully sent with all replies met. The string sent to the modem is the concatenation of the pre-dial string, a \s, the number parameter and the post-dial string. @return TRUE if command string sent successfully and the objects state has changed. */ BOOL Dial(const PString & number); /** Set the modem hang up meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. Note there is an implied \s before the string. */ void SetHangUpString( const PString & str ///< New hang up command string. ); /** Get the modem hang up meta-command string. See the PChannel::SendCommandString() function for more information on the format of the command string. @return string for hang up command. */ PString GetHangUpString() const; /** The modem is in a state that allows the hang up to start. @return TRUE if the HangUp() function may proceeed. */ BOOL CanHangUp() const; /** Send the hang up meta-command string to the modem. The return value indicates that the conditions for the operation to start were met, ie the serial port was open etc and the command was successfully sent with all replies met. @return TRUE if command string sent successfully and the objects state has changed. */ BOOL HangUp(); /** The modem is in a state that allows the user command to start. @return TRUE if the SendUser() function may proceeed. */ BOOL CanSendUser() const; /** Send an arbitrary user meta-command string to the modem. The return value indicates that the conditions for the operation to start were met, ie the serial port was open etc and the command was successfully sent with all replies met. @return TRUE if command string sent successfully. */ BOOL SendUser( const PString & str ///< User command string to send. ); void Abort(); // Abort the current meta-string command operation eg dial, hang up etc. /** The modem is in a state that allows the user application to read from the channel. Reading while this is TRUE can interfere with the operation of the meta-string processing. This function is only usefull when multi-threading is used. @return TRUE if Read() operations are "safe". */ BOOL CanRead() const; enum Status { Unopened, ///< Has not been opened yet Uninitialised, ///< Is open but has not yet been initialised Initialising, ///< Is currently initialising the modem Initialised, ///< Has been initialised but is not connected InitialiseFailed, ///< Initialisation sequence failed Dialling, ///< Is currently dialling DialFailed, ///< Dial failed AwaitingResponse, ///< Dialling in progress, awaiting connection LineBusy, ///< Dial failed due to line busy NoCarrier, ///< Dial failed due to no carrier Connected, ///< Dial was successful and modem has connected HangingUp, ///< Is currently hanging up the modem HangUpFailed, ///< The hang up failed Deinitialising, ///< is currently de-initialising the modem DeinitialiseFailed, ///< The de-initialisation failed SendingUserCommand, ///< Is currently sending a user command NumStatuses }; // Modem object states. /** Get the modem objects current state. @return modem status. */ Status GetStatus() const; protected: // Member variables PString initCmd, deinitCmd, preDialCmd, postDialCmd, busyReply, noCarrierReply, connectReply, hangUpCmd; // Modem command meta-strings. Status status; // Current modem status }; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/pasn.h0100644000176200056700000004262310352407602017416 0ustar releasepostincr/* * pasn.h * * Abstract Syntax Notation 1 classes for support of SNMP only. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pasn.h,v $ * Revision 1.15 2005/12/22 02:29:22 csoutheren * Fixed PASNIPAddress constructor that accepts PIPSocket::Address * * Revision 1.14 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.13 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.12 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.11 1999/05/01 03:52:20 robertj * Fixed various egcs warnings. * * Revision 1.10 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.9 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.8 1998/11/30 02:50:54 robertj * New directory structure * * Revision 1.7 1998/09/23 06:19:44 robertj * Added open source copyright license. * * Revision 1.6 1997/08/20 08:48:56 craigs * Added GetString() to PASNNull * * Revision 1.5 1997/07/20 08:34:14 craigs * Added ASN NULL type * * Revision 1.4 1997/07/16 05:51:08 craigs * Added PASNString constructor with ptr and length * * Revision 1.3 1996/11/04 09:45:08 robertj * Fixed bug in IP number ASN type, should be binary not dot format string. * * Revision 1.2 1996/11/04 03:56:00 robertj * Added ASN types to class. * * Revision 1.1 1996/09/14 12:58:57 robertj * Initial revision * */ #ifndef _PASN_H #define _PASN_H #ifdef P_USE_PRAGMA #pragma interface #endif #include // // define some types used by the ASN classes // typedef PInt32 PASNInt; typedef DWORD PASNUnsigned; typedef DWORD PASNOid; class PASNObject; class PASNSequence; PLIST(PASNObjectList, PASNObject); ////////////////////////////////////////////////////////////////////////// /** This class defines the common behviour of all ASN objects. It also contains several functions which are used for encoding common ASN primitives. This class will never be instantiated directly. See the PASNInteger, PASNSequence, PASNString and PASNObjectID classes for examples of ASN objects that can be created. Only descendants of this class can be put into the ASNSequence class. */ class PASNObject : public PObject { PCLASSINFO(PASNObject, PObject) public: /** Value returned by the GetType() function to indicate the type of an ASN object */ enum ASNType { Integer, ///< ASN Integer object String, ///< ASN Octet String object ObjectID, ///< ASN Object ID object Sequence, ///< ASN Sequence object Choice, ///< ASN Sequence with discriminator IPAddress, ///< ASN IPAddress object Counter, ///< ASN Counter object Gauge, ///< ASN Gauge object TimeTicks, ///< ASN TimeTicks object Opaque, ///< ASN Opaque object NsapAddress, ///< ASN NsapAddress Counter64, ///< ASN Counter64 UInteger32, ///< ASN Unsigned integer 32 Null, ///< ASN Null Unknown, ///< unknown ASN object type ASNTypeMax ///< maximum of number of ASN object types }; /** Return a value of type enum ASNType which indicates the type of the object */ virtual ASNType GetType() const; /** Return the descriminator for Choice sequences */ int GetChoice() const; /** Return a string giving the type of the object */ virtual PString GetTypeAsString() const; /** Return the value of the ASN object as a PASNInt. This function will assert if the object is not a descendant of PASNInteger. */ virtual PASNInt GetInteger () const; /** Return the value of the object as a PASNUnsigned This function will assert if the object is not a descendant of PASNTimeTicks or

PASNCounter. */ virtual PASNUnsigned GetUnsigned () const; /** Return the value of the object as a PString. This function can be use for all ASN object types */ virtual PString GetString () const; /** Return the value of the object as a PString This function will assert if the object is not a descendant of PASNSequence. */ virtual const PASNSequence & GetSequence() const; /** Return the value of the object as an IPAddress This function will assert if the object is not a descendant of PASNIPAddress. */ virtual PIPSocket::Address GetIPAddress () const; /** Virtual functions used by the PObject::operator<< function to print the value of the object. */ virtual void PrintOn( ostream & strm ///< stream to print on ) const; /** Virtual function used to encode the object into ASN format */ virtual void Encode( PBYTEArray & buffer ///< buffer to encode into ); /** Virtual function used to get the length of object when encoded into ASN format */ virtual WORD GetEncodedLength(); /** Virtual function used to duplicate objects */ virtual PObject * Clone() const; /** Encode an ASN length value */ static void EncodeASNLength ( PBYTEArray & buffer, ///< buffer to encode into WORD length ///< ASN length to encode ); /** Return the length of an encoded ASN length value */ static WORD GetASNLengthLength ( WORD length ///< length to find length of ); /** Decode an ASN length in the buffer at the given ptr. The ptr is moved to the byte after the end of the encoded length. */ static BOOL DecodeASNLength ( const PBYTEArray & buffer, ///< buffer to decode data from PINDEX & ptr, ///< ptr to decode from WORD & len ///< returned length ); /** Encode a sequence header into the buffer at the specified offset. */ static void EncodeASNSequenceStart ( PBYTEArray & buffer, ///< buffer to encode data into BYTE type, ///< sequence type WORD length ///< length of sequence data ); /** Return the encoded length of a sequence if it has the specified length */ static WORD GetASNSequenceStartLength ( WORD length ///< length of sequence data ); /** Encode an ASN object header into the buffer */ static void EncodeASNHeader( PBYTEArray & buffer, ///< buffer to encode into PASNObject::ASNType type, ///< ASN type of the object WORD length ///< length of the object ); /** Return the length of an ASN object header if the object is the specified length */ static WORD GetASNHeaderLength ( WORD length ///< length of object ); static void EncodeASNInteger ( PBYTEArray & buffer, ///< buffer to encode into PASNInt data, ///< value to encode PASNObject::ASNType type ///< actual integer type ); // Encode an ASN integer value into the specified buffer */ static void EncodeASNUnsigned ( PBYTEArray & buffer, ///< buffer to encode into PASNUnsigned data, ///< value to encode PASNObject::ASNType type ///< actual integer type ); // Encode an ASN integer value into the specified buffer */ static WORD GetASNIntegerLength ( PASNInt data ///< value to get length of ); // Return the length of an encoded ASN integer with the specified value static WORD GetASNUnsignedLength ( PASNUnsigned data ///< value to get length of ); // Return the length of an encoded ASN integer with the specified value static BOOL DecodeASNInteger ( const PBYTEArray & buffer, ///< buffer to decode from PINDEX & ptr, ///< ptr to data in buffer PASNInt & value, ///< returned value ASNType type = Integer ///< actual integer type ); // Decode an ASN integer value in the specified buffer static BOOL DecodeASNUnsigned ( const PBYTEArray & buffer, ///< buffer to decode from PINDEX & ptr, ///< ptr to data in buffer PASNUnsigned & value, ///< returned value ASNType type = TimeTicks ///< actual integer type ); // Decode an ASN integer value in the specified buffer protected: /** Create an empty ASN object. Used only by descendant constructors */ PASNObject(); /** Table to map enum ASNType values to ASN identifiers */ static BYTE ASNTypeToType[ASNTypeMax]; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is a simple ASN integer type. */ class PASNInteger : public PASNObject { PCLASSINFO(PASNInteger, PASNObject) public: PASNInteger(PASNInt val); PASNInteger(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); WORD GetEncodedLength(); PObject * Clone() const; PASNInt GetInteger() const; PString GetString () const; ASNType GetType() const; PString GetTypeAsString() const; private: PASNInt value; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is a simple ASN OctetStr type */ class PASNString : public PASNObject { PCLASSINFO(PASNString, PASNObject) public: PASNString(const PString & str); PASNString(const BYTE * ptr, int len); PASNString(const PBYTEArray & buffer, PASNObject::ASNType = String); PASNString(const PBYTEArray & buffer, PINDEX & ptr, PASNObject::ASNType = String); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer) { Encode(buffer, String); } WORD GetEncodedLength(); PObject * Clone() const; PString GetString() const; ASNType GetType() const; PString GetTypeAsString() const; protected: BOOL Decode(const PBYTEArray & buffer, PINDEX & i, PASNObject::ASNType type); void Encode(PBYTEArray & buffer, PASNObject::ASNType type); PString value; WORD valueLen; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is an IP address type */ class PASNIPAddress : public PASNString { PCLASSINFO(PASNIPAddress, PASNString) public: PASNIPAddress(const PIPSocket::Address & addr) : PASNString((const BYTE *)addr.GetPointer(), addr.GetSize()) { } PASNIPAddress(const PString & str); PASNIPAddress(const PBYTEArray & buffer) : PASNString(buffer, IPAddress) { } PASNIPAddress(const PBYTEArray & buffer, PINDEX & ptr) : PASNString(buffer, ptr, IPAddress) { } PASNObject::ASNType GetType() const { return IPAddress; } void Encode(PBYTEArray & buffer) { PASNString::Encode(buffer, IPAddress); } PString GetString() const; PString GetTypeAsString() const; PObject * Clone() const { return PNEW PASNIPAddress(*this); } PIPSocket::Address GetIPAddress () const; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is an unsigned ASN integer type. */ class PASNUnsignedInteger : public PASNObject { PCLASSINFO(PASNUnsignedInteger, PASNObject) public: PASNUnsignedInteger(PASNUnsigned val) { value = val; } PASNUnsignedInteger(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; WORD GetEncodedLength(); PString GetString () const; PASNUnsigned GetUnsigned() const; protected: PASNUnsignedInteger() { value = 0; } BOOL Decode(const PBYTEArray & buffer, PINDEX & i, PASNObject::ASNType theType); void Encode(PBYTEArray & buffer, PASNObject::ASNType theType); private: PASNUnsigned value; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is an unsigned ASN time tick type. */ class PASNTimeTicks : public PASNUnsignedInteger { PCLASSINFO(PASNTimeTicks, PASNUnsignedInteger) public: PASNTimeTicks(PASNUnsigned val) : PASNUnsignedInteger(val) { } PASNTimeTicks(const PBYTEArray & buffer, PINDEX & ptr) { PASNUnsignedInteger::Decode(buffer, ptr, TimeTicks); } void Encode(PBYTEArray & buffer) { PASNUnsignedInteger::Encode(buffer, TimeTicks); } PObject * Clone() const { return PNEW PASNTimeTicks(*this); } PASNObject::ASNType GetType() const { return TimeTicks; } PString GetTypeAsString() const; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is an unsigned ASN counter type. */ class PASNCounter : public PASNUnsignedInteger { PCLASSINFO(PASNCounter, PASNUnsignedInteger) public: PASNCounter(PASNUnsigned val) : PASNUnsignedInteger(val) { } PASNCounter(const PBYTEArray & buffer, PINDEX & ptr) { PASNUnsignedInteger::Decode(buffer, ptr, Counter); } void Encode(PBYTEArray & buffer) { PASNUnsignedInteger::Encode(buffer, Counter); } PObject * Clone() const { return PNEW PASNCounter(*this); } PASNObject::ASNType GetType() const { return Counter; } PString GetTypeAsString() const; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is an unsigned ASN guage type. */ class PASNGauge : public PASNUnsignedInteger { PCLASSINFO(PASNGauge, PASNUnsignedInteger) public: PASNGauge(PASNUnsigned val) : PASNUnsignedInteger(val) { } PASNGauge(const PBYTEArray & buffer, PINDEX & ptr) { Decode(buffer, ptr); } BOOL Decode(const PBYTEArray & buffer, PINDEX & i) { return PASNUnsignedInteger::Decode(buffer, i, Gauge); } void Encode(PBYTEArray & buffer) { PASNUnsignedInteger::Encode(buffer, Gauge); } PObject * Clone() const { return PNEW PASNGauge(*this); } PASNObject::ASNType GetType() const { return Gauge; } PString GetTypeAsString() const; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is an unsigned ASN ObjID type. */ class PASNObjectID : public PASNObject { PCLASSINFO(PASNObjectID, PASNObject) public: PASNObjectID(const PString & str); PASNObjectID(PASNOid * val, BYTE theLen); PASNObjectID(const PBYTEArray & buffer); PASNObjectID(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); WORD GetEncodedLength(); PObject * Clone() const; ASNType GetType() const; PString GetString () const; PString GetTypeAsString() const; protected: BOOL Decode(const PBYTEArray & buffer, PINDEX & i); private: PDWORDArray value; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is the NULL type */ class PASNNull : public PASNObject { PCLASSINFO(PASNNull, PASNObject) public: PASNNull(); PASNNull(const PBYTEArray & buffer, PINDEX & ptr); void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); WORD GetEncodedLength(); PObject * Clone() const; ASNType GetType() const; PString GetString () const; PString GetTypeAsString() const; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PASNObject which is the complex sequence type */ class PASNSequence : public PASNObject { PCLASSINFO(PASNSequence, PASNObject) public: PASNSequence(); PASNSequence(BYTE selector); PASNSequence(const PBYTEArray & buffer); PASNSequence(const PBYTEArray & buffer, PINDEX & i); void Append(PASNObject * obj); PINDEX GetSize() const; PASNObject & operator [] (PINDEX idx) const; const PASNSequence & GetSequence() const; void AppendInteger (PASNInt value); void AppendString (const PString & str); void AppendObjectID(const PString & str); void AppendObjectID(PASNOid * val, BYTE len); int GetChoice() const; // PASNInt GetInteger (PINDEX idx) const; // PString GetString (PINDEX idx) const; void PrintOn(ostream & strm) const; void Encode(PBYTEArray & buffer); BOOL Decode(const PBYTEArray & buffer, PINDEX & i); WORD GetEncodedLength(); ASNType GetType() const; PString GetTypeAsString() const; BOOL Encode(PBYTEArray & buffer, PINDEX maxLen) ; private: PASNObjectList sequence; BYTE type; ASNType asnType; WORD encodedLen; WORD seqLen; }; #endif // End of File. pwlib_v1_10_2/include/ptclib/pdns.h0100644000176200056700000002171110405107507017414 0ustar releasepostincr/* * pdns.h * * PWLib library for DNS lookup services * * Portable Windows Library * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pdns.h,v $ * Revision 1.9.2.1 2006/03/12 21:14:47 dsandras * Backports from HEAD. * * Revision 1.11 2006/02/26 11:51:20 csoutheren * Extended DNS test program to include URL based SRV lookups * Re-arranged SRV lookup code to allow access to internal routine * Reformatted code * * Revision 1.10 2006/02/26 09:26:17 shorne * Added DNS SRV record lookups * * Revision 1.9 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.8 2004/06/24 07:36:24 csoutheren * Added definitions of T_SRV and T_NAPTR for hosts that do not have these * * Revision 1.7 2004/05/31 12:49:47 csoutheren * Added handling of unknown DNS types * * Revision 1.6 2004/05/28 06:50:42 csoutheren * Reorganised DNS functions to use templates, and exposed more internals to allow new DNS lookup types to be added * * Revision 1.5 2003/07/22 23:52:20 dereksmithies * Fix from Fabrizio Ammollo to cope with when P_DNS is disabled. Thanks! * * Revision 1.4 2003/04/16 07:02:55 robertj * Cleaned up source. * * Revision 1.3 2003/04/15 08:14:06 craigs * Added single string form of GetSRVRecords * * Revision 1.2 2003/04/15 08:06:24 craigs * Added Unix implementation * * Revision 1.1 2003/04/15 04:06:56 craigs * Initial version * */ #if P_DNS #ifndef _PDNS_H #define _PDNS_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include #include #if defined(_WIN32) # include # pragma comment(lib, P_DNS_LIBRARY) #else # define P_HAS_RESOLVER 1 // set if using Unix-style DNS routines # include # include # if defined(P_MACOSX) && (P_MACOSX >= 700) # include # endif #endif // _WIN32 #ifdef P_HAS_RESOLVER ////////////////////////////////////////////////////////////////////////// // // these classes provide an emulation of the Microsoft DNS API // on non-Window systems // #ifndef T_SRV #define T_SRV 33 #endif #ifndef T_NAPTR #define T_NAPTR 35 #endif #define DNS_STATUS int #define DNS_TYPE_SRV T_SRV #define DNS_TYPE_MX T_MX #define DNS_TYPE_A T_A #define DNS_TYPE_NAPTR T_NAPTR #define DnsFreeRecordList 0 #define DNS_QUERY_STANDARD 0 #define DNS_QUERY_BYPASS_CACHE 0 typedef struct _DnsAData { DWORD IpAddress; } DNS_A_DATA; typedef struct { char pNameExchange[MAXDNAME]; WORD wPreference; } DNS_MX_DATA; typedef struct { char pNameHost[MAXDNAME]; } DNS_PTR_DATA; typedef struct _DnsSRVData { char pNameTarget[MAXDNAME]; WORD wPriority; WORD wWeight; WORD wPort; } DNS_SRV_DATA; typedef struct _DnsNULLData { DWORD dwByteCount; char data[1]; } DNS_NULL_DATA; typedef struct _DnsRecordFlags { unsigned Section : 2; unsigned Delete : 1; unsigned CharSet : 2; unsigned Unused : 3; unsigned Reserved : 24; } DNS_RECORD_FLAGS; typedef enum _DnsSection { DnsSectionQuestion, DnsSectionAnswer, DnsSectionAuthority, DnsSectionAddtional, } DNS_SECTION; class DnsRecord { public: DnsRecord * pNext; char pName[MAXDNAME]; WORD wType; WORD wDataLength; union { DWORD DW; ///< flags as DWORD DNS_RECORD_FLAGS S; ///< flags as structure } Flags; union { DNS_A_DATA A; DNS_MX_DATA MX; DNS_PTR_DATA NS; DNS_SRV_DATA SRV; DNS_NULL_DATA Null; } Data; }; typedef DnsRecord * PDNS_RECORD; extern void DnsRecordListFree(PDNS_RECORD rec, int FreeType); extern DNS_STATUS DnsQuery_A(const char * service, WORD requestType, DWORD options, void *, PDNS_RECORD * results, void *); #endif // P_HAS_RESOLVER namespace PDNS { ////////////////////////////////////////////////////////////////////////// // // this template automates the creation of a list of records for // a specific type of DNS lookup // template BOOL Lookup(const PString & name, RecordListType & recordList) { if (name.IsEmpty()) return FALSE; recordList.RemoveAll(); PDNS_RECORD results = NULL; DNS_STATUS status = DnsQuery_A((const char *)name, type, DNS_QUERY_STANDARD, NULL, &results, NULL); if (status != 0) return FALSE; // find records matching the correct type PDNS_RECORD dnsRecord = results; while (dnsRecord != NULL) { RecordType * record = recordList.HandleDNSRecord(dnsRecord, results); if (record != NULL) recordList.Append(record); dnsRecord = dnsRecord->pNext; } if (results != NULL) DnsRecordListFree(results, DnsFreeRecordList); return recordList.GetSize() != 0; } ///////////////////////////////////////////////////////////// class SRVRecord : public PObject { PCLASSINFO(SRVRecord, PObject); public: SRVRecord() { used = FALSE; } Comparison Compare(const PObject & obj) const; void PrintOn(ostream & strm) const; PString hostName; PIPSocket::Address hostAddress; BOOL used; WORD port; WORD priority; WORD weight; }; PDECLARE_SORTED_LIST(SRVRecordList, PDNS::SRVRecord) public: void PrintOn(ostream & strm) const; SRVRecord * GetFirst(); SRVRecord * GetNext(); PDNS::SRVRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results); protected: PINDEX priPos; PWORDArray priList; }; /** * return a list of DNS SRV record with the specified service type */ inline BOOL GetRecords(const PString & service, SRVRecordList & serviceList) { return Lookup(service, serviceList); } /** * provided for backwards compatibility */ inline BOOL GetSRVRecords( const PString & service, SRVRecordList & serviceList ) { return GetRecords(service, serviceList); } /** * return a list of DNS SRV record with the specified service, type and domain */ BOOL GetSRVRecords( const PString & service, const PString & type, const PString & domain, SRVRecordList & serviceList ); /** * Perform a DNS lookup of the specified service * @return TRUE if the service could be resolved, else FALSE */ BOOL LookupSRV( const PString & domain, ///< domain to lookup const PString & service, ///< service to use WORD defaultPort, ///< default por to use PIPSocketAddressAndPortVector & addrList ///< returned list of sockets and ports ); BOOL LookupSRV( const PURL & url, ///< URL to lookup const PString & service, ///< service to use PStringList & returnStr ///< resolved addresses, if return value is TRUE ); //////////////////////////////////////////////////////////////// class MXRecord : public PObject { PCLASSINFO(MXRecord, PObject); public: MXRecord() { used = FALSE; } Comparison Compare(const PObject & obj) const; void PrintOn(ostream & strm) const; PString hostName; PIPSocket::Address hostAddress; BOOL used; WORD preference; }; PDECLARE_SORTED_LIST(MXRecordList, PDNS::MXRecord) public: void PrintOn(ostream & strm) const; MXRecord * GetFirst(); MXRecord * GetNext(); PDNS::MXRecord * HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD results); protected: PINDEX lastIndex; }; /** * return a list of MX records for the specified domain */ inline BOOL GetRecords( const PString & domain, MXRecordList & serviceList ) { return Lookup(domain, serviceList); } /** * provided for backwards compatibility */ inline BOOL GetMXRecords( const PString & domain, MXRecordList & serviceList ) { return GetRecords(domain, serviceList); } /////////////////////////////////////////////////////////////////////////// }; // namespace PDNS #endif // _PDNS_H #endif // P_DNS // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/pils.h0100755000176200056700000001242210015432610017412 0ustar releasepostincr/* * pils.h * * Microsoft Internet Location Server Protocol interface class. * * Portable Windows Library * * Copyright (c) 1993-2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pils.h,v $ * Revision 1.4 2004/02/20 16:27:52 ykiryanov * if'd LDAP code to enable non-LDAP builds * * Revision 1.3 2003/04/11 00:07:46 robertj * More for Microsoft IP address specification wierdness (registration side). * * Revision 1.2 2003/04/07 13:05:09 robertj * Workaround for Microsoft IP address specification wierdness. * * Revision 1.1 2003/03/31 03:35:20 robertj * Major addition of LDAP functionality. * Added ILS specialisation of LDAP. * */ #ifndef _PILS_H #define _PILS_H #ifdef P_USE_PRAGMA #pragma interface #endif #if P_LDAP #include #include /**This class will create an LDAP client to access a remote ILS server. */ class PILSSession : public PLDAPSession { PCLASSINFO(PILSSession, PLDAPSession) public: /**Create an ILS client. */ PILSSession(); /**Special IP address class. Microsoft in their infinite wisdom save the IP address as an little endian integer in the LDAP fild, but this was generated from a 32 bit integer that was in network byte order (big endian) which causes immense confusion. Reading directly into a PIPSocket::Address does not work as it assumes that any integer forms would be in host order. So we need to override the standard read function so the marchalling into the RTPerson structure works. All very sad. */ class MSIPAddress : public PIPSocket::Address { public: MSIPAddress(DWORD a = 0) : Address(a) { } MSIPAddress(const PIPSocket::Address & a) : Address(a) { } MSIPAddress(const PString & dotNotation) : Address(dotNotation) { } MSIPAddress(PINDEX len, const BYTE * bytes) : Address(len, bytes) { } MSIPAddress & operator=(DWORD a) { Address::operator=(a); return *this; } MSIPAddress & operator=(const PIPSocket::Address & a) { Address::operator=(a); return *this; } MSIPAddress & operator=(const PString & dotNotation) { Address::operator=(dotNotation); return *this; } friend istream & operator>>(istream & s, MSIPAddress & a); friend ostream & operator<<(ostream & s, MSIPAddress & a); }; PLDAP_STRUCT_BEGIN(RTPerson) PLDAP_ATTR_SIMP(RTPerson, PString, cn); // Must be non-empty PLDAP_ATTR_SIMP(RTPerson, PString, c); PLDAP_ATTR_SIMP(RTPerson, PString, o); PLDAP_ATTR_SIMP(RTPerson, PString, surname); PLDAP_ATTR_SIMP(RTPerson, PString, givenName); PLDAP_ATTR_SIMP(RTPerson, PString, rfc822Mailbox); // Must be non-empty PLDAP_ATTR_SIMP(RTPerson, PString, location); PLDAP_ATTR_SIMP(RTPerson, PString, comment); PLDAP_ATTR_SIMP(RTPerson, MSIPAddress, sipAddress); PLDAP_ATTR_SIMP(RTPerson, PWORDArray, sport); PLDAP_ATTR_INIT(RTPerson, unsigned, sflags, 0); PLDAP_ATTR_INIT(RTPerson, unsigned, ssecurity, 0); PLDAP_ATTR_INIT(RTPerson, unsigned, smodop, 0); PLDAP_ATTR_INIT(RTPerson, unsigned, sttl, 3600); PLDAP_ATTR_SIMP(RTPerson, PStringList, sprotid); PLDAP_ATTR_SIMP(RTPerson, PStringList, sprotmimetype); PLDAP_ATTR_INIT(RTPerson, PString, sappid, PProcess::Current().GetName()); // Must be non-empty PLDAP_ATTR_INIT(RTPerson, PString, sappguid, "none"); // Must be non-empty PLDAP_ATTR_SIMP(RTPerson, PStringList, smimetype); PLDAP_ATTR_INIT(RTPerson, BOOL, ilsa32833566, 0); // 1=audio capable PLDAP_ATTR_INIT(RTPerson, BOOL, ilsa32964638, 0); // 1=video capable PLDAP_ATTR_INIT(RTPerson, BOOL, ilsa26214430, 0); // 1=in a call PLDAP_ATTR_INIT(RTPerson, unsigned, ilsa26279966, 0); // unknown PLDAP_ATTR_INIT(RTPerson, unsigned, ilsa39321630, 0); // 1 personal; 2 business user; 4 adults-only PLDAP_ATTR_INIT(RTPerson, time_t, timestamp, PTime().GetTimeInSeconds()); public: PString GetDN() const; PLDAP_STRUCT_END(); BOOL AddPerson( const RTPerson & person ); BOOL ModifyPerson( const RTPerson & person ); BOOL DeletePerson( const RTPerson & person ); BOOL SearchPerson( const PString & canonicalName, RTPerson & person ); PList SearchPeople( const PString & filter ); }; #endif // P_LDAP #endif // _PILS_H // End of file //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/pldap.h0100755000176200056700000003561010362774545017574 0ustar releasepostincr/* * pldap.h * * Lightweight Directory Access Protocol interface class. * * Portable Windows Library * * Copyright (c) 1993-2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pldap.h,v $ * Revision 1.10 2006/01/16 19:52:05 dsandras * Applied patch from Brian Lu to allow compilation on * Solaris using SUN's LDAP. Thanks!! * * Revision 1.9 2004/05/24 12:02:49 csoutheren * Add function to permit setting a limit on the number of results returned * from an LDAP query. Change the default number of results to unlimited, * rather than MAX_INT which apparently is clamped to some arbitrary low value. * Thanks to Damien Sandras * * Revision 1.8 2004/02/20 16:28:27 ykiryanov * if'd LDAP code to enable non-LDAP builds * * Revision 1.7 2003/06/05 23:17:07 rjongbloed * Added functions to get and set LDAP operation timeout. * * Revision 1.6 2003/06/05 05:29:30 rjongbloed * Fixed LDAP bind authentication methods, thanks Ravelli Rossano * * Revision 1.5 2003/04/07 12:00:04 robertj * Fixed search function returning an error if can't find anything for filter. * * Revision 1.4 2003/04/01 07:05:29 robertj * Added ability to specify host:port in opening an LDAP server * * Revision 1.3 2003/03/31 09:02:43 robertj * Added missing return for error number. * * Revision 1.2 2003/03/31 03:32:41 robertj * Major addition of functionality. * * Revision 1.1 2003/03/28 01:15:44 robertj * OpenLDAP support. * * */ #ifndef _PLDAP_H #define _PLDAP_H #ifdef P_USE_PRAGMA #pragma interface #endif #if P_LDAP #include struct ldap; struct ldapmsg; struct ldapmod; struct berval; class PLDAPStructBase; /**This class will create an LDAP client to access a remote LDAP server. */ class PLDAPSession : public PObject { PCLASSINFO(PLDAPSession, PObject); public: /**Create a LDAP client. */ PLDAPSession( const PString & defaultBaseDN = PString::Empty() ); /**Close the sesison on destruction */ ~PLDAPSession(); /**Open the LDAP session to the specified server. The server name string is of the form hostip[:port] where hostip is a host name or IP address and the :port is an optional port number. If not present then the port variable is used. If that is also zero then the default port of 369 is used. */ BOOL Open( const PString & server, WORD port = 0 ); /**Close the LDAP session */ BOOL Close(); /**Determine of session is open. */ BOOL IsOpen() const { return ldapContext != NULL; } /**Set LDAP option parameter (OpenLDAp specific values) */ BOOL SetOption( int optcode, int value ); /**Set LDAP option parameter (OpenLDAP specific values) */ BOOL SetOption( int optcode, void * value ); enum AuthenticationMethod { AuthSimple, AuthSASL, AuthKerberos, #ifdef SOLARIS NumAuthenticationMethod1, NumAuthenticationMethod2 #else NumAuthenticationMethod #endif }; /**Bind to the remote LDAP server. */ BOOL Bind( const PString & who = PString::Empty(), const PString & passwd = PString::Empty(), AuthenticationMethod authMethod = AuthSimple ); class ModAttrib : public PObject { PCLASSINFO(ModAttrib, PObject); public: enum Operation { Add, Replace, Delete, NumOperations }; protected: ModAttrib( const PString & name, Operation op = NumOperations ); public: const PString & GetName() const { return name; } Operation GetOperation() const { return op; } void SetLDAPMod( struct ldapmod & mod, Operation defaultOp ); protected: virtual BOOL IsBinary() const = 0; virtual void SetLDAPModVars(struct ldapmod & mod) = 0; PString name; Operation op; }; class StringModAttrib : public ModAttrib { PCLASSINFO(StringModAttrib, ModAttrib); public: StringModAttrib( const PString & name, Operation op = NumOperations ); StringModAttrib( const PString & name, const PString & value, Operation op = NumOperations ); StringModAttrib( const PString & name, const PStringList & values, Operation op = NumOperations ); void SetValue( const PString & value ); void AddValue( const PString & value ); protected: virtual BOOL IsBinary() const; virtual void SetLDAPModVars(struct ldapmod & mod); PStringList values; PBaseArray pointers; }; class BinaryModAttrib : public ModAttrib { PCLASSINFO(BinaryModAttrib, ModAttrib); public: BinaryModAttrib( const PString & name, Operation op = Add ); BinaryModAttrib( const PString & name, const PBYTEArray & value, Operation op = Add ); BinaryModAttrib( const PString & name, const PList & values, Operation op = Add ); void SetValue( const PBYTEArray & value ); void AddValue( const PBYTEArray & value ); protected: virtual BOOL IsBinary() const; virtual void SetLDAPModVars(struct ldapmod & mod); PList values; PBaseArray pointers; PBYTEArray bervals; }; /**Add a new distringuished name to LDAP dirctory. */ BOOL Add( const PString & dn, const PList & attributes ); /**Add a new distringuished name to LDAP dirctory. */ BOOL Add( const PString & dn, const PStringToString & attributes ); /**Add a new distringuished name to LDAP dirctory. The attributes list is a string array of the form attr=value */ BOOL Add( const PString & dn, const PStringArray & attributes ); /**Add a new distringuished name to LDAP dirctory. The attributes list is a string array of the form attr=value */ BOOL Add( const PString & dn, const PLDAPStructBase & data ); /**Modify an existing distringuished name to LDAP dirctory. */ BOOL Modify( const PString & dn, const PList & attributes ); /**Add a new distringuished name to LDAP dirctory. */ BOOL Modify( const PString & dn, const PStringToString & attributes ); /**Add a new distringuished name to LDAP dirctory. The attributes list is a string array of the form attr=value */ BOOL Modify( const PString & dn, const PStringArray & attributes ); /**Add a new distringuished name to LDAP dirctory. The attributes list is a string array of the form attr=value */ BOOL Modify( const PString & dn, const PLDAPStructBase & data ); /**Delete the distinguished name from LDAP directory. */ BOOL Delete( const PString & dn ); enum SearchScope { ScopeBaseOnly, ScopeSingleLevel, ScopeSubTree, NumSearchScope }; class SearchContext { public: SearchContext(); ~SearchContext(); BOOL IsCompleted() const { return completed; } private: int msgid; struct ldapmsg * result; struct ldapmsg * message; BOOL found; BOOL completed; friend class PLDAPSession; }; /**Start search for specified information. */ BOOL Search( SearchContext & context, const PString & filter, const PStringArray & attributes = PStringList(), const PString & base = PString::Empty(), SearchScope scope = ScopeSubTree ); /**Get the current search result entry. */ BOOL GetSearchResult( SearchContext & context, PStringToString & data ); /**Get an attribute of the current search result entry. */ BOOL GetSearchResult( SearchContext & context, const PString & attribute, PString & data ); /**Get an attribute of the current search result entry. */ BOOL GetSearchResult( SearchContext & context, const PString & attribute, PStringArray & data ); /**Get an attribute of the current search result entry. */ BOOL GetSearchResult( SearchContext & context, const PString & attribute, PArray & data ); /**Get all attributes of the current search result entry. */ BOOL GetSearchResult( SearchContext & context, PLDAPStructBase & data ); /**Get the current search result distinguished name entry. */ PString GetSearchResultDN( SearchContext & context ); /**Get the next search result. */ BOOL GetNextSearchResult( SearchContext & context ); /**Search for specified information, returning all matches. This can be used for simple LDAP databases where all attributes are represented by a string. */ PList Search( const PString & filter, const PStringArray & attributes = PStringList(), const PString & base = PString::Empty(), SearchScope scope = ScopeSubTree ); /**Set the default base DN for use if not specified for searches. */ void SetBaseDN( const PString & dn ) { defaultBaseDN = dn; } /**Set the default base DN for use if not specified for searches. */ const PString & GetBaseDN() const { return defaultBaseDN; } /**Get the last OpenLDAP error code. */ int GetErrorNumber() const { return errorNumber; } /**Get the last OpenLDAP error as text string. */ PString GetErrorText() const; /**Get the OpenLDAP context structure. */ struct ldap * GetOpenLDAP() const { return ldapContext; } /**Get the timeout for LDAP operations. */ const PTimeInterval & GetTimeout() const { return timeout; } /**Set the timeout for LDAP operations. */ void SetTimeout( const PTimeInterval & t ) { timeout = t; } /**Set a limit on the number of results to return */ void SetSearchLimit( const unsigned s ) { searchLimit = s; } protected: struct ldap * ldapContext; int errorNumber; unsigned protocolVersion; PString defaultBaseDN; unsigned searchLimit; PTimeInterval timeout; PString multipleValueSeparator; }; class PLDAPStructBase; class PLDAPAttributeBase : public PObject { PCLASSINFO(PLDAPAttributeBase, PObject); public: PLDAPAttributeBase(const char * name, void * pointer, PINDEX size); const char * GetName() const { return name; } BOOL IsBinary() const { return pointer != NULL; } virtual void Copy(const PLDAPAttributeBase & other) = 0; virtual PString ToString() const; virtual void FromString(const PString & str); virtual PBYTEArray ToBinary() const; virtual void FromBinary(const PArray & data); protected: const char * name; void * pointer; PINDEX size; }; class PLDAPStructBase : public PObject { PCLASSINFO(PLDAPStructBase, PObject); protected: PLDAPStructBase(); PLDAPStructBase & operator=(const PLDAPStructBase &); PLDAPStructBase & operator=(const PStringArray & array); PLDAPStructBase & operator=(const PStringToString & dict); private: PLDAPStructBase(const PLDAPStructBase &) { } public: void PrintOn(ostream & strm) const; PINDEX GetNumAttributes() const { return attributes.GetSize(); } PLDAPAttributeBase & GetAttribute(PINDEX idx) const { return attributes.GetDataAt(idx); } PLDAPAttributeBase * GetAttribute(const char * name) const { return attributes.GetAt(name); } void AddAttribute(PLDAPAttributeBase * var); static PLDAPStructBase & GetInitialiser() { return *PAssertNULL(initialiserInstance); } protected: void EndConstructor(); PDictionary attributes; PLDAPStructBase * initialiserStack; static PMutex initialiserMutex; static PLDAPStructBase * initialiserInstance; }; #define PLDAP_STRUCT_BEGIN(name) \ class name : public PLDAPStructBase { \ public: name() { EndConstructor(); } \ public: name(const name & other) { EndConstructor(); operator=(other); } \ public: name(const PStringArray & array) { EndConstructor(); operator=(array); } \ public: name(const PStringToString & dict) { EndConstructor(); operator=(dict); } \ public: name & operator=(const name & other) { PLDAPStructBase::operator=(other); return *this; } \ public: name & operator=(const PStringArray & array) { PLDAPStructBase::operator=(array); return *this; } \ public: name & operator=(const PStringToString & dict) { PLDAPStructBase::operator=(dict); return *this; } \ PLDAP_ATTR_INIT(name, PString, objectClass, #name); #define PLDAP_ATTRIBUTE(base, type, attribute, pointer, init) \ public: type attribute; \ private: struct PLDAPAttr_##attribute : public PLDAPAttributeBase { \ PLDAPAttr_##attribute() \ : PLDAPAttributeBase(#attribute, pointer, sizeof(type)), \ instance(((base &)base::GetInitialiser()).attribute) \ { init } \ virtual void PrintOn (ostream & s) const { s << instance; } \ virtual void ReadFrom(istream & s) { s >> instance; } \ virtual void Copy(const PLDAPAttributeBase & other) \ { instance = ((PLDAPAttr_##attribute &)other).instance; } \ type & instance; \ } pldapvar_##attribute #define PLDAP_ATTR_SIMP(base, type, attribute) \ PLDAP_ATTRIBUTE(base, type, attribute, NULL, ;) #define PLDAP_ATTR_INIT(base, type, attribute, init) \ PLDAP_ATTRIBUTE(base, type, attribute, NULL, instance = init;) #define PLDAP_BINATTRIB(base, type, attribute) \ PLDAP_ATTRIBUTE(base, type, attribute, &((base &)base::GetInitialiser()).attribute, ;) #define PLDAP_STRUCT_END() \ }; #endif // P_LDAP #endif // _PLDAP_H // End of file //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/pnat.h0100644000176200056700000001236010366313334017415 0ustar releasepostincr/* * pnat.h * * NAT Strategy support for Portable Windows Library. * * Virteos is a Trade Mark of ISVO (Asia) Pte Ltd. * * Copyright (c) 2004 ISVO (Asia) Pte Ltd. All Rights Reserved. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * * The Original Code is derived from and used in conjunction with the * OpenH323 Project (www.openh323.org/) * * The Initial Developer of the Original Code is ISVO (Asia) Pte Ltd. * * * Contributor(s): ______________________________________. * * $Log: pnat.h,v $ * Revision 1.3.2.1 2006/01/27 03:43:24 csoutheren * Backported changes to CVS head into Phobos * * Revision 1.4 2006/01/26 03:23:41 shorne * Fix compile error when merging code * * Revision 1.3 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.2 2005/07/13 11:15:14 csoutheren * Backported NAT abstraction files from isvo branch * * Revision 1.1.2.1 2005/04/25 13:23:19 shorne * Initial version * * */ #include #include #ifndef P_NATMETHOD #define P_NATMETHOD /** PNatMethod Base Network Address Traversal Method class All NAT Traversal Methods are derived off this class. There are quite a few methods of NAT Traversal. The only purpose of this class is to provide a common interface. It is intentionally minimalistic. */ class PNatMethod : public PObject { PCLASSINFO(PNatMethod,PObject); public: /**@name Construction */ //@{ /** Default Contructor */ PNatMethod(); /** Deconstructor */ ~PNatMethod(); //@} /**@name General Functions */ //@{ /** GetExternalAddress Get the acquired External IP Address. */ virtual BOOL GetExternalAddress( PIPSocket::Address & externalAddress, /// External address of router const PTimeInterval & maxAge = 1000 /// Maximum age for caching ) =0; /** CreateSocketPair Create the UDP Socket pair */ virtual BOOL CreateSocketPair( PUDPSocket * & socket1, PUDPSocket * & socket2 ) =0; /**Returns whether the Nat Method is ready and available in assisting in NAT Traversal. The principal is function is to allow the EP to detect various methods and if a method is detected then this method is available for NAT traversal The Order of adding to the PNstStrategy determines which method is used */ virtual BOOL IsAvailable() { return FALSE; }; /**Set the port ranges to be used on local machine. Note that the ports used on the NAT router may not be the same unless some form of port forwarding is present. If the port base is zero then standard operating system port allocation method is used. If the max port is zero then it will be automatically set to the port base + 99. */ virtual void SetPortRanges( WORD portBase, /// Single socket port number base WORD portMax = 0, /// Single socket port number max WORD portPairBase = 0, /// Socket pair port number base WORD portPairMax = 0 /// Socket pair port number max ); //@} protected: struct PortInfo { PMutex mutex; WORD basePort; WORD maxPort; WORD currentPort; } singlePortInfo, pairedPortInfo; }; ///////////////////////////////////////////////////////////// PLIST(PNatList, PNatMethod); ///////////////////////////////////////////////////////////// /** PNatStrategy The main container for all NAT traversal Strategies. */ class PNatStrategy : public PObject { PCLASSINFO(PNatStrategy,PObject); public : /**@name Construction */ //@{ /** Default Contructor */ PNatStrategy(); /** Deconstructor */ ~PNatStrategy(); //@} /**@name Method Handling */ //@{ /** AddMethod This function is used to add the required NAT Traversal Method. The Order of Loading is important The first added has the highest priority. */ void AddMethod(PNatMethod * method); /** GetMethod This function retrieves the first available NAT Traversal Method. If no available NAT Method is found then NULL is returned. */ PNatMethod * GetMethod(); /**Set the port ranges to be used on local machine. Note that the ports used on the NAT router may not be the same unless some form of port forwarding is present. If the port base is zero then standard operating system port allocation method is used. If the max port is zero then it will be automatically set to the port base + 99. */ void SetPortRanges( WORD portBase, /// Single socket port number base WORD portMax = 0, /// Single socket port number max WORD portPairBase = 0, /// Socket pair port number base WORD portPairMax = 0 /// Socket pair port number max ); //@} private: PNatList natlist; }; #endif pwlib_v1_10_2/include/ptclib/psasl.h0100644000176200056700000000552210144613032017567 0ustar releasepostincr/* * sasl.h * * Simple Authentication Security Layer interface classes * * Portable Windows Library * * Copyright (c) 2004 Reitek S.p.A. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: psasl.h,v $ * Revision 1.3 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.2 2004/04/28 11:26:42 csoutheren * Hopefully fixed SASL and SASL2 problems * * Revision 1.1 2004/04/18 12:02:31 csoutheren * Added classes for SASL authentication * Thanks to Federico Pinna and Reitek S.p.A. * * */ #if P_SASL2 #ifndef _PSASL #define _PSASL #ifdef P_USE_PRAGMA #pragma interface #endif #include class PSASLClient : public PObject { PCLASSINFO(PSASLClient, PObject); public: enum PSASLResult { Continue = 1, OK = 0, Fail = -1 }; protected: static PString s_Realm; static PString s_Path; void * m_CallBacks; void * m_ConnState; const PString m_Service; const PString m_UserID; const PString m_AuthID; const PString m_Password; BOOL Start(const PString& mechanism, const char ** output, unsigned& len); PSASLResult Negotiate(const char * input, const char ** output); public: PSASLClient(const PString& service, const PString& uid, const PString& auth, const PString& pwd); ~PSASLClient(); static void SetRealm(const PString& realm) { s_Realm = realm; } static void SetPath(const PString& path) { s_Path = path; } static const PString& GetRealm() { return s_Realm; } static const PString& GetPath() { return s_Path; } const PString& GetService() const { return m_Service; } const PString& GetUserID() const { return m_UserID; } const PString& GetAuthID() const { return m_AuthID; } const PString& GetPassword() const { return m_Password; } BOOL Init(const PString& fqdn, PStringSet& supportedMechanisms); BOOL Start(const PString& mechanism, PString& output); PSASLResult Negotiate(const PString& input, PString& output); BOOL End(); }; #endif // _PSASL #endif // P_SASL2 // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/psnmp.h0100644000176200056700000002231207562315774017624 0ustar releasepostincr/* * psnmp.h * * Simple Network Management Protocol classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: psnmp.h,v $ * Revision 1.9 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.8 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.7 1999/03/09 08:01:46 robertj * Changed comments for doc++ support (more to come). * * Revision 1.6 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.5 1998/11/30 02:50:55 robertj * New directory structure * * Revision 1.4 1998/09/23 06:27:38 robertj * Added open source copyright license. * * Revision 1.3 1996/11/04 03:56:16 robertj * Added selectable read buffer size. * * Revision 1.2 1996/09/20 12:19:36 robertj * Used read timeout instead of member variable. * * Revision 1.1 1996/09/14 12:58:57 robertj * Initial revision * * Revision 1.6 1996/05/09 13:23:49 craigs * Added trap functions * * Revision 1.5 1996/04/23 12:12:46 craigs * Changed to use GetErrorText function * * Revision 1.4 1996/04/16 13:20:43 craigs * Final version prior to beta1 release * * Revision 1.3 1996/04/15 09:05:30 craigs * Latest version prior to integration with Robert's changes * * Revision 1.2 1996/04/01 12:36:12 craigs * Fixed RCS header, added IPAddress functions * * Revision 1.1 1996/03/02 06:49:51 craigs * Initial revision * */ #ifndef _PSNMP_H #define _PSNMP_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include ////////////////////////////////////////////////////////////////////////// /** A list of object IDs and their values */ class PSNMPVarBindingList : public PObject { PCLASSINFO(PSNMPVarBindingList, PObject) public: void Append(const PString & objectID); void Append(const PString & objectID, PASNObject * obj); void AppendString(const PString & objectID, const PString & str); void RemoveAll(); PINDEX GetSize() const; PString GetObjectID(PINDEX idx) const; PASNObject & operator[](PINDEX idx) const; void PrintOn(ostream & strm) const; protected: PStringList objectIds; PASNObjectList values; }; ////////////////////////////////////////////////////////////////////////// /** A descendant of PUDPSocket which can perform SNMP calls */ class PSNMP : public PIndirectChannel { PCLASSINFO(PSNMP, PIndirectChannel) public: enum ErrorType { // Standard RFC1157 errors NoError = 0, TooBig = 1, NoSuchName = 2, BadValue = 3, ReadOnly = 4, GenErr = 5, // Additional errors NoResponse, MalformedResponse, SendFailed, RxBufferTooSmall, TxDataTooBig, NumErrors }; enum RequestType { GetRequest = 0, GetNextRequest = 1, GetResponse = 2, SetRequest = 3, Trap = 4, }; enum { TrapPort = 162 }; enum TrapType { ColdStart = 0, WarmStart = 1, LinkDown = 2, LinkUp = 3, AuthenticationFailure = 4, EGPNeighbourLoss = 5, EnterpriseSpecific = 6, NumTrapTypes }; static PString GetErrorText(ErrorType err); static PString GetTrapTypeText(PINDEX code); static void SendEnterpriseTrap ( const PIPSocket::Address & addr, const PString & community, const PString & enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, WORD sendPort = TrapPort); static void SendEnterpriseTrap ( const PIPSocket::Address & addr, const PString & community, const PString & enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList & vars, WORD sendPort = TrapPort); static void SendTrap ( const PIPSocket::Address & addr, PSNMP::TrapType trapType, const PString & community, const PString & enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList & vars, WORD sendPort = TrapPort); static void SendTrap ( const PIPSocket::Address & addr, PSNMP::TrapType trapType, const PString & community, const PString & enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList & vars, const PIPSocket::Address & agentAddress, WORD sendPort = TrapPort); static void WriteTrap ( PChannel & channel, PSNMP::TrapType trapType, const PString & community, const PString & enterprise, PINDEX specificTrap, PASNUnsigned timeTicks, const PSNMPVarBindingList & vars, const PIPSocket::Address & agentAddress); static BOOL DecodeTrap(const PBYTEArray & readBuffer, PINDEX & version, PString & community, PString & enterprise, PIPSocket::Address & address, PINDEX & genericTrapType, PINDEX & specificTrapType, PASNUnsigned & timeTicks, PSNMPVarBindingList & varsOut); }; ////////////////////////////////////////////////////////////////////////// /** Class which gets SNMP data */ class PSNMPClient : public PSNMP { PCLASSINFO(PSNMPClient, PSNMP) public: PSNMPClient(const PString & host, PINDEX retryMax = 5, PINDEX timeoutMax = 5, PINDEX rxBufferSize = 1500, PINDEX txSize = 484); PSNMPClient(PINDEX retryMax = 5, PINDEX timeoutMax = 5, PINDEX rxBufferSize = 1500, PINDEX txSize = 484); void SetVersion(PASNInt version); PASNInt GetVersion() const; void SetCommunity(const PString & str); PString GetCommunity() const; void SetRequestID(PASNInt requestID); PASNInt GetRequestID() const; BOOL WriteGetRequest (PSNMPVarBindingList & varsIn, PSNMPVarBindingList & varsOut); BOOL WriteGetNextRequest (PSNMPVarBindingList & varsIn, PSNMPVarBindingList & varsOut); BOOL WriteSetRequest (PSNMPVarBindingList & varsIn, PSNMPVarBindingList & varsOut); ErrorType GetLastErrorCode() const; PINDEX GetLastErrorIndex() const; PString GetLastErrorText() const; protected: BOOL WriteRequest (PASNInt requestCode, PSNMPVarBindingList & varsIn, PSNMPVarBindingList & varsOut); BOOL ReadRequest(PBYTEArray & readBuffer); PString hostName; PString community; PASNInt requestId; PASNInt version; PINDEX retryMax; PINDEX lastErrorIndex; ErrorType lastErrorCode; PBYTEArray readBuffer; PINDEX maxRxSize; PINDEX maxTxSize; }; ////////////////////////////////////////////////////////////////////////// /** Class which supplies SNMP data */ class PSNMPServer : public PSNMP { PCLASSINFO(PSNMPServer, PSNMP) public: virtual void OnGetRequest (PSNMPVarBindingList & vars); virtual void OnGetNextRequest (PSNMPVarBindingList & vars); virtual void OnSetRequest (PSNMPVarBindingList & vars); BOOL SendGetResponse (PSNMPVarBindingList & vars); }; #endif // End of File. pwlib_v1_10_2/include/ptclib/psoap.h0100644000176200056700000001611110343317551017573 0ustar releasepostincr/* * psoap.h * * SOAP client / server classes. * * Portable Windows Library * * Copyright (c) 2003 Andreas Sikkema * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Andreas Sikkema * * Contributor(s): ______________________________________. * * $Log: psoap.h,v $ * Revision 1.5 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2003/03/31 06:21:19 craigs * Split the expat wrapper from the XML file handling to allow reuse of the parser * * Revision 1.3 2003/02/09 23:31:39 robertj * Added referention PString's for efficiency. * * Revision 1.2 2003/02/09 23:22:37 robertj * Fixed spelling errors, and setting return values, thanks Andreas Sikkema * * Revision 1.1 2003/02/04 22:46:48 robertj * Added basic SOAP support, thanks Andreas Sikkema * */ #ifndef _PSOAP_H #define _PSOAP_H #ifdef P_USE_PRAGMA #pragma interface #endif #if P_EXPAT #include #include #define DEFAULT_SOAP_URL "/soap" /** SOAP Message classes #################### */ //! SOAP message according to http://www.w3.org/TR/SOAP/ class PSOAPMessage : public PXML { PCLASSINFO(PSOAPMessage, PXML); public: //! Construct a SOAP message PSOAPMessage( int options = PXMLParser::Indent + PXMLParser::NewLineAfterElement ); //! Construct a SOAP message with method name and namespace already provided PSOAPMessage( const PString & method, const PString & nameSpace ); //! Set the method name and namespace void SetMethod( const PString & name, const PString & nameSpace ); //! Get the method name and namespace void GetMethod( PString & name, PString & nameSpace ); //! Add a simple parameter called name, with type type and value value void AddParameter( PString name, PString type, PString value ); //! Add a parameter using a PXMLElement void AddParameter( PXMLElement* parameter, BOOL dirty = TRUE ); //! Get parameter "name" with type "string" BOOL GetParameter( const PString & name, PString & value ); //! Get parameter "name" with type "int" BOOL GetParameter( const PString & name, int & value ); //! Get parameter "name" PXMLElement* GetParameter( const PString & name ); //! Print the contents of this SOAP message on an ostream void PrintOn(ostream & strm) const; //! Output the SOAP message to a string PString AsString( void ); //! Parse a string for a valid SOAP message BOOL Load(const PString & str); //! State of the PSOAPMessage when used as a response enum { //! Everything is alright NoFault, //! Invalid namespace for SOAP Envelope VersionMismatch, //! Error processing SOAP Header field "mustUnderstand" MustUnderstand, //! The request was incorrectly formed or did not contain the appropriate information in order to succeed Client, //! The request could not be processed for reasons not directly attributable to the contents of the message itself but rather to the processing of the message Server }; PINDEX GetFaultCode() const { return faultCode; } PString GetFaultText() const { return faultText; } void SetFault( PINDEX code, const PString & text ); private: PXMLElement* pSOAPBody; PXMLElement* pSOAPMethod; PString faultText; PINDEX faultCode; }; /** SOAP Server classes #################### */ class PSOAPServerRequestResponse : public PObject { PCLASSINFO( PSOAPServerRequestResponse, PObject ); public: PSOAPServerRequestResponse( PSOAPMessage & _request ) : request( _request ) { } PSOAPMessage & request; PSOAPMessage response; }; //! Create an association between a method and its "notifier", the handler function class PSOAPServerMethod : public PString { PCLASSINFO( PSOAPServerMethod, PString ); public: PSOAPServerMethod( const PString & name ) : PString( name ) { } PNotifier methodFunc; }; PSORTED_LIST(PSOAPServerMethodList, PSOAPServerMethod); //! This resource will bind the methods to an http resource (a url) class PSOAPServerResource : public PHTTPResource { PCLASSINFO( PSOAPServerResource, PHTTPResource ); public: PSOAPServerResource(); PSOAPServerResource( const PHTTPAuthority & auth ///< Authorisation for the resource. ); PSOAPServerResource( const PURL & url ///< Name of the resource in URL space. ); PSOAPServerResource( const PURL & url, ///< Name of the resource in URL space. const PHTTPAuthority & auth ///< Authorisation for the resource. ); // overrides from PHTTPResource BOOL LoadHeaders( PHTTPRequest & request ); BOOL OnPOSTData( PHTTPRequest & request, const PStringToString & data ); // new functions virtual BOOL OnSOAPRequest( const PString & body, PString & reply ); virtual BOOL SetMethod( const PString & methodName, const PNotifier & func ); BOOL OnSOAPRequest( const PString & methodName, PSOAPMessage & request, PString & reply ); virtual PSOAPMessage FormatFault( PINDEX code, const PString & str ); //! Use this method to have the server check for SOAPAction field in HTTP header /*! Default is " ", which means don't care, more or less. Anything else means the header has to be filled in with something meaningful. It has to exist anyway. */ void SetSOAPAction( PString saction ) { soapAction = saction; } protected: PMutex methodMutex; PSOAPServerMethodList methodList; private: PString soapAction; }; /** SOAP client classes #################### */ class PSOAPClient : public PObject { PCLASSINFO( PSOAPClient, PObject ); public: PSOAPClient( const PURL & url ); void SetTimeout( const PTimeInterval & _timeout ) { timeout = _timeout; } BOOL MakeRequest( const PString & method, const PString & nameSpace ); BOOL MakeRequest( const PString & method, const PString & nameSpace, PSOAPMessage & response ); BOOL MakeRequest( PSOAPMessage & request, PSOAPMessage & response ); PString GetFaultText() const { return faultText; } PINDEX GetFaultCode() const { return faultCode; } //! Set a specific SOAPAction field in the HTTTP header, default = " " void setSOAPAction( PString saction ) { soapAction = saction; } protected: BOOL PerformRequest( PSOAPMessage & request, PSOAPMessage & response ); PURL url; PINDEX faultCode; PString faultText; PTimeInterval timeout; private: PString soapAction; }; #endif // P_EXPAT #endif // _PSOAP_H // End of file //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/pssl.h0100644000176200056700000004115710343317551017442 0ustar releasepostincr/* * pssl.h * * Secure Sockets Layer channel interface class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pssl.h,v $ * Revision 1.20 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.19 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.18 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.17 2002/03/28 07:26:36 robertj * Added Diffie-Hellman parameters wrapper class. * * Revision 1.16 2001/12/13 09:15:20 robertj * Added function to get private key as ray DER binary data or as base64 string. * * Revision 1.15 2001/12/06 04:06:03 robertj * Removed "Win32 SSL xxx" build configurations in favour of system * environment variables to select optional libraries. * * Revision 1.14 2001/10/31 01:30:40 robertj * Added enhancements for saving/loading/creating certificates and keys. * * Revision 1.13 2001/09/10 02:51:22 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.12 2001/06/01 00:53:59 robertj * Added certificate constructor that takes a PBYTEArray * * Revision 1.11 2001/05/16 06:02:05 craigs * Changed to allow detection of non-SSL connection to SecureHTTPServiceProcess * * Revision 1.10 2000/11/14 08:33:16 robertj * Added certificate and private key classes. * * Revision 1.9 2000/08/25 08:11:02 robertj * Fixed OpenSSL support so can operate as a server channel. * * Revision 1.8 2000/08/04 12:52:18 robertj * SSL changes, added error functions, removed need to have openssl include directory in app. * * Revision 1.7 2000/01/10 02:23:18 craigs * Update for new OpenSSL * * Revision 1.6 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.5 1998/12/04 13:01:51 craigs * Changed for SSLeay 0.9 * * Revision 1.4 1998/09/23 06:19:50 robertj * Added open source copyright license. * * Revision 1.3 1997/05/04 02:49:52 craigs * Added support for client and server certificates * * Revision 1.1 1996/11/15 07:37:48 craigs * Initial revision * */ #ifndef _PSSL_H #define _PSSL_H #ifdef P_USE_PRAGMA #pragma interface #endif #include struct ssl_st; struct ssl_ctx_st; struct x509_st; struct evp_pkey_st; struct dh_st; enum PSSLFileTypes { PSSLFileTypePEM, PSSLFileTypeASN1, PSSLFileTypeDEFAULT }; /**Private key for SSL. This class embodies a common environment for all private keys used by the PSSLContext and PSSLChannel classes. */ class PSSLPrivateKey : public PObject { PCLASSINFO(PSSLPrivateKey, PObject); public: /**Create an empty private key. */ PSSLPrivateKey(); /**Create a new RSA private key. */ PSSLPrivateKey( unsigned modulus, ///< Number of bits void (*callback)(int,int,void *) = NULL, ///< Progress callback function void *cb_arg = NULL ///< Argument passed to callback ); /**Create a new private key given the file. The type of the private key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ PSSLPrivateKey( const PFilePath & keyFile, ///< Private key file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to read ); /**Create private key from the binary ASN1 DER encoded data specified. */ PSSLPrivateKey( const BYTE * keyData, ///< Private key data PINDEX keySize ///< Size of private key data ); /**Create private key from the binary ASN1 DER encoded data specified. */ PSSLPrivateKey( const PBYTEArray & keyData ///< Private key data ); /**Create a copy of the private key. */ PSSLPrivateKey( const PSSLPrivateKey & privKey ); /**Create a copy of the private key. */ PSSLPrivateKey & operator=( const PSSLPrivateKey & privKay ); /**Destroy and release storage for private key. */ ~PSSLPrivateKey(); /**Get internal OpenSSL private key structure. */ operator evp_pkey_st *() const { return key; } /**Create a new private key. */ BOOL Create( unsigned modulus, ///< Number of bits void (*callback)(int,int,void *) = NULL, ///< Progress callback function void *cb_arg = NULL ///< Argument passed to callback ); /**Get the certificate as binary ASN1 DER encoded data. */ PBYTEArray GetData() const; /**Get the certificate as ASN1 DER base64 encoded data. */ PString AsString() const; /**Load private key from file. The type of the private key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ BOOL Load( const PFilePath & keyFile, ///< Private key file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to read ); /**Save private key to file. The type of the private key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ BOOL Save( const PFilePath & keyFile, ///< Private key file BOOL append = FALSE, ///< Append to file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to write ); protected: evp_pkey_st * key; }; /**Certificate for SSL. This class embodies a common environment for all certificates used by the PSSLContext and PSSLChannel classes. */ class PSSLCertificate : public PObject { PCLASSINFO(PSSLCertificate, PObject); public: /**Create an empty certificate. */ PSSLCertificate(); /**Create a new certificate given the file. The type of the certificate key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ PSSLCertificate( const PFilePath & certFile, ///< Certificate file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to read ); /**Create certificate from the binary ASN1 DER encoded data specified. */ PSSLCertificate( const BYTE * certData, ///< Certificate data PINDEX certSize ///< Size of certificate data ); /**Create certificate from the binary ASN1 DER encoded data specified. */ PSSLCertificate( const PBYTEArray & certData ///< Certificate data ); /**Create certificate from the ASN1 DER base64 encoded data specified. */ PSSLCertificate( const PString & certString ///< Certificate data as string ); /**Create a copy of the certificate. */ PSSLCertificate( const PSSLCertificate & cert ); /**Create a copy of the certificate. */ PSSLCertificate & operator=( const PSSLCertificate & cert ); /**Destroy and release storage for certificate. */ ~PSSLCertificate(); /**Get internal OpenSSL X509 structure. */ operator x509_st *() const { return certificate; } /**Create a new root certificate. The subject name is a string of the form "/name=value/name=value" where name is a short name for the field and value is a string value for the field for example: "/C=ZA/SP=Western Cape/L=Cape Town/O=Thawte Consulting cc" "/OU=Certification Services Division/CN=Thawte Server CA" "/Email=server-certs@thawte.com" */ BOOL CreateRoot( const PString & subject, ///< Subject name for certificate const PSSLPrivateKey & key ///< Key to sign certificate with ); /**Get the certificate as binary ASN1 DER encoded data. */ PBYTEArray GetData() const; /**Get the certificate as ASN1 DER base64 encoded data. */ PString AsString() const; /**Load certificate from file. The type of the certificate key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ BOOL Load( const PFilePath & certFile, ///< Certificate file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to read ); /**Save certificate to file. The type of the certificate key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ BOOL Save( const PFilePath & keyFile, ///< Certificate key file BOOL append = FALSE, ///< Append to file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to write ); protected: x509_st * certificate; }; /**Diffie-Hellman parameters for SSL. This class embodies a set of Diffie Helman parameters as used by PSSLContext and PSSLChannel classes. */ class PSSLDiffieHellman : public PObject { PCLASSINFO(PSSLDiffieHellman, PObject); public: /**Create an empty set of Diffie-Hellman parameters. */ PSSLDiffieHellman(); /**Create a new set of Diffie-Hellman parameters given the file. The type of the file can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ PSSLDiffieHellman( const PFilePath & dhFile, ///< Diffie-Hellman parameters file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to read ); /**Create a set of Diffie-Hellman parameters. */ PSSLDiffieHellman( const BYTE * pData, ///< P data PINDEX pSize, ///< Size of P data const BYTE * gData, ///< G data PINDEX gSize ///< Size of G data ); /**Create a copy of the Diffie-Hellman parameters. */ PSSLDiffieHellman( const PSSLDiffieHellman & dh ); /**Create a copy of the Diffie-Hellman parameters. */ PSSLDiffieHellman & operator=( const PSSLDiffieHellman & dh ); /**Destroy and release storage for Diffie-Hellman parameters. */ ~PSSLDiffieHellman(); /**Get internal OpenSSL DH structure. */ operator dh_st *() const { return dh; } /**Load Diffie-Hellman parameters from file. The type of the file can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file. */ BOOL Load( const PFilePath & dhFile, ///< Diffie-Hellman parameters file PSSLFileTypes fileType = PSSLFileTypeDEFAULT ///< Type of file to read ); protected: dh_st * dh; }; /**Context for SSL channels. This class embodies a common environment for all connections made via SSL using the PSSLChannel class. It includes such things as the version of SSL and certificates, CA's etc. */ class PSSLContext { public: /**Create a new context for SSL channels. An optional session ID may be provided in the context. This is used to identify sessions across multiple channels in this context. The session ID is a completely arbitrary block of data. If sessionId is non NULL and idSize is zero, then sessionId is assumed to be a pointer to a C string. */ PSSLContext( const void * sessionId = NULL, ///< Pointer to session ID PINDEX idSize = 0 ///< Size of session ID ); /**Clean up the SSL context. */ ~PSSLContext(); /**Get the internal SSL context structure. */ operator ssl_ctx_st *() const { return context; } /**Set the path to locate CA certificates. */ BOOL SetCAPath( const PDirectory & caPath ///< Directory for CA certificates ); /**Set the CA certificate file. */ BOOL SetCAFile( const PFilePath & caFile ///< CA certificate file ); /**Use the certificate specified. */ BOOL UseCertificate( const PSSLCertificate & certificate ); /**Use the private key specified. */ BOOL UsePrivateKey( const PSSLPrivateKey & key ); /**Use the Diffie-Hellman parameters specified. */ BOOL UseDiffieHellman( const PSSLDiffieHellman & dh ); /**Set the available ciphers to those listed. */ BOOL SetCipherList( const PString & ciphers ///< List of cipher names. ); protected: ssl_ctx_st * context; }; /**This class will start a secure SSL based channel. */ class PSSLChannel : public PIndirectChannel { PCLASSINFO(PSSLChannel, PIndirectChannel) public: /**Create a new channel given the context. If no context is given a default one is created. */ PSSLChannel( PSSLContext * context = NULL, ///< Context for SSL channel BOOL autoDeleteContext = FALSE ///< Flag for context to be automatically deleted. ); PSSLChannel( PSSLContext & context ///< Context for SSL channel ); /**Close and clear the SSL channel. */ ~PSSLChannel(); // Overrides from PChannel virtual BOOL Read(void * buf, PINDEX len); virtual BOOL Write(const void * buf, PINDEX len); virtual BOOL Close(); virtual BOOL Shutdown(ShutdownValue) { return TRUE; } virtual PString GetErrorText(ErrorGroup group = NumErrorGroups) const; virtual BOOL ConvertOSError(int error, ErrorGroup group = LastGeneralError); // New functions /**Accept a new inbound connection (server). This version expects that the indirect channel has already been opened using Open() beforehand. */ BOOL Accept(); /**Accept a new inbound connection (server). */ BOOL Accept( PChannel & channel ///< Channel to attach to. ); /**Accept a new inbound connection (server). */ BOOL Accept( PChannel * channel, ///< Channel to attach to. BOOL autoDelete = TRUE ///< Flag for if channel should be automatically deleted. ); /**Connect to remote server. This version expects that the indirect channel has already been opened using Open() beforehand. */ BOOL Connect(); /**Connect to remote server. */ BOOL Connect( PChannel & channel ///< Channel to attach to. ); /**Connect to remote server. */ BOOL Connect( PChannel * channel, ///< Channel to attach to. BOOL autoDelete = TRUE ///< Flag for if channel should be automatically deleted. ); /**Use the certificate specified. */ BOOL UseCertificate( const PSSLCertificate & certificate ); /**Use the private key file specified. */ BOOL UsePrivateKey( const PSSLPrivateKey & key ); enum VerifyMode { VerifyNone, VerifyPeer, VerifyPeerMandatory, }; void SetVerifyMode( VerifyMode mode ); PSSLContext * GetContext() const { return context; } virtual BOOL RawSSLRead(void * buf, PINDEX & len); protected: /**This callback is executed when the Open() function is called with open channels. It may be used by descendent channels to do any handshaking required by the protocol that channel embodies. The default behaviour "connects" the channel to the OpenSSL library. @return Returns TRUE if the protocol handshaking is successful. */ virtual BOOL OnOpen(); protected: PSSLContext * context; BOOL autoDeleteContext; ssl_st * ssl; }; #endif // _PSSL_H pwlib_v1_10_2/include/ptclib/pstun.h0100644000176200056700000002343210343317551017626 0ustar releasepostincr/* * pstun.h * * STUN client * * Portable Windows Library * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pstun.h,v $ * Revision 1.12 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.11 2005/07/13 11:15:15 csoutheren * Backported NAT abstraction files from isvo branch * * Revision 1.10 2005/06/20 10:55:16 rjongbloed * Changed the timeout and retries so if there is a blocking firewall it does not take 15 seconds to find out! * Added access functions so timeout and retries are application configurable. * Added function (and << operator) to get NAT type enum as string. * * Revision 1.9.4.1 2005/04/25 13:21:36 shorne * Add Support for other NAT methods * * Revision 1.9 2004/11/25 07:23:46 csoutheren * Added IsSupportingRTP function to simplify detecting when STUN supports RTP * * Revision 1.8 2004/03/14 05:47:52 rjongbloed * Fixed incorrect detection of symmetric NAT (eg Linux masquerading) and also * some NAT systems which are partially blocked due to firewall rules. * * Revision 1.7 2004/02/24 11:15:48 rjongbloed * Added function to get external router address, also did a bunch of documentation. * * Revision 1.6 2004/01/17 17:54:02 rjongbloed * Added function to get server name from STUN client. * * Revision 1.5 2003/10/05 00:56:25 rjongbloed * Rewrite of STUN to not to use imported code with undesirable license. * * Revision 1.4 2003/02/05 06:26:49 robertj * More work in making the STUN usable for Symmetric NAT systems. * * Revision 1.3 2003/02/04 07:01:02 robertj * Added ip/port version of constructor. * * Revision 1.2 2003/02/04 05:05:55 craigs * Added new functions * * Revision 1.1 2003/02/04 03:31:04 robertj * Added STUN * */ #ifndef _PSTUN_H #define _PSTUN_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include #include /**UDP socket that has been created by the STUN client. */ class PSTUNUDPSocket : public PUDPSocket { PCLASSINFO(PSTUNUDPSocket, PUDPSocket); public: PSTUNUDPSocket(); virtual BOOL GetLocalAddress( Address & addr ///< Variable to receive hosts IP address ); virtual BOOL GetLocalAddress( Address & addr, ///< Variable to receive peer hosts IP address WORD & port ///< Variable to receive peer hosts port number ); protected: PIPSocket::Address externalIP; friend class PSTUNClient; }; /**STUN client. */ class PSTUNClient : public PNatMethod { PCLASSINFO(PSTUNClient, PNatMethod); public: enum { DefaultPort = 3478 }; PSTUNClient( const PString & server, WORD portBase = 0, WORD portMax = 0, WORD portPairBase = 0, WORD portPairMax = 0 ); PSTUNClient( const PIPSocket::Address & serverAddress, WORD serverPort = DefaultPort, WORD portBase = 0, WORD portMax = 0, WORD portPairBase = 0, WORD portPairMax = 0 ); /**Get the current STUN server address and port being used. */ PString GetServer() const; /**Set the STUN server to use. The server string may be of the form host:port. If :port is absent then the default port 3478 is used. The substring port can also be a service name as found in /etc/services. The host substring may be a DNS name or explicit IP address. */ BOOL SetServer( const PString & server ); /**Set the STUN server to use by IP address and port. If serverPort is zero then the default port of 3478 is used. */ BOOL SetServer( const PIPSocket::Address & serverAddress, WORD serverPort = 0 ); enum NatTypes { UnknownNat, OpenNat, ConeNat, RestrictedNat, PortRestrictedNat, SymmetricNat, SymmetricFirewall, BlockedNat, PartialBlockedNat, NumNatTypes }; /**Determine via the STUN protocol the NAT type for the router. This will cache the last determine NAT type. Use the force variable to guarantee an up to date value. */ NatTypes GetNatType( BOOL force = FALSE ///< Force a new check ); /**Determine via the STUN protocol the NAT type for the router. As for GetNatType() but returns an English string for the type. */ PString GetNatTypeName( BOOL force = FALSE ///< Force a new check ) { return GetNatTypeString(GetNatType(force)); } /**Get NatTypes enumeration as an English string for the type. */ static PString GetNatTypeString( NatTypes type ///< NAT Type to get name of ); enum RTPSupportTypes { RTPOK, RTPUnknown, RTPUnsupported, RTPIfSendMedia }; /**Return an indication if the current STUN type supports RTP Use the force variable to guarantee an up to date test */ RTPSupportTypes IsSupportingRTP( BOOL force = FALSE ///< Force a new check ); /**Determine the external router address. This will send UDP packets out using the STUN protocol to determine the intervening routers external IP address. A cached address is returned provided it is no older than the time specified. */ virtual BOOL GetExternalAddress( PIPSocket::Address & externalAddress, ///< External address of router const PTimeInterval & maxAge = 1000 ///< Maximum age for caching ); /**Create a single socket. The STUN protocol is used to create a socket for which the external IP address and port numbers are known. A PUDPSocket descendant is returned which will, in response to GetLocalAddress() return the externally visible IP and port rather than the local machines IP and socket. The will create a new socket pointer. It is up to the caller to make sure the socket is deleted to avoid memory leaks. The socket pointer is set to NULL if the function fails and returns FALSE. */ BOOL CreateSocket( PUDPSocket * & socket ); /**Create a socket pair. The STUN protocol is used to create a pair of sockets with adjacent port numbers for which the external IP address and port numbers are known. PUDPSocket descendants are returned which will, in response to GetLocalAddress() return the externally visible IP and port rather than the local machines IP and socket. The will create new socket pointers. It is up to the caller to make sure the sockets are deleted to avoid memory leaks. The socket pointers are set to NULL if the function fails and returns FALSE. */ virtual BOOL CreateSocketPair( PUDPSocket * & socket1, PUDPSocket * & socket2 ); /**Get the timeout for responses from STUN server. */ const PTimeInterval GetTimeout() const { return replyTimeout; } /**Set the timeout for responses from STUN server. */ void SetTimeout( const PTimeInterval & timeout ///< New timeout in milliseconds ) { replyTimeout = timeout; } /**Get the number of retries for responses from STUN server. */ PINDEX GetRetries() const { return pollRetries; } /**Set the number of retries for responses from STUN server. */ void SetRetries( PINDEX retries ///< Number of retries ) { pollRetries = retries; } /**Get the number of sockets to create in attempt to get a port pair. RTP requires a pair of consecutive ports. To get this several sockets must be opened and fired through the NAT firewall to get a pair. The busier the firewall the more sockets will be required. */ PINDEX GetSocketsForPairing() const { return numSocketsForPairing; } /**Set the number of sockets to create in attempt to get a port pair. RTP requires a pair of consecutive ports. To get this several sockets must be opened and fired through the NAT firewall to get a pair. The busier the firewall the more sockets will be required. */ void SetSocketsForPairing( PINDEX numSockets ///< Number opf sockets to create ) { numSocketsForPairing = numSockets; } /**Returns whether the Nat Method is ready and available in assisting in NAT Traversal. The principal is this function is to allow the EP to detect various methods and if a method is detected then this method is available for NAT traversal. The availablity of the STUN Method is dependant on the Type of NAT being used. */ virtual BOOL IsAvailable(); protected: PIPSocket::Address serverAddress; WORD serverPort; PTimeInterval replyTimeout; PINDEX pollRetries; PINDEX numSocketsForPairing; bool OpenSocket(PUDPSocket & socket, PortInfo & portInfo) const; NatTypes natType; PIPSocket::Address cachedExternalAddress; PTime timeAddressObtained; }; inline ostream & operator<<(ostream & strm, PSTUNClient::NatTypes type) { return strm << PSTUNClient::GetNatTypeString(type); } #endif // _PSTUN_H // End of file //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/ptts.h0100644000176200056700000000513710166444502017451 0ustar releasepostincr/* * ptts.h * * Text To Speech classes * * Portable Windows Library * * Copyright (c) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ptts.h,v $ * Revision 1.7 2005/01/04 07:44:02 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.6 2004/07/07 07:18:43 csoutheren * Removed warnings on Linux from Windows static global hacks * * Revision 1.5 2004/07/06 10:12:51 csoutheren * Added static integer o factory template to assist in ensuring factories are instantiated * * Revision 1.4 2004/06/19 07:18:58 csoutheren * Change TTS engine registration to use abstract factory code * * Revision 1.3 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.2 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.1 2002/08/06 04:45:38 craigs * Initial version * */ #ifndef _PTEXTTOSPEECH #define _PTEXTTOSPEECH #ifdef P_USE_PRAGMA #pragma interface #endif #include #include class PTextToSpeech : public PObject { PCLASSINFO(PTextToSpeech, PObject); public: enum TextType { Default, Literal, Digits, Number, Currency, Time, Date, Phone, IPAddress, Duration }; virtual PStringArray GetVoiceList() = 0; virtual BOOL SetVoice(const PString & voice) = 0; virtual BOOL SetRate(unsigned rate) = 0; virtual unsigned GetRate() = 0; virtual BOOL SetVolume(unsigned volume) = 0; virtual unsigned GetVolume() = 0; virtual BOOL OpenFile (const PFilePath & fn) = 0; virtual BOOL OpenChannel(PChannel * chanel) = 0; virtual BOOL IsOpen() = 0; virtual BOOL Close () = 0; virtual BOOL Speak (const PString & text, TextType hint = Default) = 0; }; #endif pwlib_v1_10_2/include/ptclib/pwavfile.h0100644000176200056700000004446610343317551020304 0ustar releasepostincr/* * pwavfile.h * * WAV file I/O channel class. * * Portable Windows Library * * Copyright (c) 2001 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is * Roger Hardiman * and Shawn Pai-Hsiang Hsiao * * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pwavfile.h,v $ * Revision 1.23 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.22 2005/10/30 23:25:51 csoutheren * Fixed formatting * Removed throw() declarations (PWLib does not do exceptions) * Removed duplicate destructor declarations and definitions * * Revision 1.21 2005/10/30 19:41:53 dominance * fixed most of the warnings occuring during compilation * * Revision 1.20 2005/06/09 00:33:12 csoutheren * Fixed crash problem caused by recent leak fix * Removed bogus error when reading all of file contents in a single read * * Revision 1.19 2005/05/12 05:25:04 csoutheren * PWAVFile format abstract factory must use a PCaseless as a key * * Revision 1.18 2005/03/19 02:52:53 csoutheren * Fix warnings from gcc 4.1-20050313 shapshot * * Revision 1.17 2005/01/04 07:44:02 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.16 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.15 2004/11/08 04:07:40 csoutheren * Fixed crash opportunity under some conditions * Fixed incorrect WAV file type display * * Revision 1.14 2004/07/15 03:12:41 csoutheren * Migrated changes from crs_vxnml_devel branch into main trunk * * Revision 1.13.4.4 2004/07/13 08:13:04 csoutheren * Lots of implementation of factory-based PWAVFile * * Revision 1.13.4.3 2004/07/12 09:17:19 csoutheren * Fixed warnings and errors under Linux * * Revision 1.13.4.2 2004/07/12 08:30:16 csoutheren * More fixes for abstract factory implementation of PWAVFile * * Revision 1.13.4.1 2004/07/07 07:07:41 csoutheren * Changed PWAVFile to use abstract factories (extensively) * Removed redundant blocking/unblocking when using G.723.1 * More support for call transfer * * Revision 1.13 2003/03/07 06:12:05 robertj * Added more WAV file "magic numbers". * * Revision 1.12 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.11 2002/06/20 00:51:38 craigs * Added virtuals to allow overriding * * Revision 1.10 2002/05/21 01:56:53 robertj * Removed the enum which made yet another set of magic numbers for audio * formats, now uses the WAV file format numbers. * Fixed failure to write header when destroying object without and explicit * call to Close(). * Fixed missing Open() function which does not have file name parameter. * Added ability to set the audio format after construction. * * Revision 1.9 2002/01/22 03:55:07 craigs * Added #define guards when file moved to PTCLib * * Revision 1.8 2002/01/13 21:00:41 rogerh * The type of new .WAV files must now be specified in the class constructor. * Take out Open() function from the last commit and create a new Open() * function which replaces the one in the PFile base class. * * Revision 1.7 2002/01/11 16:33:46 rogerh * Create a PWAVFile Open() function, which processes the WAV header * * Revision 1.6 2001/10/16 13:27:37 rogerh * Add support for writing G.723.1 WAV files. * MS Windows can play G.723.1 WAV Files in Media Player and Sound Recorder. * Sound Recorder can also convert them to normal PCM format WAV files. * Thanks go to M.Stoychev for sample WAV files. * * Revision 1.5 2001/10/15 11:48:15 rogerh * Add GetFormat to return the format of a WAV file * * Revision 1.4 2001/07/23 01:20:20 rogerh * Add updates from Shawn - ensure isvalidWAV is false for zero length files. * GetDataLength uses actual file size to support file updates as well as appends. * Add updates from Roger - Update Header() just writes to specific fields which * preserves any 'extra' data in an existing header between FORMAT and DATA chunks. * * Revision 1.3 2001/07/20 07:06:27 rogerh * Fix a typo * * Revision 1.2 2001/07/20 03:30:59 robertj * Minor cosmetic changes to new PWAVFile class. * * Revision 1.1 2001/07/19 09:55:48 rogerh * Add PWAVFile, a class to read and write .wav files, written by * Roger Hardiman and and * Shawn Pai-Hsiang Hsiao * * */ #ifndef _PWAVFILE #define _PWAVFILE //#ifdef P_USE_PRAGMA //#pragma interface //#endif #include class PWAVFile; namespace PWAV { #ifdef __GNUC__ #define P_PACKED __attribute__ ((packed)); #else #define P_PACKED #pragma pack(1) #endif struct ChunkHeader { char tag[4] P_PACKED; PInt32l len P_PACKED; }; struct RIFFChunkHeader { ChunkHeader hdr P_PACKED; char tag[4] P_PACKED; }; struct FMTChunk { ChunkHeader hdr P_PACKED; ///< chunk header PUInt16l format P_PACKED; ///< Format PUInt16l numChannels P_PACKED; ///< Channels 0x01 = mono, 0x02 = stereo PUInt32l sampleRate P_PACKED; ///< Sample Rate in Hz PUInt32l bytesPerSec P_PACKED; ///< Average bytes Per Second PUInt16l bytesPerSample P_PACKED; ///< Bytes Per Sample, eg 2 PUInt16l bitsPerSample P_PACKED; ///< Bits Per Sample, eg 16 }; }; // namespace PWAV #ifdef __GNUC__ #undef P_PACKED #else #pragma pack() #endif /** * abstract factory class for handling WAV files formats */ class PWAVFileFormat { public: virtual ~PWAVFileFormat() { } /** * return a PWAVFile format code */ virtual unsigned GetFormat() const = 0; /** * return a string that can be used as a media format */ virtual PString GetFormatString() const = 0; /** * return a string that can be used as a text description */ virtual PString GetDescription() const = 0; /** * populate the header with the correct values */ virtual void CreateHeader(PWAV::FMTChunk & header, PBYTEArray & extendedHeader) = 0; /** * write any extra headers after the FORMAT chunk */ virtual BOOL WriteExtraChunks(PWAVFile & /*file*/) { return TRUE; } /** * read any extra headers after the FORMAT chunk */ virtual BOOL ReadExtraChunks(PWAVFile & /*file*/) { return TRUE; } /** * called before the reading/writing starts */ virtual void OnStart() { } /** * called after the reading/writing stops */ virtual void OnStop() { } /** * write data to the file */ virtual BOOL Read(PWAVFile & file, void * buf, PINDEX & len); /** * read data from the file */ virtual BOOL Write(PWAVFile & file, const void * buf, PINDEX & len); }; typedef PFactory PWAVFileFormatByFormatFactory; typedef PFactory PWAVFileFormatByIDFactory; /** * abstract factory class for autoconversion of WAV files to/from PCM-16 */ class PWAVFileConverter { public: virtual ~PWAVFileConverter() { } virtual unsigned GetFormat (const PWAVFile & file) const = 0; virtual off_t GetPosition (const PWAVFile & file) const = 0; virtual BOOL SetPosition (PWAVFile & file, off_t pos, PFile::FilePositionOrigin origin) = 0; virtual unsigned GetSampleSize(const PWAVFile & file) const = 0; virtual off_t GetDataLength (PWAVFile & file) = 0; virtual BOOL Read (PWAVFile & file, void * buf, PINDEX len) = 0; virtual BOOL Write (PWAVFile & file, const void * buf, PINDEX len) = 0; }; typedef PFactory PWAVFileConverterFactory; /**A class representing a WAV audio file. */ class PWAVFile : public PFile { PCLASSINFO(PWAVFile, PFile); public: /**@name Construction */ //@{ /**When a file is opened for writing, we can specify if this is a PCM wav file or a G.723.1 wav file. */ enum { fmt_PCM = 1, ///< PCM, 8kHz, 16 bit, mono fmt_ALaw = 6, ///< A-Law 8kHz fmt_uLaw = 7, ///< u-Law 8kHz fmt_GSM = 0x31, ///< GSM fmt_G728 = 0x41, ///< RFC2361 fmt_G723 = 0x42, ///< RFC2361 fmt_MSG7231 = 0x42, ///< Microsoft G.723.1 fmt_G726 = 0x64, ///< RFC2361 fmt_G722 = 0x65, ///< RFC2361 fmt_G729 = 0x84, ///< RFC2361 fmt_VivoG7231 = 0x111, ///< VivoActive G.723.1 // For backward compatibility PCM_WavFile = fmt_PCM, G7231_WavFile = fmt_VivoG7231, // allow opening files without knowing the format fmt_NotKnown = 0x10000 }; /**Create a WAV file object but do not open it. It does not initially have a valid file name. However, an attempt to open the file using the #PFile::Open()# function will generate a unique temporary file. If a WAV file is being created, the type parameter can be used to create a PCM Wave file or a G.723.1 Wave file by using #WaveType enum# */ PWAVFile( unsigned format = fmt_PCM ///< Type of WAV File to create ); static PWAVFile * format( const PString & format ///< Type of WAV File to create ); /**Create a unique temporary file name, and open the file in the specified mode and using the specified options. Note that opening a new, unique, temporary file name in ReadOnly mode will always fail. This would only be usefull in a mode and options that will create the file. If a WAV file is being created, the type parameter can be used to create a PCM Wave file or a G.723.1 Wave file by using #WaveType enum# The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PWAVFile( OpenMode mode, ///< Mode in which to open the file. int opts = ModeDefault, ///< #OpenOptions enum# for open operation. unsigned format = fmt_PCM ///< Type of WAV File to create ); static PWAVFile * format( const PString & format, ///< Type of WAV File to create PFile::OpenMode mode, ///< Mode in which to open the file. int opts = PFile::ModeDefault ///< #OpenOptions enum# for open operation. ); /**Create a WAV file object with the specified name and open it in the specified mode and with the specified options. If a WAV file is being created, the type parameter can be used to create a PCM Wave file or a G.723.1 Wave file by using #WaveType enum# The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PWAVFile( const PFilePath & name, ///< Name of file to open. OpenMode mode = ReadWrite, ///< Mode in which to open the file. int opts = ModeDefault, ///< #OpenOptions enum# for open operation. unsigned format = fmt_PCM ///< Type of WAV File to create ); PWAVFile( const PString & format, ///< Type of WAV File to create const PFilePath & name, ///< Name of file to open. OpenMode mode = PFile::ReadWrite, ///< Mode in which to open the file. int opts = PFile::ModeDefault ///< #OpenOptions enum# for open operation. ); /**Close the file before destruction. */ ~PWAVFile(); //@} /**@name Overrides from class PFile */ //@{ /**Call PFile::Read() to read in audio data and perform necessary processing such as byte-order swaping. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Call PFile::Write() to write out audio data and perform necessary processing such as byte-order swaping. @return TRUE indicates that at least one character was written to the channel. FALSE means no bytes were written due to timeout or some other I/O error. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to receive the write bytes. PINDEX len ///< Maximum number of bytes to write to the channel. ); /**Open the current file in the specified mode and with the specified options. If the file object already has an open file then it is closed. If there has not been a filename attached to the file object (via #SetFilePath()#, the #name# parameter or a previous open) then a new unique temporary filename is generated. @return TRUE if the file was successfully opened. */ virtual BOOL Open( OpenMode mode = ReadWrite, ///< Mode in which to open the file. int opts = ModeDefault ///< Options for open operation. ); /**Open the specified WAV file name in the specified mode and with the specified options. If the file object already has an open file then it is closed. This reads (and validates) the header for existing files. For new files, it creates a new file (and header) using the type of WAV file specified in the class constructor. Note: if #mode# is StandardInput, StandardOutput or StandardError, then the #name# parameter is ignored. @return TRUE if the file was successfully opened. */ virtual BOOL Open( const PFilePath & name, ///< Name of file to open. OpenMode mode = ReadWrite, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); /** Close the file channel. If a WAV file has been written to, this will update the header to contain the correct size information. @return TRUE if close was OK. */ virtual BOOL Close(); /**Set the current active position in the file for the next read or write operation. The #pos# variable is a signed number which is added to the specified origin. For #origin == PFile::Start# only positive values for #pos# are meaningful. For #origin == PFile::End# only negative values for #pos# are meaningful. Note that for a WAV file, the origin of the file is right after the header. That is, the WAV header is not included when perform SetPosition(). @return TRUE if the new file position was set. */ virtual BOOL SetPosition( off_t pos, ///< New position to set. FilePositionOrigin origin = Start ///< Origin for position change. ); /**Get the current active position in the file for the next read or write operation. The WAV header is excluded from calculation the position. @return current file position relative to the end of the WAV header. */ virtual off_t GetPosition() const; //@} /**@name Member variable access */ //@{ /**Find out the format of the WAV file. Eg 0x01 for PCM, 0x42 or 0x111 for G.723.1. */ virtual BOOL SetFormat(unsigned fmt); virtual BOOL SetFormat(const PString & format); /**Find out the format of the WAV file. Eg 0x01 for PCM, 0x42 or 0x111 for G.723.1. */ virtual unsigned GetFormat() const; virtual PString GetFormatAsString() const; /**Find out the number of channels the WAV file has. Typically this is 1 for mono and 2 for stereo. */ virtual unsigned GetChannels() const; virtual void SetChannels(unsigned v); /**Find out the sample rate of the WAV file in Hz. */ virtual unsigned GetSampleRate() const; virtual void SetSampleRate(unsigned v); /**Find out how may bits there are per sample, eg 8 or 16. */ virtual unsigned GetSampleSize() const; virtual void SetSampleSize(unsigned v); /**Find out the size of WAV header presented in the file. */ off_t GetHeaderLength() const; /**Find out how many bytes of audio data there are. */ virtual off_t GetDataLength(); /**Determine if the WAV file is a valid wave file. @return TRUE indicates that the WAV file is valid FALSE indicates that the WAV file is invalid */ BOOL IsValid() const { return isValidWAV; } /** *Return a string that describes the WAV format */ PString GetFormatString() const { if (formatHandler == NULL) return PString("N/A"); else return formatHandler->GetFormatString(); } /** * enable autoconversion between PCM-16 and the native format */ void SetAutoconvert(); //@} friend class PWAVFileConverter; BOOL RawRead(void * buf, PINDEX len); BOOL RawWrite(const void * buf, PINDEX len); BOOL FileRead(void * buf, PINDEX len); BOOL FileWrite(const void * buf, PINDEX len); off_t RawGetPosition() const; BOOL RawSetPosition(off_t pos, FilePositionOrigin origin); off_t RawGetDataLength(); void SetLastReadCount(PINDEX v) { lastReadCount = v; } PWAV::FMTChunk wavFmtChunk; PBYTEArray extendedHeader; protected: void Construct(); void SelectFormat(unsigned fmt); void SelectFormat(const PString & format); PBYTEArray wavHeaderData; BOOL ProcessHeader(); BOOL GenerateHeader(); BOOL UpdateHeader(); BOOL isValidWAV; PWAVFileFormat * formatHandler; BOOL autoConvert; PWAVFileConverter * autoConverter; off_t lenHeader; off_t lenData; BOOL header_needs_updating; }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/pxml.h0100755000176200056700000003025210343317551017436 0ustar releasepostincr/* * pxml.h * * XML parser support * * Portable Windows Library * * Copyright (c) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pxml.h,v $ * Revision 1.26 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.25 2005/08/04 20:10:24 csoutheren * Apply patch #1217596 * Fixed problems with MacOSX Tiger * Thanks to Hannes Friederich * * Revision 1.24 2004/10/12 23:28:07 csoutheren * Fixed problem with bogus DOCTYPE being output * * Revision 1.23 2004/04/21 00:35:02 csoutheren * Added a stream parser for protocols like XMPP where each child of the root is to be considered a separate document/message. * Thanks to Federico Pinna and Reitek S.p.A. * * Revision 1.22 2003/04/27 23:54:13 craigs * Removed deprecated options * * Revision 1.21 2003/03/31 07:41:50 craigs * Fixed problem with accidental introduced dependency on expat.h * * Revision 1.20 2003/03/31 06:21:19 craigs * Split the expat wrapper from the XML file handling to allow reuse of the parser * * Revision 1.19 2003/01/13 02:14:02 robertj * Improved error logging for auto-loaded XML * * Revision 1.18 2002/12/16 06:38:24 robertj * Added ability to specify certain elemets (by name) that are exempt from * the indent formatting. Useful for XML/RPC where leading white space is * not ignored by all servers. * * Revision 1.17 2002/11/26 05:53:57 craigs * Added ability to auto-reload from URL * * Revision 1.16 2002/11/21 08:09:04 craigs * Changed to not overwrite XML data if load fails * * Revision 1.15 2002/11/19 07:37:38 craigs * Added locking functions and LoadURL function * * Revision 1.14 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * */ #ifndef _PXML_H #define _PXML_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include //////////////////////////////////////////////////////////// class PXMLElement; class PXMLData; class PXMLParser : public PObject { PCLASSINFO(PXMLParser, PObject); public: enum Options { Indent = 1, NewLineAfterElement = 2, NoIgnoreWhiteSpace = 4, ///< ignored CloseExtended = 8, ///< ignored WithNS = 16, }; PXMLParser(int options = -1); ~PXMLParser(); BOOL Parse(const char * data, int dataLen, BOOL final); void GetErrorInfo(PString & errorString, PINDEX & errorCol, PINDEX & errorLine); virtual void StartElement(const char * name, const char **attrs); virtual void EndElement(const char * name); virtual void AddCharacterData(const char * data, int len); virtual void XmlDecl(const char * version, const char * encoding, int standAlone); virtual void StartDocTypeDecl(const char * docTypeName, const char * sysid, const char * pubid, int hasInternalSubSet); virtual void EndDocTypeDecl(); virtual void StartNamespaceDeclHandler(const char * prefix, const char * uri); virtual void EndNamespaceDeclHandler(const char * prefix); PString GetVersion() const { return version; } PString GetEncoding() const { return encoding; } BOOL GetStandAlone() const { return standAlone; } PXMLElement * GetXMLTree() const; PXMLElement * SetXMLTree(PXMLElement * newRoot); protected: int options; void * expat; PXMLElement * rootElement; PXMLElement * currentElement; PXMLData * lastElement; PString version, encoding; int standAlone; }; class PXMLObject; class PXMLElement; class PXMLData; //////////////////////////////////////////////////////////// class PXMLBase : public PObject { public: PXMLBase(int _options = -1) : options(_options) { if (options < 0) options = 0; } void SetOptions(int _options) { options = _options; } int GetOptions() const { return options; } virtual BOOL IsNoIndentElement( const PString & /*elementName*/ ) const { return FALSE; } protected: int options; }; class PXML : public PXMLBase { PCLASSINFO(PXML, PObject); public: PXML( int options = -1, const char * noIndentElements = NULL ); PXML( const PString & data, int options = -1, const char * noIndentElements = NULL ); PXML(const PXML & xml); ~PXML(); BOOL IsDirty() const; BOOL Load(const PString & data, int options = -1); BOOL StartAutoReloadURL(const PURL & url, const PTimeInterval & timeout, const PTimeInterval & refreshTime, int _options = -1); BOOL StopAutoReloadURL(); PString GetAutoReloadStatus() { PWaitAndSignal m(autoLoadMutex); PString str = autoLoadError; return str; } BOOL AutoLoadURL(); virtual void OnAutoLoad(BOOL ok); BOOL LoadURL(const PURL & url); BOOL LoadURL(const PURL & url, const PTimeInterval & timeout, int _options = -1); BOOL LoadFile(const PFilePath & fn, int options = -1); virtual void OnLoaded() { } BOOL Save(int options = -1); BOOL Save(PString & data, int options = -1); BOOL SaveFile(const PFilePath & fn, int options = -1); void RemoveAll(); BOOL IsNoIndentElement( const PString & elementName ) const; void PrintOn(ostream & strm) const; PXMLElement * GetElement(const PCaselessString & name, PINDEX idx = 0) const; PXMLElement * GetElement(PINDEX idx) const; PINDEX GetNumElements() const; PXMLElement * GetRootElement() const { return rootElement; } PXMLElement * SetRootElement(PXMLElement * p); PXMLElement * SetRootElement(const PString & documentType); BOOL RemoveElement(PINDEX idx); PCaselessString GetDocumentType() const; PString GetErrorString() const { return errorString; } PINDEX GetErrorColumn() const { return errorCol; } PINDEX GetErrorLine() const { return errorLine; } PString GetDocType() const { return docType; } void SetDocType(const PString & v) { docType = v; } PMutex & GetMutex() { return rootMutex; } PDECLARE_NOTIFIER(PTimer, PXML, AutoReloadTimeout); PDECLARE_NOTIFIER(PThread, PXML, AutoReloadThread); // static methods to create XML tags static PString CreateStartTag (const PString & text); static PString CreateEndTag (const PString & text); static PString CreateTagNoData (const PString & text); static PString CreateTag (const PString & text, const PString & data); protected: void Construct(int options, const char * noIndentElements); PXMLElement * rootElement; PMutex rootMutex; BOOL loadFromFile; PFilePath loadFilename; PString version, encoding; int standAlone; PTimer autoLoadTimer; PURL autoloadURL; PTimeInterval autoLoadWaitTime; PMutex autoLoadMutex; PString autoLoadError; PString errorString; PINDEX errorCol; PINDEX errorLine; PSortedStringList noIndentElements; PString docType; }; //////////////////////////////////////////////////////////// PARRAY(PXMLObjectArray, PXMLObject); class PXMLObject : public PObject { PCLASSINFO(PXMLObject, PObject); public: PXMLObject(PXMLElement * _parent) : parent(_parent) { dirty = FALSE; } PXMLElement * GetParent() { return parent; } PXMLObject * GetNextObject(); void SetParent(PXMLElement * newParent) { PAssert(parent == NULL, "Cannot reparent PXMLElement"); parent = newParent; } virtual void Output(ostream & strm, const PXMLBase & xml, int indent) const = 0; virtual BOOL IsElement() const = 0; void SetDirty(); BOOL IsDirty() const { return dirty; } virtual PXMLObject * Clone(PXMLElement * parent) const = 0; protected: PXMLElement * parent; BOOL dirty; }; //////////////////////////////////////////////////////////// class PXMLData : public PXMLObject { PCLASSINFO(PXMLData, PXMLObject); public: PXMLData(PXMLElement * _parent, const PString & data); PXMLData(PXMLElement * _parent, const char * data, int len); BOOL IsElement() const { return FALSE; } void SetString(const PString & str, BOOL dirty = TRUE); PString GetString() const { return value; } void Output(ostream & strm, const PXMLBase & xml, int indent) const; PXMLObject * Clone(PXMLElement * parent) const; protected: PString value; }; //////////////////////////////////////////////////////////// class PXMLElement : public PXMLObject { PCLASSINFO(PXMLElement, PXMLObject); public: PXMLElement(PXMLElement * _parent, const char * name = NULL); PXMLElement(PXMLElement * _parent, const PString & name, const PString & data); BOOL IsElement() const { return TRUE; } void PrintOn(ostream & strm) const; void Output(ostream & strm, const PXMLBase & xml, int indent) const; PCaselessString GetName() const { return name; } void SetName(const PString & v) { name = v; } PINDEX GetSize() const { return subObjects.GetSize(); } PXMLObject * AddSubObject(PXMLObject * elem, BOOL dirty = TRUE); PXMLElement * AddChild (PXMLElement * elem, BOOL dirty = TRUE); PXMLData * AddChild (PXMLData * elem, BOOL dirty = TRUE); void SetAttribute(const PCaselessString & key, const PString & value, BOOL setDirty = TRUE); PString GetAttribute(const PCaselessString & key) const; PString GetKeyAttribute(PINDEX idx) const; PString GetDataAttribute(PINDEX idx) const; BOOL HasAttribute(const PCaselessString & key); BOOL HasAttributes() const { return attributes.GetSize() > 0; } PINDEX GetNumAttributes() const { return attributes.GetSize(); } PXMLElement * GetElement(const PCaselessString & name, PINDEX idx = 0) const; PXMLObject * GetElement(PINDEX idx = 0) const; BOOL RemoveElement(PINDEX idx); PINDEX FindObject(PXMLObject * ptr) const; BOOL HasSubObjects() const { return subObjects.GetSize() != 0; } PXMLObjectArray GetSubObjects() const { return subObjects; } PString GetData() const; PXMLObject * Clone(PXMLElement * parent) const; protected: PCaselessString name; PStringToString attributes; PXMLObjectArray subObjects; BOOL dirty; }; //////////////////////////////////////////////////////////// class PConfig; // stupid gcc 4 does not recognize PConfig as a class class PXMLSettings : public PXML { PCLASSINFO(PXMLSettings, PXML); public: PXMLSettings(int options = PXMLParser::NewLineAfterElement); PXMLSettings(const PString & data, int options = PXMLParser::NewLineAfterElement); PXMLSettings(const PConfig & data, int options = PXMLParser::NewLineAfterElement); BOOL Load(const PString & data); BOOL LoadFile(const PFilePath & fn); BOOL Save(); BOOL Save(PString & data); BOOL SaveFile(const PFilePath & fn); void SetAttribute(const PCaselessString & section, const PString & key, const PString & value); PString GetAttribute(const PCaselessString & section, const PString & key) const; BOOL HasAttribute(const PCaselessString & section, const PString & key) const; void ToConfig(PConfig & cfg) const; }; //////////////////////////////////////////////////////////// class PXMLStreamParser : public PXMLParser { PCLASSINFO(PXMLStreamParser, PXMLParser); public: PXMLStreamParser(); virtual void EndElement(const char * name); virtual PXML * Read(PChannel * channel); protected: BOOL rootOpen; PQueue messages; }; #endif pwlib_v1_10_2/include/ptclib/pxmlrpc.h0100644000176200056700000004520110052053040020123 0ustar releasepostincr/* * pxmlrpc.h * * XML/RPC support * * Portable Windows Library * * Copyright (c) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pxmlrpc.h,v $ * Revision 1.20 2004/05/17 06:05:20 csoutheren * Changed "make docs" to use doxygen * Added new config file and main page * * Revision 1.19 2003/04/15 07:08:36 robertj * Changed read and write from streams for base array classes so operates in * the same way for both PIntArray and PArray etc * * Revision 1.18 2003/04/15 03:00:41 robertj * Added array support to XML/RPC * Fixed XML/RPC parsing when lots of white space in raw XML, caused by * big fix to base XML parser not returning internal data elements. * * Revision 1.17 2003/01/28 05:08:07 robertj * Fixed copy constructor on function arguments and return value * * Revision 1.16 2002/12/16 06:57:15 robertj * Added ability to specify certain elemets (by name) that are exempt from * the indent formatting. Useful for XML/RPC where leading white space is * not ignored by all servers. * Improved the macros for defining RPC functions. * * Revision 1.15 2002/12/13 01:04:56 robertj * Added copy constructor and assignment operator to XML/RPC structs * * Revision 1.14 2002/12/10 04:44:43 robertj * Added support in PTime for ISO 8601 format. * * Revision 1.13 2002/12/09 04:06:18 robertj * Added macros for defining multi-argument functions * * Revision 1.12 2002/12/04 02:09:26 robertj * Changed macro name prefix to PXMLRPC * * Revision 1.11 2002/12/04 00:31:13 robertj * Fixed GNU compatibility * * Revision 1.10 2002/12/04 00:15:56 robertj * Large enhancement to create automatically encoding and decoding structures * using macros to build a class. * * Revision 1.9 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.8 2002/10/02 08:54:34 craigs * Added support for XMLRPC server * * Revision 1.7 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.6 2002/08/13 03:02:07 robertj * Removed previous fix for memory leak, as object was already deleted. * * Revision 1.5 2002/08/13 01:55:00 craigs * Fixed memory leak on PXMLRPCRequest class * * Revision 1.4 2002/08/06 01:04:03 robertj * Fixed missing pragma interface/implementation * * Revision 1.3 2002/07/12 05:51:14 craigs * Added structs to XMLRPC response types * * Revision 1.2 2002/03/27 00:50:44 craigs * Fixed problems with parsing faults and creating structs * * Revision 1.1 2002/03/26 07:06:50 craigs * Initial version * */ #ifndef _PXMLRPC_H #define _PXMLRPC_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include class PXMLRPCBlock; class PXMLRPCVariableBase; class PXMLRPCStructBase; ///////////////////////////////////////////////////////////////// class PXMLRPC : public PObject { PCLASSINFO(PXMLRPC, PObject); public: enum { CannotCreateRequestXML = 100, CannotParseResponseXML, CannotParseRequestXML, HTTPPostFailed, CannotReadResponseContentBody, ResponseRootNotMethodResponse, ResponseEmpty, ResponseUnknownFormat, ParamNotValue, ScalarWithoutElement, ParamNotStruct, MemberIncomplete, MemberUnnamed, FaultyFault, RequestHasWrongDocumentType, RequestHasNoMethodName, RequestHasNoParms, MethodNameIsEmpty, UnknownMethod, ParamNotArray, UserFault = 1000, }; PXMLRPC( const PURL & url, unsigned options = 0 ); void SetTimeout(const PTimeInterval & _timeout) { timeout = _timeout; } BOOL MakeRequest(const PString & method); BOOL MakeRequest(const PString & method, PXMLRPCBlock & response); BOOL MakeRequest(PXMLRPCBlock & request, PXMLRPCBlock & response); BOOL MakeRequest(const PString & method, const PXMLRPCStructBase & args, PXMLRPCStructBase & reply); PString GetFaultText() const { return faultText; } PINDEX GetFaultCode() const { return faultCode; } static BOOL ISO8601ToPTime(const PString & iso8601, PTime & val, int tz = PTime::GMT); static PString PTimeToISO8601(const PTime & val); protected: BOOL PerformRequest(PXMLRPCBlock & request, PXMLRPCBlock & response); PURL url; PINDEX faultCode; PString faultText; PTimeInterval timeout; unsigned options; }; ///////////////////////////////////////////////////////////////// class PXMLRPCBlock : public PXML { PCLASSINFO(PXMLRPCBlock, PXML); public: PXMLRPCBlock(); PXMLRPCBlock(const PString & method); PXMLRPCBlock(const PString & method, const PXMLRPCStructBase & structData); BOOL Load(const PString & str); PXMLElement * GetParams(); PXMLElement * GetParam(PINDEX idx) const; PINDEX GetParamCount() const; // used when used as a response PINDEX GetFaultCode() const { return faultCode; } PString GetFaultText() const { return faultText; } void SetFault(PINDEX code, const PString & text) { faultCode = code; faultText = text; } BOOL ValidateResponse(); // helper functions for getting parameters BOOL GetParams(PXMLRPCStructBase & data); BOOL GetParam(PINDEX idx, PString & type, PString & result); BOOL GetExpectedParam(PINDEX idx, const PString & expectedType, PString & value); BOOL GetParam(PINDEX idx, PString & result); BOOL GetParam(PINDEX idx, int & result); BOOL GetParam(PINDEX idx, double & result); BOOL GetParam(PINDEX idx, PTime & result, int tz = PTime::GMT); BOOL GetParam(PINDEX idx, PStringToString & result); BOOL GetParam(PINDEX idx, PXMLRPCStructBase & result); BOOL GetParam(PINDEX idx, PStringArray & result); BOOL GetParam(PINDEX idx, PArray & result); // static functions for parsing values BOOL ParseScalar(PXMLElement * element, PString & type, PString & value); BOOL ParseStruct(PXMLElement * element, PStringToString & structDict); BOOL ParseStruct(PXMLElement * element, PXMLRPCStructBase & structData); BOOL ParseArray(PXMLElement * element, PStringArray & array); BOOL ParseArray(PXMLElement * element, PArray & array); BOOL ParseArray(PXMLElement * element, PXMLRPCVariableBase & array); // static functions for creating values static PXMLElement * CreateValueElement(PXMLElement * element); static PXMLElement * CreateScalar(const PString & type, const PString & scalar); static PXMLElement * CreateMember(const PString & name, PXMLElement * value); static PXMLElement * CreateScalar(const PString & str); static PXMLElement * CreateScalar(int value); static PXMLElement * CreateScalar(double value); static PXMLElement * CreateDateAndTime(const PTime & time); static PXMLElement * CreateBinary(const PBYTEArray & data); static PXMLElement * CreateStruct(); static PXMLElement * CreateStruct(const PStringToString & dict); static PXMLElement * CreateStruct(const PStringToString & dict, const PString & typeStr); static PXMLElement * CreateStruct(const PXMLRPCStructBase & structData); static PXMLElement * CreateArray(const PStringArray & array); static PXMLElement * CreateArray(const PStringArray & array, const PString & typeStr); static PXMLElement * CreateArray(const PStringArray & array, const PStringArray & types); static PXMLElement * CreateArray(const PArray & array); static PXMLElement * CreateArray(const PXMLRPCVariableBase & array); // helper functions for adding parameters void AddParam(PXMLElement * parm); void AddParam(const PString & str); void AddParam(int value); void AddParam(double value); void AddParam(const PTime & time); void AddParam(const PXMLRPCStructBase & structData); void AddBinary(const PBYTEArray & data); void AddStruct(const PStringToString & dict); void AddStruct(const PStringToString & dict, const PString & typeStr); void AddArray(const PStringArray & array); void AddArray(const PStringArray & array, const PString & typeStr); void AddArray(const PStringArray & array, const PStringArray & types); void AddArray(const PArray & array); protected: PXMLElement * params; PString faultText; PINDEX faultCode; }; ///////////////////////////////////////////////////////////////// class PXMLRPCVariableBase : public PObject { PCLASSINFO(PXMLRPCVariableBase, PObject); protected: PXMLRPCVariableBase(const char * name, const char * type = NULL); public: const char * GetName() const { return name; } const char * GetType() const { return type; } virtual void Copy(const PXMLRPCVariableBase & other) = 0; virtual PString ToString(PINDEX i) const; virtual void FromString(PINDEX i, const PString & str); virtual PXMLRPCStructBase * GetStruct(PINDEX i) const; virtual BOOL IsArray() const; virtual PINDEX GetSize() const; virtual BOOL SetSize(PINDEX); PString ToBase64(PAbstractArray & data) const; void FromBase64(const PString & str, PAbstractArray & data); protected: const char * name; const char * type; private: PXMLRPCVariableBase(const PXMLRPCVariableBase &) { } }; class PXMLRPCArrayBase : public PXMLRPCVariableBase { PCLASSINFO(PXMLRPCArrayBase, PXMLRPCVariableBase); protected: PXMLRPCArrayBase(PContainer & array, const char * name, const char * type); PXMLRPCArrayBase & operator=(const PXMLRPCArrayBase &); public: virtual void PrintOn(ostream & strm) const; virtual void Copy(const PXMLRPCVariableBase & other); virtual BOOL IsArray() const; virtual PINDEX GetSize() const; virtual BOOL SetSize(PINDEX); protected: PContainer & array; }; class PXMLRPCArrayObjectsBase : public PXMLRPCArrayBase { PCLASSINFO(PXMLRPCArrayObjectsBase, PXMLRPCArrayBase); protected: PXMLRPCArrayObjectsBase(PArrayObjects & array, const char * name, const char * type); PXMLRPCArrayObjectsBase & operator=(const PXMLRPCArrayObjectsBase &); public: virtual PString ToString(PINDEX i) const; virtual void FromString(PINDEX i, const PString & str); virtual BOOL SetSize(PINDEX); virtual PObject * CreateObject() const = 0; protected: PArrayObjects & array; }; class PXMLRPCStructBase : public PObject { PCLASSINFO(PXMLRPCStructBase, PObject); protected: PXMLRPCStructBase(); PXMLRPCStructBase & operator=(const PXMLRPCStructBase &); private: PXMLRPCStructBase(const PXMLRPCStructBase &) { } public: void PrintOn(ostream & strm) const; PINDEX GetNumVariables() const { return variablesByOrder.GetSize(); } PXMLRPCVariableBase & GetVariable(PINDEX idx) const { return variablesByOrder[idx]; } PXMLRPCVariableBase * GetVariable(const char * name) const { return variablesByName.GetAt(name); } void AddVariable(PXMLRPCVariableBase * var); static PXMLRPCStructBase & GetInitialiser() { return *PAssertNULL(initialiserInstance); } protected: void EndConstructor(); PList variablesByOrder; PDictionary variablesByName; PXMLRPCStructBase * initialiserStack; static PMutex initialiserMutex; static PXMLRPCStructBase * initialiserInstance; }; #define PXMLRPC_STRUCT_BEGIN(name) \ class name : public PXMLRPCStructBase { \ public: name() { EndConstructor(); } \ public: name(const name & other) { EndConstructor(); operator=(other); } \ public: name & operator=(const name & other) { PXMLRPCStructBase::operator=(other); return *this; } #define PXMLRPC_VARIABLE_CLASS(base, type, variable, xmltype, init, extras) \ private: struct PXMLRPCVar_##variable : public PXMLRPCVariableBase { \ PXMLRPCVar_##variable() \ : PXMLRPCVariableBase(#variable, xmltype), \ instance(((base &)base::GetInitialiser()).variable) \ { init } \ virtual void PrintOn (ostream & s) const { s << instance; } \ virtual void ReadFrom(istream & s) { s >> instance; } \ virtual void Copy(const PXMLRPCVariableBase & other) \ { instance = ((PXMLRPCVar_##variable &)other).instance; } \ extras \ type & instance; \ } pxmlrpcvar_##variable #define PXMLRPC_VARIABLE_CUSTOM(base, type, variable, xmltype, init, extras) \ public: type variable; \ PXMLRPC_VARIABLE_CLASS(base, type, variable, xmltype, init, extras) #define PXMLRPC_ARRAY_CUSTOM(base, arraytype, basetype, variable, xmltype, par, extras) \ public: arraytype variable; \ private: struct PXMLRPCVar_##variable : public par { \ PXMLRPCVar_##variable() \ : par(((base &)base::GetInitialiser()).variable, #variable, xmltype), \ instance((arraytype &)array) \ { } \ extras \ arraytype & instance; \ } pxmlrpcvar_##variable #ifdef DOCPLUSPLUS } #endif #define PXMLRPC_STRUCT_END() \ }; #define PXMLRPC_VARIABLE(base, type, variable, xmltype) \ PXMLRPC_VARIABLE_CUSTOM(base, type, variable, xmltype, ;, ;) #define PXMLRPC_VARIABLE_INIT(base, type, variable, xmltype, init) \ PXMLRPC_VARIABLE_CUSTOM(base, type, variable, xmltype, instance=init;, ;) #define PXMLRPC_STRING(base, type, variable) \ PXMLRPC_VARIABLE(base, type, variable, "string") #define PXMLRPC_STRING_INIT(base, type, variable, init) \ PXMLRPC_VARIABLE_INIT(base, type, variable, "string", init) #define PXMLRPC_INTEGER(base, type, variable) \ PXMLRPC_VARIABLE(base, type, variable, "int") #define PXMLRPC_INTEGER_INIT(base, type, variable, init) \ PXMLRPC_VARIABLE_INIT(base, type, variable, "int", init) #define PXMLRPC_BOOLEAN(base, type, variable) \ PXMLRPC_VARIABLE(base, type, variable, "boolean") #define PXMLRPC_BOOLEAN_INIT(base, type, variable, init) \ PXMLRPC_VARIABLE_INIT(base, type, variable, "boolean", init) #define PXMLRPC_DOUBLE(base, type, variable) \ PXMLRPC_VARIABLE(base, type, variable, "double") #define PXMLRPC_DOUBLE_INIT(base, type, variable, init) \ PXMLRPC_VARIABLE_INIT(base, type, variable, "double", init) #define PXMLRPC_DATETIME(base, type, variable) \ PXMLRPC_VARIABLE_CUSTOM(base, type, variable, "dateTime.iso8601", ;, \ PString ToString(PINDEX) const { return instance.AsString(PTime::ShortISO8601); } ) #define PXMLRPC_BINARY(base, type, variable) \ PXMLRPC_VARIABLE_CUSTOM(base, type, variable, "base64", ;, \ PString ToString(PINDEX) const { return ToBase64(instance); } \ void FromString(PINDEX, const PString & str) { FromBase64(str, instance); } ) #define PXMLRPC_STRUCT(base, type, variable) \ PXMLRPC_VARIABLE_CUSTOM(base, type, variable, "struct", ;, \ PXMLRPCStructBase * GetStruct(PINDEX) const { return &instance; } ) #define PXMLRPC_ARRAY(base, arraytype, basetype, variable, xmltype) \ PXMLRPC_ARRAY_CUSTOM(base, arraytype, basetype, variable, xmltype, PXMLRPCArrayObjectsBase, \ PObject * CreateObject() const { return new basetype; }) #define PXMLRPC_ARRAY_STRING(base, arraytype, basetype, variable) \ PXMLRPC_ARRAY(base, arraytype, basetype, variable, "string") #define PXMLRPC_ARRAY_INTEGER(base, type, variable) \ PXMLRPC_ARRAY_CUSTOM(base, PScalarArray, type, variable, "int", PXMLRPCArrayBase, \ PString ToString(PINDEX i) const { return PString(instance[i]); } \ void FromString(PINDEX i, const PString & str) { instance[i] = (type)str.AsInteger(); }) #define PXMLRPC_ARRAY_DOUBLE(base, type, variable) \ PXMLRPC_ARRAY_CUSTOM(base, PScalarArray, type, variable, "double", PXMLRPCArrayBase, \ PString ToString(PINDEX i) const { return psprintf("%f", instance[i]); } \ void FromString(PINDEX i, const PString & str) { instance[i] = (type)str.AsReal(); }) #define PXMLRPC_ARRAY_STRUCT(base, type, variable) \ PXMLRPC_ARRAY_CUSTOM(base, PArray, type, variable, "struct", PXMLRPCArrayObjectsBase, \ PXMLRPCStructBase * GetStruct(PINDEX i) const { return &instance[i]; } \ PObject * CreateObject() const { return new type; }) #define PXMLRPC_FUNC_NOARG_NOREPLY(name) \ BOOL name() { return MakeRequest(#name); } #define PXMLRPC_FUNC_SINGLE_ARG(name, vartype, argtype) \ class name##_in : public PXMLRPCStructBase { \ public: name##_in(const argtype & var) : variable(var) { EndConstructor(); } \ vartype(name##_in, argtype, variable); #define PXMLRPC_FUNC_MULTI_ARGS(name) \ PXMLRPC_STRUCT_BEGIN(name##_in) #ifdef DOCPLUSPLUS { #endif #define PXMLRPC_FUNC_MULTI_REPLY(name) \ }; PXMLRPC_STRUCT_BEGIN(name##_out) #ifdef DOCPLUSPLUS { #endif #define PXMLRPC_FUNC_NO_ARGS(name) \ }; \ BOOL name(name##_out & reply) \ { return MakeRequest(#name, name##_in(), reply); } #ifdef DOCPLUSPLUS { #endif #define PXMLRPC_FUNC_STRUCT_ARG(name) \ }; \ class name##_in_carrier : public PXMLRPCStructBase { \ public: name##_in_carrier(const name##_in & var) : variable(var) { EndConstructor(); } \ private: struct var_class : public PXMLRPCVariableBase { \ var_class(const name##_in & var) \ : PXMLRPCVariableBase("variable", "struct"), instance(var) { } \ virtual void PrintOn (ostream & s) const { s << instance; } \ virtual PXMLRPCStructBase * GetStruct(PINDEX) const { return (PXMLRPCStructBase *)&instance; } \ virtual void Copy(const PXMLRPCVariableBase &) { } \ const name##_in & instance; \ } variable; \ }; \ BOOL name(const name##_in & args, name##_out & reply) \ { return MakeRequest(#name, name##_in_carrier(args), reply); } #ifdef DOCPLUSPLUS { #endif #define PXMLRPC_FUNC_NORM_ARGS(name) \ }; \ BOOL name(const name##_in & args, name##_out & reply) \ { return MakeRequest(#name, args, reply); } ///////////////////////////////////////////////////////////////// #endif pwlib_v1_10_2/include/ptclib/pxmlrpcs.h0100644000176200056700000000633210343317551020325 0ustar releasepostincr/* * pxmlrpcs.h * * XML parser support * * Portable Windows Library * * Copyright (c) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: pxmlrpcs.h,v $ * Revision 1.4 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.3 2003/02/19 01:50:31 robertj * Change to make it easier to set a fault from the server function handler. * * Revision 1.2 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.1 2002/10/02 08:54:34 craigs * Added support for XMLRPC server * */ #ifndef _PXMLRPCSRVR_H #define _PXMLRPCSRVR_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include class PXMLRPCServerMethod : public PString { PCLASSINFO(PXMLRPCServerMethod, PString); public: PXMLRPCServerMethod(const PString & name) : PString(name) { } PNotifier methodFunc; }; PSORTED_LIST(PXMLRPCServerMethodList, PXMLRPCServerMethod); class PXMLRPCServerResource : public PHTTPResource { PCLASSINFO(PXMLRPCServerResource, PHTTPResource); public: PXMLRPCServerResource(); PXMLRPCServerResource( const PHTTPAuthority & auth ///< Authorisation for the resource. ); PXMLRPCServerResource( const PURL & url ///< Name of the resource in URL space. ); PXMLRPCServerResource( const PURL & url, ///< Name of the resource in URL space. const PHTTPAuthority & auth ///< Authorisation for the resource. ); // overrides from PHTTPResource BOOL LoadHeaders(PHTTPRequest & request); BOOL OnPOSTData(PHTTPRequest & request, const PStringToString & data); // new functions virtual void OnXMLRPCRequest(const PString & body, PString & reply); virtual BOOL SetMethod(const PString & methodName, const PNotifier & func); void OnXMLRPCRequest(const PString & methodName, PXMLRPCBlock & request, PString & reply); virtual PString FormatFault( PINDEX code, const PString & str ); protected: PMutex methodMutex; PXMLRPCServerMethodList methodList; }; class PXMLRPCServerParms : public PObject { PCLASSINFO(PXMLRPCServerParms, PObject); public: PXMLRPCServerParms( PXMLRPCServerResource & _resource, PXMLRPCBlock & _request ) : resource(_resource), request(_request) { } void SetFault( PINDEX code, const PString & text ) { request.SetFault(code, resource.FormatFault(code, text)); } PXMLRPCServerResource & resource; PXMLRPCBlock & request; PXMLRPCBlock response; }; #endif pwlib_v1_10_2/include/ptclib/qchannel.h0100644000176200056700000001062510343317551020246 0ustar releasepostincr/* * qchannel.h * * Class for implementing a serial queue channel in memory. * * Portable Windows Library * * Copyright (c) 2001 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: qchannel.h,v $ * Revision 1.4 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.3 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.2 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.1 2001/07/10 03:07:07 robertj * Added queue channel and delay channel classes to ptclib. * */ #ifndef _QCHANNEL_H #define _QCHANNEL_H #ifdef P_USE_PRAGMA #pragma interface #endif #include /** Class for implementing a serial queue channel in memory. This implements a simple memory based First In First Out queue. Data written to an instance of the class may be read from the same instance at some later time. The queue will block the read for the Read Timeout if the queue is empty. Similarly a write will be clocked for Write Timeout if the queue is full. If there is any data to be read then it returns immediately with those bytes, so you must check the GetLastReadCount() to determine the actual number of bytes read and not rely on the count being passed into the read function. */ class PQueueChannel : public PChannel { PCLASSINFO(PQueueChannel, PChannel); public: /**@name Construction */ //@{ /** Create a new queue channel with the specified maximum size. */ PQueueChannel( PINDEX queueSize = 0 ///< Queue size ); /**Delete queue and release memory used. */ ~PQueueChannel(); //@} /**@name Overrides from class PChannel */ //@{ /**Low level read from the file channel. The read timeout is ignored for file I/O. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the file channel. The write timeout is ignored for file I/O. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** Close the file channel. @return TRUE if close was OK. */ virtual BOOL Close(); //@} /**@name Queue manipulation functions */ //@{ /**Open a queue, allocating the queueSize bytes. */ virtual BOOL Open( PINDEX queueSize ///< Queue size ); /// Get the queue size. PINDEX GetSize() const { return queueSize; } /// Get the current queue length. PINDEX GetLength() const { return queueLength; } //@} protected: PMutex mutex; BYTE * queueBuffer; PINDEX queueSize, queueLength, enqueuePos, dequeuePos; PSyncPoint unempty; PSyncPoint unfull; }; #endif // _QCHANNEL_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/random.h0100644000176200056700000000752410343317551017741 0ustar releasepostincr/* * random.h * * ISAAC random number generator by Bob Jenkins. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: random.h,v $ * Revision 1.6 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.5 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.4 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.3 2001/03/03 05:12:47 robertj * Fixed yet another transcription error of random number generator code. * * Revision 1.2 2001/02/27 03:33:44 robertj * Changed random number generator due to licensing issues. * * Revision 1.1 2000/02/17 12:05:02 robertj * Added better random number generator after finding major flaws in MSVCRT version. * */ #ifndef _PRANDOM #define _PRANDOM #ifdef P_USE_PRAGMA #pragma interface #endif #include /**Mersenne Twister random number generator. An application would create a static instance of this class, and then use if to generate a sequence of psuedo-random numbers. Usually an application would simply use PRandom::Number() but if performance is an issue then it could also create a static local variable such as: { static PRandom rand; for (i = 0; i < 10000; i++) array[i] = rand; } This method is not thread safe, so it is the applications responsibility to assure that its calls are single threaded. */ class PRandom { public: /**Construct the random number generator. This version will seed the random number generator with a value based on the system time as returned by time() and clock(). */ PRandom(); /**Construct the random number generator. This version allows the application to choose the seed, thus letting it get the same sequence of values on each run. Useful for debugging. */ PRandom( DWORD seed ///< New seed value, must not be zero ); /**Set the seed for the random number generator. */ void SetSeed( DWORD seed ///< New seed value, must not be zero ); /**Get the next psuedo-random number in sequence. This generates one pseudorandom unsigned integer (32bit) which is uniformly distributed among 0 to 2^32-1 for each call. */ unsigned Generate(); /**Get the next psuedo-random number in sequence. */ inline operator unsigned() { return Generate(); } /**Get the next psuedo-random number in sequence. This utilises a single system wide thread safe PRandom variable. All threads etc will share the same psuedo-random sequence. */ static unsigned Number(); protected: enum { RandBits = 8, ///< I recommend 8 for crypto, 4 for simulations RandSize = 1< #include ///////////////////////////////////////////////////////////////////// class PSecureHTTPServiceProcess : public PHTTPServiceProcess { PCLASSINFO(PSecureHTTPServiceProcess, PHTTPServiceProcess) public: PSecureHTTPServiceProcess(const Info & inf); ~PSecureHTTPServiceProcess(); virtual PHTTPServer * CreateHTTPServer(PTCPSocket & socket); BOOL SetServerCertificate( const PFilePath & certFile, BOOL create = FALSE, const char * dn = NULL ); virtual BOOL OnDetectedNonSSLConnection(PChannel * chan, const PString & line); virtual PString CreateNonSSLMessage(const PString & url); virtual PString CreateRedirectMessage(const PString & url); protected: PSSLContext * sslContext; BOOL disableSSL; }; #endif // SHTTPSVC_H pwlib_v1_10_2/include/ptclib/sockagg.h0100644000176200056700000001753310356376104020103 0ustar releasepostincr/* * sockagg.h * * Generalised Socket Aggregation functions * * Portable Windows Library * * Copyright (C) 2005 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Portions of this code were written with the financial assistance of * Metreos Corporation (http://www.metros.com). * * Contributor(s): ______________________________________. * * $Log: sockagg.h,v $ * Revision 1.4 2006/01/03 04:23:32 csoutheren * Fixed Unix implementation * * Revision 1.3 2005/12/23 06:44:30 csoutheren * Working implementation * * Revision 1.2 2005/12/22 07:27:36 csoutheren * More implementation * * Revision 1.1 2005/12/22 03:55:52 csoutheren * Added initial version of socket aggregation classes * * */ #ifndef _SOCKAGG_H #define _SOCKAGG_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /* These classes implements a generalised method for aggregating sockets so that they can be handled by a single thread. It is intended to provide a backwards-compatible mechanism to supplant the "one socket - one thread" model used by OpenH323 and OPAL with a model that provides a better thread to call ratio. A more complete explanation of this model can be found in the white paper "Increasing the Maximum Call Density of OpenH323 and OPAL" which can be at: http://www.voxgratia.org/docs/call%20thread%20handling%20model%201.0.pdf There are two assumptions made by this code: 1) The most efficient way to handle I/O is for a thread to be blocked on I/O. Any sort of timer or other polling mechanism is less efficient 2) The time taken to handle a received PDU is relatively small, and will not interfere with the handling of other calls that are handled in the same thread UDP and TCP sockets are aggregated in different ways. UDP sockets are aggregated on the basis of a simple loop that looks for received datagrams and then processes them. TCP sockets are more complex because there is no intrinsic record-marking protocol, so it is difficult to know when a complete PDU has been received. This problem is solved by having the loop collect received data into a buffer until the handling routine decides that a full PDU has been received. At the heart of each socket aggregator is a select statement that contains all of the file descriptors that are managed by the thread. One extra handle for a pipe (or on Windows, a local socket) is added to each handle list so that the thread can be woken up in order to allow the addition or removal of sockets to the list */ #include #include #include ///////////////////////////////////////////////////////////////////////////////////// // // this class encapsulates the system specific handle needed to specifiy a socket. // On Unix systems, this is a simple file handle. This file handle is used to uniquely // identify the socket and used in the "select" system call // On Windows systems the SOCKET handle is used to identify the socket, but a seperate WSAEVENT // handle is needed for the WSWaitForMultpleEvents call. // This is further complicated by the fact that we need to treat some pairs of sockets as a single // entity (i.e. RTP sockets) to avoid rewriting the RTP handler code. // class PAggregatedHandle; class PAggregatorFD { public: #ifdef _WIN32 typedef WSAEVENT FD; typedef SOCKET FDType; SOCKET socket; #else typedef int FD; typedef int FDType; #endif PAggregatorFD(FDType fd); FD fd; ~PAggregatorFD(); bool IsValid(); }; typedef std::vector PAggregatorFDList_t; ///////////////////////////////////////////////////////////////////////////////////// // // This class defines an abstract class used to define a handle that can be aggregated // // Normally this will correspond directly to a socket, but for RTP this actually corresponds to two sockets // which greatly complicates things // #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable:4127) #endif class PAggregatedHandle : public PObject { PCLASSINFO(PAggregatedHandle, PObject); public: PAggregatedHandle(BOOL _autoDelete = FALSE) : autoDelete(_autoDelete), preReadDone(FALSE) { } virtual PAggregatorFDList_t GetFDs() = 0; virtual PTimeInterval GetTimeout() { return PMaxTimeInterval; } virtual BOOL Init() { return TRUE; } virtual BOOL PreRead() { return TRUE; } virtual BOOL OnRead() = 0; virtual void DeInit() { } virtual BOOL IsPreReadDone() const { return preReadDone; } virtual void SetPreReadDone(BOOL v = TRUE) { preReadDone = v; } BOOL autoDelete; protected: BOOL preReadDone; }; #ifdef _MSC_VER #pragma warning(pop) #endif ///////////////////////////////////////////////////////////////////////////////////// // // This class is the actual socket aggregator // class PHandleAggregator : public PObject { PCLASSINFO(PHandleAggregator, PObject) public: class EventBase { public: virtual PAggregatorFD::FD GetHandle() = 0; virtual void Set() = 0; virtual void Reset() = 0; }; typedef std::vector HandleContextList_t; class WorkerThreadBase : public PThread { public: WorkerThreadBase(EventBase & _event) : PThread(100, NoAutoDeleteThread), event(_event), listChanged(TRUE) { } virtual void Trigger() = 0; void Main(); EventBase & event; PMutex mutex; BOOL listChanged; HandleContextList_t handleList; }; typedef std::vector WorkerList_t; PHandleAggregator(unsigned _max = 10); BOOL AddHandle(PAggregatedHandle * handle); BOOL RemoveHandle(PAggregatedHandle * handle); PMutex mutex; WorkerList_t workers; unsigned maxWorkerSize; unsigned minWorkerSize; }; ///////////////////////////////////////////////////////////////////////////////////// // // This template class allows the creation of aggregators for sockets that are // descendants of PIPSocket // template class PSocketAggregator : public PHandleAggregator { PCLASSINFO(PSocketAggregator, PHandleAggregator) public: class AggregatedPSocket : public PAggregatedHandle { public: AggregatedPSocket(PSocketType * _s) : psocket(_s), fd(_s->GetHandle()) { } BOOL OnRead() { return psocket->OnRead(); } PAggregatorFDList_t GetFDs() { PAggregatorFDList_t list; list.push_back(&fd); return list; } protected: PSocketType * psocket; PAggregatorFD fd; }; typedef std::map SocketList_t; SocketList_t socketList; BOOL AddSocket(PSocketType * sock) { PWaitAndSignal m(mutex); AggregatedPSocket * handle = new AggregatedPSocket(sock); if (AddHandle(handle)) { socketList.insert(SocketList_t::value_type(sock, handle)); return true; } delete handle; return false; } BOOL RemoveSocket(PSocketType * sock) { PWaitAndSignal m(mutex); typename SocketList_t::iterator r = socketList.find(sock); if (r == socketList.end()) return FALSE; AggregatedPSocket * handle = r->second; RemoveHandle(handle); delete handle; socketList.erase(r); return TRUE; } }; #endif pwlib_v1_10_2/include/ptclib/socks.h0100644000176200056700000003407610343317551017605 0ustar releasepostincr/* * socks.h * * SOCKS protocol * * Portable Windows Library * * Copyright (c) 1993-2001 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: socks.h,v $ * Revision 1.8 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.7 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2002/08/05 05:40:45 robertj * Fixed missing pragma interface/implementation * * Revision 1.4 1999/05/01 03:52:20 robertj * Fixed various egcs warnings. * * Revision 1.3 1999/03/09 08:01:47 robertj * Changed comments for doc++ support (more to come). * * Revision 1.2 1998/12/23 00:33:05 robertj * UDP support * * Revision 1.1 1998/12/22 10:34:17 robertj * Initial revision * */ #ifndef _SOCKS_H #define _SOCKS_H #ifdef P_USE_PRAGMA #pragma interface #endif #include /** Base class for implementing the SOCKS protocol for use with PSocksSocket and PSocksUDPSocket. */ class PSocksProtocol { public: PSocksProtocol(WORD port); virtual ~PSocksProtocol() { } // New functions for class enum { DefaultServerPort = 1080 }; BOOL SetServer( const PString & hostname, const char * service = "socks 1080" ); BOOL SetServer( const PString & hostname, WORD port ); /** Set the username and password for the SOCKS server authentication. This is for the cleartext authentication only, GSSAPI, Kerberos etc is not yet supported. */ void SetAuthentication( const PString & username, const PString & password ); protected: BOOL ConnectSocksServer(PTCPSocket & thisSocket); virtual void SetErrorCodes(PChannel::Errors errCode, int osErr) = 0; virtual BOOL SendSocksCommand(PTCPSocket & socket, BYTE command, const char * hostname, PIPSocket::Address addr); virtual BOOL ReceiveSocksResponse(PTCPSocket & socket, PIPSocket::Address & addr, WORD & port); PString serverHost; WORD serverPort; PString authenticationUsername; PString authenticationPassword; PIPSocket::Address remoteAddress; WORD remotePort; PIPSocket::Address localAddress; WORD localPort; }; /** This is an ancestor class allowing access to a SOCKS servers (version 4 and 5). */ class PSocksSocket : public PTCPSocket, public PSocksProtocol { PCLASSINFO(PSocksSocket, PTCPSocket) public: PSocksSocket( WORD port = 0 ); // Overrides from class PSocket. /** Connect a socket to a remote host on the specified port number. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. The port number as defined by the object instance construction or the PIPSocket::SetPort() function. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address ///< Address of remote machine to connect to. ); virtual BOOL Connect( const Address & addr ///< Address of remote machine to connect to. ); /** Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the port parameter is zero then the port number as defined by the object instance construction or the PIPSocket::SetPort() function. For the UDP protocol, the queueSize parameter is ignored. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Cant listen more than once. ); /** Open a socket to a remote host on the specified port number. This is an "accepting" socket. When a "listening" socket has a pending connection to make, this will accept a connection made by the "connecting" socket created to establish a link. The port that the socket uses is the one used in the Listen() command of the socket parameter. Note that this function will block until a remote system connects to the port number specified in the "listening" socket. A further note is that when the version that uses a parameter is used, the socket parameter is automatically closed and its operating system handle transferred to the current object. This occurs regardless of the return value of the function. @return TRUE if the channel was successfully opened. */ BOOL Accept(); virtual BOOL Accept( PSocket & socket ///< Listening socket making the connection. ); // Overrides from class PIPSocket. /** Get the Internet Protocol address for the local host. @return TRUE if the IP number was returned. */ virtual BOOL GetLocalAddress( Address & addr ///< Variable to receive hosts IP address ); virtual BOOL GetLocalAddress( Address & addr, ///< Variable to receive peer hosts IP address WORD & port ///< Variable to receive peer hosts port number ); /** Get the Internet Protocol address for the peer host the socket is connected to. @return TRUE if the IP number was returned. */ virtual BOOL GetPeerAddress( Address & addr ///< Variable to receive hosts IP address ); virtual BOOL GetPeerAddress( Address & addr, ///< Variable to receive peer hosts IP address WORD & port ///< Variable to receive peer hosts port number ); protected: virtual void SetErrorCodes(PChannel::Errors errCode, int osErr); int TransferHandle(PSocksSocket & destination); private: virtual BOOL Connect(WORD localPort, const Address & addr); }; /** This class allows access to RFC1928 compliant SOCKS server. */ class PSocks4Socket : public PSocksSocket { PCLASSINFO(PSocks4Socket, PSocksSocket) public: PSocks4Socket( WORD port = 0 ); PSocks4Socket( const PString & host, WORD port = 0 ); // Overrides from class PObject /** Create a copy of the class on the heap. The exact semantics of the descendent class determine what is required to make a duplicate of the instance. Not all classes can even do a clone operation. The main user of the clone function is the PDictionary class as it requires copies of the dictionary keys. The default behaviour is for this function to assert. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; protected: virtual BOOL SendSocksCommand(PTCPSocket & socket, BYTE command, const char * hostname, PIPSocket::Address addr); virtual BOOL ReceiveSocksResponse(PTCPSocket & socket, PIPSocket::Address & addr, WORD & port); }; /** This class allows access to RFC1928 compliant SOCKS server. */ class PSocks5Socket : public PSocksSocket { PCLASSINFO(PSocks5Socket, PSocksSocket) public: PSocks5Socket( WORD port = 0 ); PSocks5Socket( const PString & host, WORD port = 0 ); // Overrides from class PObject /** Create a copy of the class on the heap. The exact semantics of the descendent class determine what is required to make a duplicate of the instance. Not all classes can even do a clone operation. The main user of the clone function is the PDictionary class as it requires copies of the dictionary keys. The default behaviour is for this function to assert. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; }; /** This class allows access to RFC1928 compliant SOCKS server. */ class PSocksUDPSocket : public PUDPSocket, public PSocksProtocol { PCLASSINFO(PSocksUDPSocket, PUDPSocket) public: PSocksUDPSocket( WORD port = 0 ); PSocksUDPSocket( const PString & host, WORD port = 0 ); // Overrides from class PObject /** Create a copy of the class on the heap. The exact semantics of the descendent class determine what is required to make a duplicate of the instance. Not all classes can even do a clone operation. The main user of the clone function is the PDictionary class as it requires copies of the dictionary keys. The default behaviour is for this function to assert. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; // Overrides from class PSocket. /** Connect a socket to a remote host on the specified port number. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. The port number as defined by the object instance construction or the PIPSocket::SetPort() function. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address // Address of remote machine to connect to. ); virtual BOOL Connect( const Address & addr // Address of remote machine to connect to. ); /** Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the port parameter is zero then the port number as defined by the object instance construction or the PIPSocket::SetPort() function. For the UDP protocol, the queueSize parameter is ignored. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, // Number of pending accepts that may be queued. WORD port = 0, // Port number to use for the connection. Reusability reuse = AddressIsExclusive // Can/Cant listen more than once. ); // Overrides from class PIPSocket. /** Get the Internet Protocol address for the local host. @return TRUE if the IP number was returned. */ virtual BOOL GetLocalAddress( Address & addr // Variable to receive hosts IP address ); virtual BOOL GetLocalAddress( Address & addr, // Variable to receive peer hosts IP address WORD & port // Variable to receive peer hosts port number ); /** Get the Internet Protocol address for the peer host the socket is connected to. @return TRUE if the IP number was returned. */ virtual BOOL GetPeerAddress( Address & addr // Variable to receive hosts IP address ); virtual BOOL GetPeerAddress( Address & addr, // Variable to receive peer hosts IP address WORD & port // Variable to receive peer hosts port number ); // Overrides from class PIPDatagramSocket. /** Read a datagram from a remote computer. @return TRUE if any bytes were sucessfully read. */ virtual BOOL ReadFrom( void * buf, // Data to be written as URGENT TCP data. PINDEX len, // Number of bytes pointed to by buf. Address & addr, // Address from which the datagram was received. WORD & port // Port from which the datagram was received. ); /** Write a datagram to a remote computer. @return TRUE if all the bytes were sucessfully written. */ virtual BOOL WriteTo( const void * buf, // Data to be written as URGENT TCP data. PINDEX len, // Number of bytes pointed to by buf. const Address & addr, // Address to which the datagram is sent. WORD port // Port to which the datagram is sent. ); protected: virtual void SetErrorCodes(PChannel::Errors errCode, int osErr); PTCPSocket socksControl; Address serverAddress; private: virtual BOOL Connect(WORD localPort, const Address & addr); }; #endif // _SOCKS_H // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/telnet.h0100644000176200056700000004454610343317551017761 0ustar releasepostincr/* * telnet.h * * TELNET Socket class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: telnet.h,v $ * Revision 1.24 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.23 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.22 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.21 1999/03/09 08:01:47 robertj * Changed comments for doc++ support (more to come). * * Revision 1.20 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.19 1998/11/30 02:50:56 robertj * New directory structure * * Revision 1.18 1998/09/23 06:20:04 robertj * Added open source copyright license. * * Revision 1.17 1996/08/08 10:08:54 robertj * Directory structure changes for common files. * * Revision 1.16 1995/06/17 11:13:32 robertj * Documentation update. * * Revision 1.15 1995/06/17 00:47:38 robertj * Changed overloaded Open() calls to 3 separate function names. * More logical design of port numbers and service names. * * Revision 1.14 1995/06/04 12:46:26 robertj * Slight redesign of port numbers on sockets. * * Revision 1.13 1995/04/25 11:12:30 robertj * Fixed functions hiding ancestor virtuals. * * Revision 1.12 1995/04/01 08:32:10 robertj * Finally got a working TELNET. * * Revision 1.11 1995/03/18 06:27:50 robertj * Rewrite of telnet socket protocol according to RFC1143. * * Revision 1.10 1995/03/14 12:42:47 robertj * Updated documentation to use HTML codes. * * Revision 1.9 1995/02/21 11:25:33 robertj * Further implementation of telnet socket, feature complete now. * * Revision 1.8 1995/01/03 09:36:23 robertj * Documentation. * * Revision 1.7 1995/01/01 01:07:33 robertj * More implementation. * * Revision 1.6 1994/11/28 12:38:59 robertj * Added DONT and WONT states. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/08/21 23:43:02 robertj * Changed type of socket port number for better portability. * * Revision 1.2 1994/07/25 03:36:03 robertj * Added sockets to common, normalising to same comment standard. * */ #ifndef _PTELNETSOCKET #define _PTELNETSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include /** A TCP/IP socket for the TELNET high level protocol. */ class PTelnetSocket : public PTCPSocket { PCLASSINFO(PTelnetSocket, PTCPSocket) public: PTelnetSocket(); // Create an unopened TELNET socket. PTelnetSocket( const PString & address ///< Address of remote machine to connect to. ); // Create an opened TELNET socket. // Overrides from class PChannel /** Low level read from the channel. This function may block until the requested number of characters were read or the read timeout was reached. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. The TELNET channel intercepts and escapes commands in the data stream to implement the TELNET protocol. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /** Low level write to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. The TELNET channel intercepts and escapes commands in the data stream to implement the TELNET protocol. Returns TRUE if at least len bytes were written to the channel. */ BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** Connect a socket to a remote host on the specified port number. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. The port number as defined by the object instance construction or the PIPSocket::SetPort() function. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address ///< Address of remote machine to connect to. ); /** Open a socket to a remote host on the specified port number. This is an "accepting" socket. When a "listening" socket has a pending connection to make, this will accept a connection made by the "connecting" socket created to establish a link. The port that the socket uses is the one used in the Listen() command of the socket parameter. Note that this function will block until a remote system connects to the port number specified in the "listening" socket. @return TRUE if the channel was successfully opened. */ virtual BOOL Accept( PSocket & socket ///< Listening socket making the connection. ); /** This is callback function called by the system whenever out of band data from the TCP/IP stream is received. A descendent class may interpret this data according to the semantics of the high level protocol. The TELNET socket uses this for sychronisation. */ virtual void OnOutOfBand( const void * buf, ///< Data to be received as URGENT TCP data. PINDEX len ///< Number of bytes pointed to by buf. ); // New functions enum Command { IAC = 255, ///< Interpret As Command - escape character. DONT = 254, ///< You are not to use option. DO = 253, ///< Request to use option. WONT = 252, ///< Refuse use of option. WILL = 251, ///< Accept the use of option. SB = 250, ///< Subnegotiation begin. GoAhead = 249, ///< Function GA, you may reverse the line. EraseLine = 248, ///< Function EL, erase the current line. EraseChar = 247, ///< Function EC, erase the current character. AreYouThere = 246, ///< Function AYT, are you there? AbortOutput = 245, ///< Function AO, abort output stream. InterruptProcess = 244, ///< Function IP, interrupt process, permanently. Break = 243, ///< NVT character break. DataMark = 242, ///< Marker for connection cleaning. NOP = 241, ///< No operation. SE = 240, ///< Subnegotiation end. EndOfReccord = 239, ///< End of record for transparent mode. AbortProcess = 238, ///< Abort the entire process SuspendProcess= 237, ///< Suspend the process. EndOfFile = 236 ///< End of file marker. }; // Defined telnet commands codes /** Send an escaped IAC command. The opt parameters meaning depends on the command being sent:

DO, DONT, WILL, WONT
opt is Options code.
AbortOutput
TRUE is flush buffer.
InterruptProcess, Break, AbortProcess, SuspendProcess
TRUE is synchronise.
Synchronises the TELNET streams, inserts the data mark into outgoing data stream and sends an out of band data to the remote to flush all data in the stream up until the syncronisation command. @return TRUE if the command was successfully sent. */ BOOL SendCommand( Command cmd, ///< Command code to send int opt = 0 ///< Option for command code. ); enum Options { TransmitBinary = 0, ///< Assume binary 8 bit data is transferred. EchoOption = 1, ///< Automatically echo characters sent. ReconnectOption = 2, ///< Prepare to reconnect SuppressGoAhead = 3, ///< Do not use the GA protocol. MessageSizeOption = 4, ///< Negatiate approximate message size StatusOption = 5, ///< Status packets are understood. TimingMark = 6, ///< Marker for synchronisation. RCTEOption = 7, ///< Remote controlled transmission and echo. OutputLineWidth = 8, ///< Negotiate about output line width. OutputPageSize = 9, ///< Negotiate about output page size. CRDisposition = 10, ///< Negotiate about CR disposition. HorizontalTabsStops = 11, ///< Negotiate about horizontal tabstops. HorizTabDisposition = 12, ///< Negotiate about horizontal tab disposition FormFeedDisposition = 13, ///< Negotiate about formfeed disposition. VerticalTabStops = 14, ///< Negotiate about vertical tab stops. VertTabDisposition = 15, ///< Negotiate about vertical tab disposition. LineFeedDisposition = 16, ///< Negotiate about output LF disposition. ExtendedASCII = 17, ///< Extended ascic character set. ForceLogout = 18, ///< Force logout. ByteMacroOption = 19, ///< Byte macro. DataEntryTerminal = 20, ///< data entry terminal. SupDupProtocol = 21, ///< supdup protocol. SupDupOutput = 22, ///< supdup output. SendLocation = 23, ///< Send location. TerminalType = 24, ///< Provide terminal type information. EndOfRecordOption = 25, ///< Record boundary marker. TACACSUID = 26, ///< TACACS user identification. OutputMark = 27, ///< Output marker or banner text. TerminalLocation = 28, ///< Terminals physical location infromation. Use3270RegimeOption = 29, ///< 3270 regime. UseX3PADOption = 30, ///< X.3 PAD WindowSize = 31, ///< NAWS - Negotiate About Window Size. TerminalSpeed = 32, ///< Provide terminal speed information. FlowControl = 33, ///< Remote flow control. LineModeOption = 34, ///< Terminal in line mode option. XDisplayLocation = 35, ///< X Display location. EnvironmentOption = 36, ///< Provide environment information. AuthenticateOption = 37, ///< Authenticate option. EncriptionOption = 38, ///< Encryption option. EncryptionOption = 38, ///< Duplicate to fix spelling mistake and remain backwards compatible. ExtendedOptionsList = 255, ///< Code for extended options. MaxOptions }; // Defined TELNET options. /** Send DO request. @return TRUE if the command was successfully sent. */ virtual BOOL SendDo( BYTE option ///< Option to DO ); /** Send DONT command. @return TRUE if the command was successfully sent. */ virtual BOOL SendDont( BYTE option ///< Option to DONT ); /** Send WILL request. @return TRUE if the command was successfully sent. */ virtual BOOL SendWill( BYTE option ///< Option to WILL ); /** Send WONT command. @return TRUE if the command was successfully sent. */ virtual BOOL SendWont( BYTE option ///< Option to WONT ); enum SubOptionCodes { SubOptionIs = 0, ///< Sub-option is... SubOptionSend = 1, ///< Request to send option. }; // Codes for sub option negotiation. /** Send a sub-option with the information given. @return TRUE if the command was successfully sent. */ BOOL SendSubOption( BYTE code, ///< Suboptions option code. const BYTE * info, ///< Information to send. PINDEX len, ///< Length of information. int subCode = -1 ///< Suboptions sub-code, -1 indicates no sub-code. ); /** Set if the option on our side is possible, this does not mean it is set it only means that in response to a DO we WILL rather than WONT. */ void SetOurOption( BYTE code, ///< Option to check. BOOL state = TRUE ///< New state for for option. ) { option[code].weCan = state; } /** Set if the option on their side is desired, this does not mean it is set it only means that in response to a WILL we DO rather than DONT. */ void SetTheirOption( BYTE code, ///< Option to check. BOOL state = TRUE ///< New state for for option. ) { option[code].theyShould = state; } /** Determine if the option on our side is enabled. @return TRUE if option is enabled. */ BOOL IsOurOption( BYTE code ///< Option to check. ) const { return option[code].ourState == OptionInfo::IsYes; } /** Determine if the option on their side is enabled. @return TRUE if option is enabled. */ BOOL IsTheirOption( BYTE code ///< Option to check. ) const { return option[code].theirState == OptionInfo::IsYes; } void SetTerminalType( const PString & newType ///< New terminal type description string. ); // Set the terminal type description string for TELNET protocol. const PString & GetTerminalType() const { return terminalType; } // Get the terminal type description string for TELNET protocol. void SetWindowSize( WORD width, ///< New window width. WORD height ///< New window height. ); // Set the width and height of the Network Virtual Terminal window. void GetWindowSize( WORD & width, ///< Old window width. WORD & height ///< Old window height. ) const; // Get the width and height of the Network Virtual Terminal window. protected: void Construct(); // Common construct code for TELNET socket channel. /** This callback function is called by the system when it receives a DO request from the remote system. The default action is to send a WILL for options that are understood by the standard TELNET class and a WONT for all others. @return TRUE if option is accepted. */ virtual void OnDo( BYTE option ///< Option to DO ); /** This callback function is called by the system when it receives a DONT request from the remote system. The default action is to disable options that are understood by the standard TELNET class. All others are ignored. */ virtual void OnDont( BYTE option ///< Option to DONT ); /** This callback function is called by the system when it receives a WILL request from the remote system. The default action is to send a DO for options that are understood by the standard TELNET class and a DONT for all others. */ virtual void OnWill( BYTE option ///< Option to WILL ); /** This callback function is called by the system when it receives a WONT request from the remote system. The default action is to disable options that are understood by the standard TELNET class. All others are ignored. */ virtual void OnWont( BYTE option ///< Option to WONT ); /** This callback function is called by the system when it receives a sub-option command from the remote system. */ virtual void OnSubOption( BYTE code, ///< Option code for sub-option data. const BYTE * info, ///< Extra information being sent in the sub-option. PINDEX len ///< Number of extra bytes. ); /** This callback function is called by the system when it receives an telnet command that it does not do anything with. The default action displays a message to the PError stream (when debug is TRUE) and returns TRUE; @return TRUE if next byte is not part of the command. */ virtual BOOL OnCommand( BYTE code ///< Code received that could not be precessed. ); // Member variables. struct OptionInfo { enum { IsNo, IsYes, WantNo, WantNoQueued, WantYes, WantYesQueued }; unsigned weCan:1; // We can do the option if they want us to do. unsigned ourState:3; unsigned theyShould:1; // They should if they will. unsigned theirState:3; }; OptionInfo option[MaxOptions]; // Information on protocol options. PString terminalType; // Type of terminal connected to telnet socket, defaults to "UNKNOWN" WORD windowWidth, windowHeight; // Size of the "window" used by the NVT. BOOL debug; // Debug socket, output messages to PError stream. private: enum State { StateNormal, StateCarriageReturn, StateIAC, StateDo, StateDont, StateWill, StateWont, StateSubNegotiations, StateEndNegotiations }; // Internal states for the TELNET decoder State state; // Current state of incoming characters. PBYTEArray subOption; // Storage for sub-negotiated options unsigned synchronising; BOOL StartSend(const char * which, BYTE code); }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/url.h0100644000176200056700000003542310343317551017262 0ustar releasepostincr/* * url.h * * Universal Resource Locator (for HTTP/HTML) class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: url.h,v $ * Revision 1.34 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.33 2005/04/20 05:19:48 csoutheren * Patch 1185334. Ensure SIP URLs correctly store status of port * Thanks to Ted Szoczei * * Revision 1.32 2005/01/04 07:44:02 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.31 2004/12/08 00:51:11 csoutheren * Move PURLLegacyScheme to header file to allow external usage * * Revision 1.30 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.29 2004/07/07 07:18:43 csoutheren * Removed warnings on Linux from Windows static global hacks * * Revision 1.28 2004/07/06 10:12:51 csoutheren * Added static integer o factory template to assist in ensuring factories are instantiated * * Revision 1.27 2004/06/01 07:32:45 csoutheren * Removed warning on Linux * * Revision 1.26 2004/06/01 07:28:44 csoutheren * Changed URL parsing to use abstract factory code * * Revision 1.25 2004/03/13 06:30:52 rjongbloed * Virtualised parse function. * * Revision 1.24 2003/04/04 05:18:08 robertj * Added "callto", "tel" and fixed "h323" URL types. * * Revision 1.23 2002/12/10 04:40:34 robertj * Added test function for URL being empty. * * Revision 1.22 2002/11/20 00:50:09 robertj * Fixed correct interpretation of url re double slashes as per latest RFC, * including file: mapping and relative paths. Probably still more to do. * * Revision 1.21 2002/11/19 10:36:08 robertj * Added functions to set anf get "file:" URL. as PFilePath and do the right * things with platform dependent directory components. * * Revision 1.20 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.19 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.18 2002/03/18 05:01:54 robertj * Added functions to set component parts of URL. * * Revision 1.17 2001/11/08 00:32:49 robertj * Added parsing of ';' based parameter fields into string dictionary if there are multiple parameters, with '=' values. * * Revision 1.16 2001/09/28 00:32:24 robertj * Broke out internal static function for unstranslating URL strings. * * Revision 1.15 1999/03/09 08:01:47 robertj * Changed comments for doc++ support (more to come). * * Revision 1.14 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.13 1998/09/23 06:20:11 robertj * Added open source copyright license. * * Revision 1.12 1998/02/16 00:12:53 robertj * Added function to open a URL in a browser. * * Revision 1.11 1998/02/03 10:02:35 robertj * Added ability to get scheme, host and port from URL as a string. * * Revision 1.10 1998/02/03 06:18:49 robertj * Fixed URL encoding to be closer to RFC * * Revision 1.9 1997/01/12 04:22:54 robertj * Added has function so URL can be dictionary key. * * Revision 1.8 1996/08/19 13:37:28 robertj * Fixed URL parsing and definition (cannot have relative paths). * * Revision 1.7 1996/06/10 09:55:44 robertj * Added global function for query parameters parsing. * * Revision 1.6 1996/03/31 08:53:13 robertj * Added string representation for URI part only. * * Revision 1.5 1996/03/16 04:46:02 robertj * Added translation type to TranslateString() to accommodate query variables. * * Revision 1.4 1996/03/02 03:12:13 robertj * Added function to translate a string to a form suitable for inclusion in a URL. * * Revision 1.3 1996/02/03 11:06:27 robertj * Added splitting of query field into variables dictionary. * * Revision 1.2 1996/01/26 02:24:32 robertj * Further implemetation. * * Revision 1.1 1996/01/23 13:04:20 robertj * Initial revision * */ #ifndef _PURL #define _PURL #ifdef P_USE_PRAGMA #pragma interface #endif #include ////////////////////////////////////////////////////////////////////////////// // PURL class PURLLegacyScheme; /** This class describes a Universal Resource Locator. This is the desciption of a resource location as used by the World Wide Web and the #PHTTPSocket# class. */ class PURL : public PObject { PCLASSINFO(PURL, PObject) public: /**Construct a new URL object from the URL string. */ PURL(); /**Construct a new URL object from the URL string. */ PURL( const char * cstr, ///< C string representation of the URL. const char * defaultScheme = NULL ///< Default scheme for URL ); /**Construct a new URL object from the URL string. */ PURL( const PString & str, ///< String representation of the URL. const char * defaultScheme = NULL ///< Default scheme for URL ); /**Construct a new URL object from the file path. */ PURL( const PFilePath & path ///< File path to turn into a "file:" URL. ); /**@name Overrides from class PObject */ //@{ /**Compare the two URLs and return their relative rank. @return #LessThan#, #EqualTo# or #GreaterThan# according to the relative rank of the objects. */ virtual Comparison Compare( const PObject & obj ///< Object to compare against. ) const; /**This function yields a hash value required by the #PDictionary# class. A descendent class that is required to be the key of a dictionary should override this function. The precise values returned is dependent on the semantics of the class. For example, the #PString# class overrides it to provide a hash function for distinguishing text strings. The default behaviour is to return the value zero. @return hash function value for class instance. */ virtual PINDEX HashFunction() const; /**Output the contents of the URL to the stream as a string. */ virtual void PrintOn( ostream &strm ///< Stream to print the object into. ) const; /**Input the contents of the URL from the stream. The input is a URL in string form. */ virtual void ReadFrom( istream &strm ///< Stream to read the objects contents from. ); //@} /**@name New functions for class. */ //@{ /**Parse the URL string into the fields in the object instance. */ inline BOOL Parse( const char * cstr, ///< URL as a string to parse. const char * defaultScheme = NULL ///< Default scheme for URL ) { return InternalParse(cstr, defaultScheme); } /**Parse the URL string into the fields in the object instance. */ inline BOOL Parse( const PString & str, ///< URL as a string to parse. const char * defaultScheme = NULL ///< Default scheme for URL ) { return InternalParse((const char *)str, defaultScheme); } /**Print/String output representation formats. */ enum UrlFormat { /// Translate to a string as a full URL FullURL, /// Translate to a string as only path PathOnly, /// Translate to a string with no scheme or host URIOnly, /// Translate to a string with scheme and host/port HostPortOnly }; /**Convert the URL object into its string representation. The parameter indicates whether a full or partial representation os to be produced. @return String representation of the URL. */ PString AsString( UrlFormat fmt = FullURL ///< The type of string to be returned. ) const; /**Get the "file:" URL as a file path. If the URL is not a "file:" URL then returns an empty string. */ PFilePath AsFilePath() const; /// Type for translation of strings to URL format, enum TranslationType { /// Translate a username/password field for a URL. LoginTranslation, /// Translate the path field for a URL. PathTranslation, /// Translate the query parameters field for a URL. QueryTranslation }; /**Translate a string from general form to one that can be included into a URL. All reserved characters for the particular field type are escaped. @return String for the URL ready translation. */ static PString TranslateString( const PString & str, ///< String to be translated. TranslationType type ///< Type of translation. ); /**Untranslate a string from a form that was included into a URL into a normal string. All reserved characters for the particular field type are unescaped. @return String from the URL untranslated. */ static PString UntranslateString( const PString & str, ///< String to be translated. TranslationType type ///< Type of translation. ); /** Split a string in &= form to a dictionary of names and values. */ static void SplitQueryVars( const PString & queryStr, ///< String to split into variables. PStringToString & queryVars ///< Dictionary of variable names and values. ); /// Get the scheme field of the URL. const PCaselessString & GetScheme() const { return scheme; } /// Set the scheme field of the URL void SetScheme(const PString & scheme); /// Get the username field of the URL. const PString & GetUserName() const { return username; } /// Set the username field of the URL. void SetUserName(const PString & username); /// Get the password field of the URL. const PString & GetPassword() const { return password; } /// Set the password field of the URL. void SetPassword(const PString & password); /// Get the hostname field of the URL. const PCaselessString & GetHostName() const { return hostname; } /// Set the hostname field of the URL. void SetHostName(const PString & hostname); /// Get the port field of the URL. WORD GetPort() const { return port; } /// Set the port field in the URL. void SetPort(WORD newPort); /// Get if path is relative or absolute BOOL GetRelativePath() const { return relativePath; } /// Get the path field of the URL as a string. const PString & GetPathStr() const { return pathStr; } /// Set the path field of the URL as a string. void SetPathStr(const PString & pathStr); /// Get the path field of the URL as a string array. const PStringArray & GetPath() const { return path; } /// Set the path field of the URL as a string array. void SetPath(const PStringArray & path); /// Get the parameter (;) field of the URL. PString GetParameters() const; /// Set the parameter (;) field of the URL. void SetParameters(const PString & parameters); /// Get the parameter (;) field(s) of the URL as a string dictionary. const PStringToString & GetParamVars() const { return paramVars; } /// Set the parameter (;) field(s) of the URL as a string dictionary. void SetParamVars(const PStringToString & paramVars); /// Set the parameter (;) field of the URL as a string dictionary. void SetParamVar(const PString & key, const PString & data); /// Get the fragment (##) field of the URL. const PString & GetFragment() const { return fragment; } /// Get the Query (?) field of the URL as a string. PString GetQuery() const; /// Set the Query (?) field of the URL as a string. void SetQuery(const PString & query); /// Get the Query (?) field of the URL as a string dictionary. const PStringToString & GetQueryVars() const { return queryVars; } /// Set the Query (?) field(s) of the URL as a string dictionary. void SetQueryVars(const PStringToString & queryVars); /// Set the Query (?) field of the URL as a string dictionary. void SetQueryVar(const PString & key, const PString & data); /// Return TRUE if the URL is an empty string. BOOL IsEmpty() const { return urlString.IsEmpty(); } /**Open the URL in a browser. @return The browser was successfully opened. This does not mean the URL exists and was displayed. */ static BOOL OpenBrowser( const PString & url ///< URL to open ); //@} BOOL LegacyParse(const PString & _url, const PURLLegacyScheme * schemeInfo); PString LegacyAsString(PURL::UrlFormat fmt, const PURLLegacyScheme * schemeInfo) const; protected: virtual BOOL InternalParse( const char * cstr, ///< URL as a string to parse. const char * defaultScheme ///< Default scheme for URL ); void Recalculate(); PString urlString; PCaselessString scheme; PString username; PString password; PCaselessString hostname; WORD port; BOOL portSupplied; /// port was supplied in string input BOOL relativePath; PString pathStr; PStringArray path; PStringToString paramVars; PString fragment; PStringToString queryVars; }; ////////////////////////////////////////////////////////////////////////////// // PURLScheme class PURLScheme : public PObject { PCLASSINFO(PURLScheme, PObject); public: virtual PString GetName() const = 0; virtual BOOL Parse(const PString & url, PURL & purl) const = 0; virtual PString AsString(PURL::UrlFormat fmt, const PURL & purl) const = 0; }; ////////////////////////////////////////////////////////////////////////////// // PURLLegacyScheme class PURLLegacyScheme : public PURLScheme { public: PURLLegacyScheme(const char * _scheme) : scheme(_scheme) { } BOOL Parse(const PString & url, PURL & purl) const { return purl.LegacyParse(url, this); } PString AsString(PURL::UrlFormat fmt, const PURL & purl) const { return purl.LegacyAsString(fmt, this); } PString GetName() const { return scheme; } PString scheme; BOOL hasUsername; BOOL hasPassword; BOOL hasHostPort; BOOL defaultToUserIfNoAt; BOOL defaultHostToLocal; BOOL hasQuery; BOOL hasParameters; BOOL hasFragments; BOOL hasPath; BOOL relativeImpliesScheme; WORD defaultPort; }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/vsdl.h0100644000176200056700000001433210343317551017424 0ustar releasepostincr/* * vsdl.h * * Classes to support video output via SDL * * Copyright (c) 1999-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Open H323 Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): Derek J Smithies (derek@indranet.co.nz) * * $Log: vsdl.h,v $ * Revision 1.10 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.9 2005/08/09 09:08:08 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.8.2.1 2005/07/17 09:26:46 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.8 2005/07/13 12:50:07 csoutheren * Backported changes from isvo branch * * Revision 1.7.8.1 2005/04/25 13:27:26 shorne * Added support for capture SDL output to redirect to existing surface * * Revision 1.7 2004/05/31 01:26:58 dereksmithies * Fix the "no newline at end of file" warning. * * Revision 1.6 2004/05/27 04:47:05 csoutheren * Added include guard to file * * Revision 1.5 2003/12/12 05:11:56 rogerhardiman * Add SDL support on FreeBSD. Header files live in SDL11 directory * * Revision 1.4 2003/05/17 03:20:48 rjongbloed * Removed need to do strange things with main() function. * * Revision 1.3 2003/04/28 14:29:45 craigs * Started rearranging code * * Revision 1.2 2003/04/28 08:44:42 craigs * Fixed problem with include on linux * * Revision 1.1 2003/04/28 07:04:20 craigs * Initial version from ohphone * * Revision 1.8 2003/03/21 00:47:47 dereks * Remove surplus PTRACE statements. * * Revision 1.7 2003/03/20 23:50:41 dereks * Fixups resulting from the new PVideoOutputDevice class code. * * Revision 1.6 2002/12/03 21:45:05 dereks * Fixes from Walter Whitlock to cure warnings about u_chars. Thanks! * * Revision 1.5 2002/06/27 02:17:40 robertj * Renamed video format 411 to the correct 420P, thanks Mark Cooke * * Revision 1.4 2002/04/29 03:51:55 dereks * Documentation tidy up. Thanks to Walter Whitlock. * * Revision 1.3 2002/04/26 03:33:32 dereks * Major upgrade. All calls to SDL library are now done by one thread. * * Revision 1.2 2001/05/25 01:14:44 dereks * Alter SetFrameSize & OpenWindo to use unsigned variables. Change type of * other variables to eliminate compiler warnings. * * Revision 1.1 2001/03/07 01:47:45 dereks * Initial release of SDL (Simple DirectMedia Layer, a cross-platform multimedia library), * a video library code. * * */ #ifndef _PVSDL #define _PVSDL #if P_SDL #include #if defined(P_FREEBSD) #include #else #include #endif #undef main /**Display data to the SDL screen. */ class PVideoOutputDevice_SDL : public PVideoOutputDevice { PCLASSINFO(PVideoOutputDevice_SDL, PVideoOutputDevice); public: /**Constructor. Does not make a window. */ PVideoOutputDevice_SDL(); /**Destructor. Closes window if necessary, (which initializes all variables) */ ~PVideoOutputDevice_SDL(); /**Get a list of all of the devices available. */ virtual PStringList GetDeviceNames() const; /**Open the device given the device name. */ virtual BOOL Open( const PString & /*deviceName*/, ///< Device name to open BOOL /*startImmediate*/ = TRUE ///< Immediately start device ); /**Synonymous with the destructor. */ virtual BOOL Close(); /**Global test function to determine if this video rendering class is open.*/ virtual BOOL IsOpen(); /**Set the colour format to be used. Note that this function does not do any conversion. If it returns TRUE then the video device does the colour format in native mode. To utilise an internal converter use the SetColourFormatConverter() function. Default behaviour sets the value of the colourFormat variable and then returns TRUE. */ virtual BOOL SetColourFormat( const PString & colourFormat ///< New colour format for device. ); /**Set the frame size to be used. Note that devices may not be able to produce the requested size, and this function will fail. See SetFrameSizeConverter(). Default behaviour sets the frameWidth and frameHeight variables and returns TRUE. */ virtual BOOL SetFrameSize( unsigned width, ///< New width of frame unsigned height ///< New height of frame ); /**Get the maximum frame size in bytes. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ virtual PINDEX GetMaxFrameBytes(); /**Set a section of the output frame buffer. */ virtual BOOL SetFrameData( unsigned x, unsigned y, unsigned width, unsigned height, const BYTE * data, BOOL endFrame = TRUE ); protected: PDECLARE_NOTIFIER(PThread, PVideoOutputDevice_SDL, SDLThreadMain); bool InitialiseSDL(); bool ProcessSDLEvents(); PThread * sdlThread; PSyncPoint sdlStarted; PSyncPointAck sdlStop; PSyncPointAck adjustSize; bool updateOverlay; PMutex mutex; SDL_Surface * screen; SDL_Overlay * overlay; }; typedef PVideoOutputDevice_SDL PSDLVideoDevice; // Backward compatibility PWLIB_STATIC_LOAD_PLUGIN(SDL, PVideoOutputDevice); #endif // P_SDL #endif pwlib_v1_10_2/include/ptclib/vxml.h0100644000176200056700000006222410350356271017445 0ustar releasepostincr/* * vxml.h * * VXML engine for pwlib library * * Copyright (C) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: vxml.h,v $ * Revision 1.44 2005/12/15 21:14:33 dsandras * Fixed from Alexander Larsson for gcc 4.1 compilation. Thanks! * * Revision 1.43 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.42 2005/10/30 23:25:51 csoutheren * Fixed formatting * Removed throw() declarations (PWLib does not do exceptions) * Removed duplicate destructor declarations and definitions * * Revision 1.41 2005/10/30 19:41:53 dominance * fixed most of the warnings occuring during compilation * * Revision 1.40 2005/05/12 13:40:45 csoutheren * Fixed locking problems with currentPLayItem optimisation * * Revision 1.39 2005/05/12 05:28:35 csoutheren * Optimised read loop and fixed problems with playing repeated continuous tones * * Revision 1.38 2005/04/21 05:27:58 csoutheren * Changed default value for OnFrame * * Revision 1.37 2005/03/19 02:52:53 csoutheren * Fix warnings from gcc 4.1-20050313 shapshot * * Revision 1.36 2004/12/08 00:52:06 csoutheren * Added GetSampleFrequency function * * Revision 1.35 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.34 2004/08/09 11:10:34 csoutheren * Changed SetTextToSpeech to return ptr to new engine * * Revision 1.33 2004/07/26 00:40:41 csoutheren * Fixed thread starvation problem under Linux by splitting channelMutex * into seperate read and write mutexes * * Revision 1.32 2004/07/23 00:59:26 csoutheren * Check in latest changes * * Revision 1.31 2004/07/15 03:12:41 csoutheren * Migrated changes from crs_vxnml_devel branch into main trunk * * Revision 1.30.2.7 2004/07/13 08:13:05 csoutheren * Lots of implementation of factory-based PWAVFile * * Revision 1.30.2.6 2004/07/12 08:30:16 csoutheren * More fixes for abstract factory implementation of PWAVFile * * Revision 1.30.2.5 2004/07/08 04:58:11 csoutheren * Exposed VXML playable classes to allow descendants * * Revision 1.30.2.4 2004/07/07 07:07:41 csoutheren * Changed PWAVFile to use abstract factories (extensively) * Removed redundant blocking/unblocking when using G.723.1 * More support for call transfer * * Revision 1.30.2.3 2004/07/06 01:38:57 csoutheren * Changed PVXMLChannel to use PDelayChannel * Fixed bug where played files were deleted after playing * * Revision 1.30.2.2 2004/07/02 07:22:37 csoutheren * Updated for latest factory changes * * Revision 1.30.2.1 2004/06/20 11:18:03 csoutheren * Rewrite of resource cacheing to cache text-to-speech output * * Revision 1.30 2004/06/19 07:21:08 csoutheren * Change TTS engine registration to use abstract factory code * Started disentanglement of PVXMLChannel from PVXMLSession * Fixed problem with VXML session closing if played data file is not exact frame size multiple * Allowed PVXMLSession to be used without a VXML script * Changed PVXMLChannel to handle "file:" URLs * Numerous other small improvements and optimisations * * Revision 1.29 2004/06/02 08:29:28 csoutheren * Added new code from Andreas Sikkema to implement various VXML features * * Revision 1.28 2004/06/02 06:17:21 csoutheren * Removed unnecessary buffer copying and removed potential busy loop * * Revision 1.27 2004/03/23 04:48:42 csoutheren * Improved ability to start VXML scripts as needed * * Revision 1.26 2003/04/23 11:55:13 craigs * Added ability to record audio * * Revision 1.25 2003/04/08 05:09:41 craigs * Added ability to use commands as an audio source * * Revision 1.24 2003/03/18 00:45:36 robertj * Fixed missing return in previous patch. * * Revision 1.23 2003/03/18 00:40:28 robertj * Added back the IsMediaPCM() function for backward compatibility. * * Revision 1.22 2003/03/17 08:02:54 robertj * Combined to the separate incoming and outgoing substream classes into * a single class to make it easier to produce codec aware descendents. * Added G.729 substream class. * * Revision 1.21 2002/11/08 03:38:34 craigs * Fixed problem with G.723.1 files * * Revision 1.20 2002/09/18 06:37:13 robertj * Added functions to load vxml directly, via file or URL. Old function * intelligently picks which one to use. * * Revision 1.19 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.18 2002/09/03 04:11:14 craigs * More VXML changes * * Revision 1.17 2002/08/30 05:06:13 craigs * Added changes for PVXMLGrammar * * Revision 1.16 2002/08/28 08:04:31 craigs * Reorganised VXMLSession class as per contributed code * * Revision 1.15 2002/08/28 05:10:27 craigs * Added ability to load resources via URI * Added cache * * Revision 1.14 2002/08/27 02:19:13 craigs * Added command in prompt blocks * Fixed potential deadlock * * Revision 1.13 2002/08/15 04:11:16 robertj * Fixed shutdown problems with closing vxml session, leaks a thread. * Fixed potential problems with indirect channel Close() function. * * Revision 1.12 2002/08/08 01:03:19 craigs * Added function to re-enable automatic call clearing on script end * * Revision 1.11 2002/08/06 07:44:56 craigs * Added lots of stuff from OpalVXML * * Revision 1.10 2002/07/29 15:08:34 craigs * Added autodelete option to PlayFile * * Revision 1.9 2002/07/29 15:03:58 craigs * Added access to queue functions * Added autodelete option to AddFile * * Revision 1.8 2002/07/29 14:15:47 craigs * Added asynchronous VXML execution * * Revision 1.7 2002/07/17 08:34:12 craigs * Fixed deadlock problems * * Revision 1.6 2002/07/17 06:08:43 craigs * Added additional "sayas" classes * * Revision 1.5 2002/07/10 13:14:55 craigs * Moved some VXML classes from Opal back into PTCLib * * Revision 1.4 2002/07/05 06:27:26 craigs * Removed unused member variables * Added OnEmptyAction callback * * Revision 1.3 2002/07/02 06:23:51 craigs * Added recording functions * * Revision 1.2 2002/06/27 05:39:18 craigs * Fixed Linux warning * * Revision 1.1 2002/06/27 05:28:17 craigs * Initial version * * */ #ifndef _VXML_H #define _VXML_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include #include #include #include #include #include class PVXMLSession; class PVXMLDialog; class PVXMLSession; class PVXMLTransferOptions; class PVXMLTransferResult; // these are the same strings as the Opal equivalents, but as this is PWLib, we can't use Opal contants #define VXML_PCM16 "PCM-16" #define VXML_G7231 "G.723.1" #define VXML_G729 "G.729" #define PVXML_HAS_FACTORY 1 class PVXMLGrammar : public PObject { PCLASSINFO(PVXMLGrammar, PObject); public: PVXMLGrammar(PXMLElement * field); virtual BOOL OnUserInput(const char /*ch*/) { return TRUE; } virtual void Stop() { } PString GetValue() const { return value; } PXMLElement * GetField() { return field; } enum GrammarState { FILLED, ///< got something that matched the grammar NOINPUT, ///< timeout or still waiting to match NOMATCH, ///< recognized something but didn't match the grammar HELP }; ///< help keyword GrammarState GetState() const { return state; } protected: PXMLElement * field; PString value; GrammarState state; }; ////////////////////////////////////////////////////////////////// class PVXMLMenuGrammar : public PVXMLGrammar { PCLASSINFO(PVXMLMenuGrammar, PVXMLGrammar); public: PVXMLMenuGrammar(PXMLElement * field); }; ////////////////////////////////////////////////////////////////// class PVXMLDigitsGrammar : public PVXMLGrammar { PCLASSINFO(PVXMLDigitsGrammar, PVXMLGrammar); public: PVXMLDigitsGrammar(PXMLElement * field, PINDEX minDigits, PINDEX maxDigits, PString terminators); BOOL OnUserInput(const char ch); virtual void Stop(); protected: PINDEX minDigits; PINDEX maxDigits; PString terminators; }; ////////////////////////////////////////////////////////////////// class PVXMLCache : public PMutex { public: PVXMLCache(const PDirectory & _directory); PFilePath CreateFilename(const PString & prefix, const PString & key, const PString & fileType); void Put(const PString & prefix, const PString & key, const PString & fileType, const PString & contentType, const PFilePath & fn, PFilePath & dataFn); BOOL Get(const PString & prefix, const PString & key, const PString & fileType, PString & contentType, PFilePath & fn); PFilePath GetCacheDir() const { return directory; } PFilePath GetRandomFilename(const PString & prefix, const PString & fileType); static PVXMLCache & GetResourceCache(); protected: PDirectory directory; }; ////////////////////////////////////////////////////////////////// class PVXMLChannel; class PVXMLChannelInterface { public: virtual ~PVXMLChannelInterface() { } virtual PWAVFile * CreateWAVFile(const PFilePath & fn, PFile::OpenMode mode, int opts, unsigned fmt) = 0; virtual void RecordEnd() = 0; virtual void OnEndRecording(const PString & channelName) = 0; virtual void Trigger() = 0; }; ////////////////////////////////////////////////////////////////// class PVXMLSession : public PIndirectChannel, public PVXMLChannelInterface { PCLASSINFO(PVXMLSession, PIndirectChannel); public: PVXMLSession(PTextToSpeech * tts = NULL, BOOL autoDelete = FALSE); virtual ~PVXMLSession(); void SetFinishWhenEmpty(BOOL v) { finishWhenEmpty = v; } // new functions PTextToSpeech * SetTextToSpeech(PTextToSpeech * _tts, BOOL autoDelete = FALSE); PTextToSpeech * SetTextToSpeech(const PString & ttsName); PTextToSpeech * GetTextToSpeech() { return textToSpeech; } virtual BOOL Load(const PString & source); virtual BOOL LoadFile(const PFilePath & file); virtual BOOL LoadURL(const PURL & url); virtual BOOL LoadVXML(const PString & xml); virtual BOOL IsLoaded() const { return loaded; } virtual BOOL Open(BOOL isPCM); // For backward compatibility FALSE=G.723.1 virtual BOOL Open(const PString & mediaFormat); virtual BOOL Close(); BOOL Execute(); PVXMLChannel * GetAndLockVXMLChannel() { sessionMutex.Wait(); if (vxmlChannel != NULL) return vxmlChannel; sessionMutex.Signal(); return NULL; } void UnLockVXMLChannel() { sessionMutex.Signal(); } PMutex & GetSessionMutex() { return sessionMutex; } BOOL LoadGrammar(PVXMLGrammar * grammar); virtual BOOL PlayText(const PString & text, PTextToSpeech::TextType type = PTextToSpeech::Default, PINDEX repeat = 1, PINDEX delay = 0); BOOL ConvertTextToFilenameList(const PString & _text, PTextToSpeech::TextType type, PStringArray & list, BOOL useCacheing); virtual BOOL PlayFile(const PString & fn, PINDEX repeat = 1, PINDEX delay = 0, BOOL autoDelete = FALSE); virtual BOOL PlayData(const PBYTEArray & data, PINDEX repeat = 1, PINDEX delay = 0); virtual BOOL PlayCommand(const PString & data, PINDEX repeat = 1, PINDEX delay = 0); virtual BOOL PlayResource(const PURL & url, PINDEX repeat = 1, PINDEX delay = 0); //virtual BOOL PlayMedia(const PURL & url, PINDEX repeat = 1, PINDEX delay = 0); virtual BOOL PlaySilence(PINDEX msecs = 0); virtual BOOL PlaySilence(const PTimeInterval & timeout); virtual void SetPause(BOOL pause); virtual void GetBeepData(PBYTEArray & data, unsigned ms); virtual BOOL StartRecording(const PFilePath & fn, BOOL recordDTMFTerm, const PTimeInterval & recordMaxTime, const PTimeInterval & recordFinalSilence); virtual BOOL EndRecording(); virtual BOOL IsPlaying() const; virtual BOOL IsRecording() const; virtual BOOL OnUserInput(const PString & str); PString GetXMLError() const; virtual void OnEndSession() { } virtual PString GetVar(const PString & str) const; virtual void SetVar(const PString & ostr, const PString & val); virtual PString EvaluateExpr(const PString & oexpr); virtual BOOL RetreiveResource(const PURL & url, PString & contentType, PFilePath & fn, BOOL useCache = TRUE); PDECLARE_NOTIFIER(PThread, PVXMLSession, VXMLExecute); virtual BOOL DoTransfer(const PVXMLTransferOptions &) { return TRUE; } virtual void OnTransfer(const PVXMLTransferResult &); void SetCallingToken( PString& token ) { callingCallToken = token; } PXMLElement * FindHandler(const PString & event); // overrides from VXMLChannelInterface PWAVFile * CreateWAVFile(const PFilePath & fn, PFile::OpenMode mode, int opts, unsigned fmt); void OnEndRecording(const PString & channelName); void RecordEnd(); void Trigger(); protected: void Initialise(); void AllowClearCall(); void ProcessUserInput(); void ProcessNode(); void ProcessGrammar(); BOOL TraverseAudio(); BOOL TraverseGoto(); BOOL TraverseGrammar(); BOOL TraverseRecord(); BOOL TraverseIf(); BOOL TraverseExit(); BOOL TraverseVar(); BOOL TraverseSubmit(); BOOL TraverseMenu(); BOOL TraverseChoice(const PString & grammarResult); BOOL TraverseProperty(); void SayAs(const PString & className, const PString & text); static PTimeInterval StringToTime(const PString & str); PURL NormaliseResourceName(const PString & src); PXMLElement * FindForm(const PString & id); virtual BOOL TraverseTransfer(); //friend class PVXMLChannel; PSyncPoint waitForEvent; PMutex sessionMutex; PXML xmlFile; PVXMLGrammar * activeGrammar; BOOL listening; // TRUE if waiting for recognition events int timeout; // timeout in msecs for the current recognition PStringToString sessionVars; PStringToString documentVars; PMutex userInputMutex; std::queue userInputQueue; BOOL recording; PFilePath recordFn; BOOL recordDTMFTerm; PTimeInterval recordMaxTime; PTimeInterval recordFinalSilence; PSyncPoint recordSync; BOOL loaded; BOOL finishWhenEmpty; BOOL allowFinish; PURL rootURL; BOOL emptyAction; PThread * vxmlThread; BOOL threadRunning; BOOL forceEnd; PString mediaFormat; PVXMLChannel * vxmlChannel; PTextToSpeech * textToSpeech; BOOL autoDeleteTextToSpeech; PXMLElement * currentForm; PXMLElement * currentField; PXMLObject * currentNode; private: void ExecuteDialog(); PString callingCallToken; PSyncPoint transferSync; PSyncPoint answerSync; PString grammarResult; PString eventName; PINDEX defaultDTMF; }; ////////////////////////////////////////////////////////////////// class PVXMLRecordable : public PObject { PCLASSINFO(PVXMLRecordable, PObject); public: PVXMLRecordable() { consecutiveSilence = 0; finalSilence = 3000; maxDuration = 30000; } virtual BOOL Open(const PString & _arg) = 0; virtual void Record(PVXMLChannel & incomingChannel) = 0; virtual void OnStart() { } virtual BOOL OnFrame(BOOL /*isSilence*/) { return FALSE; } virtual void OnStop() { } void SetFinalSilence(unsigned v) { finalSilence = v; } unsigned GetFinalSilence() { return finalSilence; } void SetMaxDuration(unsigned v) { maxDuration = v; } unsigned GetMaxDuration() { return maxDuration; } protected: PTime silenceStart; PTime recordStart; unsigned finalSilence; unsigned maxDuration; unsigned consecutiveSilence; }; ////////////////////////////////////////////////////////////////// class PVXMLPlayable : public PObject { PCLASSINFO(PVXMLPlayable, PObject); public: PVXMLPlayable() { repeat = 1; delay = 0; sampleFrequency = 8000; autoDelete = FALSE; delayDone = FALSE; } virtual BOOL Open(PVXMLChannel & /*chan*/, PINDEX _delay, PINDEX _repeat, BOOL _autoDelete) { delay = _delay; repeat = _repeat; autoDelete = _autoDelete; return TRUE; } virtual BOOL Open(PVXMLChannel & chan, const PString & _arg, PINDEX _delay, PINDEX _repeat, BOOL v) { arg = _arg; return Open(chan, _delay, _repeat, v); } virtual void Play(PVXMLChannel & outgoingChannel) = 0; virtual void OnRepeat(PVXMLChannel & /*outgoingChannel*/) { } virtual void OnStart() { } virtual void OnStop() { } virtual void SetRepeat(PINDEX v) { repeat = v; } virtual PINDEX GetRepeat() const { return repeat; } virtual PINDEX GetDelay() const { return delay; } void SetFormat(const PString & _fmt) { format = _fmt; } void SetSampleFrequency(unsigned _rate) { sampleFrequency = _rate; } virtual BOOL ReadFrame(PVXMLChannel & channel, void * buf, PINDEX len); virtual BOOL Rewind(PChannel *) { return FALSE; } friend class PVXMLChannel; protected: PString arg; PINDEX repeat; PINDEX delay; PString format; unsigned sampleFrequency; BOOL autoDelete; BOOL delayDone; // very tacky flag used to indicate when the post-play delay has been done }; ////////////////////////////////////////////////////////////////// class PVXMLPlayableURL : public PVXMLPlayable { PCLASSINFO(PVXMLPlayableURL, PVXMLPlayable); public: BOOL Open(PVXMLChannel & chan, const PString & _url, PINDEX _delay, PINDEX _repeat, BOOL v); void Play(PVXMLChannel & outgoingChannel); protected: PURL url; }; ////////////////////////////////////////////////////////////////// class PVXMLPlayableData : public PVXMLPlayable { PCLASSINFO(PVXMLPlayableData, PVXMLPlayable); public: BOOL Open(PVXMLChannel & chan, const PString & /*_fn*/, PINDEX _delay, PINDEX _repeat, BOOL v); void SetData(const PBYTEArray & _data); void Play(PVXMLChannel & outgoingChannel); BOOL Rewind(PChannel * chan); protected: PBYTEArray data; }; ////////////////////////////////////////////////////////////////// class PVXMLPlayableCommand : public PVXMLPlayable { PCLASSINFO(PVXMLPlayableCommand, PVXMLPlayable); public: PVXMLPlayableCommand(); void Play(PVXMLChannel & outgoingChannel); void OnStop(); protected: PPipeChannel * pipeCmd; }; ////////////////////////////////////////////////////////////////// class PVXMLPlayableFilename : public PVXMLPlayable { PCLASSINFO(PVXMLPlayableFilename, PVXMLPlayable); public: BOOL Open(PVXMLChannel & chan, const PString & _fn, PINDEX _delay, PINDEX _repeat, BOOL _autoDelete); void Play(PVXMLChannel & outgoingChannel); void OnStop(); virtual BOOL Rewind(PChannel * chan); protected: PFilePath fn; }; ////////////////////////////////////////////////////////////////// class PVXMLPlayableFilenameList : public PVXMLPlayable { PCLASSINFO(PVXMLPlayableFilenameList, PVXMLPlayable); public: BOOL Open(PVXMLChannel & chan, const PStringArray & _filenames, PINDEX _delay, PINDEX _repeat, BOOL _autoDelete); void Play(PVXMLChannel & outgoingChannel) { OnRepeat(outgoingChannel); } void OnRepeat(PVXMLChannel & outgoingChannel); void OnStop(); protected: PINDEX currentIndex; PStringArray filenames; }; ////////////////////////////////////////////////////////////////// class PVXMLRecordableFilename : public PVXMLRecordable { PCLASSINFO(PVXMLRecordableFilename, PVXMLRecordable); public: BOOL Open(const PString & _arg); void Record(PVXMLChannel & incomingChannel); BOOL OnFrame(BOOL isSilence); protected: PFilePath fn; }; ////////////////////////////////////////////////////////////////// PQUEUE(PVXMLQueue, PVXMLPlayable); ////////////////////////////////////////////////////////////////// class PVXMLChannel : public PDelayChannel { PCLASSINFO(PVXMLChannel, PDelayChannel); public: PVXMLChannel(unsigned frameDelay, PINDEX frameSize); ~PVXMLChannel(); virtual BOOL Open(PVXMLChannelInterface * _vxml); // overrides from PIndirectChannel virtual BOOL IsOpen() const; virtual BOOL Close(); virtual BOOL Read(void * buffer, PINDEX amount); virtual BOOL Write(const void * buf, PINDEX len); // new functions virtual PWAVFile * CreateWAVFile(const PFilePath & fn, BOOL recording = FALSE); const PString & GetMediaFormat() const { return mediaFormat; } BOOL IsMediaPCM() const { return mediaFormat == "PCM-16"; } virtual PString AdjustWavFilename(const PString & fn); // Incoming channel functions virtual BOOL WriteFrame(const void * buf, PINDEX len) = 0; virtual BOOL IsSilenceFrame(const void * buf, PINDEX len) const = 0; virtual BOOL QueueRecordable(PVXMLRecordable * newItem); BOOL StartRecording(const PFilePath & fn, unsigned finalSilence = 3000, unsigned maxDuration = 30000); BOOL EndRecording(); BOOL IsRecording() const { return recording; } // Outgoing channel functions virtual BOOL ReadFrame(void * buffer, PINDEX amount) = 0; virtual PINDEX CreateSilenceFrame(void * buffer, PINDEX amount) = 0; virtual void GetBeepData(PBYTEArray &, unsigned) { } virtual BOOL QueueResource(const PURL & url, PINDEX repeat= 1, PINDEX delay = 0); virtual BOOL QueuePlayable(const PString & type, const PString & str, PINDEX repeat = 1, PINDEX delay = 0, BOOL autoDelete = FALSE); virtual BOOL QueuePlayable(PVXMLPlayable * newItem); virtual BOOL QueueData(const PBYTEArray & data, PINDEX repeat = 1, PINDEX delay = 0); virtual BOOL QueueFile(const PString & fn, PINDEX repeat = 1, PINDEX delay = 0, BOOL autoDelete = FALSE) { return QueuePlayable("File", fn, repeat, delay, autoDelete); } virtual BOOL QueueCommand(const PString & cmd, PINDEX repeat = 1, PINDEX delay = 0) { return QueuePlayable("Command", cmd, repeat, delay, TRUE); } virtual void FlushQueue(); virtual BOOL IsPlaying() const { return (playQueue.GetSize() > 0) || playing ; } void SetPause(BOOL _pause) { paused = _pause; } void SetName(const PString & name) { channelName = name; } unsigned GetSampleFrequency() const { return sampleFrequency; } protected: PVXMLChannelInterface * vxmlInterface; unsigned sampleFrequency; PString mediaFormat; PString wavFilePrefix; PMutex channelWriteMutex; PMutex channelReadMutex; BOOL closed; // Incoming audio variables BOOL recording; PVXMLRecordable * recordable; unsigned finalSilence; unsigned silenceRun; // Outgoing audio variables BOOL playing; PMutex queueMutex; PVXMLQueue playQueue; PVXMLPlayable * currentPlayItem; BOOL paused; int silentCount; int totalData; PTimer delayTimer; // "channelname" (which is the name of the tag) so // results can be saved in vxml session variable PString channelName; }; ////////////////////////////////////////////////////////////////// class PVXMLTransferOptions : public PObject { PCLASSINFO(PVXMLTransferOptions, PObject); public: PVXMLTransferOptions() { } void SetCallingToken(const PString & calling) { callingToken = calling; } PString GetCallingToken() const { return callingToken; } void SetCalledToken(const PString & called) { calledToken = called; } PString GetCalledToken( ) const { return calledToken; } void SetSourceDNR(const PString & src) { source = src; } PString GetSourceDNR() const { return source; } void SetDestinationDNR(const PString & dest ) { destination = dest; } PString GetDestinationDNR() const { return destination; } void SetTimeout(unsigned int time) { timeout = time; } unsigned int GetTimeout() const { return timeout; } void SetBridge(BOOL brdg) { bridge = brdg; } BOOL GetBridge() const { return bridge; } private: PString callingToken; PString calledToken; PString destination; PString source; unsigned int timeout; BOOL bridge; }; class PVXMLTransferResult : public PString { PCLASSINFO(PVXMLTransferResult, PString); public: PVXMLTransferResult() { } PVXMLTransferResult(char * cstr) : PString( cstr ) { } PVXMLTransferResult(const PString & str ) : PString(str) {} void SetName(const PString & n) { name = n; } PString GetName() const { return name; } private: PString name; }; #endif // End of file //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/xmpp.h0100644000176200056700000003425710343317551017450 0ustar releasepostincr/* * xmpp.h * * Extensible Messaging and Presence Protocol (XMPP) Core * * Portable Windows Library * * Copyright (c) 2004 Reitek S.p.A. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: xmpp.h,v $ * Revision 1.5 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2004/11/11 07:34:50 csoutheren * Added #include * * Revision 1.3 2004/05/09 07:23:46 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * Revision 1.2 2004/04/26 01:51:57 rjongbloed * More implementation of XMPP, thanks a lot to Federico Pinna & Reitek S.p.A. * * Revision 1.1 2004/04/22 12:31:00 rjongbloed * Added PNotifier extensions and XMPP (Jabber) support, * thanks to Federico Pinna and Reitek S.p.A. * * */ #ifndef _XMPP #define _XMPP #ifdef P_USE_PRAGMA #pragma interface #endif #include #if P_EXPAT #include #include /////////////////////////////////////////////////////// namespace XMPP { /** Various constant strings */ extern const PString Language; extern const PString Namespace; extern const PString MessageStanza; extern const PString PresenceStanza; extern const PString IQStanza; extern const PString IQQuery; class JID : public PObject { PCLASSINFO(JID, PObject); public: JID(const char * jid = 0); JID(const PString& jid); JID(const PString& user, const PString& server, const PString& resource = PString::Empty()); virtual Comparison Compare( const PObject & obj ///< Object to compare against. ) const; JID& operator=( const PString & jid ///< New JID to assign. ); operator const PString&() const; virtual PObject * Clone() const { return new JID(m_JID); } PString GetUser() const { return m_User; } PString GetServer() const { return m_Server; } virtual PString GetResource() const { return m_Resource; } virtual void SetUser(const PString& user); virtual void SetServer(const PString& server); virtual void SetResource(const PString& resource); virtual BOOL IsBare() const { return m_Resource.IsEmpty(); } virtual void PrintOn(ostream & strm) const; protected: virtual void ParseJID(const PString& jid); virtual void BuildJID() const; PString m_User; PString m_Server; PString m_Resource; mutable PString m_JID; mutable BOOL m_IsDirty; }; // A bare jid is a jid with no resource class BareJID : public JID { PCLASSINFO(BareJID, JID); public: BareJID(const char * jid = 0) : JID(jid) { } BareJID(const PString& jid) : JID(jid) { } BareJID(const PString& user, const PString& server, const PString& resource = PString::Empty()) : JID(user, server, resource) { } virtual Comparison Compare( const PObject & obj ///< Object to compare against. ) const; BareJID& operator=( const PString & jid ///< New JID to assign. ); virtual PObject * Clone() const { return new BareJID(m_JID); } virtual PString GetResource() const { return PString::Empty(); } virtual void SetResource(const PString&) { } virtual BOOL IsBare() const { return TRUE; } }; /** This interface is the base class of each XMPP transport class Derived classes might include an XMPP TCP transport as well as classes to handle XMPP incapsulated in SIP messages. */ class Transport : public PIndirectChannel { PCLASSINFO(Transport, PIndirectChannel); public: virtual BOOL Open() = 0; virtual BOOL Close() = 0; }; /** This class represents a XMPP stream, i.e. a XML message exchange between XMPP entities */ class Stream : public PIndirectChannel { PCLASSINFO(Stream, PIndirectChannel); public: Stream(Transport * transport = 0); ~Stream(); virtual BOOL OnOpen() { return m_OpenHandlers.Fire(*this); } PNotifierList& OpenHandlers() { return m_OpenHandlers; } virtual BOOL Close(); virtual void OnClose() { m_CloseHandlers.Fire(*this); } PNotifierList& CloseHandlers() { return m_CloseHandlers; } virtual BOOL Write(const void * buf, PINDEX len); virtual BOOL Write(const PString& data); virtual BOOL Write(const PXML& pdu); /** Read a XMPP stanza from the stream */ virtual PXML * Read(); /** Reset the parser. The will delete and re-instantiate the XML stream parser. */ virtual void Reset(); PXMLStreamParser * GetParser() { return m_Parser; } protected: PXMLStreamParser * m_Parser; PNotifierList m_OpenHandlers; PNotifierList m_CloseHandlers; }; class BaseStreamHandler : public PThread { PCLASSINFO(BaseStreamHandler, PThread); public: BaseStreamHandler(); ~BaseStreamHandler(); virtual BOOL Start(Transport * transport = 0); virtual BOOL Stop(const PString& error = PString::Empty()); void SetAutoReconnect(BOOL b = TRUE, long timeout = 1000); PNotifierList& ElementHandlers() { return m_ElementHandlers; } Stream * GetStream() { return m_Stream; } virtual BOOL Write(const void * buf, PINDEX len); virtual BOOL Write(const PString& data); virtual BOOL Write(const PXML& pdu); virtual void OnElement(PXML& pdu); virtual void Main(); protected: PDECLARE_NOTIFIER(Stream, BaseStreamHandler, OnOpen); PDECLARE_NOTIFIER(Stream, BaseStreamHandler, OnClose); Stream * m_Stream; BOOL m_AutoReconnect; PTimeInterval m_ReconnectTimeout; PNotifierList m_ElementHandlers; }; /** XMPP stanzas: the following classes represent the three stanzas (PDUs) defined by the xmpp protocol */ class Stanza : public PXML { PCLASSINFO(Stanza, PXML) public: /** Various constant strings */ static const PString ID; static const PString From; static const PString To; virtual BOOL IsValid() const = 0; virtual PString GetID() const; virtual PString GetFrom() const; virtual PString GetTo() const; virtual void SetID(const PString& id); virtual void SetFrom(const PString& from); virtual void SetTo(const PString& to); virtual PXMLElement * GetElement(const PString& name, PINDEX i = 0); virtual void AddElement(PXMLElement * elem); static PString GenerateID(); }; PLIST(StanzaList, Stanza); class Message : public Stanza { PCLASSINFO(Message, Stanza) public: enum MessageType { Normal, Chat, Error, GroupChat, HeadLine, Unknown = 999 }; /** Various constant strings */ static const PString Type; static const PString Subject; static const PString Body; static const PString Thread; /** Construct a new empty message */ Message(); /** Construct a message from a (received) xml PDU. The root of the pdu MUST be a message stanza. NOTE: the root of the pdu is cloned. */ Message(PXML& pdu); Message(PXML * pdu); virtual BOOL IsValid() const; static BOOL IsValid(const PXML * pdu); virtual MessageType GetType(PString * typeName = 0) const; virtual PString GetLanguage() const; /** Get the subject for the specified language. The default subject (if any) is returned in case no language is specified or a matching one cannot be found */ virtual PString GetSubject(const PString& lang = PString::Empty()); virtual PString GetBody(const PString& lang = PString::Empty()); virtual PString GetThread(); virtual PXMLElement * GetSubjectElement(const PString& lang = PString::Empty()); virtual PXMLElement * GetBodyElement(const PString& lang = PString::Empty()); virtual void SetType(MessageType type); virtual void SetType(const PString& type); // custom, possibly non standard, type virtual void SetLanguage(const PString& lang); virtual void SetSubject(const PString& subj, const PString& lang = PString::Empty()); virtual void SetBody(const PString& body, const PString& lang = PString::Empty()); virtual void SetThread(const PString& thrd); }; class Presence : public Stanza { PCLASSINFO(Presence, Stanza) public: enum PresenceType { Available, Unavailable, Subscribe, Subscribed, Unsubscribe, Unsubscribed, Probe, Error, Unknown = 999 }; enum ShowType { Online, Away, Chat, DND, XA, Other = 999 }; /** Various constant strings */ static const PString Type; static const PString Show; static const PString Status; static const PString Priority; /** Construct a new empty presence */ Presence(); /** Construct a presence from a (received) xml PDU. The root of the pdu MUST be a presence stanza. NOTE: the root of the pdu is cloned. */ Presence(PXML& pdu); Presence(PXML * pdu); virtual BOOL IsValid() const; static BOOL IsValid(const PXML * pdu); virtual PresenceType GetType(PString * typeName = 0) const; virtual ShowType GetShow(PString * showName = 0) const; virtual BYTE GetPriority() const; /** Get the status for the specified language. The default status (if any) is returned in case no language is specified or a matching one cannot be found */ virtual PString GetStatus(const PString& lang = PString::Empty()); virtual PXMLElement * GetStatusElement(const PString& lang = PString::Empty()); virtual void SetType(PresenceType type); virtual void SetType(const PString& type); // custom, possibly non standard, type virtual void SetShow(ShowType show); virtual void SetShow(const PString& show); // custom, possibly non standard, type virtual void SetPriority(BYTE priority); virtual void SetStatus(const PString& status, const PString& lang = PString::Empty()); }; class IQ : public Stanza { PCLASSINFO(IQ, Stanza) public: enum IQType { Get, Set, Result, Error, Unknown = 999 }; /** Various constant strings */ static const PString Type; IQ(IQType type, PXMLElement * body = 0); IQ(PXML& pdu); IQ(PXML * pdu); ~IQ(); virtual BOOL IsValid() const; static BOOL IsValid(const PXML * pdu); /** This method signals that the message was taken care of If the stream handler, after firing all the notifiers finds that an iq set/get pdu has not being processed, it returns an error to the sender */ void SetProcessed() { m_Processed = TRUE; } BOOL HasBeenProcessed() const { return m_Processed; } virtual IQType GetType(PString * typeName = 0) const; virtual PXMLElement * GetBody(); virtual void SetType(IQType type); virtual void SetType(const PString& type); // custom, possibly non standard, type virtual void SetBody(PXMLElement * body); // If the this message is response, returns a pointer to the // original set/get message virtual IQ * GetOriginalMessage() const { return m_OriginalIQ; } virtual void SetOriginalMessage(IQ * iq); /** Creates a new response iq for this message (that must be of the set/get type!) */ virtual IQ * BuildResult() const; /** Creates an error response for this message */ virtual IQ * BuildError(const PString& type, const PString& code) const; virtual PNotifierList GetResponseHandlers() { return m_ResponseHandlers; } protected: BOOL m_Processed; IQ * m_OriginalIQ; PNotifierList m_ResponseHandlers; }; /** JEP-0030 Service Discovery classes */ namespace Disco { class Item : public PObject { PCLASSINFO(Item, PObject); public: Item(PXMLElement * item); Item(const PString& jid, const PString& node = PString::Empty()); const JID& GetJID() const { return m_JID; } const PString& GetNode() const { return m_Node; } PXMLElement * AsXML(PXMLElement * parent) const; protected: const JID m_JID; const PString m_Node; }; PDECLARE_LIST(ItemList, Item) public: ItemList(PXMLElement * list); PXMLElement * AsXML(PXMLElement * parent) const; }; class Identity : public PObject { PCLASSINFO(Identity, PObject); public: Identity(PXMLElement * identity); Identity(const PString& category, const PString& type, const PString& name); const PString& GetCategory() const { return m_Category; } const PString& GetType() const { return m_Type; } const PString& GetName() const { return m_Name; } PXMLElement * AsXML(PXMLElement * parent) const; protected: const PString m_Category; const PString m_Type; const PString m_Name; }; PDECLARE_LIST(IdentityList, Identity) public: IdentityList(PXMLElement * list); PXMLElement * AsXML(PXMLElement * parent) const; }; class Info : public PObject { PCLASSINFO(Info, PObject); public: Info(PXMLElement * info); IdentityList& GetIdentities() { return m_Identities; } PStringSet& GetFeatures() { return m_Features; } PXMLElement * AsXML(PXMLElement * parent) const; protected: IdentityList m_Identities; PStringSet m_Features; }; } // namespace Disco }; // class XMPP #endif // P_EXPAT #endif // _XMPP // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/xmpp_c2s.h0100644000176200056700000002053110343317551020205 0ustar releasepostincr/* * xmpp_c2s.h * * Extensible Messaging and Presence Protocol (XMPP) Core * Client to Server communication classes * * Portable Windows Library * * Copyright (c) 2004 Reitek S.p.A. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: xmpp_c2s.h,v $ * Revision 1.7 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.6 2004/05/09 07:23:46 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * Revision 1.5 2004/04/28 11:26:42 csoutheren * Hopefully fixed SASL and SASL2 problems * * Revision 1.4 2004/04/26 19:44:30 dsandras * Fixes compilation with P_SASL = 0. * * Revision 1.3 2004/04/26 01:51:57 rjongbloed * More implementation of XMPP, thanks a lot to Federico Pinna & Reitek S.p.A. * * Revision 1.2 2004/04/23 06:07:24 csoutheren * Added #if P_SASL to allow operation without SASL * * Revision 1.1 2004/04/22 12:31:00 rjongbloed * Added PNotifier extensions and XMPP (Jabber) support, * thanks to Federico Pinna and Reitek S.p.A. * * */ #ifndef _XMPP_C2S #define _XMPP_C2S #ifdef P_USE_PRAGMA #pragma interface #endif #include #if P_EXPAT #include #include /////////////////////////////////////////////////////// namespace XMPP { namespace C2S { /** XMPP client to server TCP transport */ class TCPTransport : public Transport { PCLASSINFO(TCPTransport, Transport); public: TCPTransport(const PString& hostname); TCPTransport(const PString& hostname, WORD port); ~TCPTransport(); const PString& GetServerHost() const { return m_Hostname; } WORD GetServerPort() const { return m_Port; } virtual BOOL Open(); virtual BOOL Close(); protected: PString m_Hostname; WORD m_Port; PTCPSocket * m_Socket; }; /** This class handles the client side of a C2S (Client to Server) XMPP stream. */ class StreamHandler : public BaseStreamHandler { PCLASSINFO(StreamHandler, BaseStreamHandler); public: StreamHandler(const JID& jid, const PString& pwd, BOOL newAccount = FALSE); ~StreamHandler(); virtual BOOL IsEstablished() const { return m_State == Established; } virtual BOOL Start(Transport * transport = 0); /** Request the delivery of the specified stanza NOTE: the StreamHandler takes ownership of the stanza and will take care of deleting it. BIG NOTE: use this method and not Write() if you want to get a notification when an answer to an iq arrives */ BOOL Send(Stanza * stanza); void SetVersion(WORD major, WORD minor); void GetVersion(WORD& major, WORD& minor) const; const JID& GetJID() const { return m_JID; } /** These notifier lists after when a client session is established (i.e. after the handshake and authentication steps are completed) or is released. The parameter passed to the notifiers is a reference to the stream handler */ PNotifierList& SessionEstablishedHandlers() { return m_SessionEstablishedHandlers; } PNotifierList& SessionReleasedHandlers() { return m_SessionReleasedHandlers; } /** These notifier lists are fired when a XMPP stanza or a stream error is received. For the notifier lists to be fired the stream must be already in the established state (i.e. after the bind and the session state). The parameter passed to the notifiers is a reference to the received pdu */ PNotifierList& ErrorHandlers() { return m_ErrorHandlers; } PNotifierList& MessageHandlers() { return m_MessageHandlers; } PNotifierList& PresenceHandlers() { return m_PresenceHandlers; } PNotifierList& IQHandlers() { return m_IQHandlers; } /** A notifier list for a specific namespace. The list will be fired only upon receiving an IQ with the child element of the specified namespace */ PNotifierList& IQNamespaceHandlers(const PString& xml_namespace); /** A notifier list for a particular message originator. The list will be fired only upon receiving a message from the specified jid. NOTE: if a matching notifier list is found and it's not emnpty, the generic MessageHandlers list IS NOT fired. */ PNotifierList& MessageSenderHandlers(const JID& from); /** JEP-0030 Service Discovery access methods. The response handler will receive a PIQ stanza (a smart pointer to a XMPP::IQ) */ virtual BOOL DiscoverItems( const PString& jid, ///< JID to which a query will be send PNotifier * responseHandler, const PString& node = PString::Empty()); ///< Optional node virtual BOOL DiscoverInfo( const PString& jid, ///< JID to which a query will be send PNotifier * responseHandler, const PString& node = PString::Empty()); ///< Optional node protected: virtual void OnOpen(Stream& stream, INT); virtual void OnClose(Stream& stream, INT); virtual void StartRegistration(); virtual void StartAuthNegotiation(); virtual void OnSessionEstablished(); virtual void OnSessionReleased(); virtual void OnElement(PXML& pdu); virtual void OnError(PXML& pdu); virtual void OnMessage(XMPP::Message& pdu); virtual void OnPresence(XMPP::Presence& pdu); virtual void OnIQ(XMPP::IQ& pdu); // State handlers virtual void HandleNullState(PXML& pdu); virtual void HandleRegStartedState(PXML& pdu); virtual void HandleTLSStartedState(PXML& pdu); #if P_SASL2 virtual void HandleSASLStartedState(PXML& pdu); #endif virtual void HandleNonSASLStartedState(PXML& pdu); virtual void HandleStreamSentState(PXML& pdu); virtual void HandleBindSentState(PXML& pdu); virtual void HandleSessionSentState(PXML& pdu); virtual void HandleEstablishedState(PXML& pdu); virtual BOOL Discover(const PString& xmlns, const PString& jid, PNotifier * responseHandler, const PString& node); WORD m_VersionMajor; WORD m_VersionMinor; PString m_StreamID; BOOL m_NewAccount; JID m_JID; const PString m_Password; #if P_SASL2 PSASLClient m_SASL; PString m_Mechanism; #endif BOOL m_HasBind; BOOL m_HasSession; PNotifierList m_SessionEstablishedHandlers; PNotifierList m_SessionReleasedHandlers; PNotifierList m_ErrorHandlers; PNotifierList m_MessageHandlers; PNotifierList m_PresenceHandlers; PNotifierList m_IQHandlers; PDictionary m_IQNamespaceHandlers; PDictionary m_MessageSenderHandlers; PMutex m_PendingIQsLock; StanzaList m_PendingIQs; enum StreamState { Null, RegStarted, TLSStarted, SASLStarted, NonSASLStarted, ///< non SASL authentication (JEP-0078) StreamSent, BindSent, SessionSent, Established }; virtual void SetState(StreamState s); StreamState m_State; }; } // namespace C2S } // namespace XMPP #endif // P_EXPAT #endif // _XMPP_C2S // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/xmpp_muc.h0100644000176200056700000000740210343317551020304 0ustar releasepostincr/* * xmpp_muc.h * * Extensible Messaging and Presence Protocol (XMPP) * JEP-0045 Multi-User Chat * * Portable Windows Library * * Copyright (c) 2004 Reitek S.p.A. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: xmpp_muc.h,v $ * Revision 1.3 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.2 2005/08/04 03:19:07 dereksmithies * Add xmpp_muc (XMPP multi user conference) to the compile process for unix. * Correct compile errors under unix. * * Revision 1.1 2004/05/09 07:23:46 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * */ #ifndef _XMPP_MUC #define _XMPP_MUC #ifdef P_USE_PRAGMA #pragma interface #endif #include #if P_EXPAT /////////////////////////////////////////////////////// namespace XMPP { namespace MUC { extern PString Namespace; class User : public PObject { PCLASSINFO(User, PObject); public: User(); ~User(); static PString Namespace; enum Role { None, Moderator, Participant, Visitor, Unknown = 999 }; enum Affiliation { None_a, Owner, Admin, Member, Outcast, Unknown_a = 999 }; PString m_Nick; Role m_Role; Affiliation m_Affiliation; Comparison Compare(const PObject & obj) const; }; PSORTED_LIST(Users, User); class Room : public PObject { PCLASSINFO(Room, PObject); PDECLARE_SMART_NOTIFIEE; public: Room(C2S::StreamHandler * handler, ///< The C2S stream handler const JID& jid, ///< The room's jid const PString& nick); ///< Our user in the room const User& GetUser() const { return m_User; } const Users& GetOtherUsers() const { return m_OtherUsers; } virtual BOOL Enter(); virtual BOOL Leave(); virtual BOOL SendMessage(const PString& msg); virtual BOOL SendMessage(Message& msg); // Event methods virtual void OnMessage(Message& msg); virtual void OnRoomJoined(); virtual void OnRoomLeft(); virtual void OnUserAdded(User& user); virtual void OnUserRemoved(User& user); virtual void OnUserChanged(User& user); protected: PDECLARE_SMART_NOTIFIER(C2S::StreamHandler, Room, OnSessionReleased); PDECLARE_SMART_NOTIFIER(Message, Room, OnMessage); PDECLARE_SMART_NOTIFIER(Presence, Room, OnPresence); C2S::StreamHandler * m_Handler; BareJID m_RoomJID; User m_User; Users m_OtherUsers; PNotifierList m_MessageHandlers; PNotifierList m_RoomJoinedHandlers; PNotifierList m_RoomLeftHandlers; PNotifierList m_UserAddedHandlers; PNotifierList m_UserRemovedHandlers; PNotifierList m_UserChangedHandlers; }; } // namespace MUC } // namespace XMPP #endif // P_EXPAT #endif // _XMPP_MUC // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptclib/xmpp_roster.h0100644000176200056700000001125310047356202021032 0ustar releasepostincr/* * xmpp_roster.h * * Extensible Messaging and Presence Protocol (XMPP) IM * Roster management classes * * Portable Windows Library * * Copyright (c) 2004 Reitek S.p.A. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: xmpp_roster.h,v $ * Revision 1.2 2004/05/09 07:23:46 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * Revision 1.1 2004/04/26 01:51:57 rjongbloed * More implementation of XMPP, thanks a lot to Federico Pinna & Reitek S.p.A. * * */ #ifndef _XMPP_ROSTER #define _XMPP_ROSTER #ifdef P_USE_PRAGMA #pragma interface #endif #include #if P_EXPAT /////////////////////////////////////////////////////// namespace XMPP { class Roster : public PObject { PCLASSINFO(Roster, PObject); public: enum ItemType { // Subscription type None, To, From, Both, Unknown = 999 }; class Item : public PObject { PCLASSINFO(Item, PObject); PDICTIONARY(PresenceInfo, PString, Presence); public: Item(PXMLElement * item = 0); Item(PXMLElement& item); Item(const JID& jid, ItemType type, const PString& group, const PString& name = PString::Empty()); const JID& GetJID() const { return m_JID; } ItemType GetType() const { return m_Type; } const PString& GetName() const { return m_Name; } const PStringSet& GetGroups() const { return m_Groups; } const PresenceInfo& GetPresence() const { return m_Presence; } virtual void SetJID(const JID& jid, BOOL dirty = TRUE) { m_JID = jid; if (dirty) SetDirty(); } virtual void SetType(ItemType type, BOOL dirty = TRUE) { m_Type = type; if (dirty) SetDirty(); } virtual void SetName(const PString& name, BOOL dirty = TRUE) { m_Name = name; if (dirty) SetDirty(); } virtual void AddGroup(const PString& group, BOOL dirty = TRUE); virtual void RemoveGroup(const PString& group, BOOL dirty = TRUE); virtual void SetPresence(const Presence& p); void SetDirty(BOOL b = TRUE) { m_IsDirty = b; } /** This operator will set the dirty flag */ Item & operator=( const PXMLElement& item ); virtual PXMLElement * AsXML(PXMLElement * parent) const; protected: BareJID m_JID; ItemType m_Type; PString m_Name; PStringSet m_Groups; // The item's presence state: for each resource (the key to the dictionary) a // a presence stanza if kept. PDictionary m_Presence; BOOL m_IsDirty; // item modified locally, server needs to be updated }; PLIST(ItemList, Item); public: Roster(XMPP::C2S::StreamHandler * handler = 0); ~Roster(); const ItemList& GetItems() const { return m_Items; } virtual Item * FindItem(const PString& jid); virtual BOOL SetItem(Item * item, BOOL localOnly = FALSE); virtual BOOL RemoveItem(const PString& jid, BOOL localOnly = FALSE); virtual BOOL RemoveItem(Item * item, BOOL localOnly = FALSE); virtual void Attach(XMPP::C2S::StreamHandler * handler); virtual void Detach(); virtual void Refresh(BOOL sendPresence = TRUE); virtual PNotifierList& ItemChangedHandlers() { return m_ItemChangedHandlers; } virtual PNotifierList& RosterChangedHandlers() { return m_RosterChangedHandlers; } protected: PDECLARE_NOTIFIER(XMPP::C2S::StreamHandler, Roster, OnSessionEstablished); PDECLARE_NOTIFIER(XMPP::C2S::StreamHandler, Roster, OnSessionReleased); PDECLARE_NOTIFIER(XMPP::Presence, Roster, OnPresence); PDECLARE_NOTIFIER(XMPP::IQ, Roster, OnIQ); ItemList m_Items; XMPP::C2S::StreamHandler * m_Handler; PNotifierList m_ItemChangedHandlers; PNotifierList m_RosterChangedHandlers; }; } // namespace XMPP #endif // P_EXPAT #endif // _XMPP_ROSTER // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib.h0100644000176200056700000001774610127202174016317 0ustar releasepostincr/* * ptlib.h * * Umbrella include for all non-GUI classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ptlib.h,v $ * Revision 1.33 2004/10/01 07:17:16 csoutheren * Added PSharedptr class * * Revision 1.32 2004/07/06 10:12:52 csoutheren * Added static integer o factory template to assist in ensuring factories are instantiated * * Revision 1.31 2004/05/13 14:53:34 csoutheren * Add "abstract factory" template classes * * Revision 1.30 2004/04/11 13:26:25 csoutheren * Removed namespace problems and removed warnings for Windows * * Revision 1.29 2003/09/17 05:40:25 csoutheren * Removed recursive includes * * Revision 1.28 2003/09/17 01:18:01 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.27 2003/04/16 07:16:55 craigs * Modified for new autoconf based configuration * * Revision 1.26 2002/04/09 02:30:18 robertj * Removed GCC3 variable as __GNUC__ can be used instead, thanks jason Spence * * Revision 1.25 2002/01/22 03:54:41 craigs * Removed pwavfile.h, as this has moved to PTCLib * * Revision 1.24 2001/07/19 09:53:29 rogerh * Add the PWAVFile class to read and write .wav files * * Revision 1.23 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.22 2000/06/26 11:17:19 robertj * Nucleus++ port (incomplete). * * Revision 1.21 1999/08/17 03:46:40 robertj * Fixed usage of inlines in optimised version. * * Revision 1.20 1999/06/17 13:38:11 robertj * Fixed race condition on indirect channel close, mutex needed in PIndirectChannel. * * Revision 1.19 1999/06/13 13:54:07 robertj * Added PConsoleChannel class for access to stdin/stdout/stderr. * * Revision 1.18 1998/11/30 22:08:56 robertj * Fixed backslash in #include * * Revision 1.17 1998/11/30 02:50:43 robertj * New directory structure * * Revision 1.16 1998/10/31 12:46:57 robertj * Renamed file for having general thread synchronisation objects. * * Revision 1.15 1998/09/23 06:19:52 robertj * Added open source copyright license. * * Revision 1.14 1998/05/30 13:25:00 robertj * Added PSyncPointAck class. * * Revision 1.13 1998/03/20 03:16:10 robertj * Added special classes for specific sepahores, PMutex and PSyncPoint. * * Revision 1.12 1996/09/14 13:09:16 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.11 1996/08/08 10:08:40 robertj * Directory structure changes for common files. * * Revision 1.10 1996/05/23 09:57:24 robertj * Changed process.h to pprocess.h to avoid name conflict. * * Revision 1.9 1995/07/31 12:06:21 robertj * Added semaphore class. * * Revision 1.8 1995/03/12 04:44:56 robertj * Added dynamic link libraries. * * Revision 1.7 1994/09/25 10:43:57 robertj * Added pipe channel. * * Revision 1.6 1994/08/23 11:32:52 robertj * Oops * * Revision 1.5 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.4 1994/07/25 03:36:03 robertj * Added sockets to common, normalising to same comment standard. * * Revision 1.3 1994/07/21 12:17:41 robertj * Sockets. * * Revision 1.2 1994/06/25 12:27:39 robertj * *** empty log message *** * * Revision 1.1 1994/04/01 14:38:42 robertj * Initial revision * */ #ifndef _PTLIB_H #define _PTLIB_H #ifdef __GNUC__ #pragma interface #if !defined(__USE_STD__) && __GNUC__ >= 3 #define __USE_STD__ #endif #endif #ifdef __NUCLEUS_PLUS__ #include "nucpp.h" #endif #ifdef __USE_STD__ //using namespace std; #endif #include "ptbuildopts.h" #include /////////////////////////////////////////////////////////////////////////////// // PTime #include /////////////////////////////////////////////////////////////////////////////// // PTimeInterval #include /////////////////////////////////////////////////////////////////////////////// // PTimer #include /////////////////////////////////////////////////////////////////////////////// // PDirectory #include /////////////////////////////////////////////////////////////////////////////// // PFilePath #include /////////////////////////////////////////////////////////////////////////////// // PConfig #include /////////////////////////////////////////////////////////////////////////////// // PArgList #include /////////////////////////////////////////////////////////////////////////////// // PThread #include /////////////////////////////////////////////////////////////////////////////// // PProcess #include /////////////////////////////////////////////////////////////////////////////// // PSemaphore #include /////////////////////////////////////////////////////////////////////////////// // PMutex #include /////////////////////////////////////////////////////////////////////////////// // PSyncPoint #include /////////////////////////////////////////////////////////////////////////////// // PSyncPointAck, PCondMutex etc #include /////////////////////////////////////////////////////////////////////////////// // PFactory #include /////////////////////////////////////////////////////////////////////////////// // PSharedPtr #include /////////////////////////////////////////////////////////////////////////////// // PDynaLink #include /////////////////////////////////////////////////////////////////////////////// // PChannel #include /////////////////////////////////////////////////////////////////////////////// // PIndirectChannel #include /////////////////////////////////////////////////////////////////////////////// // PFile #include /////////////////////////////////////////////////////////////////////////////// // PTextFile #include /////////////////////////////////////////////////////////////////////////////// // PStructuredFile #include /////////////////////////////////////////////////////////////////////////////// // PConsoleChannel #include /////////////////////////////////////////////////////////////////////////////// // PluginManager #include /////////////////////////////////////////////////////////////////////////////// // PSound #include /////////////////////////////////////////////////////////////////////////////// // PVideoChannel #include /////////////////////////////////////////////////////////////////////////////// #if P_USE_INLINES #ifdef _WIN32 #include #else #include #endif #include #endif #endif // _PTLIB_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/0040755000176200056700000000000010512262773016143 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/unix/0040755000176200056700000000000010512262773017126 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/unix/ptlib/0040755000176200056700000000000010512262773020240 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/unix/ptlib/beaudio.h0100644000176200056700000001247010343317552022020 0ustar releasepostincr/* * beaudio.h * * BeOS Sound driver class definitions. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): * Yuri Kiryanov, ykiryanov at users.sourceforge.net * Bits by Jac Goudsmit * * $Log: beaudio.h,v $ * Revision 1.5 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2004/10/26 18:07:36 ykiryanov * Added ifdef for Zeta build * * Revision 1.3 2004/06/16 01:57:57 ykiryanov * Working capture code * * Revision 1.2 2004/05/30 04:55:57 ykiryanov * Added include files * * Revision 1.1 2004/05/14 08:36:44 ykiryanov * BeOS sound class declarations collected in separate file * * */ #include #include #include #include #include // Storage kit #include #include #include // Media kit #include #include #include #include #include #include // Kernel kit #include // Beep kit :-) #include #include "resampler.h" #ifdef B_ZETA_VERSION #define MEDIA_KIT_UPDATE #endif #ifdef MEDIA_KIT_UPDATE #include #else #include "beaudio/MediaRecorder.h" #endif //////////////////////////////////////////////////////////////////////////////// // PSoundChannelBeOS declaration class CircularBuffer; class PSoundChannelBeOS: public PSoundChannel { public: PSoundChannelBeOS(); void Construct(); PSoundChannelBeOS(const PString &device, PSoundChannel::Directions dir, unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); ~PSoundChannelBeOS(); static PStringArray GetDeviceNames(PSoundChannel::Directions = Player); static PString GetDefaultDevice(PSoundChannel::Directions); BOOL Open(const PString & _device, Directions _dir, unsigned _numChannels, unsigned _sampleRate, unsigned _bitsPerSample); BOOL Setup(); BOOL Close(); BOOL IsOpen() const; BOOL Write(const void * buf, PINDEX len); BOOL Read(void * buf, PINDEX len); BOOL SetFormat(unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); unsigned GetChannels() const; unsigned GetSampleRate() const; unsigned GetSampleSize() const; BOOL SetBuffers(PINDEX size, PINDEX count); BOOL GetBuffers(PINDEX & size, PINDEX & count); BOOL PlaySound(const PSound & sound, BOOL wait); BOOL PlayFile(const PFilePath & filename, BOOL wait); BOOL HasPlayCompleted(); BOOL WaitForPlayCompletion(); BOOL RecordSound(PSound & sound); BOOL RecordFile(const PFilePath & filename); BOOL StartRecording(); BOOL IsRecordBufferFull(); BOOL AreAllRecordBuffersFull(); BOOL WaitForRecordBufferFull(); BOOL WaitForAllRecordBuffersFull(); BOOL Abort(); BOOL SetVolume(unsigned newVal); BOOL GetVolume(unsigned &devVol); public: // Overrides from class PChannel virtual PString GetName() const { return deviceName; } // Return the name of the channel. protected: PString deviceName; Directions direction; private: // Only one of the following pointers can be non-NULL at a time. BMediaRecorder *mRecorder; BSoundPlayer *mPlayer; // Raw media format specifier used for sound player. // It also stores the parameters (number of channels, sample rate etc) so // no need to store them separately here. // For the recorder, a media_format struct is created temporarily with // the data from this raw format spec. media_raw_audio_format mFormat; // The class holds a circular buffer whose size is set with SetBuffers. // We only need one buffer for BeOS. The number of buffers that was set // is only kept for reference. friend class CircularBuffer; CircularBuffer *mBuffer; // The internal buffer PINDEX mNumBuffers; // for reference only! // Just some helpers so that the Open function doesn't get too big BOOL OpenPlayer(void); BOOL OpenRecorder(const PString &dev); // internal buffer setting function so we can disable the SetBuffers // function for debug purposes // size is the total size, threshold is the fill/drain threshold on // the buffer BOOL InternalSetBuffers(PINDEX size, PINDEX threshold); // Input resampler Resampler *mResampler; }; pwlib_v1_10_2/include/ptlib/unix/ptlib/bevideo.h0100644000176200056700000000556710063724541022035 0ustar releasepostincr #include #include #include #include class VideoConsumer; class BMediaRoster; class PVideoInputThread; #include /**This class defines a BeOS video input device. */ class PVideoInputDevice_BeOSVideo : public PVideoInputDevice { PCLASSINFO(PVideoInputDevice_BeOSVideo, PVideoInputDevice); public: /** Create a new video input device. */ PVideoInputDevice_BeOSVideo(); /**Close the video input device on destruction. */ ~PVideoInputDevice_BeOSVideo() { Close(); } /** Is the device a camera, and obtain video */ static PStringList GetInputDeviceNames(); virtual PStringList GetDeviceNames() const { return GetInputDeviceNames(); } /**Open the device given the device name. */ virtual BOOL Open( const PString & deviceName, /// Device name to open BOOL startImmediate = TRUE /// Immediately start device ); /**Determine if the device is currently open. */ virtual BOOL IsOpen(); /**Close the device. */ virtual BOOL Close(); /**Start the video device I/O. */ virtual BOOL Start(); /**Stop the video device I/O capture. */ virtual BOOL Stop(); /**Determine if the video device I/O capture is in progress. */ virtual BOOL IsCapturing(); /**Get the maximum frame size in bytes. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ virtual PINDEX GetMaxFrameBytes(); /**Grab a frame. */ virtual BOOL GetFrame( PBYTEArray & frame ); /**Grab a frame, after a delay as specified by the frame rate. */ virtual BOOL GetFrameData( BYTE * buffer, /// Buffer to receive frame PINDEX * bytesReturned = NULL /// OPtional bytes returned. ); /**Grab a frame. Do not delay according to the current frame rate parameter. */ virtual BOOL GetFrameDataNoDelay( BYTE * buffer, /// Buffer to receive frame PINDEX * bytesReturned = NULL /// OPtional bytes returned. ); /**Try all known video formats & see which ones are accepted by the video driver */ virtual BOOL TestAllFormats(); public: virtual BOOL SetColourFormat(const PString & colourFormat); virtual BOOL SetFrameRate(unsigned rate); virtual BOOL SetFrameSize(unsigned width, unsigned height); friend PVideoInputThread; private: status_t StartNodes(); void StopNodes(); protected: BMediaRoster* fMediaRoster; VideoConsumer* fVideoConsumer; media_output fProducerOut; media_input fConsumerIn; media_node fTimeSourceNode; media_node fProducerNode; port_id fPort; BOOL isCapturingNow; PVideoInputThread* captureThread; }; pwlib_v1_10_2/include/ptlib/unix/ptlib/channel.h0100644000176200056700000001024410043361636022014 0ustar releasepostincr/* * channel.h * * I/O channel ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: channel.h,v $ * Revision 1.24 2004/04/27 04:37:50 rjongbloed * Fixed ability to break of a PSocket::Select call under linux when a socket * is closed by another thread. * * Revision 1.23 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.22 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.21 2001/11/27 02:20:20 robertj * Fixed problem with a read ro write blocking until connect completed, it * really should return an error as the caller is doing a bad thing. * * Revision 1.20 2001/09/10 03:03:36 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.19 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.18 2001/03/20 06:44:25 robertj * Lots of changes to fix the problems with terminating threads that are I/O * blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.17 1999/10/24 01:32:11 craigs * Removed definition of BREAK_SIGNAL and moved to src file * * Revision 1.16 1999/09/03 02:26:25 robertj * Changes to aid in breaking I/O locks on thread termination. Still needs more work esp in BSD! * * Revision 1.15 1999/01/07 03:37:12 robertj * dded default for pthreads, shortens command line in compile. * * Revision 1.14 1998/11/30 22:06:30 robertj * New directory structure. * * Revision 1.13 1998/09/24 04:11:20 robertj * Added open software license. * * Revision 1.12 1998/05/25 09:57:15 robertj * Fixed problem with socket/channel close with active thread block. * * Revision 1.11 1998/03/26 04:55:53 robertj * Added PMutex and PSyncPoint * * Revision 1.10 1998/01/03 22:58:25 craigs * Added PThread support * * Revision 1.9 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.8 1996/05/03 13:12:07 craigs * More Sun4 fixes * * Revision 1.7 1996/05/02 12:01:47 craigs * More Sun4 fixed * * Revision 1.6 1996/05/02 11:55:28 craigs * Added ioctl definition for Sun4 * * Revision 1.5 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.4 1996/01/26 11:06:31 craigs * Fixed problem with blocking Accept calls * * Revision 1.3 1995/07/09 00:34:58 craigs * Latest and greatest omnibus change * * Revision 1.2 1995/01/23 22:59:47 craigs * Changes for HPUX and Sun 4 * */ public: enum PXBlockType { PXReadBlock, PXWriteBlock, PXAcceptBlock, PXConnectBlock }; protected: BOOL PXSetIOBlock(PXBlockType type, const PTimeInterval & timeout); int PXClose(); PString channelName; PMutex px_threadMutex; PXBlockType px_lastBlockType; PThread * px_readThread; PThread * px_writeThread; PMutex px_writeMutex; PThread * px_selectThread; PMutex px_selectMutex; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/conchan.h0100644000176200056700000000340307731733113022017 0ustar releasepostincr/* * conchan.h * * Asynchronous serial I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: conchan.h,v $ * Revision 1.4 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.3 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.2 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.1 1999/06/14 08:39:57 robertj * Added PConsoleChannel class for access to stdin/stdout/stderr * */ #ifdef P_USE_PRAGMA #pragma interface #endif public: PString GetName() const; BOOL Close(); // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/config.h0100644000176200056700000000362707731733113021663 0ustar releasepostincr/* * config.h * * System and application configuration class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: config.h,v $ * Revision 1.11 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.10 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 1998/11/30 22:06:32 robertj * New directory structure. * * Revision 1.7 1998/09/24 04:11:30 robertj * Added open software license. * */ /////////////////////////////////////////////////////////////////////////////// // PConfiguration public: PConfig(int, const PString & name); ~PConfig(); protected: PXConfig * config; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/contain.h0100644000176200056700000001121210343317552022034 0ustar releasepostincr/* * contain.h * * Low level object and container definitions. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: contain.h,v $ * Revision 1.27 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.26 2005/03/10 06:37:21 csoutheren * Removed use of typeid on WIndows to get class name because it is not threadsafe * In fact, lets just use #classname everywhere because that will always work * Thanks to Vyacheslav Frolov * * Revision 1.25 2004/05/12 04:36:18 csoutheren * Fixed problems with using sem_wait and friends on systems that do not * support atomic integers * * Revision 1.24 2004/04/11 13:34:51 csoutheren * Sigh. gcc needs a namespace directive in order to compile correctly :( * * Revision 1.23 2004/04/11 06:15:35 csoutheren * Modified to use Atomic_word if available * * Revision 1.22 2004/04/11 03:20:42 csoutheren * Added Unix implementation of PCriticalSection * * Revision 1.21 2004/04/09 11:54:47 csoutheren * Added configure.in check for STL streams, and tested with gcc 2.95.3, * gcc 3.3.1, and gcc 3.3.3 * * Revision 1.20 2004/04/09 00:42:59 csoutheren * Changed Unix build to use slightly different method for * keep class names, as GCC does not use actual class names for typeinfo * * Revision 1.19 2004/04/03 08:57:41 csoutheren * Replaced pseudo-RTTI with real RTTI * * Revision 1.18 2004/04/03 07:14:51 csoutheren * Remove no-rtti compiler flag * Added __USE_STL__ to allow interopability with STL and iostreams * * Revision 1.17 2003/10/27 03:21:43 csoutheren * Added UINT type needed for QoS * * Revision 1.16 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.15 2002/06/06 09:27:26 robertj * Fixed PINDEX macros for being signed no (gcc3 port). * iAdded limits.h for Solaris compatibility. * * Revision 1.14 2002/06/05 12:29:15 craigs * Changes for gcc 3.1 * * Revision 1.13 1999/05/01 11:29:19 robertj * Alpha linux port changes. * * Revision 1.12 1999/01/08 01:27:43 robertj * Moved include of pmachdep to earlier in inclusions. * * Revision 1.11 1998/11/30 22:06:35 robertj * New directory structure. * * Revision 1.10 1998/11/03 10:56:33 robertj * Removed unused extern for PErrorStream * * Revision 1.9 1998/09/24 04:11:31 robertj * Added open software license. * */ #include "pmachdep.h" #include #include #include /////////////////////////////////////////// // // define TRUE and FALSE for environments that don't have them // #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif /////////////////////////////////////////// // // define a macro for declaring classes so we can bolt // extra things to class declarations // #define PEXPORT #define PSTATIC /////////////////////////////////////////// // // define some basic types and their limits // typedef int BOOL; typedef unsigned char BYTE; // 1 byte typedef signed short PInt16; // 16 bit typedef unsigned short WORD; typedef signed int PInt32; // 32 bit typedef unsigned int DWORD; #ifndef P_NEEDS_INT64 typedef signed long long int PInt64; typedef unsigned long long int PUInt64; // 64 bit #endif // Integer type that is same size as a pointer type. #ifdef P_64BIT typedef long INT; typedef unsigned long UINT; #else typedef int INT; typedef unsigned int UINT; #endif typedef int PINDEX; #define P_MAX_INDEX INT_MAX inline PINDEX PABSINDEX(PINDEX idx) { return (idx < 0 ? -idx : idx)&P_MAX_INDEX; } #define PASSERTINDEX(idx) PAssert((idx) >= 0, PInvalidArrayIndex) /////////////////////////////////////////// // // needed for STL // #if P_HAS_STL_STREAMS #define __USE_STL__ 1 #endif #define P_HAS_TYPEINFO 1 using namespace std; pwlib_v1_10_2/include/ptlib/unix/ptlib/critsec.h0100644000176200056700000000333110332603012022023 0ustar releasepostincr/* * critsec.h * * Critical section mutex class. * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: critsec.h,v $ * Revision 1.4 2005/11/04 06:56:10 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.3 2004/07/11 07:56:36 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.2 2004/04/18 12:37:40 csoutheren * Modified to detect sem_wait etc on Linux systems * * Revision 1.1 2004/04/11 03:02:07 csoutheren * Initial version * */ // Unix specific critical section implementation #if defined P_HAS_SEMAPHORES && !defined P_VXWORKS mutable sem_t sem; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/dynalink.h0100644000176200056700000000231410050024511022176 0ustar releasepostincr/* * dynalink.h * * Dynamic Link Library class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $log$ */ #if !defined(P_VXWORKS) && !defined(P_RTEMS) /////////////////////////////////////////////////////////////////////////////// // PDynaLink protected: void * dllHandle; PString name; #endif // !P_VXWORKS && !P_RTEMS // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/ethsock.h0100644000176200056700000000414007731733113022045 0ustar releasepostincr/* * ethsock.h * * Direct ethernet socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ethsock.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:06:39 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:11:34 robertj * Added open software license. * * Revision 1.2 1998/09/08 09:53:56 robertj * Fixed ppp and ippp compatibility. * * Revision 1.1 1998/08/21 05:30:13 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PEthSocket protected: Address macAddress; MediumTypes medium; unsigned filterMask; BOOL fakeMacHeader; BOOL ipppInterface; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/file.h0100644000176200056700000000517610343317552021334 0ustar releasepostincr/* * file.h * * File I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: file.h,v $ * Revision 1.9 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.8 2003/09/26 09:58:50 rogerhardiman * Move #include from the unix file.h to the main file.h * FreeBSD's sys/stat.h includes extern "C" for some prototypes and you * cannot have an extern "C" in the middle of a C++ class * * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:06:41 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:11:35 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ #define _read(fd,vp,st) ::read(fd, vp, (size_t)st) #define _write(fd,vp,st) ::write(fd, vp, (size_t)st) #define _fdopen ::fdopen #define _lseek(fd,off,w) ::lseek(fd, (off_t)off, w) #define _close(fd) ::close(fd) /////////////////////////////////////////////////////////////////////////////// // PFile // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/filepath.h0100644000176200056700000000370707731733113022211 0ustar releasepostincr/* * filepath.h * * File system path. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: filepath.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:06:43 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:11:36 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // File Specification // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/icmpsock.h0100644000176200056700000000507307731733113022223 0ustar releasepostincr/* * icmpsock.h * * Internet Control Message Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: icmpsock.h,v $ * Revision 1.8 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.7 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 22:06:45 robertj * New directory structure. * * Revision 1.4 1998/09/24 04:11:38 robertj * Added open software license. * * Revision 1.3 1996/10/31 10:27:42 craigs * New platform dependent socket implementation * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1996/05/25 06:07:23 craigs * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PICMPSocket protected: BOOL WritePing( const PString & host, // Host to send ping. PingInfo & info // Information on the ping and reply. ); /* Send an ECHO_REPLY message to the specified host.

Returns:

FALSE if host not found or no response. */ BOOL ReadPing( PingInfo & info // Information on the ping and reply. ); /* Receive an ECHO_REPLY message from the host.

Returns:

FALSE if an error occurred. */ // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/ipdsock.h0100644000176200056700000000373007731733113022045 0ustar releasepostincr/* * ipdsock.h * * IP datagram socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipdsock.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:06:47 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:11:39 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1996/05/25 06:07:23 craigs * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PIPDatagramSocket // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/ipsock.h0100644000176200056700000000470110074171264021675 0ustar releasepostincr/* * ipsock.h * * Internet Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipsock.h,v $ * Revision 1.12 2004/07/11 07:56:36 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.11 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.10 2002/10/08 14:31:17 robertj * Fixed GNU compiler compatibility * * Revision 1.9 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 1999/02/22 13:26:53 robertj * BeOS port changes. * * Revision 1.6 1998/11/30 22:06:49 robertj * New directory structure. * * Revision 1.5 1998/09/24 04:11:40 robertj * Added open software license. * * Revision 1.4 1997/10/03 14:47:07 craigs * Fixed ifdef guard * * Revision 1.3 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.2 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ #ifdef P_VXWORKS #define NETDB_SUCCESS 0 #endif // P_VXWORKS /////////////////////////////////////////////////////////////////////////////// // PIPSocket // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/maccoreaudio.h0100644000176200056700000001610510343317552023042 0ustar releasepostincr/* * maccoreaudio.h * * Copyright (c) 2004 Network for Educational Technology ETH * * Written by Hannes Friederich, Andreas Fenkart. * Based on work of Shawn Pai-Hsiang Hsiao * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * maccoreaudio.h * */ #pragma interface // workaround to remove warnings, when including OSServiceProviders #define __OPENTRANSPORTPROVIDERS__ #include #include ; #include // needed by lists.h of pwlib, unfortunately also defined in previous // includes from Apple #undef nil // static loading of plugins #define P_FORCE_STATIC_PLUGIN #include #include #define CA_DUMMY_DEVICE_NAME "Null" #define kAudioDeviceDummy kAudioDeviceUnknown class CircularBuffer; class PSoundChannelCoreAudio : public PSoundChannel { public: enum State{ init_, open_, setformat_, setbuffer_, running_, mute_, destroy_ }; static void Init(); PSoundChannelCoreAudio(); PSoundChannelCoreAudio(const PString &device, PSoundChannel::Directions dir, unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); ~PSoundChannelCoreAudio(); virtual BOOL SetFormat(unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); virtual unsigned GetChannels() const; virtual unsigned GetSampleRate() const; virtual unsigned GetSampleSize() const; virtual BOOL SetBuffers(PINDEX size, PINDEX count); virtual BOOL GetBuffers(PINDEX & size, PINDEX & count); virtual BOOL SetVolume(unsigned volume); virtual BOOL GetVolume(unsigned & volume); /* Open functions */ virtual BOOL Open(const PString & device, Directions dir, unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); /* gets never called, see sound.h: * baseChannel->PChannel::IsOpen(); */ virtual BOOL IsOpen() const; /* gets never called, see sound.h: * baseChannel->PChannel::GetHandle();*/ virtual int GetHandle() const; virtual BOOL Abort(); PSoundChannel *CreateOpenedChannel(const PString & driverName, const PString & deviceName, const PSoundChannel::Directions, unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); static PString GetDefaultDevice(Directions dir); static PStringList GetDeviceNames(Directions dir); virtual BOOL Write(const void *buf, PINDEX len); virtual BOOL PlaySound(const PSound & sound, BOOL wait); virtual BOOL PlayFile(const PFilePath & file, BOOL wait); virtual BOOL HasPlayCompleted(); virtual BOOL WaitForPlayCompletion(); virtual BOOL Read(void *buf, PINDEX len); virtual BOOL RecordSound(PSound & sound); virtual BOOL RecordFile(const PFilePath & file); virtual BOOL StartRecording(); virtual BOOL isRecordBufferFull(); virtual BOOL AreAllRecordBuffersFull(); virtual BOOL WaitForRecordBufferFull(); virtual BOOL WaitForAllRecordBuffersFull(); protected: /** * Common steps for all constructors */ void CommonConstruct(){ os_handle = -1; // == channel closed. // set to a non negative value so IsOpen() returns true } OSStatus SetupInputUnit(AudioDeviceID in); OSStatus EnableIO(); OSStatus SetupOutputUnit(AudioDeviceID in); OSStatus SetDeviceAsCurrent(AudioDeviceID in); /** * Based on the desired format, try to configure the AUHAL * Units to match this format as close as possible * e.g. 32bit float -> 16int, stereo -> mono */ OSStatus MatchHALInputFormat(); OSStatus MatchHALOutputFormat(); OSStatus CallbackSetup(); /** * Pull/Callback function to pass data to AudioConverter */ static OSStatus ComplexBufferFillPlayback(OpaqueAudioConverter*, UInt32*, AudioBufferList*, AudioStreamPacketDescription**, void*); static OSStatus ComplexBufferFillRecord(OpaqueAudioConverter*, UInt32*, AudioBufferList*, AudioStreamPacketDescription**, void*); /** * Callback for the AudioUnit to pull/notify more data */ static OSStatus PlayRenderProc( void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const struct AudioTimeStamp *TimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, struct AudioBufferList * ioData); static OSStatus RecordProc( void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList * ioData); static OSStatus VolumeChangePropertyListener( AudioDeviceID id, UInt32 chan, Boolean isInput, AudioDevicePropertyID propID, void* inUserData ); /** * Recording needs a couple more buffers, which are setup by this * function */ OSStatus SetupAdditionalRecordBuffers(); /** * Player or Recorder ? */ Directions direction; State state; static pthread_mutex_t& GetReadMuteMutex(); static pthread_mutex_t& GetWriteMuteMutex(); static BOOL& GetReadMute(); static BOOL& GetWriteMute(); /* These functions just return the right mutex/variable depending whehter * the channel is recorder/player */ pthread_mutex_t& GetIsMuteMutex(); BOOL & isMute(); /** * Devices */ AudioUnit mAudioUnit; AudioDeviceID mDeviceID; AudioStreamBasicDescription hwASBD, pwlibASBD; /** Sample rate converter part of AudioToolbox Framework */ AudioConverterRef converter; CircularBuffer *mCircularBuffer; /** sample rate of the AudioUnit as a mutliple of pwlib sample rate */ Float64 rateTimes8kHz; /** number and size of internal buffers * see also SetBuffers */ PINDEX bufferSizeBytes; PINDEX bufferCount; /* * Buffer to hold data that are passed to the converter. * Separate means independant of the circular_buffer */ char* converter_buffer; UInt32 converter_buffer_size; /* ========================================================== * Variables used only by the Recorder to circumvent * the inappropriaty control flow of the pull model */ /** Buffers to capture raw data from the microphone */ CircularBuffer* mInputCircularBuffer; AudioBufferList* mInputBufferList; UInt32 mRecordInputBufferSize; #define MIN_INPUT_FILL 20 /** buffer list to catch the output of the AudioConverter */ AudioBufferList* mOutputBufferList; UInt32 mRecordOutputBufferSize; }; pwlib_v1_10_2/include/ptlib/unix/ptlib/mutex.h0100644000176200056700000001320410341452564021547 0ustar releasepostincr/* * mutex.h * * Mutual exclusion thread synchronisation class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, eitF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: mutex.h,v $ * Revision 1.27 2005/11/25 00:06:12 csoutheren * Applied patch #1364593 from Hannes Friederich * Also changed so PTimesMutex is no longer descended from PSemaphore on * non-Windows platforms * * Revision 1.26 2005/11/18 22:26:07 dsandras * Removed a few more CONST's to match with previous commit and fix permanent * deadlock. * * Revision 1.25 2005/11/04 06:56:10 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.24 2004/04/30 16:15:13 ykiryanov * BeOS modifications derived from BLocker use * * Revision 1.23 2004/04/12 03:35:27 csoutheren * Fixed problems with non-recursuve mutexes and critical sections on * older compilers and libc * * Revision 1.22 2004/04/12 00:58:45 csoutheren * Fixed PAtomicInteger on Linux, and modified PMutex to use it * * Revision 1.21 2004/04/11 07:58:08 csoutheren * Added configure.in check for recursive mutexes, and changed implementation * without recursive mutexes to use PCriticalSection or atomic word structs * * Revision 1.20 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.19 2002/10/10 05:39:51 robertj * Fixed VxWorks port breaking other platforms. * * Revision 1.18 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.17 2002/09/04 03:14:18 robertj * Backed out changes submitted by Martin Froehlich as they do not appear to * actually do anything other than add a sychronisation point. The variables * the patches intended to protect were already protected. * Fixed bug where if a PMutex was signalled by a thread that did not have it * locked, it would assert but continue to alter PMutex variables such that * a deadlock or crash is likely. * * Revision 1.16 2002/08/22 13:05:57 craigs * Fixed problems with mutex implementation thanks to Martin Froehlich * * Revision 1.15 2001/09/20 05:38:25 robertj * Changed PSyncPoint to use pthread cond so timed wait blocks properly. * Also prevented semaphore from being created if subclass does not use it. * * Revision 1.14 2001/09/19 17:37:47 craigs * Added support for nested mutexes under Linux * * Revision 1.13 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.12 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.11 2000/12/16 13:11:09 rogerh * Remote the 'public:' line. It is redundant as 'public:' is already * specified in the ../../mutex.h header file. Problem spotted following a * BeOS patch from Yuri Kiryanov * * Revision 1.10 2000/12/15 13:20:17 rogerh * Fix typo * * Revision 1.9 2000/12/15 12:50:14 rogerh * Fix some BeOS problems with #if defines. * Requested by Yuri Kiryanov * * Revision 1.8 2000/10/30 05:48:33 robertj * Added assert when get nested mutex. * * Revision 1.7 1999/09/23 06:52:16 robertj * Changed PSemaphore to use Posix semaphores. * * Revision 1.6 1999/09/02 11:56:35 robertj * Fixed problem with destroying PMutex that is already locked. * * Revision 1.5 1999/03/05 07:03:27 robertj * Some more BeOS port changes. * * Revision 1.4 1999/01/09 03:35:09 robertj * Improved efficiency of mutex to use pthread functions directly. * * Revision 1.3 1998/11/30 22:06:51 robertj * New directory structure. * * Revision 1.2 1998/09/24 04:11:41 robertj * Added open software license. * * Revision 1.1 1998/03/24 07:31:04 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PMutex #if defined(P_PTHREADS) || defined(VX_TASKS) virtual ~PTimedMutex(); mutable pthread_mutex_t mutex; #endif #if defined(P_PTHREADS) || defined(__BEOS__) || defined(P_MAC_MPTHREADS) || defined(VX_TASKS) virtual void Wait(); virtual BOOL Wait(const PTimeInterval & timeout); virtual void Signal(); virtual BOOL WillBlock() const; protected: # if defined(P_PTHREADS) && !defined(VX_TASKS) # if P_HAS_RECURSIVE_MUTEX == 0 mutable pthread_t ownerThreadId; mutable PAtomicInteger lockCount; # endif # endif #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/pdirect.h0100644000176200056700000000502607731733113022043 0ustar releasepostincr/* * pdirect.h * * File system directory class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pdirect.h,v $ * Revision 1.12 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.11 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.10 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.9 1999/03/09 08:52:25 robertj * Changes caused by documentation frenzy. * * Revision 1.8 1998/11/30 22:06:53 robertj * New directory structure. * * Revision 1.7 1998/11/24 09:38:16 robertj * FreeBSD port. * * Revision 1.6 1998/11/10 12:59:05 robertj * Fixed strange problems with readdir_r usage. * * Revision 1.5 1998/11/05 10:33:53 robertj * Solaris compatibility. * * Revision 1.4 1998/11/05 09:58:30 craigs * Added static buffer for reentrant routines * * Revision 1.3 1998/09/24 04:11:43 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PDirectory protected: DIR * directory; PFileInfo * entryInfo; struct dirent * entryBuffer; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/pipechan.h0100644000176200056700000000454407731733113022204 0ustar releasepostincr/* * pipechan.h * * Sub-process communicating via pipe I/O channel. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pipechan.h,v $ * Revision 1.11 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.10 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 1999/08/17 07:38:02 robertj * Fixed inlines so are inlined in optimised version * * Revision 1.7 1998/11/30 22:06:55 robertj * New directory structure. * * Revision 1.6 1998/10/26 11:09:19 robertj * Added separation of stdout and stderr. * * Revision 1.5 1998/09/24 04:11:44 robertj * Added open software license. * * Revision 1.4 1996/12/30 03:23:52 robertj * Commonised kill and wait functions. * * Revision 1.3 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.2 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * */ protected: int toChildPipe[2]; int fromChildPipe[2]; int stderrChildPipe[2]; int childPid; int retVal; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/pmachdep.h0100644000176200056700000004347710343317552022204 0ustar releasepostincr/* * machdep.h * * Unix machine dependencies * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pmachdep.h,v $ * Revision 1.71 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.70 2005/11/25 00:06:12 csoutheren * Applied patch #1364593 from Hannes Friederich * Also changed so PTimesMutex is no longer descended from PSemaphore on * non-Windows platforms * * Revision 1.69 2005/08/04 20:10:24 csoutheren * Apply patch #1217596 * Fixed problems with MacOSX Tiger * Thanks to Hannes Friederich * * Revision 1.68 2005/08/04 19:46:51 csoutheren * Applied patch #1240770 * Fixed problem with compilation under Solaris 10 * Thanks to Boris Pavacic * * Revision 1.67 2004/11/16 00:30:38 csoutheren * Added Cygwin support * * Revision 1.66 2004/07/11 07:56:36 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.65 2004/06/17 23:37:04 csoutheren * Added definition of upad128_t for Solaris * * Revision 1.64 2004/05/14 05:23:39 ykiryanov * Added stl header * * Revision 1.63 2004/04/18 05:45:55 ykiryanov * Added TCP_NODELAY definition and removed BE_BONELESS. BeOS is boned now * * Revision 1.62 2004/04/02 03:32:11 ykiryanov * Added prototypes for missing dl*() functions * * Revision 1.61 2004/02/23 20:00:15 ykiryanov * Fixed a typo in declaration of setegid(0 * * Revision 1.60 2004/02/22 04:33:19 ykiryanov * Added missing prototype for setegid for BeOS * * Revision 1.59 2004/02/22 03:27:30 ykiryanov * Added missing prototype for seteuid for BeOS * * Revision 1.58 2004/02/21 21:26:30 ykiryanov * Added P_THREADIDENTIFIER for BeOS threads * * Revision 1.57 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.56 2003/05/06 06:59:12 robertj * Dynamic library support for MacOSX, thanks Hugo Santos * * Revision 1.55 2003/04/23 00:35:47 craigs * Fixed problem with pmachdep.h and MacOSX thanks to Hugo Santos * * Revision 1.54 2003/01/24 10:21:06 robertj * Fixed issues in RTEMS support, thanks Vladimir Nesic * * Revision 1.53 2002/12/02 03:57:18 robertj * More RTEMS support patches, thank you Vladimir Nesic. * * Revision 1.52 2002/11/22 10:14:07 robertj * QNX port, thanks Xiaodan Tang * * Revision 1.51 2002/10/17 13:44:27 robertj * Port to RTEMS, thanks Vladimir Nesic. * * Revision 1.50 2002/10/16 11:29:05 rogerh * remove redundant #include. * * Revision 1.49 2002/10/14 22:41:35 rogerh * Wrap _THREAD_SAFE to remove a warning if is already defined. * * Revision 1.48 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.47 2002/06/27 07:51:48 robertj * GNU 3.1 compatibility under Solaris * * Revision 1.46 2001/10/11 02:20:54 robertj * Added IRIX support (no audio/video), thanks Andre Schulze. * * Revision 1.45 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.44 2001/06/30 06:59:06 yurik * Jac Goudsmit from Be submit these changes 6/28. Implemented by Yuri Kiryanov * * Revision 1.43 2001/03/07 06:54:56 yurik * Changed email to current one * * Revision 1.42 2001/02/23 08:05:19 rogerh * Add tcp.h for MACOS_X (Darwin) * * Revision 1.41 2001/01/16 11:52:46 rogerh * Add patch from Jac Goudsmit for BONE in BeOS 5 * * Revision 1.40 2000/06/21 01:01:21 robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.39 2000/05/12 01:37:38 rogerh * Add netinet/tcp.h to NetBSD and OpenBSD too. * * Revision 1.38 2000/05/05 07:08:01 robertj * Same again for FreeBSD and Solaris * * Revision 1.37 2000/05/05 05:06:38 robertj * Added tcp.h to get TCP_NODELAY for setsockopt call. * * Revision 1.36 2000/04/10 11:39:49 rogerh * Add NetBSD pthread support * * Revision 1.35 2000/04/09 18:29:02 rogerh * Add my NetBSD changes * * Revision 1.34 2000/04/07 05:45:49 rogerh * Add extra include to Mac OS X section * * Revision 1.33 2000/04/06 11:05:32 rogerh * Add MACOSX support from Kevin Packard * * Revision 1.32 2000/04/03 22:03:01 rogerh * Fix socklen_t usage for FreeBSD 3.x * * Revision 1.31 2000/03/08 12:17:09 rogerh * Add OpenBSD support * * Revision 1.30 2000/01/25 04:55:36 robertj * Added FreeBSD support for distinction between v3.x and later versions. Thanks Roger Hardiman. * * Revision 1.29 2000/01/20 08:20:57 robertj * FreeBSD v3 compatibility changes, thanks Roger Hardiman & Motonori Shindo * * Revision 1.28 1999/08/09 01:51:42 robertj * Added missing paths include (esp. for VARRUN in svcproc) * * Revision 1.27 1999/07/16 10:21:51 robertj * Added paths header file so _PATH_VARRUN is defined for svcprox. * * Revision 1.26 1999/03/02 05:41:58 robertj * More BeOS changes * * Revision 1.25 1999/02/26 04:10:39 robertj * More BeOS port changes * * Revision 1.24 1999/02/22 13:26:53 robertj * BeOS port changes. * * Revision 1.23 1999/02/06 05:49:44 robertj * BeOS port effort by Yuri Kiryanov * * Revision 1.22 1999/01/08 01:28:16 robertj * Added pthreads support for FreeBSD * * Revision 1.21 1999/01/07 03:37:15 robertj * dded default for pthreads, shortens command line in compile. * * Revision 1.20 1998/12/21 06:47:20 robertj * Solaris 5.7 support. * * Revision 1.19 1998/12/04 12:38:07 robertj * Fixed signal include * * Revision 1.18 1998/11/24 09:38:19 robertj * FreeBSD port. * * Revision 1.17 1998/11/14 01:08:25 robertj * PPC linux GNU compatibility. * * Revision 1.16 1998/09/24 04:11:45 robertj * Added open software license. * */ #ifndef _PMACHDEP_H #define _PMACHDEP_H /////////////////////////////////////////////////////////////////////////////// #if defined(P_LINUX) #include #include #include #include #include #include #include #include #include #include #include #define HAS_IFREQ #define PSETPGRP() setpgrp() #if __GNU_LIBRARY__ < 6 #define P_LINUX_LIB_OLD typedef int socklen_t; #endif #ifdef PPC typedef size_t socklen_t; #endif /////////////////////////////////////////////////////////////////////////////// #elif defined(P_FREEBSD) #if defined(P_PTHREADS) #ifndef _THREAD_SAFE #define _THREAD_SAFE #endif #define P_THREAD_SAFE_CLIB #include #endif #include #include #include #include #include #include #include #include #include #include #include /* socklen_t is defined in FreeBSD 3.4-STABLE, 4.0-RELEASE and above */ #if (P_FREEBSD <= 340000) typedef int socklen_t; #endif #define HAS_IFREQ #define PSETPGRP() setpgrp(0, 0) /////////////////////////////////////////////////////////////////////////////// #elif defined(P_OPENBSD) #if defined(P_PTHREADS) #define _THREAD_SAFE #define P_THREAD_SAFE_CLIB #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #define HAS_IFREQ #define PSETPGRP() setpgrp(0, 0) /////////////////////////////////////////////////////////////////////////////// #elif defined(P_NETBSD) #if defined(P_PTHREADS) #define _THREAD_SAFE #define P_THREAD_SAFE_CLIB #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define HAS_IFREQ #define PSETPGRP() setpgrp(0, 0) /////////////////////////////////////////////////////////////////////////////// #elif defined(P_SOLARIS) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if !defined(P_HAS_UPAD128_T) typedef union { long double _q; uint32_t _l[4]; } upad128_t; #endif #define PSETPGRP() setpgrp() #define INADDR_NONE -1 #if P_SOLARIS < 7 typedef int socklen_t; #endif #define HAS_IFREQ #if __GNUC__ < 3 extern "C" { int ftime (struct timeb *); pid_t wait3(int *status, int options, struct rusage *rusage); int gethostname(char *, int); }; #endif /////////////////////////////////////////////////////////////////////////////// #elif defined (P_SUN4) #include #include #include #include #include #include #include #define HAS_IFREQ #define PSETPGRP() setpgrp(0, 0) #define raise(s) kill(getpid(),s) extern "C" { char *mktemp(char *); int accept(int, struct sockaddr *, int *); int connect(int, struct sockaddr *, int); int ioctl(int, int, void *); int recv(int, void *, int, int); int recvfrom(int, void *, int, int, struct sockaddr *, int *); int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); int sendto(int, const void *, int, int, const struct sockaddr *, int); int send(int, const void *, int, int); int shutdown(int, int); int socket(int, int, int); int vfork(); void bzero(void *, int); void closelog(); void gettimeofday(struct timeval * tv, struct timezone * tz); void openlog(const char *, int, int); void syslog(int, char *, ...); int setpgrp(int, int); pid_t wait3(int *status, int options, struct rusage *rusage); int bind(int, struct sockaddr *, int); int listen(int, int); int getsockopt(int, int, int, char *, int *); int setsockopt(int, int, int, char *, int); int getpeername(int, struct sockaddr *, int *); int gethostname(char *, int); int getsockname(int, struct sockaddr *, int *); char * inet_ntoa(struct in_addr); int ftime (struct timeb *); struct hostent * gethostbyname(const char *); struct hostent * gethostbyaddr(const char *, int, int); struct servent * getservbyname(const char *, const char *); #include #undef NL0 #undef NL1 #undef CR0 #undef CR1 #undef CR2 #undef CR3 #undef TAB0 #undef TAB1 #undef TAB2 #undef XTABS #undef BS0 #undef BS1 #undef FF0 #undef FF1 #undef ECHO #undef NOFLSH #undef TOSTOP #undef FLUSHO #undef PENDIN }; /////////////////////////////////////////////////////////////////////////////// #elif __BEOS__ #include #include #include #include #include #define SOCK_RAW 3 // raw-protocol interface, not suported in R4 #define PF_INET AF_INET #define TCP_NODELAY 1 typedef int socklen_t; #include #define wait3(s, o, r) waitpid(-1, s, o) #define PSETPGRP() setpgid(0,0) int seteuid(uid_t euid); int setegid(gid_t gid); #define RTLD_NOW 0x2 extern "C" { void *dlopen(const char *path, int mode); int dlclose(void *handle); void *dlsym(void *handle, const char *symbol); }; /////////////////////////////////////////////////////////////////////////////// #elif defined (P_MACOSX) || defined(P_MACOS) #if defined(P_PTHREADS) # define _THREAD_SAFE # define P_THREAD_SAFE_CLIB # include #endif #if defined(P_MAC_MPTHREADS) #include // Blasted Mac comes with 17 years of crufty history // crapping up the namespace, thankyouverymuch. (What I really want is // just Multiprocessing.h, but that drags in nearly as much crap and isn't // readily available on Mac OS X.) // So: undefine the troublespots as they occur. #undef nil // you morons. // Open Transport and UNIX networking headers don't get along. Why did // Apple have to do this? And what's worse, they are functionally equivalent // #defines, Apple could have easily made the headers compatible. But no. #undef TCP_NODELAY #undef TCP_MAXSEG #endif // MPThreads #include #include #include #include #include #include #include #include #include #include #include #if defined (P_MACOSX) && (P_MACOSX < 800) typedef int socklen_t; #endif #define HAS_IFREQ #define PSETPGRP() setpgrp(0, 0) /////////////////////////////////////////////////////////////////////////////// #elif defined (P_AIX) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define HAS_IFREQ #define PSETPGRP() setpgrp() /////////////////////////////////////////////////////////////////////////////// #elif defined (P_IRIX) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef int socklen_t; #define PSETPGRP() setpgrp() /////////////////////////////////////////////////////////////////////////////// #elif defined (P_VXWORKS) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Prevent conflict between net/mbuf.h and some ASN.1 header files // VxWorks uses some #define m_data constructions #undef m_data #undef m_type #define HAS_IFREQ #define _exit(i) exit(i) typedef int socklen_t; extern int h_errno; #define SUCCESS 0 #define NOTFOUND 1 struct hostent * Vx_gethostbyname(char *name, struct hostent *hp); struct hostent * Vx_gethostbyaddr(char *name, struct hostent *hp); #define strcasecmp strcmp #define P_HAS_SEMAPHORES #define _THREAD_SAFE #define P_THREAD_SAFE_CLIB #define P_THREADIDENTIFIER long /////////////////////////////////////////////////////////////////////////////// #elif defined(P_RTEMS) #include #include #include #include #include #include #include typedef int socklen_t; typedef int64_t quad_t; extern "C" { int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *tv); int strcasecmp(const char *, const char *); int strncasecmp(const char *, const char *, size_t); char* strdup(const char *); } #define PSETPGRP() tcsetprgrp(0, 0) #define wait3(s, o, r) waitpid(-1, s, o) #define seteuid setuid #define setegid setgid #define HAS_IFREQ /////////////////////////////////////////////////////////////////////////////// #elif defined(P_QNX) #if defined(P_PTHREADS) #define _THREAD_SAFE #define P_THREAD_SAFE_CLIB #include #include /* for pthread's h_errno */ #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define HAS_IFREQ #define PSETPGRP() setpgrp() /////////////////////////////////////////////////////////////////////////////// #elif defined(P_CYGWIN) #include #include #include /////////////////////////////////////////////////////////////////////////////// // Other operating systems here #else #endif /////////////////////////////////////////////////////////////////////////////// // includes common to all Unix variants #include #include #include #include #include #include #ifndef P_VXWORKS #include #endif #ifndef __BEOS__ #include #include #endif typedef int SOCKET; #ifdef P_PTHREADS #include #define P_THREADIDENTIFIER pthread_t #if defined(P_HAS_SEMAPHORES) || defined(P_HAS_NAMED_SEMAPHORES) #include #endif // P_HAS_SEMPAHORES #endif // P_PTHREADS #ifdef BE_THREADS #define P_THREADIDENTIFIER thread_id #endif // BE_THREADS #endif // _PMACHDEP_H // End of file pwlib_v1_10_2/include/ptlib/unix/ptlib/pprocess.h0100644000176200056700000001513410267563644022260 0ustar releasepostincr/* * pprocess.h * * Operating System process (running program) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pprocess.h,v $ * Revision 1.31 2005/07/21 00:09:08 csoutheren * Added workaround for braindead behaviour of pthread_kill * Thanks to "martin martin" * * Revision 1.30 2005/06/02 19:25:18 dsandras * Applied patch from Miguel Rodrguez Prez (migras) to fix compilation with gcc 4.0.1. * * Revision 1.29 2004/05/23 21:11:39 ykiryanov * Made BeOS PProcess members same as on Linux and Mac * * Revision 1.28 2004/04/02 03:37:07 ykiryanov * Added timerChangePipe, to make code better * * Revision 1.27 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.26 2002/10/17 12:57:24 robertj * Added ability to increase maximum file handles on a process. * * Revision 1.25 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.24 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.23 2002/07/15 06:40:00 craigs * Added function to allow raising of per-process file handle limit * * Revision 1.22 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.21 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.20 2001/03/20 06:44:25 robertj * Lots of changes to fix the problems with terminating threads that are I/O * blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.19 2001/03/14 01:16:11 robertj * Fixed signals processing, now uses housekeeping thread to handle signals * synchronously. This also fixes issues with stopping PServiceProcess. * * Revision 1.18 1999/03/02 05:41:58 robertj * More BeOS changes * * Revision 1.17 1998/12/15 12:43:43 robertj * Fixed signal handling so can now ^C a pthread version. * * Revision 1.16 1998/11/30 22:06:59 robertj * New directory structure. * * Revision 1.15 1998/10/18 14:29:42 robertj * Renamed argv/argc to eliminate accidental usage. * * Revision 1.14 1998/10/16 11:27:58 robertj * Added access to argc/argv. * * Revision 1.13 1998/09/24 04:11:46 robertj * Added open software license. * * Revision 1.12 1998/05/30 13:30:44 robertj * Fixed shutdown problems with PConfig caching. * * Revision 1.11 1998/03/29 10:42:52 craigs * Made PConfig thread safe * * Revision 1.10 1998/03/26 04:55:53 robertj * Added PMutex and PSyncPoint * * Revision 1.9 1998/01/04 08:13:32 craigs * Removed extern reference to PProcessInstance * * Revision 1.8 1998/01/03 23:06:32 craigs * Added PThread support * * Revision 1.7 1996/10/31 10:28:38 craigs * Removed PXOnSigxxx routines * * Revision 1.6 1996/09/21 05:42:12 craigs * Changes for new common files, PConfig changes and signal handling * * Revision 1.5 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.4 1996/06/10 11:03:23 craigs * Changed include name * * Revision 1.3 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.2 1996/01/26 11:06:31 craigs * Added signal handlers * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ PDICTIONARY(PXFdDict, POrdinalKey, PThread); /////////////////////////////////////////////////////////////////////////////// // PProcess public: friend class PApplication; friend class PServiceProcess; friend void PXSignalHandler(int); friend class PHouseKeepingThread; ~PProcess(); PDirectory PXGetHomeDir (); char ** PXGetArgv() const { return p_argv; } int PXGetArgc() const { return p_argc; } char ** PXGetEnvp() const { return p_envp; } friend void PXSigHandler(int); virtual void PXOnSignal(int); virtual void PXOnAsyncSignal(int); void PXCheckSignals(); static void PXShowSystemWarning(PINDEX code); static void PXShowSystemWarning(PINDEX code, const PString & str); protected: void CommonConstruct(); void CommonDestruct(); virtual void _PXShowSystemWarning(PINDEX code, const PString & str); int pxSignals; protected: void CreateConfigFilesDictionary(); PAbstractDictionary * configFiles; #if defined(P_PTHREADS) || defined(P_MAC_MPTHREADS) || defined (__BEOS__) public: void SignalTimerChange(); BOOL PThreadKill(pthread_t id, unsigned signal); protected: PDICTIONARY(ThreadDict, POrdinalKey, PThread); ThreadDict activeThreads; PMutex threadMutex; int timerChangePipe[2]; class PHouseKeepingThread * housekeepingThread; #elif defined(VX_TASKS) public: void SignalTimerChange(); private: PDICTIONARY(ThreadDict, POrdinalKey, PThread); ThreadDict activeThreads; PMutex activeThreadMutex; PLIST(ThreadList, PThread); ThreadList autoDeleteThreads; PMutex deleteThreadMutex; PDECLARE_CLASS(HouseKeepingThread, PThread) public: HouseKeepingThread(); void Main(); PSyncPoint breakBlock; }; friend class HouseKeepingThread; HouseKeepingThread * houseKeeper; // Thread for doing timers, thread clean up etc. friend PThread * PThread::Current(); friend int PThread::ThreadFunction(void * thread); #else public: void PXAbortIOBlock(int fd); protected: PXFdDict ioBlocks[3]; #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/ptime.h0100644000176200056700000000377407731733113021537 0ustar releasepostincr/* * ptime.h * * Time and date class * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ptime.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:07:01 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:11:48 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTime // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/ptlib.inl0100644000176200056700000001445510336211261022052 0ustar releasepostincr/* * ptlib.inl * * Operating System classes inline function implementation * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ptlib.inl,v $ * Revision 1.36 2005/11/14 22:41:53 csoutheren * Reverted Wait and Signal to non-const - there is no way we can guarantee that all * descendant classes everywhere will be changed over, so we have to keep the * original API * * Revision 1.35 2005/11/04 06:56:10 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.34 2004/07/11 07:56:36 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.33 2004/04/18 12:37:40 csoutheren * Modified to detect sem_wait etc on Linux systems * * Revision 1.32 2004/04/11 03:20:42 csoutheren * Added Unix implementation of PCriticalSection * * Revision 1.31 2004/04/03 15:47:58 ykiryanov * Changed thread id member name for BeOS * * Revision 1.30 2004/02/21 21:59:10 ykiryanov * Fixed more Be thread related functions * * Revision 1.29 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.28 2003/02/26 02:01:10 robertj * Fixed compatibility with a MIPS compiler, Thanks Eize Slange * * Revision 1.27 2002/11/19 12:14:44 robertj * Added function to get root directory. * * Revision 1.26 2002/11/02 00:32:21 robertj * Further fixes to VxWorks (Tornado) port, thanks Andreas Sikkema. * * Revision 1.25 2002/10/17 13:44:27 robertj * Port to RTEMS, thanks Vladimir Nesic. * * Revision 1.24 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.23 2002/06/27 06:45:00 robertj * Changed "" to PString::Empty() where assigning to PString. * * Revision 1.22 2002/01/26 23:56:43 craigs * Changed for GCC 3.0 compatibility, thanks to manty@manty.net * * Revision 1.21 2001/03/20 06:44:25 robertj * Lots of changes to fix the problems with terminating threads that are I/O * blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.20 2001/03/12 02:35:20 robertj * Fixed PDirectory::Exists so only returns TRUE if a directory and not file. * * Revision 1.19 2000/04/05 02:55:11 robertj * Added microseconds to PTime class. * * Revision 1.18 1998/11/24 09:38:22 robertj * FreeBSD port. * * Revision 1.17 1998/11/10 12:59:18 robertj * Fixed strange problems with readdir_r usage. * * Revision 1.16 1998/10/18 10:02:47 robertj * Fixed program argument access functions. * * Revision 1.15 1998/09/24 04:11:49 robertj * Added open software license. * */ #if defined(P_LINUX) #if (__GNUC_MINOR__ < 7 && __GNUC__ <= 2) #include #else #define P_USE_LANGINFO #endif #elif defined(P_HPUX9) #define P_USE_LANGINFO #elif defined(P_SUN4) #endif #ifdef P_USE_LANGINFO #include #endif PINLINE DWORD PProcess::GetProcessID() const { #ifdef P_VXWORKS return PX_threadId; #else return (DWORD)getpid(); #endif // P_VXWORKS } /////////////////////////////////////////////////////////////////////////////// PINLINE unsigned PTimer::Resolution() { #if defined(P_SUN4) return 1000; #elif defined(P_RTEMS) rtems_interval ticks_per_sec; rtems_clock_get(RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticks_per_sec); return (unsigned)(1000/ticks_per_sec); #else return (unsigned)(1000/CLOCKS_PER_SEC); #endif } /////////////////////////////////////////////////////////////////////////////// PINLINE BOOL PDirectory::IsRoot() const { return IsSeparator((*this)[0]) && ((*this)[1] == '\0'); } PINLINE PDirectory PDirectory::GetRoot() const { return PString(PDIR_SEPARATOR); } PINLINE BOOL PDirectory::IsSeparator(char ch) { return ch == PDIR_SEPARATOR; } PINLINE BOOL PDirectory::Change(const PString & p) { return chdir((char *)(const char *)p) == 0; } /////////////////////////////////////////////////////////////////////////////// PINLINE PString PFilePath::GetVolume() const { return PString::Empty(); } /////////////////////////////////////////////////////////////////////////////// PINLINE BOOL PFile::Remove(const PFilePath & name, BOOL) { return unlink((char *)(const char *)name) == 0; } /////////////////////////////////////////////////////////////////////////////// PINLINE PString PChannel::GetName() const { return channelName; } #ifdef BE_THREADS PINLINE PThreadIdentifier PThread::GetThreadId() const { return mId; } #else // !BE_THREADS PINLINE PThreadIdentifier PThread::GetThreadId() const { return PX_threadId; } #ifndef VX_TASKS PINLINE PThreadIdentifier PThread::GetCurrentThreadId() { return ::pthread_self(); } #else PINLINE PThreadIdentifier PThread::GetCurrentThreadId() { return ::taskIdSelf(); } #endif // !VX_TASKS #endif // BE_THREADS /////////////////////////////////////////////////////////////////////////////// #if defined P_HAS_SEMAPHORES && !defined VX_TASKS PINLINE PCriticalSection::PCriticalSection() { ::sem_init(&sem, 0, 1); } PINLINE PCriticalSection::~PCriticalSection() { ::sem_destroy(&sem); } PINLINE void PCriticalSection::Wait() { ::sem_wait(&sem); } PINLINE void PCriticalSection::Signal() { ::sem_post(&sem); } #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/remconn.h0100644000176200056700000000446507731733113022060 0ustar releasepostincr/* * remconn.h * * Remote network connection (ppp) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: remconn.h,v $ * Revision 1.10 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.9 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 1998/12/04 12:12:58 robertj * Fixed missing forward reference. * * Revision 1.6 1998/11/30 22:07:03 robertj * New directory structure. * * Revision 1.5 1998/09/24 04:11:50 robertj * Added open software license. * * Revision 1.4 1996/09/21 05:42:12 craigs * Changes for new common files, PConfig changes and signal handling * * Revision 1.3 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.2 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.1 1996/01/26 11:06:31 craigs * Initial revision * */ protected: PString pppDeviceName; PPipeChannel * pipeChannel; BOOL wasConnected; Status status; PString deviceStr; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/resampler.h0100644000176200056700000002757710343317552022420 0ustar releasepostincr/* pwlib/src/ptlib/unix/beaudio/Resampler.h $Log: resampler.h,v $ Revision 1.2 2005/11/30 12:47:38 csoutheren Removed tabs, reformatted some code, and changed tags for Doxygen Revision 1.1 2004/05/14 08:37:33 ykiryanov BeOS resampler related declarations Revision 1.4 2002/02/04 03:15:47 yurik VC compiler complained of invoking new on array with paramters in constructor. Fixed it. Revision 1.3 2001/07/09 06:16:15 yurik Jac Goudsmit's BeOS changes of July,6th. Cleaning up media subsystem etc. Copyright 2001, Be Incorporated. All Rights Reserved. This file may be used under the terms of the Be Sample Code License. */ #include template class History { // This class stores a number of input samples in a circular buffer // The data is actually stored twice so that a wrap-around is never // needed for retrieving the data (it IS needed for storing it, but // because most resampling algorithms use interpolation of a number // of input samples, retrieving happens much more frequent than // storing). // The history is always filled completely: the start of the history // is padded with neutral samples (e.g. 0 for signed integer samples). // Therefore we only need one index into the array: a pointer to // the oldest sample (we keep a couple of additional pointers for // efficiency). // For example: let's say the object is constructed with size=3 // and samples A B C D E are added. The internal representation and the // way that the retrieve function sees it are as follows: // Internal ('>' is head): retrieved data // >0 0 0 0 0 0 {0,0,0} // A>0 0 A 0 0 {0,0,A} // A B>0 A B 0 {0,A,B} // >A B C A B C {A,B,C} // D>B C D B C {B,C,D} // D E>C D E C {C,D,E} // Notice that the last element in the buffer is never retrieved, so // we could make the buffer one element smaller, but then we would // have to add another "if" to the storage code to not store the second // copy of the data when the head pointer reaches the end of the buffer. // Note: this class is not multi-thread compatible. private: size_t mSize; // number of unique copies of each sample in buffer T *mBuf; // twice the size indicated in mSize T *mHead; // pointer to oldest sample T *mLoop; // kept equal to mBuf+mSize T *mSecHead; // kept equal to mHead+mSize public: History() {}; // default constructor to please vc's new for arrays. void Init(size_t size, T neutralvalue) // init with original constructor values { // The data is stored twice, so create a buffer that's double the requested size mBuf=mHead=mSecHead=mLoop=new T[2*(mSize=size)]; // Fill the buffer with empty samples for (unsigned i=0; i class BaseResampler { // - A "correspondance" is defined as the point in time when // an input sample's time corresponds with its output sample's time. // - A "block" is defined as the time that passes between two correspondances // - By mathematical rule, if input frequency and output frequency are // expressed in samples per second, the number of correspondances per // second is the Highest Common Factor (HCF) of the two frequencies. // - The resolution at which time needs to be measured within a block is // defined as a "tick". The number of ticks per block is the result of // multiplying the number of input samples per block and the number of // output samples per block. protected: ////////// Types typedef History SampleHistory; ////////// Configuration // This data doesn't change after setup // The number of ticks per block is mInum*mOnum. // Therefore the number of ticks per input sample is (mInum*mOnum)/mInum=mOnum. The // number of ticks per output sample is (mInum*mOnum)/mOnum=mInum. // float mIFreq; // input frequency in frames/second // float mOFreq; // output frequency in frames/second unsigned mIChannels; // number of input channels unsigned mOChannels; // number of output channels // unsigned mHCF; // Highest Common Factor of mIFreq/mOFreq unsigned mINum; // number of input samples per block = mIFreq/mHCF unsigned mONum; // number of output samples per block = mOFreq/mHCF #define mITPS mONum // input ticks per sample #define mOTPS mINum // output ticks per sample IntSample mNeutralValue; // neutral value ////////// Status // This data changes with each input sample unsigned mICount; // input samples received since last coinciding unsigned mOCount; // output samples generated since last coinciding unsigned mITicks; // tick count for mICount (=mICount*mITPS) unsigned mOTicks; // tick count for mOCount (=mOCount*mOTPS) SampleHistory *mHistory; // one sample history per channel static size_t hcf( size_t a, size_t b) { // The Highest Common Factor (HCF) is defined as the largest number that // two positive integer values can both be divided by without leaving // a remainder. // For example: HCF(12,21)=3, HCF(12,23)=1, HCF(12,24)=12. // This function uses Euclid's algorithm to determine HCF(a,b) // The result is only valid when a and b are both positive. size_t r; // the algorithm only works for a>=b if (a=1 { // Configuration (parameterized part) unsigned IFreq=static_cast(infreq); unsigned OFreq=static_cast(outfreq); mIChannels=inchannels; mOChannels=outchannels; mNeutralValue=ToIntSample(neutralvalue); // Configuration (derived part) unsigned HCF=hcf(IFreq, OFreq); mINum=IFreq/HCF; mONum=OFreq/HCF; // Status mICount=0; //mICount=(((delay+mINum-1)/mINum)*mINum-delay); mITicks=0; //mITicks=mICount*mITPS; mOCount=0; mOTicks=0; mHistory = new SampleHistory[mIChannels]; for (unsigned u = 0; u < mIChannels; u++) mHistory[u].Init(historysize,mNeutralValue); } public: virtual ~BaseResampler() { delete[] mHistory; } public: size_t InFrameSize() { return mIChannels*sizeof(ISample); } size_t OutFrameSize() { return mOChannels*sizeof(OSample); } size_t InBlockSize() { return mINum*InFrameSize(); } size_t OutBlockSize() { return mONum*OutFrameSize(); } size_t InFramesFromOutBytes(size_t outbytes) { return outbytes*mINum/(mONum*OutFrameSize()); } size_t OutFramesFromInBytes(size_t inbytes) { return inbytes*mONum/(mINum*InFrameSize()); } size_t InBytesFromOutBytes(size_t outbytes) { return InFramesFromOutBytes(outbytes)*InFrameSize(); } size_t OutBytesFromInBytes(size_t inbytes) { return OutFramesFromInBytes(inbytes)*OutFrameSize(); } protected: // Virtual function to convert sample from input format to internal format. // The default implementation is a cast, but if the signed-ness of the formats are // different, you will need to override this to add or subtract the neutral value // and if the ranges of values don't match you will need to add a multiplication or // division. virtual IntSample ToIntSample(ISample value) { return static_cast(value); } // Virtual function to convert sample from internal format to output format. // The default implementation is a cast, but if the signed-ness of the formats are // different, you will need to override this to add or subtract the neutral value // and if the ranges of values don't match you will need to add a multiplication or // division. virtual OSample ToOSample(IntSample value) { return static_cast(value); } // Pure virtual function that does the actual resampling // It should use the sample history to generate a sample. virtual IntSample OutSample(SampleHistory &history) { IntSample y0=history[0]; IntSample y1=history[1]; // Note: it's possible to optimize the division in the next line // by creating a table in the constructor with mITPS entries // where table[n]=n/mITPS and changing the calculation to // y0+(y1-y0)*table[deltaticks] return y0+(IntSample)(mOTicks-mITicks)*(y1-y0)/(IntSample)mITPS; } // Virtual function to resample a frame. // It needs to examine the histories for all channels and generate an // output frame at the given pointer, and then update the pointer. virtual void OutFrame(OSample **io_out) { unsigned i,j; for (i=0, j=0; i Resampler; pwlib_v1_10_2/include/ptlib/unix/ptlib/semaphor.h0100644000176200056700000001273010341452564022226 0ustar releasepostincr/* * semaphor.h * * Thread synchronisation semaphore class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: semaphor.h,v $ * Revision 1.24 2005/11/25 00:06:12 csoutheren * Applied patch #1364593 from Hannes Friederich * Also changed so PTimesMutex is no longer descended from PSemaphore on * non-Windows platforms * * Revision 1.23 2005/11/04 06:56:10 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.22 2004/04/30 16:16:21 ykiryanov * BeOS modifications derived from BLocker use * * Revision 1.21 2004/04/02 03:40:00 ykiryanov * Cleaned up semaphore code * * Revision 1.20 2004/02/23 18:08:10 ykiryanov * Added a parameter to semaphore constructor call to made constructor unambiguous. Suggested by Craig Southeren * * Revision 1.19 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.18 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.17 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.16 2002/06/09 16:36:34 rogerh * friend BOOL PThread::Terminate() should be type void (found by gcc 3.1) * * Revision 1.15 2002/01/23 04:26:36 craigs * Added copy constructors for PSemaphore, PMutex and PSyncPoint to allow * use of default copy constructors for objects containing instances of * these classes * * Revision 1.14 2001/09/20 05:38:25 robertj * Changed PSyncPoint to use pthread cond so timed wait blocks properly. * Also prevented semaphore from being created if subclass does not use it. * * Revision 1.13 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.12 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.11 2000/12/16 12:56:59 rogerh * BeOS changes, submitted by Yuri Kiryanov * * Revision 1.10 1999/10/22 10:18:49 craigs * Changed semaphore.h inclusion to be dependent upon P_HAS_SEMAPHORE * * Revision 1.9 1999/09/23 06:52:16 robertj * Changed PSemaphore to use Posix semaphores. * * Revision 1.8 1999/03/02 05:41:58 robertj * More BeOS changes * * Revision 1.7 1999/01/09 03:35:56 robertj * Fixed problem with closing thread waiting on semaphore. * * Revision 1.6 1998/11/30 22:07:05 robertj * New directory structure. * * Revision 1.5 1998/09/24 04:11:52 robertj * Added open software license. * * Revision 1.4 1998/01/04 10:45:01 craigs * Added thread.h * * Revision 1.3 1998/01/03 23:06:32 craigs * Added PThread support * * Revision 1.2 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.1 1996/01/26 11:06:31 craigs * Initial revision * */ public: unsigned GetInitial() const { return initialVar; } unsigned GetMaxCount() const { return maxCountVar; } protected: unsigned initialVar; unsigned maxCountVar; #if defined(P_MAC_MPTHREADS) protected: mutable MPSemaphoreID semId; #elif defined(P_PTHREADS) enum PXClass { PXSemaphore, PXMutex, PXSyncPoint } pxClass; PXClass GetSemClass() const { return pxClass; } protected: PSemaphore(PXClass); mutable pthread_mutex_t mutex; mutable pthread_cond_t condVar; #if defined(P_HAS_SEMAPHORES) mutable sem_t semId; #elif defined(P_HAS_NAMED_SEMAPHORES) mutable sem_t *semId; sem_t *CreateSem(unsigned initialValue); #else mutable unsigned currentCount; mutable unsigned maximumCount; mutable unsigned queuedLocks; friend void PThread::Terminate(); #endif #elif defined(__BEOS__) public: PSemaphore(BOOL fNested); void Create(unsigned initial); protected: BOOL mfNested; // Does it support recursive locks? thread_id mOwner; // delete can be called by owner thread sem_id semId; volatile int32 mCount; #elif defined(VX_TASKS) public: PSemaphore( SEM_ID anId ); protected: mutable SEM_ID semId; #else protected: PQUEUE(ThreadQueue, PThread); ThreadQueue waitQueue; #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/serchan.h0100644000176200056700000000506507731733113022037 0ustar releasepostincr/* * serchan.h * * Asynchronous serial I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: serchan.h,v $ * Revision 1.13 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.12 2002/11/02 00:32:21 robertj * Further fixes to VxWorks (Tornado) port, thanks Andreas Sikkema. * * Revision 1.11 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.10 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 1998/11/30 22:07:08 robertj * New directory structure. * * Revision 1.7 1998/09/24 04:11:53 robertj * Added open software license. * * Revision 1.6 1996/08/03 12:08:19 craigs * Changed for new common directories * * Revision 1.5 1996/05/03 13:12:07 craigs * More Sun4 fixes * * Revision 1.4 1996/05/02 12:01:47 craigs * More Sun4 fixed * * Revision 1.3 1996/05/02 11:55:01 craigs * Fixed problem with compiling on Sun4 * * Revision 1.2 1995/12/08 13:14:52 craigs * Added new function * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * */ public: BOOL Close(); private: #ifndef P_VXWORKS struct termios oldTermio; struct termios Termio; #endif // !P_VXWORKS DWORD baudRate; BYTE dataBits; Parity parityBits; BYTE stopBits; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/sfile.h0100644000176200056700000000402507731733113021511 0ustar releasepostincr/* * sfile.h * * Structured file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sfile.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:07:09 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:11:54 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PStructuredFile // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/socket.h0100644000176200056700000000576407731733113021712 0ustar releasepostincr/* * socket.h * * Berkley sockets ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: socket.h,v $ * Revision 1.19 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.18 2003/02/20 23:32:00 robertj * More RTEMS support patches, thanks Sebastian Meyer. * * Revision 1.17 2002/10/17 12:57:24 robertj * Added ability to increase maximum file handles on a process. * * Revision 1.16 2002/10/17 09:50:10 craigs * Added typedef for SOCKET to allow compilation on Linux * * Revision 1.15 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.14 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.13 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.12 1998/11/30 22:07:11 robertj * New directory structure. * * Revision 1.11 1998/09/24 04:11:56 robertj * Added open software license. * * Revision 1.10 1996/11/03 04:36:25 craigs * Added Read override to avoid problem with recv/read * * Revision 1.9 1996/08/09 12:16:09 craigs * *** empty log message *** * * Revision 1.8 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.7 1996/05/03 13:12:07 craigs * More Sun4 fixes * * Revision 1.6 1996/05/02 13:34:22 craigs * More Sun4 fixes * * Revision 1.5 1996/05/02 12:28:03 craigs * More Sun4 fixes * * Revision 1.4 1996/01/26 11:06:31 craigs * Added destructor * * Revision 1.3 1995/12/08 13:15:21 craigs * Added new header file * * Revision 1.2 1995/01/23 22:59:51 craigs * Changes for HPUX and Sun 4 * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSocket public: BOOL Read(void * ptr, PINDEX len); ~PSocket(); // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/sound.h0100644000176200056700000001065410033161335021532 0ustar releasepostincr/* * sound.h * * Sound class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sound.h,v $ * Revision 1.20 2004/04/02 03:49:49 ykiryanov * Removed BeOS dependent code in major effort to clean the code * * Revision 1.19 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.18 2003/05/16 17:49:18 shawn * Audio code for CoreAudio of Mac OS X now uses multiple playback buffers. * * Revision 1.17 2003/03/21 11:05:34 rogerh * Audio changes for Mac OS X from Shawn. * * Revision 1.16 2003/03/01 17:05:05 rogerh * Mac OS X updates from Shawn Pai-Hsiang Hsiao * * Revision 1.15 2003/02/24 17:49:02 rogerh * Add Mac Core Audio changes from Shawn. * * Revision 1.14 2003/02/19 10:22:22 rogerh * Add ESD fix from Shawn Pai-Hsiang Hsiao * * Revision 1.13 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.12 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.11 2001/07/09 06:16:15 yurik * Jac Goudsmit's BeOS changes of July,6th. Cleaning up media subsystem etc. * * Revision 1.10 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.9 2001/02/07 03:33:43 craigs * Added functions to get sound channel parameters * * Revision 1.8 2000/07/02 14:15:55 craigs * Fixed minor formatting issues * * Revision 1.7 2000/05/02 08:28:34 craigs * Removed "memory leaks" caused by brain-dead GNU linker * * Revision 1.6 2000/04/19 00:13:52 robertj * BeOS port changes. * * Revision 1.5 1999/07/19 01:34:22 craigs * Rewite to compensate for linux OSS sensitivity to ioctl order. * * Revision 1.4 1999/06/30 13:50:21 craigs * Added code to allow full duplex audio * * Revision 1.3 1998/11/30 22:07:13 robertj * New directory structure. * * Revision 1.2 1998/09/24 04:11:57 robertj * Added open software license. * */ #ifdef USE_ESD #include #endif /////////////////////////////////////////////////////////////////////////////// // declare type for sound handle dictionary #if defined(P_MAC_MPTHREADS) class JRingBuffer; #endif /////////////////////////////////////////////////////////////////////////////// // PSound public: BOOL Close(); BOOL Write(const void * buf, PINDEX len); BOOL Read(void * buf, PINDEX len); protected: BOOL Setup(); static PMutex dictMutex; Directions direction; PString device; BOOL isInitialised; #if defined(P_MAC_MPTHREADS) JRingBuffer *mpInput; #endif unsigned mNumChannels; unsigned mSampleRate; unsigned mBitsPerSample; unsigned actualSampleRate; #ifdef USE_ESD PAdaptiveDelay writeDelay; #endif #ifdef P_MACOSX int caDevID; // the CoreAdudio Device ID unsigned caNumChannels; // number of channels the device has unsigned int chunkSamples; // number of samples each chunk has void *caCBData; // pointer to various data for CA callbacks // including caBufLen, caBuf, and so on int caBufLen; char *caBuf; char *consumerOffset, *producerOffset; void *caConverterRef; // sample rate converter reference pthread_mutex_t caMutex; pthread_cond_t caCond; #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/svcproc.h0100644000176200056700000000636607731733113022100 0ustar releasepostincr/* * svcproc.h * * Service process (daemon) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: svcproc.h,v $ * Revision 1.16 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.15 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.14 2002/04/17 03:31:48 robertj * Renamed system log file member variable to be common with Windows version. * * Revision 1.13 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.12 2001/03/20 06:44:25 robertj * Lots of changes to fix the problems with terminating threads that are I/O * blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.11 2001/03/20 01:02:32 robertj * Fixed some difficulties with terminating a service process from signals or * from simply dropping out of Main(). * * Revision 1.10 2001/03/13 03:47:18 robertj * Added ability to set pid file from command line. * * Revision 1.9 1998/11/30 22:07:15 robertj * New directory structure. * * Revision 1.8 1998/09/24 04:11:58 robertj * Added open software license. * * Revision 1.7 1998/05/30 13:30:11 robertj * Added ability to specify the log file as well as just console output. * * Revision 1.6 1996/09/21 05:42:12 craigs * Changes for new common files, PConfig changes and signal handling * * Revision 1.5 1996/09/03 11:56:56 craigs * Changed PSYSTEMLOG to user cerr * * Revision 1.4 1996/08/03 12:10:46 craigs * Changed for new common directories and added new PSystemLog macro * * Revision 1.3 1996/06/19 12:33:45 craigs * Added ^C handling * * Revision 1.2 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.1 1996/01/26 11:06:31 craigs * Initial revision * */ public: ~PServiceProcess(); virtual void Terminate(); protected: int InitialiseService(); void _PXShowSystemWarning(PINDEX num, const PString & str); void PXOnSignal(int); void PXOnAsyncSignal(int); PString systemLogFileName; PString pidFileToRemove; BOOL isTerminating; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/syncpoint.h0100644000176200056700000000510110341452564022430 0ustar releasepostincr/* * syncpoint.h * * Thread synchronisation point (event) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, eiTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: syncpoint.h,v $ * Revision 1.8 2005/11/25 00:06:12 csoutheren * Applied patch #1364593 from Hannes Friederich * Also changed so PTimesMutex is no longer descended from PSemaphore on * non-Windows platforms * * Revision 1.7 2004/04/30 16:18:41 ykiryanov * BeOS modifications derived from BLocker use * * Revision 1.6 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.5 2001/09/20 05:38:25 robertj * Changed PSyncPoint to use pthread cond so timed wait blocks properly. * Also prevented semaphore from being created if subclass does not use it. * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 1998/11/30 22:07:18 robertj * New directory structure. * * Revision 1.2 1998/09/24 04:11:59 robertj * Added open software license. * * Revision 1.1 1998/03/24 07:31:04 robertj * Initial revision * * Revision 1.1 1998/03/23 02:42:03 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSyncPoint #if defined(P_PTHREADS) public: virtual ~PSyncPoint(); #endif #if defined(P_PTHREADS) || defined(__BEOS__) || defined(P_MAC_MPTHREADS) public: virtual void Wait(); virtual BOOL Wait(const PTimeInterval & timeout); virtual void Signal(); virtual BOOL WillBlock() const; private: unsigned signalCount; #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/tcpsock.h0100644000176200056700000000406707731733113022063 0ustar releasepostincr/* * tcpsock.h * * TCP socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: tcpsock.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:07:19 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:12:01 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTCPSocket public: virtual BOOL Read(void * buf, PINDEX len); // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/textfile.h0100644000176200056700000000401707731733113022234 0ustar releasepostincr/* * textfile.h * * Text file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: textfile.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:07:21 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:12:02 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTextFile // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/thread.h0100644000176200056700000001660610074171264021663 0ustar releasepostincr/* * thread.h * * Thread of execution control class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: thread.h,v $ * Revision 1.38 2004/07/11 07:56:36 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.37 2004/05/02 18:00:02 ykiryanov * Made unblock pipe public for BeOS * * Revision 1.36 2004/05/02 17:49:15 ykiryanov * Changed name of unblock pipe for BeOS to make compatible with socket code * * Revision 1.35 2004/04/18 00:27:32 ykiryanov * Added variable to count thread suspends. Removed thread name * * Revision 1.34 2004/04/03 15:50:30 ykiryanov * Changed names to easily distinguish class members. Added PThread name * * Revision 1.33 2004/04/02 03:42:07 ykiryanov * Added unblockPipe to improve code * * Revision 1.32 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.31 2002/11/02 00:32:21 robertj * Further fixes to VxWorks (Tornado) port, thanks Andreas Sikkema. * * Revision 1.30 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.29 2002/10/05 05:22:43 robertj * Fixed adding GetThreadId() function. * * Revision 1.28 2002/10/04 04:33:44 robertj * Added functions for getting operating system thread identifer values. * * Revision 1.27 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.26 2001/09/18 05:56:03 robertj * Fixed numerous problems with thread suspend/resume and signals handling. * * Revision 1.25 2001/09/10 03:02:41 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * Changed threading so does not actually start thread until Resume(), makes * the logic of start up much simpler and more portable. * Quite a bit of tidyin up of the pthreads code. * * Revision 1.24 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.23 2001/07/09 04:26:08 yurik * Fixed lack of pthread_self function on BeOS * * Revision 1.22 2001/05/23 00:18:55 robertj * Added support for real time threads, thanks Erland Lewin. * * Revision 1.21 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.20 2001/03/20 06:44:25 robertj * Lots of changes to fix the problems with terminating threads that are I/O * blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.19 2001/02/25 19:40:35 rogerh * Add a suspend Semaphore for MAC OS threads started as 'suspended' * * Revision 1.18 2000/10/31 08:07:28 rogerh * Use proper return type for PX_GetThreadID * * Revision 1.17 2000/03/17 03:46:32 craigs * Removed spurious stuff for PThread implementation * * Revision 1.16 1999/10/30 13:45:02 craigs * Added pipe to thread to allow asynchronous abort of socket operations * * Revision 1.15 1999/09/03 02:26:25 robertj * Changes to aid in breaking I/O locks on thread termination. Still needs more work esp in BSD! * * Revision 1.14 1999/03/02 05:41:58 robertj * More BeOS changes * * Revision 1.13 1999/01/12 11:22:19 robertj * Removed redundent variable, is in common. * * Revision 1.12 1999/01/09 03:35:52 robertj * Fixed problem with closing thread waiting on semaphore. * * Revision 1.11 1998/11/30 22:07:23 robertj * New directory structure. * * Revision 1.10 1998/09/24 04:12:03 robertj * Added open software license. * * Revision 1.9 1998/01/03 23:06:32 craigs * Added PThread support * * Revision 1.8 1997/04/22 11:00:44 craigs * Added FreeStack function * * Revision 1.7 1996/12/30 03:23:52 robertj * Added timeout to block on child process function. * * Revision 1.6 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.5 1996/04/15 10:50:48 craigs * Last revision prior to release of MibMaster * * Revision 1.4 1996/01/26 11:08:45 craigs * Fixed problem with blocking Accept calls * * Revision 1.3 1995/12/08 13:16:38 craigs * Added semaphore include and friend class * * Revision 1.2 1995/07/09 00:35:00 craigs * Latest and greatest omnibus change * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PThread public: int PXBlockOnChildTerminate(int pid, const PTimeInterval & timeout); int PXBlockOnIO(int handle, int type, const PTimeInterval & timeout); void PXAbortBlock() const; #ifdef P_PTHREADS public: #ifndef P_HAS_SEMAPHORES void PXSetWaitingSemaphore(PSemaphore * sem); #endif protected: static void * PX_ThreadStart(void *); static void PX_ThreadEnd(void *); PINDEX PX_origStackSize; Priority PX_priority; pthread_t PX_threadId; pthread_mutex_t PX_suspendMutex; int PX_suspendCount; BOOL PX_firstTimeStart; #ifndef P_HAS_SEMAPHORES PSemaphore * PX_waitingSemaphore; pthread_mutex_t PX_WaitSemMutex; #endif int unblockPipe[2]; friend class PSocket; friend void PX_SuspendSignalHandler(int); #elif defined(__BEOS__) protected: static int32 ThreadFunction(void * threadPtr); thread_id mId; int32 mPriority; PINDEX mStackSize; int32 mSuspendCount; public: int unblockPipe[2]; #elif defined(P_MAC_MPTHREADS) public: void PXSetWaitingSemaphore(PSemaphore * sem); //void InitialiseProcessThread(); static long PX_ThreadStart(void *); static void PX_ThreadEnd(void *); MPTaskID PX_GetThreadId() const; protected: void PX_NewThread(BOOL startSuspended); PINDEX PX_origStackSize; int PX_suspendCount; PSemaphore *suspend_semaphore; long PX_signature; enum { kMPThreadSig = 'THRD', kMPDeadSig = 'DEAD'}; MPTaskID PX_threadId; MPSemaphoreID PX_suspendMutex; int unblockPipe[2]; friend class PSocket; #elif defined(VX_TASKS) public: SEM_ID syncPoint; static void Trace(PThreadIdentifer threadId = 0); private: static int ThreadFunction(void * threadPtr); long PX_threadId; int priority; PINDEX originalStackSize; #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/timeint.h0100644000176200056700000000520107731733113022055 0ustar releasepostincr/* * timeint.h * * Time interval (64 bit milliseconds) * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: timeint.h,v $ * Revision 1.12 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.11 2002/10/17 12:57:24 robertj * Added ability to increase maximum file handles on a process. * * Revision 1.10 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.9 2001/09/18 05:56:03 robertj * Fixed numerous problems with thread suspend/resume and signals handling. * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 1998/11/30 22:07:25 robertj * New directory structure. * * Revision 1.6 1998/09/24 04:12:04 robertj * Added open software license. * * Revision 1.5 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.4 1996/06/10 11:03:33 craigs * Remove unneeded function declarations * * Revision 1.3 1995/07/09 00:35:00 craigs * Latest and greatest omnibus change * * Revision 1.2 1995/03/25 20:58:24 craigs * Removed unnecessary prefix on declaration of PTimerInterval::operator = * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ #include #define PMaxTimeInterval PTimeInterval((long)0x7fffffff) /////////////////////////////////////////////////////////////////////////////// // PTimeInterval // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/timer.h0100644000176200056700000000400707731733113021527 0ustar releasepostincr/* * timer.h * * Real time down counter class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: timer.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:07:27 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:12:06 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:09:51 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTimer // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/udpsock.h0100644000176200056700000000404207731733113022056 0ustar releasepostincr/* * udpsock.h * * User Datagram Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: udpsock.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 22:07:29 robertj * New directory structure. * * Revision 1.3 1998/09/24 04:12:07 robertj * Added open software license. * * Revision 1.2 1996/08/03 12:10:23 craigs * Changed for new common directories * * Revision 1.1 1995/01/23 18:43:27 craigs * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PUDPSocket // nothing to do // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/video.h0100644000176200056700000000465507731733113021526 0ustar releasepostincr/* * video.h * * Video class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): Derek Smithies (derek@indranet.co.nz) * * $Log: video.h,v $ * Revision 1.7 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.6 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.5 2001/11/28 00:07:32 dereks * Locking added to PVideoChannel, allowing reader/writer to be changed mid call * Enabled adjustment of the video frame rate * New fictitous image, a blank grey area * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 2001/01/03 08:30:36 rogerh * Typo sound -> video * * Revision 1.2 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.1 2000/11/09 00:28:34 dereks * Initial release. Required for implementation of PVideoChannel. * * */ /////////////////////////////////////////////////////////////////////////////// // PVideo public: virtual BOOL Close(); virtual PString GetName() const; // Return the name of the channel. PString GetErrorText() const; // Get a text form of the last error encountered. protected: static PMutex dictMutex; // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/unix/ptlib/videoio.h0100644000176200056700000001550307731733113022050 0ustar releasepostincr/* * videoio.h * * Classes to support streaming video input (grabbing) and output. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: videoio.h,v $ * Revision 1.20 2003/09/17 01:18:03 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.19 2003/01/06 18:41:08 rogerh * Add NetBSD patches, taken from the NetBSD pkg patches. * Submitted by Andreas Wrede * * Revision 1.18 2002/04/10 08:40:36 rogerh * Simplify the SetVideoChannelFormat() code. Use the implementation in the * ancestor class. * * Revision 1.17 2002/04/05 06:41:54 rogerh * Apply video changes from Damien Sandras . * The Video Channel and Format are no longer set in Open(). Instead * call the new SetVideoChannelFormat() method. This makes video capture * and GnomeMeeting more stable with certain Linux video capture devices. * * Revision 1.16 2002/01/16 03:36:51 dereks * Add variable to match each VIDIOCMCAPTURE with a VIDIOCSYNC * * Revision 1.15 2001/11/28 00:07:32 dereks * Locking added to PVideoChannel, allowing reader/writer to be changed mid call * Enabled adjustment of the video frame rate * New fictitous image, a blank grey area * * Revision 1.14 2001/11/25 23:47:05 robertj * Changed sense of HAS_VIDEO_CAPTURE to NO_VIDEO_CAPTURE to reduce cmd line. * * Revision 1.13 2001/11/22 16:08:32 rogerh * Allow compiles on Linux without V4L installed (eg 2.0.36 / RedHat 5.2) * * Revision 1.12 2001/08/08 06:46:44 rogerh * Only implement the Whiteness and Colour methods on Linux. * * Revision 1.11 2001/08/06 19:35:27 rogerh * Include the relevent header file based on the version of OpenBSD. * Submitted by Marius Aamodt Eriksen * * Revision 1.10 2001/08/06 07:27:21 rogerh * Make a note of the new location of a header file, but do not use it yet. * * Revision 1.9 2001/08/03 04:21:51 dereks * Add colour/size conversion for YUV422->YUV411P * Add Get/Set Brightness,Contrast,Hue,Colour for PVideoDevice, and * Linux PVideoInputDevice. * Add lots of PTRACE statement for debugging colour conversion. * Add support for Sony Vaio laptop under linux. Requires 2.4.7 kernel. * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 2001/03/20 02:21:57 robertj * More enhancements from Mark Cooke * * Revision 1.6 2001/03/03 06:13:01 robertj * Major upgrade of video conversion and grabbing classes. * * Revision 1.5 2001/01/05 10:50:04 rogerh * More BSD Unix support for PVideoInputDevice * * Revision 1.4 2001/01/03 10:34:18 rogerh * Put Linux specific parts in P_LINUX sections and start adding some FreeBSD * and OpenBSD code. * * Revision 1.3 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.2 2000/07/30 03:54:28 robertj * Added more colour formats to video device enum. * * Revision 1.1 2000/07/26 02:40:29 robertj * Added video I/O devices. * */ #if defined(P_LINUX) && !defined(NO_VIDEO_CAPTURE) #include /* change this to "videodev2.h" for v4l2 */ #endif #if defined(P_FREEBSD) #include #endif #if defined(P_OPENBSD) || defined(P_NETBSD) #if P_OPENBSD >= 200105 #include #elif P_NETBSD >= 105000000 #include #else #include #endif #endif public: virtual BOOL SetVideoFormat(VideoFormat videoFormat); virtual int GetNumChannels(); virtual BOOL SetChannel(int channelNumber); virtual BOOL SetColourFormat(const PString & colourFormat); virtual BOOL SetFrameRate(unsigned rate); virtual BOOL GetFrameSizeLimits(unsigned & minWidth, unsigned & minHeight, unsigned & maxWidth, unsigned & maxHeight) ; virtual BOOL SetFrameSize(unsigned width, unsigned height); virtual int GetBrightness(); virtual BOOL SetBrightness(unsigned newBrightness) ; virtual int GetContrast(); virtual BOOL SetContrast(unsigned newContrast); virtual int GetHue(); virtual BOOL SetHue(unsigned newHue); #if defined(P_LINUX) && !defined(NO_VIDEO_CAPTURE) // only override these methods in Linux. Other platforms will use the // default methods in PVideoDevice virtual int GetWhiteness(); virtual BOOL SetWhiteness(unsigned newWhiteness); virtual int GetColour(); virtual BOOL SetColour(unsigned newColour); virtual BOOL SetVideoChannelFormat(int channelNumber, VideoFormat videoFormat); #endif /** from one ioctl call, get whiteness, brightness, colour, contrast and hue. */ virtual BOOL GetParameters (int *whiteness, int *brightness, int *colour, int *contrast, int *hue); protected: void ClearMapping(); /** Do not use memory mapping, access the data with a call to ::read(); */ BOOL NormalReadProcess(BYTE *resultBuffer, PINDEX *bytesReturned); #if defined(P_LINUX) && !defined(NO_VIDEO_CAPTURE) int videoFd; struct video_capability videoCapability; int canMap; // -1 = don't know, 0 = no, 1 = yes int colourFormatCode; PINDEX hint_index; BYTE * videoBuffer; PINDEX frameBytes; /** Ensure each ::ioctl(VIDIOMCAPTURE) is matched by a ::ioctl(VIDIOCSYNC). */ BOOL pendingSync[2]; int currentFrame; struct video_mbuf frame; struct video_mmap frameBuffer[2]; #endif #if defined(P_FREEBSD) || defined(P_OPENBSD) || defined(P_NETBSD) struct video_capability { int channels; /* Num channels */ int maxwidth; /* Supported width */ int maxheight; /* And height */ int minwidth; /* Supported width */ int minheight; /* And height */ }; int videoFd; struct video_capability videoCapability; int canMap; // -1 = don't know, 0 = no, 1 = yes BYTE * videoBuffer; PINDEX frameBytes; int mmap_size; #endif // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/0040755000176200056700000000000010512262773017124 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/msos/ptlib/0040755000176200056700000000000010512262773020236 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/msos/ptlib/channel.h0100644000176200056700000000373007731772047022030 0ustar releasepostincr/* * channel.h * * I/O channel ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: channel.h,v $ * Revision 1.8 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.7 2001/09/10 02:51:23 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 02:55:04 robertj * New directory structure * * Revision 1.4 1998/09/24 03:29:55 robertj * Added open software license. * * Revision 1.3 1998/08/20 06:03:44 robertj * Allowed Win32 class to be used in other compilation modules * * Revision 1.2 1996/08/08 10:08:56 robertj * Directory structure changes for common files. * * Revision 1.1 1994/07/02 03:18:09 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PChannel // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/conchan.h0100644000176200056700000000376007731772047022034 0ustar releasepostincr/* * conchan.h * * Console I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: conchan.h,v $ * Revision 1.3 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.2 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.1 1999/06/13 13:54:07 robertj * Added PConsoleChannel class for access to stdin/stdout/stderr. * */ /////////////////////////////////////////////////////////////////////////////// // PConsoleChannel public: // Overrides from class PChannel virtual PString GetName() const; // Return the name of the channel. virtual BOOL Read(void * buf, PINDEX len); // Low level read from the channel. This function will block until the // requested number of characters were read. virtual BOOL Write(const void * buf, PINDEX len); // Low level write to the channel. This function will block until the // requested number of characters were written. virtual BOOL Close(); // Close the channel. // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/config.h0100644000176200056700000000307407731772047021666 0ustar releasepostincr/* * config.h * * System and application configuration class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: config.h,v $ * Revision 1.9 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 1998/11/30 02:55:05 robertj * New directory structure * * Revision 1.6 1998/09/24 03:29:56 robertj * Added open software license. * */ /////////////////////////////////////////////////////////////////////////////// // PConfig protected: Source source; PString location; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/contain.h0100644000176200056700000003637510315500453022044 0ustar releasepostincr/* * contain.h * * General container classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: contain.h,v $ * Revision 1.55 2005/09/25 10:51:23 dominance * almost complete the mingw support. We'll be there soon. ;) * * Revision 1.54 2005/09/24 09:11:42 dominance * use unix-style slashes to not confuse mingw on win32 * * Revision 1.53 2005/09/23 15:30:46 dominance * more progress to make mingw compile nicely. Thanks goes to Julien Puydt for pointing out to me how to do it properly. ;) * * Revision 1.52 2005/09/18 13:01:43 dominance * fixed pragma warnings when building with gcc. * * Revision 1.51 2005/03/10 06:37:19 csoutheren * Removed use of typeid on WIndows to get class name because it is not threadsafe * In fact, lets just use #classname everywhere because that will always work * Thanks to Vyacheslav Frolov * * Revision 1.50 2004/10/30 19:23:45 ykiryanov * Ifdefd strcasecmp for WinCE port * * Revision 1.49 2004/10/23 11:34:14 ykiryanov * Added ifdef _WIN32_WCE for PocketPC 2003 SDK port * * Revision 1.48 2004/08/15 06:45:48 rjongbloed * Disabled warning about conversion from int to bool type. * * Revision 1.47 2004/06/30 12:17:04 rjongbloed * Rewrite of plug in system to use single global variable for all factories to avoid all sorts * of issues with startup orders and Windows DLL multiple instances. * * Revision 1.46 2004/06/19 09:10:24 csoutheren * Removed MSVC warnings for * * Revision 1.45 2004/06/01 23:25:20 csoutheren * Disabled warnings under MSVC * * Revision 1.44 2004/06/01 05:22:43 csoutheren * Restored memory check functionality * * Revision 1.43 2004/05/19 23:34:43 csoutheren * Added * * Revision 1.42 2004/05/13 14:53:35 csoutheren * Add "abstract factory" template classes * * Revision 1.41 2004/04/15 03:58:40 csoutheren * Removed PCONTAINER_USES_CRITSEC * * Revision 1.40 2004/04/13 10:12:21 csoutheren * Fix for MSVC (grrr) * * Revision 1.39 2004/04/13 03:13:29 csoutheren * VS.net won't compile without "using namespace std" * * Revision 1.38 2004/04/12 03:04:10 csoutheren * Removed warnings under Windows * * Revision 1.37 2004/04/11 22:47:03 csoutheren * Remove unused parameter warnings for Windows * * Revision 1.36 2004/04/11 13:26:25 csoutheren * Removed namespace problems and removed warnings for Windows * * Revision 1.35 2004/04/11 02:55:18 csoutheren * Added PCriticalSection for Windows * Added compile time option for PContainer to use critical sections to provide thread safety under some circumstances * * Revision 1.34 2004/04/09 06:40:48 rjongbloed * Removed warning in VC++2003 version about wspapi.h * * Revision 1.33 2004/04/09 00:42:59 csoutheren * Changed Unix build to use slightly different method for * keep class names, as GCC does not use actual class names for typeinfo * * Revision 1.32 2004/04/03 08:22:20 csoutheren * Remove pseudo-RTTI and replaced with real RTTI * * Revision 1.31 2004/04/03 06:54:23 rjongbloed * Many and various changes to support new Visual C++ 2003 * * Revision 1.30 2004/01/06 21:17:38 csoutheren * Fixed formatting of warning message regarding old include system * Thanks to Louis R. Marascio * * Revision 1.29 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.28 2002/09/23 07:17:23 robertj * Changes to allow winsock2 to be included. * * Revision 1.27 2002/03/15 05:58:52 robertj * Added strncasecmp macro for unix compatibility * * Revision 1.26 2000/05/02 02:58:09 robertj * Added strcasecmp macro, BSDish version of stricmp * * Revision 1.25 2000/02/28 11:39:52 robertj * Removed warning for if STRICT (for windows.h) already defined. * * Revision 1.24 1999/03/09 10:30:17 robertj * Fixed ability to have PMEMORY_CHECK on/off on both debug/release versions. * * Revision 1.23 1998/11/30 02:55:06 robertj * New directory structure * * Revision 1.22 1998/10/13 14:13:16 robertj * Complete rewrite of memory leak detection code. * * Revision 1.21 1998/09/24 03:29:57 robertj * Added open software license. * * Revision 1.20 1998/03/09 07:15:15 robertj * Added support for MemCheck-32 program. * * Revision 1.19 1998/01/26 00:52:13 robertj * Fixed istream << operator for PInt64, should be reference. * * Revision 1.18 1997/07/08 13:01:30 robertj * DLL support. * * Revision 1.17 1997/01/12 04:13:07 robertj * Changed library to support NT 4.0 API changes. * * Revision 1.16 1996/09/14 12:38:57 robertj * Moved template define from command line to code. * Fixed correct application of windows defines. * * Revision 1.15 1996/08/17 10:00:33 robertj * Changes for Windows DLL support. * * Revision 1.14 1996/08/08 10:08:58 robertj * Directory structure changes for common files. * * Revision 1.13 1996/07/15 10:26:55 robertj * MSVC 4.1 Support * * Revision 1.12 1996/03/31 09:07:29 robertj * Removed bad define in NT headers. * * Revision 1.11 1996/01/28 02:54:27 robertj * Removal of MemoryPointer classes as usage didn't work for GNU. * * Revision 1.10 1996/01/23 13:23:15 robertj * Added const version of PMemoryPointer * * Revision 1.9 1995/11/09 12:23:46 robertj * Added 64 bit integer support. * Added platform independent base type access classes. * * Revision 1.8 1995/04/25 11:31:18 robertj * Changes for DLL support. * * Revision 1.7 1995/03/12 04:59:54 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.6 1995/01/09 12:28:45 robertj * Moved EXPORTED definition from applicat.h * * Revision 1.5 1995/01/06 10:47:08 robertj * Added 64 bit integer. * * Revision 1.4 1994/11/19 00:18:26 robertj * Changed PInteger to be INT, ie standard type like BOOL/WORD etc. * * Revision 1.3 1994/07/02 03:18:09 robertj * Support for 16 bit systems. * * Revision 1.2 1994/06/25 12:13:01 robertj * Synchronisation. * * Revision 1.1 1994/04/01 14:38:42 robertj * Initial revision * */ #ifndef _CONTAIN_H #ifndef _WIN32_WCE #error "Please remove pwlib\include\ptlib\msos from the tool include path \" and from the pre-processor options for this project" #endif // !_WIN32_WCE #endif #ifndef _OBJECT_H #define _OBJECT_H #ifdef _MSC_VER #pragma warning(disable:4201) // nonstandard extension: nameless struct/union #pragma warning(disable:4251) // disable warning exported structs #pragma warning(disable:4511) // default copy ctor not generated warning #pragma warning(disable:4512) // default assignment op not generated warning #pragma warning(disable:4514) // unreferenced inline removed #pragma warning(disable:4699) // precompiled headers #pragma warning(disable:4702) // disable warning about unreachable code #pragma warning(disable:4705) // disable warning about statement has no effect #pragma warning(disable:4710) // inline not expanded warning #pragma warning(disable:4711) // auto inlining warning #pragma warning(disable:4786) // identifier was truncated to '255' characters in the debug information #pragma warning(disable:4097) // typedef synonym for class #pragma warning(disable:4800) // forcing value to bool 'true' or 'false' (performance warning) #if _MSC_VER>=800 #define PHAS_TEMPLATES #endif #if _MSC_VER>=1300 #define __USE_STL__ 1 #endif #endif /////////////////////////////////////////////////////////////////////////////// // Machine & Compiler dependent declarations #if defined(_WIN32) && !defined(WIN32) #define WIN32 #endif #if defined(_WINDOWS) || defined(_WIN32) # ifndef WINVER # define WINVER 0x401 # endif # ifndef STRICT # define STRICT # endif # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include # undef DELETE // Remove define from NT headers. #else typedef unsigned char BYTE; // 8 bit unsigned integer quantity typedef unsigned short WORD; // 16 bit unsigned integer quantity typedef unsigned long DWORD; // 32 bit unsigned integer quantity typedef int BOOL; // type returned by expresion (i != j) #define TRUE 1 #define FALSE 0 #define NEAR __near #endif // Declaration for exported callback functions to OS #if defined(_WIN32) # define PEXPORTED __stdcall #elif defined(_WINDOWS) # define PEXPORTED WINAPI __export #else # define PEXPORTED __far __pascal #endif // Declaration for static global variables (WIN16 compatibility) #if defined(_WIN32) # define PSTATIC #else # define PSTATIC __near #endif // Declaration for platform independent architectures #define PCHAR8 PANSI_CHAR #define PBYTE_ORDER PLITTLE_ENDIAN // Declaration for integer that is the same size as a void * #if defined(_WIN32) typedef int INT; #else typedef long INT; #endif // Declaration for signed integer that is 16 bits typedef short PInt16; // Declaration for signed integer that is 32 bits typedef long PInt32; #ifdef __MINGW32__ #define __USE_STL__ using namespace std; #define P_HAS_INT64 typedef signed __int64 PInt64; typedef unsigned __int64 PUInt64; #endif // Declaration for 64 bit unsigned integer quantity #if defined(_MSC_VER) && defined(_WIN32) #define P_HAS_INT64 typedef signed __int64 PInt64; typedef unsigned __int64 PUInt64; #if _MSC_VER<1300 class ostream; class istream; ostream & operator<<(ostream & s, PInt64 v); ostream & operator<<(ostream & s, PUInt64 v); istream & operator>>(istream & s, PInt64 & v); istream & operator>>(istream & s, PUInt64 & v); #endif #endif // Standard array index type (depends on compiler) // Type used in array indexes especially that required by operator[] functions. #if defined(_MSC_VER) || defined(__MINGW32__) # define PINDEX int # if defined(_WIN32) const PINDEX P_MAX_INDEX = 0x7fffffff; # else const PINDEX P_MAX_INDEX = 0x7fff; # endif inline PINDEX PABSINDEX(PINDEX idx) { return (idx < 0 ? -idx : idx)&P_MAX_INDEX; } # define PASSERTINDEX(idx) PAssert((idx) >= 0, PInvalidArrayIndex) #else # define PINDEX unsigned # ifndef SIZEOF_INT # define SIZEOF_INT sizeof(int) # endif # if SIZEOF_INT == 4 const PINDEX P_MAX_INDEX = 0xffffffff; # else const PINDEX P_MAX_INDEX = 0xffff; # endif # define PABSINDEX(idx) (idx) # define PASSERTINDEX(idx) #endif #ifndef _WIN32_WCE #define strcasecmp(s1,s2) stricmp(s1,s2) #define strncasecmp(s1,s2,n) strnicmp(s1,s2,n) #endif class PWin32Overlapped : public OVERLAPPED { // Support class for overlapped I/O in Win32. public: PWin32Overlapped(); ~PWin32Overlapped(); void Reset(); }; enum { PWIN32ErrorFlag = 0x40000000 }; class PString; class RegistryKey { public: enum OpenMode { ReadOnly, ReadWrite, Create }; RegistryKey(const PString & subkey, OpenMode mode); ~RegistryKey(); BOOL EnumKey(PINDEX idx, PString & str); BOOL EnumValue(PINDEX idx, PString & str); BOOL DeleteKey(const PString & subkey); BOOL DeleteValue(const PString & value); BOOL QueryValue(const PString & value, PString & str); BOOL QueryValue(const PString & value, DWORD & num, BOOL boolean); BOOL SetValue(const PString & value, const PString & str); BOOL SetValue(const PString & value, DWORD num); private: HKEY key; }; #ifndef _WIN32_WCE extern "C" int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int); #else extern "C" int PASCAL WinMain(HINSTANCE, HINSTANCE, LPTSTR, int); #include #endif // used by various modules to disable the winsock2 include to avoid header file problems #ifndef P_KNOCKOUT_WINSOCK2 #if defined(_MSC_VER) #pragma warning(push) #pragma warning(disable:4127 4706) #endif #if defined(P_WINSOCKv1) #include #else // P_WINSOCKv1 ///IPv6 support // Needed for for IPv6 socket API. Must be included before "windows.h" #include // Version 2 of windows socket #include // winsock2 is not complete, ws2tcpip add some defines such as IP_TOS #if P_HAS_IPV6 && !defined IPPROTO_IPV6 #include "tpipv6.h" // For IPv6 Tech Preview. #endif #endif // P_WINSOCKv1 #if defined(_MSC_VER) #pragma warning(pop) #endif #define PIPX typedef int socklen_t; #endif // P_KNOCKOUT_WINSOCK2 #if defined(_MSC_VER) && !defined(_WIN32) extern "C" int __argc; extern "C" char ** __argv; #endif #ifdef __BORLANDC__ #define __argc _argc #define __argv _argv #endif #undef Yield #define P_THREADIDENTIFIER DWORD #include #include #include #if defined(_MSC_VER) #pragma warning(disable:4201) #endif #include #ifndef _WIN32_WCE #include #else #include #endif #define P_HAS_TYPEINFO 1 //#define PCONTAINER_USES_CRITSEC 1 // preload and kill warnings #if defined(_MSC_VER) #pragma warning(push) #include #pragma warning(disable:4100) #pragma warning(disable:4018) #pragma warning(disable:4663) #pragma warning(disable:4146) #pragma warning(disable:4244) #pragma warning(disable:4786) #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif // preload and kill warnings #if defined(_MSC_VER) #pragma warning(push) #include #pragma warning(disable:4018) #pragma warning(disable:4663) #pragma warning(disable:4786) #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif // preload and kill warnings #if defined(_MSC_VER) #pragma warning(push) #include #pragma warning(disable:4018) #pragma warning(disable:4663) #pragma warning(disable:4786) #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif // preload and kill warnings #if defined(_MSC_VER) #pragma warning(push) #include #pragma warning(disable:4786) #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif // preload and kill warnings #if defined(_MSC_VER) #pragma warning(push) #include #pragma warning(disable:4786) #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif // preload and kill warnings #include // preload and kill warnings #if defined(_MSC_VER) #pragma warning(push) #include #pragma warning(disable:4284) #endif #include #if defined(_MSC_VER) #pragma warning(pop) #endif // VS.net won't work without this :( #if _MSC_VER>=1300 using namespace std; #endif #if defined(_MSC_VER) #pragma warning(disable:4786) #endif /////////////////////////////////////////////////////////////////////////////// // Fill in common declarations //#include "../../contain.h" #endif // _OBJECT_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/critsec.h0100644000176200056700000000316210332600354022031 0ustar releasepostincr/* * critsec.h * * Critical section mutex class. * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: critsec.h,v $ * Revision 1.2 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.1 2004/04/11 02:55:18 csoutheren * Added PCriticalSection for Windows * Added compile time option for PContainer to use critical sections to provide thread safety under some circumstances * */ // Windows specific critical section implementation mutable CRITICAL_SECTION criticalSection; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/debstrm.h0100644000176200056700000000424507302460134022043 0ustar releasepostincr/* * debstrm.h * * Debug output stream for Windows. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: debstrm.h,v $ * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 1998/09/24 03:39:55 robertj * Added open software license. * * Revision 1.5 1997/07/08 12:57:50 robertj * DLL support * * Revision 1.4 1996/11/04 03:34:24 robertj * Fixed missing #define for multiple inclusion of file. * * Revision 1.3 1996/08/17 10:00:40 robertj * Changes for Windows DLL support. * * Revision 1.2 1994/12/21 11:57:19 robertj * Fixed debugging stream. * * Revision 1.1 1994/08/21 23:43:02 robertj * Initial revision * * Revision 1.1 1994/07/27 05:58:07 robertj * Initial revision * */ #ifndef _PDEBUGSTREAM #define _PDEBUGSTREAM /////////////////////////////////////////////////////////////////////////////// // PDebugStream for MS-Windows class PDebugStream : public ostream { public: PDebugStream(); private: class Buffer : public streambuf { public: Buffer(); virtual int overflow(int=EOF); virtual int underflow(); virtual int sync(); char buffer[250]; } buffer; }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/dynalink.h0100644000176200056700000000336207731772047022232 0ustar releasepostincr/* * dynalink.h * * Dynamic Link Library class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: dynalink.h,v $ * Revision 1.6 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:08 robertj * New directory structure * * Revision 1.3 1998/09/24 03:29:59 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:08:59 robertj * Directory structure changes for common files. * * Revision 1.1 1995/03/14 12:44:49 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PDynaLink protected: #if defined(_WINDOWS) || defined(_WIN32) HINSTANCE _hDLL; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/epacket.h0100644000176200056700000000523010313262467022017 0ustar releasepostincr/* * epacket.h * * Ethernet Packet Interface to NDIS drivers. * * Copyright 1998 Equivalence Pty. Ltd. * * Original code by William Ingle (address unknown) * * $Log: epacket.h,v $ * Revision 1.7 2005/09/18 13:01:43 dominance * fixed pragma warnings when building with gcc. * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1999/02/16 08:10:33 robertj * MSVC 6.0 compatibility changes. * * Revision 1.4 1998/10/23 04:09:07 robertj * Fixes for NT support. * Allowed both old and new driver by compilation option. * * Revision 1.3 1998/10/06 10:24:40 robertj * Fixed hang when using reset command, removed the command! * * Revision 1.2 1998/10/01 09:06:29 robertj * NT driver compatibility. * * Revision 1.1 1998/09/28 08:10:33 robertj * Initial revision * */ #ifndef __EPACKET_H #define __EPACKET_H #ifndef CTL_CODE #ifdef _MSC_VER #pragma warning(disable:4201) #endif #include #ifdef _MSC_VER #pragma warning(default:4201) #endif #endif #ifdef USE_VPACKET #define FILE_DEVICE_EPACKET 0x8000 #define IOCTL_EPACKET_QUERY_OID (UINT)CTL_CODE(FILE_DEVICE_EPACKET, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_SET_OID (UINT)CTL_CODE(FILE_DEVICE_EPACKET, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_STATISTICS (UINT)CTL_CODE(FILE_DEVICE_EPACKET, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_READ (UINT)CTL_CODE(FILE_DEVICE_EPACKET, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_WRITE (UINT)CTL_CODE(FILE_DEVICE_EPACKET, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_BIND (UINT)CTL_CODE(FILE_DEVICE_EPACKET, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) #else #define FILE_DEVICE_EPACKET 0x1000 #define IOCTL_EPACKET_VERSION CTL_CODE(FILE_DEVICE_EPACKET, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_BIND CTL_CODE(FILE_DEVICE_EPACKET, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_QUERY_OID CTL_CODE(FILE_DEVICE_EPACKET, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_SET_OID CTL_CODE(FILE_DEVICE_EPACKET, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_READ CTL_CODE(FILE_DEVICE_EPACKET, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) #define IOCTL_EPACKET_WRITE CTL_CODE(FILE_DEVICE_EPACKET, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) #endif #pragma pack(1) typedef struct _EPACKET_OID { ULONG Oid; ULONG Length; UCHAR Data[1]; } EPACKET_OID; #pragma pack() #endif // __EPACKET_H // End Of File //////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/ethsock.h0100644000176200056700000000416207731772047022060 0ustar releasepostincr/* * ethsock.h * * Direct Ethernet socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ethsock.h,v $ * Revision 1.8 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.7 2001/10/03 03:11:35 robertj * Changed to use only a single instance of SNMP library to avoid memory leak. * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 02:55:09 robertj * New directory structure * * Revision 1.4 1998/11/20 03:17:42 robertj * Split rad and write buffers to separate pools. * * Revision 1.3 1998/09/24 03:30:01 robertj * Added open software license. * * Revision 1.2 1998/08/21 05:27:01 robertj * Fine tuning of interface. * * Revision 1.1 1998/08/20 06:04:29 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PEthSocket public: // Overrides from class PChannel virtual PString GetName() const; protected: PWin32PacketDriver * driver; PString interfaceName; PWin32PackBufArray readBuffers; PWin32PackBufArray writeBuffers; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/file.h0100644000176200056700000000446007731772047021340 0ustar releasepostincr/* * file.h * * Disk file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: file.h,v $ * Revision 1.7 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 02:55:10 robertj * New directory structure * * Revision 1.4 1998/09/24 03:30:02 robertj * Added open software license. * * Revision 1.3 1996/08/08 10:09:00 robertj * Directory structure changes for common files. * * Revision 1.2 1995/06/04 12:46:49 robertj * Borland C++ compatibility. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ #ifdef __BORLANDC__ #define _open ::open #define _close ::close #define _read ::read #define _write ::write #define _lseek ::lseek #define _chsize ::chsize #define _access ::access #define _chmod ::chmod #define _mkdir ::mkdir #define _rmdir ::rmdir #define _chdir ::chdir #define _mktemp ::mktemp #define _S_IWRITE S_IWRITE #define _S_IREAD S_IREAD #define _O_TEXT O_TEXT #define _O_BINARY O_BINARY #endif /////////////////////////////////////////////////////////////////////////////// // PFile protected: virtual BOOL IsTextFile() const; // Return TRUE if text file translation is required // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/filepath.h0100644000176200056700000000327407731772047022217 0ustar releasepostincr/* * filepath.h * * File system path abstraction. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: filepath.h,v $ * Revision 1.6 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:12 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:04 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:09:01 robertj * Directory structure changes for common files. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // File Specification // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/icmpsock.h0100644000176200056700000000333107731772047022225 0ustar releasepostincr/* * icmpsock.h * * Inernet Control Message Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: icmpsock.h,v $ * Revision 1.7 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/12/02 03:51:40 robertj * Unix compatibility changes * * Revision 1.4 1998/09/24 03:30:06 robertj * Added open software license. * * Revision 1.3 1996/10/29 13:28:30 robertj * Change ICMP to use DLL rather than Winsock * * */ /////////////////////////////////////////////////////////////////////////////// // PICMPSocket public: BOOL Close(); BOOL IsOpen() const; protected: HANDLE icmpHandle; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/ipdsock.h0100644000176200056700000000330207731772047022047 0ustar releasepostincr/* * ipdsock.h * * IP datagram socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipdsock.h,v $ * Revision 1.6 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:14 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:07 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:09:03 robertj * Directory structure changes for common files. * * Revision 1.1 1996/06/29 04:05:03 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PIPDatagramSocket // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/ipsock.h0100644000176200056700000000753407731772047021716 0ustar releasepostincr/* * ipsock.h * * Internet Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipsock.h,v $ * Revision 1.11 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.10 2003/02/04 22:28:19 robertj * Fixed use of NETDB_SUCCESS symbol in WinCE, thanks Joerg Schoemer * * Revision 1.9 2002/12/04 00:41:12 robertj * Added sockets symbol not in winsock for getXbyY functions. * * Revision 1.8 2001/09/10 02:51:23 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 2001/01/24 06:06:34 yurik * Windows CE port-related changes - actually my first change of openh323 code * * Revision 1.5 1998/11/30 02:55:15 robertj * New directory structure * * Revision 1.4 1998/09/24 03:30:09 robertj * Added open software license. * * Revision 1.3 1997/01/10 13:15:39 robertj * Added unix style error codes for WinSock codes compatible with GetErrorNumber(). * * Revision 1.2 1996/08/08 10:09:04 robertj * Directory structure changes for common files. * * Revision 1.1 1994/07/27 06:00:10 robertj * Initial revision * */ #ifndef _WIN32_WCE #define EINPROGRESS (WSAEINPROGRESS|PWIN32ErrorFlag) #define ENOTSOCK (WSAENOTSOCK|PWIN32ErrorFlag) #define EMSGSIZE (WSAEMSGSIZE|PWIN32ErrorFlag) #define ESOCKTNOSUPPORT (WSAESOCKTNOSUPPORT|PWIN32ErrorFlag) #define EOPNOTSUPP (WSAEOPNOTSUPP|PWIN32ErrorFlag) #define EPFNOSUPPORT (WSAEPFNOSUPPORT|PWIN32ErrorFlag) #define EAFNOSUPPORT (WSAEAFNOSUPPORT|PWIN32ErrorFlag) #define EADDRINUSE (WSAEADDRINUSE|PWIN32ErrorFlag) #define EADDRNOTAVAIL (WSAEADDRNOTAVAIL|PWIN32ErrorFlag) #define ENETDOWN (WSAENETDOWN|PWIN32ErrorFlag) #define ENETUNREACH (WSAENETUNREACH|PWIN32ErrorFlag) #define ENETRESET (WSAENETRESET|PWIN32ErrorFlag) #define ECONNABORTED (WSAECONNABORTED|PWIN32ErrorFlag) #define ECONNRESET (WSAECONNRESET|PWIN32ErrorFlag) #define ENOBUFS (WSAENOBUFS|PWIN32ErrorFlag) #define EISCONN (WSAEISCONN|PWIN32ErrorFlag) #define ENOTCONN (WSAENOTCONN|PWIN32ErrorFlag) #define ESHUTDOWN (WSAESHUTDOWN|PWIN32ErrorFlag) #define ETOOMANYREFS (WSAETOOMANYREFS|PWIN32ErrorFlag) #define ETIMEDOUT (WSAETIMEDOUT|PWIN32ErrorFlag) #define ECONNREFUSED (WSAECONNREFUSED|PWIN32ErrorFlag) #define EHOSTDOWN (WSAEHOSTDOWN|PWIN32ErrorFlag) #define EHOSTUNREACH (WSAEHOSTUNREACH|PWIN32ErrorFlag) #endif #define NETDB_SUCCESS 0 /////////////////////////////////////////////////////////////////////////////// // PIPSocket // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/ipxsock.h0100644000176200056700000000313207731772047022074 0ustar releasepostincr/* * ipxsock.h * * IPX protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipxsock.h,v $ * Revision 1.5 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 1998/11/30 02:55:17 robertj * New directory structure * * Revision 1.2 1998/09/24 03:30:10 robertj * Added open software license. * * Revision 1.1 1996/09/14 13:19:35 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PIPXSocket // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/mail.h0100644000176200056700000001507607731772047021350 0ustar releasepostincr/* * mail.h * * Electronic mail class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: mail.h,v $ * Revision 1.12 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.11 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.10 1999/02/16 08:10:33 robertj * MSVC 6.0 compatibility changes. * * Revision 1.9 1998/11/30 02:55:18 robertj * New directory structure * * Revision 1.8 1998/09/24 03:30:11 robertj * Added open software license. * * Revision 1.7 1997/02/05 11:48:25 robertj * Fixed compatibility with MSVC debug memory allocation macros. * * Revision 1.6 1996/08/08 10:09:05 robertj * Directory structure changes for common files. * * Revision 1.5 1995/08/12 22:54:26 robertj * GUI interface additions for mail. * * Revision 1.4 1995/07/02 01:22:47 robertj * Changed mail to use CMC then MAPI if available. * * Revision 1.3 1995/06/17 00:49:16 robertj * Changed name to simply PMail. * Fixed types of MAPI calls. * * Revision 1.2 1995/04/01 08:04:40 robertj * Added GUI support. * * Revision 1.1 1995/03/14 12:44:51 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PMail protected: DWORD sessionId; DWORD lastError; unsigned hUserInterface; BOOL LogOnCommonInterface(const char * username, const char * password, const char * service); #if P_HAS_CMC class CMCDLL : public PDynaLink { PCLASSINFO(CMCDLL, PDynaLink) public: CMCDLL(); CMC_return_code (FAR PASCAL *logon)( CMC_string service, CMC_string user, CMC_string password, CMC_enum character_set, CMC_ui_id ui_id, CMC_uint16 caller_cmc_version, CMC_flags logon_flags, CMC_session_id FAR *session, CMC_extension FAR *logon_extensions ); CMC_return_code (FAR PASCAL *logoff)( CMC_session_id session, CMC_ui_id ui_id, CMC_flags logoff_flags, CMC_extension FAR *logoff_extensions ); CMC_return_code (FAR PASCAL *free_buf)( CMC_buffer memory ); CMC_return_code (FAR PASCAL *query_configuration)( CMC_session_id session, CMC_enum item, CMC_buffer reference, CMC_extension FAR *config_extensions ); CMC_return_code (FAR PASCAL *look_up)( CMC_session_id session, CMC_recipient FAR *recipient_in, CMC_flags look_up_flags, CMC_ui_id ui_id, CMC_uint32 FAR *count, CMC_recipient FAR * FAR *recipient_out, CMC_extension FAR *look_up_extensions ); CMC_return_code (FAR PASCAL *list)( CMC_session_id session, CMC_string message_type, CMC_flags list_flags, CMC_message_reference *seed, CMC_uint32 FAR *count, CMC_ui_id ui_id, CMC_message_summary FAR * FAR *result, CMC_extension FAR *list_extensions ); CMC_return_code (FAR PASCAL *send)( CMC_session_id session, CMC_message FAR *message, CMC_flags send_flags, CMC_ui_id ui_id, CMC_extension FAR *send_extensions ); CMC_return_code (FAR PASCAL *read)( CMC_session_id session, CMC_message_reference *message_reference, CMC_flags read_flags, CMC_message FAR * FAR *message, CMC_ui_id ui_id, CMC_extension FAR *read_extensions ); CMC_return_code (FAR PASCAL *act_on)( CMC_session_id session, CMC_message_reference *message_reference, CMC_enum operation, CMC_flags act_on_flags, CMC_ui_id ui_id, CMC_extension FAR *act_on_extensions ); }; CMCDLL cmc; #endif #if P_HAS_MAPI class MAPIDLL : public PDynaLink { PCLASSINFO(MAPIDLL, PDynaLink) public: MAPIDLL(); ULONG (FAR PASCAL *Logon)(HWND, LPCSTR, LPCSTR, FLAGS, ULONG, LPLHANDLE); ULONG (FAR PASCAL *Logoff)(LHANDLE, HWND, FLAGS, ULONG); ULONG (FAR PASCAL *SendMail)(LHANDLE, HWND, lpMapiMessage, FLAGS, ULONG); ULONG (FAR PASCAL *SendDocuments)(HWND, LPSTR, LPSTR, LPSTR, ULONG); ULONG (FAR PASCAL *FindNext)(LHANDLE, HWND, LPCSTR, LPCSTR, FLAGS, ULONG, LPSTR); ULONG (FAR PASCAL *ReadMail)(LHANDLE, HWND, LPCSTR, FLAGS, ULONG, lpMapiMessage FAR *); ULONG (FAR PASCAL *SaveMail)(LHANDLE, HWND, lpMapiMessage, FLAGS, ULONG, LPSTR); ULONG (FAR PASCAL *DeleteMail)(LHANDLE, HWND, LPCSTR, FLAGS, ULONG); ULONG (FAR PASCAL *FreeBuffer)(LPVOID); ULONG (FAR PASCAL *Address)(LHANDLE, HWND, LPSTR, ULONG, LPSTR, ULONG, lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc FAR *); ULONG (FAR PASCAL *Details)(LHANDLE, HWND,lpMapiRecipDesc, FLAGS, ULONG); ULONG (FAR PASCAL *ResolveName)(LHANDLE, HWND, LPCSTR, FLAGS, ULONG, lpMapiRecipDesc FAR *); }; MAPIDLL mapi; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/mutex.h0100644000176200056700000000370310337205041021537 0ustar releasepostincr/* * mutex.h * * Mutual exclusion thread synchronisation class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: mutex.h,v $ * Revision 1.7 2005/11/17 22:54:25 csoutheren * Fixed missed functions in de-consting PMutex functions * * Revision 1.6 2005/11/14 22:29:13 csoutheren * Reverted Wait and Signal to non-const - there is no way we can guarantee that all * descendant classes everywhere will be changed over, so we have to keep the * original API * * Revision 1.5 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 1998/11/30 02:55:19 robertj * New directory structure * * Revision 1.2 1998/09/24 03:30:12 robertj * Added open software license. * * Revision 1.1 1998/03/23 02:42:02 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PMutex public: virtual void Signal(); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/pdirect.h0100644000176200056700000000450507731772047022053 0ustar releasepostincr/* * pdirect.h * * File system directory class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pdirect.h,v $ * Revision 1.9 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 1999/03/09 03:08:39 robertj * Changes for new documentation system * * Revision 1.6 1998/11/30 02:55:21 robertj * New directory structure * * Revision 1.5 1998/09/24 03:30:14 robertj * Added open software license. * * Revision 1.4 1996/08/08 10:09:06 robertj * Directory structure changes for common files. * * Revision 1.3 1995/03/12 04:59:55 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.2 1994/10/24 00:15:21 robertj * Changed PFilePath and PDirectory so descends from either PString or * PCaselessString depending on the platform. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PDirectory protected: HANDLE hFindFile; WIN32_FIND_DATA fileinfo; BOOL Filtered(); public: static PString CreateFullPath(const PString & path, BOOL isDirectory); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/pipechan.h0100644000176200056700000000446607731772047022216 0ustar releasepostincr/* * pipechan.h * * Sub-process communicating with a pipe I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pipechan.h,v $ * Revision 1.10 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 1998/11/30 02:55:22 robertj * New directory structure * * Revision 1.7 1998/10/26 09:11:30 robertj * Added ability to separate out stdout from stderr on pipe channels. * * Revision 1.6 1998/09/24 03:30:15 robertj * Added open software license. * * Revision 1.5 1996/11/16 10:53:30 robertj * Fixed bug in PPipeChannel test for open channel, win95 support. * * Revision 1.4 1996/08/08 10:09:07 robertj * Directory structure changes for common files. * * Revision 1.3 1995/03/14 13:31:35 robertj * Implemented DOS pipe channel. * * Revision 1.2 1995/03/12 04:59:56 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.1 1994/10/23 05:35:36 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PPipeChannel public: virtual BOOL IsOpen() const; protected: PROCESS_INFORMATION info; HANDLE hToChild, hFromChild, hStandardError; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/pprocess.h0100644000176200056700000001255407731772047022262 0ustar releasepostincr/* * pprocess.h * * Operating system process (running program) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pprocess.h,v $ * Revision 1.32 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.31 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.30 2001/04/15 03:37:45 yurik * Removed shutdown flag. Use IsTerminated() instead * * Revision 1.29 2001/04/14 04:47:57 yurik * To prevent trace from being called when process is shutting down, introduced a flag (CE only) * * Revision 1.28 2001/01/24 06:58:46 yurik * More WinCe related changes * * Revision 1.27 2001/01/24 06:08:49 yurik * Windows CE port-related changes * * Revision 1.26 2000/03/04 07:48:15 robertj * Fixed problem with window not appearing when assert on GUI based win32 apps. * * Revision 1.25 1999/02/16 08:10:33 robertj * MSVC 6.0 compatibility changes. * * Revision 1.24 1998/12/04 10:13:08 robertj * Added virtual for determining if process is a service. Fixes linkage problem. * * Revision 1.23 1998/11/30 02:55:23 robertj * New directory structure * * Revision 1.22 1998/09/24 03:30:16 robertj * Added open software license. * * Revision 1.21 1998/04/07 13:32:58 robertj * Changed startup code to support PApplication class. * * Revision 1.20 1998/04/01 01:53:24 robertj * Fixed problem with NoAutoDelete threads. * * Revision 1.19 1998/03/20 03:18:27 robertj * Added special classes for specific sepahores, PMutex and PSyncPoint. * * Revision 1.18 1997/07/08 13:01:12 robertj * DLL support. * * Revision 1.17 1997/04/27 05:50:25 robertj * DLL support. * * Revision 1.16 1997/02/05 11:49:37 robertj * Changed current process function to return reference and validate objects descendancy. * * Revision 1.15 1996/10/08 13:05:18 robertj * Rewrite to use standard window isntead of console window. * * Revision 1.14 1996/08/17 10:00:34 robertj * Changes for Windows DLL support. * * Revision 1.13 1996/08/08 10:09:08 robertj * Directory structure changes for common files. * * Revision 1.12 1996/07/27 04:09:23 robertj * Changed thread creation to use C library function instead of direct WIN32. * * Revision 1.11 1996/06/13 13:32:09 robertj * Rewrite of auto-delete threads, fixes Windows95 total crash. * * Revision 1.10 1996/05/23 10:02:41 robertj * Changed process.h to pprocess.h to avoid name conflict. * * Revision 1.9 1996/03/31 09:08:04 robertj * Added mutex to thread dictionary access. * * Revision 1.8 1996/03/12 11:31:06 robertj * Moved PProcess destructor to platform dependent code. * * Revision 1.7 1995/12/10 11:48:08 robertj * Fixed bug in application shutdown of child threads. * * Revision 1.6 1995/04/25 11:17:11 robertj * Fixes for DLL use in WIN32. * * Revision 1.5 1995/03/12 04:59:57 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.4 1994/07/27 06:00:10 robertj * Backup * * Revision 1.3 1994/07/21 12:35:18 robertj * *** empty log message *** * * Revision 1.2 1994/07/02 03:18:09 robertj * Prevent WinMain in pure MSDOS versions. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PProcess public: ~PProcess(); void SignalTimerChange(); // Signal to the timer thread that a change was made. virtual BOOL IsServiceProcess() const; virtual BOOL IsGUIProcess() const; private: PDICTIONARY(ThreadDict, POrdinalKey, PThread); ThreadDict activeThreads; PMutex activeThreadMutex; PLIST(ThreadList, PThread); ThreadList autoDeleteThreads; PMutex deleteThreadMutex; class HouseKeepingThread : public PThread { PCLASSINFO(HouseKeepingThread, PThread) public: HouseKeepingThread(); void Main(); PSyncPoint breakBlock; }; HouseKeepingThread * houseKeeper; // Thread for doing timers, thread clean up etc. friend PThread * PThread::Current(); friend void HouseKeepingThread::Main(); friend UINT __stdcall PThread::MainFunction(void * thread); friend class PServiceProcess; friend class PApplication; #ifndef _WIN32_WCE friend int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int); #else friend int PASCAL WinMain(HINSTANCE, HINSTANCE, LPTSTR, int); #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/ptime.h0100644000176200056700000000345607731772047021543 0ustar releasepostincr/* * ptime.h * * Time and date class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ptime.h,v $ * Revision 1.7 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.6 2003/06/29 03:48:24 ykiryanov * Added include * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:25 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:17 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:09:09 robertj * Directory structure changes for common files. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTime // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/ptlib.inl0100644000176200056700000001453010366313335022052 0ustar releasepostincr/* * ptlib.inl * * Non-GUI classes inline function implementation. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ptlib.inl,v $ * Revision 1.24.4.1 2006/01/27 03:43:25 csoutheren * Backported changes to CVS head into Phobos * * Revision 1.25 2006/01/18 07:18:00 csoutheren * Added explicit copy constructor for PCriticalSection on Windows * * Revision 1.24 2005/11/14 22:29:13 csoutheren * Reverted Wait and Signal to non-const - there is no way we can guarantee that all * descendant classes everywhere will be changed over, so we have to keep the * original API * * Revision 1.23 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.22 2004/04/11 02:55:18 csoutheren * Added PCriticalSection for Windows * Added compile time option for PContainer to use critical sections to provide thread safety under some circumstances * * Revision 1.21 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.20 1999/07/06 04:46:00 robertj * Fixed being able to case an unsigned to a PTimeInterval. * Improved resolution of PTimer::Tick() to be millisecond accurate. * * Revision 1.19 1998/11/30 03:02:17 robertj * Moved PPipeChannel code to .cxx file to avoid linking unused code. * * Revision 1.18 1998/11/14 23:37:06 robertj * Fixed file path directory extraction, not able to return root directory * * Revision 1.17 1998/09/24 03:30:19 robertj * Added open software license. * * Revision 1.16 1996/08/20 12:10:36 robertj * Fixed bug in timers wrapping unexpectedly and producing fast timeout. * * Revision 1.15 1996/07/20 05:32:26 robertj * MSVC 4.1 compatibility. * * Revision 1.14 1996/05/15 10:23:25 robertj * Changed millisecond access functions to get 64 bit integer. * * Revision 1.13 1996/03/31 09:08:23 robertj * Added mutex to thread dictionary access. * * Revision 1.12 1996/03/04 12:38:56 robertj * Moved calculation of stackTop to platform dependent code. * * Revision 1.11 1995/12/10 11:48:27 robertj * Fixed bug in application shutdown of child threads. * * Revision 1.10 1995/04/22 00:52:55 robertj * Added GetDirectory() function to PFilePath. * * Revision 1.9 1995/03/12 04:59:58 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.8 1994/12/21 11:55:09 robertj * Fixed file paths returning correct string type. * * Revision 1.7 1994/10/23 05:38:57 robertj * PipeChannel implementation. * Added directory exists function. * * Revision 1.6 1994/08/22 00:18:02 robertj * Renamed CheckBlock() to IsNoLongerBlocked() * * Revision 1.5 1994/07/27 06:00:10 robertj * Backup * * Revision 1.4 1994/07/21 12:35:18 robertj * *** empty log message *** * * Revision 1.3 1994/07/02 03:18:09 robertj * Multi-threading support. * Fixed bug in time intervals being signed. * * Revision 1.2 1994/06/25 12:13:01 robertj * Synchronisation. * * Revision 1.1 1994/04/01 14:38:42 robertj * Initial revision */ #include /////////////////////////////////////////////////////////////////////////////// // PTimer #if !defined(_WIN32) #if CLOCKS_PER_SEC==1000 PINLINE PTimeInterval PTimer::Tick() { return clock(); } PINLINE unsigned PTimer::Resolution() { return 1; } #else PINLINE PTimeInterval PTimer::Tick() { return (PInt64)clock()*CLOCKS_PER_SEC/1000; } PINLINE unsigned PTimer::Resolution() { return 1000/CLOCKS_PER_SEC; } #endif #endif /////////////////////////////////////////////////////////////////////////////// // PDirectory PINLINE BOOL PDirectory::IsSeparator(char c) { return c == ':' || c == '/' || c == '\\'; } PINLINE BOOL PDirectory::Exists(const PString & p) { return _access(p+".", 0) == 0; } PINLINE BOOL PDirectory::Create(const PString & p, int) { return _mkdir(p) == 0; } PINLINE BOOL PDirectory::Remove(const PString & p) { return _rmdir(p) == 0; } PINLINE BOOL PDirectory::Restart(int scanMask) { return Open(scanMask); } /////////////////////////////////////////////////////////////////////////////// // PFile PINLINE BOOL PFile::Exists(const PFilePath & name) { return _access(name, 0) == 0; } /////////////////////////////////////////////////////////////////////////////// // PThread PINLINE void PThread::Sleep(const PTimeInterval & delay) { ::Sleep(delay.GetInterval()); } PINLINE PThread::PThread() { } PINLINE PThreadIdentifier PThread::GetThreadId() const { return threadId; } PINLINE PThreadIdentifier PThread::GetCurrentThreadId() { return ::GetCurrentThreadId(); } /////////////////////////////////////////////////////////////////////////////// // PCriticalSection PINLINE PCriticalSection::PCriticalSection() { ::InitializeCriticalSection(&criticalSection); } PINLINE PCriticalSection::PCriticalSection(const PCriticalSection &) { ::InitializeCriticalSection(&criticalSection); } PINLINE PCriticalSection::~PCriticalSection() { ::DeleteCriticalSection(&criticalSection); } PINLINE void PCriticalSection::Wait() { ::EnterCriticalSection(&criticalSection); } PINLINE void PCriticalSection::Signal() { ::LeaveCriticalSection(&criticalSection); } // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/remconn.h0100644000176200056700000000347107731772047022063 0ustar releasepostincr/* * remconn.h * * Remote networking conectivity class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: remconn.h,v $ * Revision 1.7 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 02:55:26 robertj * New directory structure * * Revision 1.4 1998/09/24 03:30:20 robertj * Added open software license. * * Revision 1.3 1998/01/26 00:53:13 robertj * Moved to common. * * Revision 1.2 1996/08/08 10:09:10 robertj * Directory structure changes for common files. * * Revision 1.1 1995/12/10 13:04:08 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PRemoteConnection private: // Win32 specific stuff HRASCONN rasConnection; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/semaphor.h0100644000176200056700000000444607731772047022243 0ustar releasepostincr/* * semaphor.h * * Thread synchonisation semaphore class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: semaphor.h,v $ * Revision 1.9 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.8 2002/01/23 04:46:11 craigs * Added copy Constructors for PSemaphore, PMutex and PSyncPoint * * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 1998/11/30 02:55:27 robertj * New directory structure * * Revision 1.5 1998/09/24 03:30:21 robertj * Added open software license. * * Revision 1.4 1998/03/20 03:19:49 robertj * Added special classes for specific sepahores, PMutex and PSyncPoint. * * Revision 1.3 1996/08/08 10:09:11 robertj * Directory structure changes for common files. * * Revision 1.2 1996/06/13 13:32:10 robertj * Rewrite of auto-delete threads, fixes Windows95 total crash. * * Revision 1.1 1995/08/01 21:42:22 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSemaphore public: HANDLE GetHandle() const { return handle; } unsigned GetInitialVal() const { return initialVal; } unsigned GetMaxCountVal() const { return maxCountVal; } protected: PSemaphore(HANDLE h); HANDLE handle; unsigned initialVal; unsigned maxCountVal; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/serchan.h0100644000176200056700000000575707731772047022056 0ustar releasepostincr/* * serchan.h * * Asynchronous serial I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: serchan.h,v $ * Revision 1.10 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 1998/11/30 02:55:29 robertj * New directory structure * * Revision 1.7 1998/09/24 03:30:22 robertj * Added open software license. * * Revision 1.6 1996/08/08 10:09:12 robertj * Directory structure changes for common files. * * Revision 1.5 1995/03/12 04:59:59 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.4 1994/08/04 13:08:43 robertj * Added DCB so can set parameters on closed channel. * * Revision 1.3 1994/07/17 11:01:04 robertj * Ehancements, implementation, bug fixes etc. * * Revision 1.2 1994/07/02 03:18:09 robertj * Using system timers for serial channel timeouts. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSerialChannel public: // Overrides from class PChannel virtual PString GetName() const; // Return the name of the channel. virtual BOOL Read(void * buf, PINDEX len); // Low level read from the channel. This function will block until the // requested number of characters were read. virtual BOOL Write(const void * buf, PINDEX len); // Low level write to the channel. This function will block until the // requested number of characters were written. virtual BOOL Close(); // Close the channel. private: BOOL SetCommsParam(DWORD speed, BYTE data, Parity parity, BYTE stop, FlowControl inputFlow, FlowControl outputFlow); // Member variables HANDLE commsResource; PString portName; enum { InputQueueSize = 2048, OutputQueueSize = 1024 }; DCB deviceControlBlock; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/sfile.h0100644000176200056700000000352407731772047021523 0ustar releasepostincr/* * sfile.h * * Structured file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sfile.h,v $ * Revision 1.7 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 02:55:30 robertj * New directory structure * * Revision 1.4 1998/09/24 03:30:24 robertj * Added open software license. * * Revision 1.3 1996/08/08 10:09:13 robertj * Directory structure changes for common files. * * Revision 1.2 1995/04/25 11:31:47 robertj * Fixed Borland compiler warnings. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PStructuredFile // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/socket.h0100644000176200056700000001004607731772047021706 0ustar releasepostincr/* * socket.h * * Berkley sockets ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: socket.h,v $ * Revision 1.23 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.22 2003/01/11 05:10:51 robertj * Fixed Win CE compatibility issues, thanks Joerg Schoemer * * Revision 1.21 2002/10/11 08:24:10 robertj * Added test for not needing tpipv6.h with later winsock2.h, thanks Ted Szoczei * * Revision 1.20 2002/10/08 12:41:52 robertj * Changed for IPv6 support, thanks Sbastien Josset. * * Revision 1.19 2002/09/23 07:17:23 robertj * Changes to allow winsock2 to be included. * * Revision 1.18 2001/09/10 02:51:23 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.17 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.16 1999/02/16 08:10:33 robertj * MSVC 6.0 compatibility changes. * * Revision 1.15 1998/11/30 02:55:31 robertj * New directory structure * * Revision 1.14 1998/09/24 03:30:25 robertj * Added open software license. * * Revision 1.13 1998/08/27 02:06:42 robertj * GNU C library v6 compatibility * * Revision 1.12 1996/10/08 13:05:01 robertj * More IPX support. * * Revision 1.11 1996/09/14 13:09:46 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.10 1996/08/08 10:09:14 robertj * Directory structure changes for common files. * * Revision 1.9 1996/07/27 04:08:58 robertj * Created static version of ConvertOSError(). * * Revision 1.8 1996/03/31 09:11:40 robertj * Fixed major performance problem in timeout read/write to sockets. * * Revision 1.7 1995/12/10 11:49:43 robertj * Numerous fixes for sockets. * * Revision 1.6 1995/03/12 05:00:01 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.5 1995/01/02 12:16:22 robertj * Moved constructor to platform dependent code. * * Revision 1.4 1994/12/12 10:10:17 robertj * Changed so can compile if no winsock available. * * Revision 1.3 1994/10/30 11:24:22 robertj * Fixed DOS version of header. * * Revision 1.2 1994/10/23 05:36:51 robertj * Sockets implementation. * * Revision 1.1 1994/08/22 00:18:02 robertj * Initial revision * * Revision 1.1 1994/07/27 06:00:10 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSocket public: ~PSocket(); // close a socket virtual BOOL Read(void * buf, PINDEX len); virtual BOOL Write(const void * buf, PINDEX len); virtual BOOL Close(); protected: BOOL ConvertOSError(int status, ErrorGroup group = LastGeneralError); static BOOL ConvertOSError(int error, Errors & lastError, int & osError); private: #ifdef PHAS_WINSOCK static BOOL WinSockStarted; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/sound.h0100644000176200056700000000761210343317552021540 0ustar releasepostincr/* * sound.h * * Sound class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sound.h,v $ * Revision 1.15 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.14 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.13 2002/09/23 07:17:23 robertj * Changes to allow winsock2 to be included. * * Revision 1.12 2001/10/10 03:28:58 yurik * Added open with format other than PCM * * Revision 1.11 2001/09/10 02:51:23 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.10 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.9 2000/05/01 05:59:11 robertj * Added mutex to PSoundChannel buffer structure. * * Revision 1.8 1999/09/23 04:28:43 robertj * Allowed some Win32 only access to wave format in sound channel * * Revision 1.7 1999/05/24 03:02:32 robertj * Added include for compiling under different environments. * * Revision 1.6 1999/02/22 10:15:15 robertj * Sound driver interface implementation to Linux OSS specification. * * Revision 1.5 1999/02/16 06:02:39 robertj * Major implementation to Linux OSS model * * Revision 1.4 1998/11/30 02:55:33 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:26 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:10:45 robertj * Directory structure changes for common files. * * Revision 1.1 1994/04/12 08:21:52 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSound public: // Overrides from class PChannel virtual PString GetName() const; // Return the name of the channel. virtual BOOL Read(void * buf, PINDEX len); // Low level read from the channel. This function will block until the // requested number of characters were read. virtual BOOL Write(const void * buf, PINDEX len); // Low level write to the channel. This function will block until the // requested number of characters were written. virtual BOOL Close(); // Close the channel. PString GetErrorText(ErrorGroup group = NumErrorGroups) const; // Get a text form of the last error encountered. BOOL SetFormat(const PWaveFormat & format); BOOL Open(const PString & device, Directions dir,const PWaveFormat & format); // Open with format other than PCM protected: PString deviceName; Directions direction; HWAVEIN hWaveIn; HWAVEOUT hWaveOut; HANDLE hEventDone; PWaveFormat waveFormat; PWaveBufferArray buffers; PINDEX bufferIndex; PINDEX bufferByteOffset; PMutex bufferMutex; private: BOOL OpenDevice(unsigned id); BOOL GetDeviceID(const PString & device, Directions dir, unsigned& id); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/sound_win32.h0100644000176200056700000001305410343317552022557 0ustar releasepostincr/* * sound.h * * Sound class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sound_win32.h,v $ * Revision 1.5 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2005/09/18 13:01:43 dominance * fixed pragma warnings when building with gcc. * * Revision 1.3 2004/10/23 11:32:27 ykiryanov * Added ifdef _WIN32_WCE for PocketPC 2003 SDK port * * Revision 1.2 2003/12/29 03:28:56 csoutheren * Allowed access to Windows sound channel declaration, just in case it is required * * Revision 1.1 2003/12/29 01:59:48 csoutheren * Initial version * */ /////////////////////////////////////////////////////////////////////////////// // PSound #ifndef _PSOUND_WIN32 #define _PSOUND_WIN32 #include #ifndef _WIN32_WCE #ifdef _MSC_VER #pragma comment(lib, "winmm.lib") #endif #endif class PWaveFormat : public PObject { PCLASSINFO(PWaveFormat, PObject) public: PWaveFormat(); ~PWaveFormat(); PWaveFormat(const PWaveFormat & fmt); PWaveFormat & operator=(const PWaveFormat & fmt); void PrintOn(ostream &) const; void ReadFrom(istream &); void SetFormat(unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); void SetFormat(const void * data, PINDEX size); BOOL SetSize (PINDEX sz); PINDEX GetSize () const { return size; } void * GetPointer() const { return waveFormat; } WAVEFORMATEX * operator->() const { return waveFormat; } WAVEFORMATEX & operator *() const { return *waveFormat; } operator WAVEFORMATEX *() const { return waveFormat; } protected: PINDEX size; WAVEFORMATEX * waveFormat; }; class PWaveBuffer : public PBYTEArray { PCLASSINFO(PWaveBuffer, PBYTEArray); private: PWaveBuffer(PINDEX sz = 0); ~PWaveBuffer(); PWaveBuffer & operator=(const PSound & sound); DWORD Prepare(HWAVEOUT hWaveOut, PINDEX & count); DWORD Prepare(HWAVEIN hWaveIn); DWORD Release(); void PrepareCommon(PINDEX count); HWAVEOUT hWaveOut; HWAVEIN hWaveIn; WAVEHDR header; friend class PSoundChannelWin32; }; PARRAY(PWaveBufferArray, PWaveBuffer); class PSoundChannelWin32: public PSoundChannel { public: PSoundChannelWin32(); void Construct(); PSoundChannelWin32(const PString &device, PSoundChannel::Directions dir, unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); ~PSoundChannelWin32(); static PStringArray GetDeviceNames(PSoundChannel::Directions = Player); static PString GetDefaultDevice(PSoundChannel::Directions); BOOL Open(const PString & _device, Directions _dir, unsigned _numChannels, unsigned _sampleRate, unsigned _bitsPerSample); BOOL Setup(); BOOL Close(); BOOL IsOpen() const; BOOL Write(const void * buf, PINDEX len); BOOL Read(void * buf, PINDEX len); BOOL SetFormat(unsigned numChannels, unsigned sampleRate, unsigned bitsPerSample); unsigned GetChannels() const; unsigned GetSampleRate() const; unsigned GetSampleSize() const; BOOL SetBuffers(PINDEX size, PINDEX count); BOOL GetBuffers(PINDEX & size, PINDEX & count); BOOL PlaySound(const PSound & sound, BOOL wait); BOOL PlayFile(const PFilePath & filename, BOOL wait); BOOL HasPlayCompleted(); BOOL WaitForPlayCompletion(); BOOL RecordSound(PSound & sound); BOOL RecordFile(const PFilePath & filename); BOOL StartRecording(); BOOL IsRecordBufferFull(); BOOL AreAllRecordBuffersFull(); BOOL WaitForRecordBufferFull(); BOOL WaitForAllRecordBuffersFull(); BOOL Abort(); BOOL SetVolume(unsigned newVal); BOOL GetVolume(unsigned &devVol); public: // Overrides from class PChannel virtual PString GetName() const; // Return the name of the channel. PString GetErrorText(ErrorGroup group = NumErrorGroups) const; // Get a text form of the last error encountered. BOOL SetFormat(const PWaveFormat & format); BOOL Open(const PString & device, Directions dir,const PWaveFormat & format); // Open with format other than PCM protected: PString deviceName; Directions direction; HWAVEIN hWaveIn; HWAVEOUT hWaveOut; HANDLE hEventDone; PWaveFormat waveFormat; PWaveBufferArray buffers; PINDEX bufferIndex; PINDEX bufferByteOffset; PMutex bufferMutex; private: BOOL OpenDevice(unsigned id); BOOL GetDeviceID(const PString & device, Directions dir, unsigned& id); }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/spxsock.h0100644000176200056700000000312007731772047022103 0ustar releasepostincr/* * spxsock.h * * SPX socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: spxsock.h,v $ * Revision 1.5 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 1998/11/30 02:55:34 robertj * New directory structure * * Revision 1.2 1998/09/24 03:30:27 robertj * Added open software license. * * Revision 1.1 1996/09/14 13:19:35 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSPXSocket // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/svcproc.h0100644000176200056700000001612007731772047022074 0ustar releasepostincr/* * svcproc.h * * Service Process (daemon) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: svcproc.h,v $ * Revision 1.30 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.29 2002/06/25 02:23:13 robertj * Improved assertion system to allow C++ class name to be displayed if * desired, especially relevant to container classes. * * Revision 1.28 2002/04/19 02:06:06 robertj * Moved systemLogFile to protected status so can be used in applications. * * Revision 1.27 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.26 2001/03/23 05:35:06 robertj * Added ability for a service to output trace/system log to file while in debug mode. * * Revision 1.25 2001/02/15 01:12:15 robertj * Moved some often repeated HTTP service code into PHTTPServiceProcess. * * Revision 1.24 1998/12/04 10:13:08 robertj * Added virtual for determining if process is a service. Fixes linkage problem. * * Revision 1.23 1998/11/30 02:55:35 robertj * New directory structure * * Revision 1.22 1998/09/24 03:30:29 robertj * Added open software license. * * Revision 1.21 1998/04/07 13:32:31 robertj * Changed startup code to support PApplication class. * * Revision 1.20 1998/03/29 06:16:50 robertj * Rearranged initialisation sequence so PProcess descendent constructors can do "things". * * Revision 1.19 1997/07/08 13:00:57 robertj * DLL support. * * Revision 1.18 1997/03/18 21:23:26 robertj * Fix service manager falsely accusing app of crashing if OnStart() is slow. * * Revision 1.17 1997/02/05 11:49:38 robertj * Changed current process function to return reference and validate objects descendancy. * * Revision 1.16 1996/11/18 11:32:02 robertj * Fixed bug in doing a "stop" command closing ALL instances of service. * * Revision 1.15 1996/10/31 12:38:56 robertj * Fixed bug in window not being displayed when command line used. * * Revision 1.14 1996/10/08 13:04:53 robertj * Rewrite to use standard window isntead of console window. * * Revision 1.13 1996/08/19 13:36:41 robertj * Moved PSYSTEMLOG macro to common code. * * Revision 1.12 1996/08/17 10:00:35 robertj * Changes for Windows DLL support. * * Revision 1.11 1996/08/09 11:17:26 robertj * Moved log macro to platform dependent header. * * Revision 1.10 1996/08/08 10:09:16 robertj * Directory structure changes for common files. * * Revision 1.9 1996/07/30 12:23:44 robertj * Changed SIGINTR handler to just set termination event. * * Revision 1.8 1996/07/20 05:33:06 robertj * Fixed some Win95 service bugs and missing functionality (service stop). * * Revision 1.7 1996/05/23 10:03:00 robertj * Windows 95 support. * * Revision 1.6 1996/04/17 12:09:02 robertj * Added service dependencies. * * Revision 1.5 1996/01/28 02:55:02 robertj * WIN16 support. * * Revision 1.4 1996/01/02 12:54:12 robertj * Made "common". * * Revision 1.3 1995/12/10 11:50:05 robertj * Numerous fixes for WIN32 service processes. * * Revision 1.2 1995/07/02 01:23:27 robertj * Set up service process to be in subthread not main thread. * * Revision 1.1 1995/06/17 00:50:54 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PServiceProcess #undef PCREATE_PROCESS #define PCREATE_PROCESS(cls) \ extern "C" int PASCAL WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int) \ { PProcess::PreInitialise(__argc, __argv, _environ); \ static cls instance; \ return instance._main(hInst); \ } public: virtual const char * GetServiceDependencies() const; // Get a set of null terminated strings terminated with double null. virtual BOOL IsServiceProcess() const; protected: PCaselessString systemLogFileName; private: static void __stdcall StaticMainEntry(DWORD argc, LPTSTR * argv); /* Internal function called from the Service Manager. This simply calls the MainEntry() function on the PServiceProcess instance. */ void MainEntry(DWORD argc, LPTSTR * argv); /* Internal function function that takes care of actually starting the service, informing the service controller at each step along the way. After launching the worker thread, it waits on the event that the worker thread will signal at its termination. */ static void StaticThreadEntry(void *); /* Internal function called to begin the work of the service process. This essentially just calls the Main() function on the PServiceProcess instance. */ void ThreadEntry(); /* Internal function function that starts the worker thread for the service. */ static void __stdcall StaticControlEntry(DWORD code); /* This function is called by the Service Controller whenever someone calls ControlService in reference to our service. */ void ControlEntry(DWORD code); /* This function is called by the Service Controller whenever someone calls ControlService in reference to our service. */ static void Control_C(int); /* This function is called on a SIGINTR (Control-C) signal for use in debug mode. */ BOOL ReportStatus( DWORD dwCurrentState, DWORD dwWin32ExitCode = NO_ERROR, DWORD dwCheckPoint = 0, DWORD dwWaitHint = 0 ); /* This function is called by the Main() and Control() functions to update the service's status to the service control manager. */ BOOL ProcessCommand(const char * cmd); // Process command line argument for controlling the service. BOOL CreateControlWindow(BOOL createDebugWindow); static LPARAM WINAPI StaticWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); LPARAM WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); void DebugOutput(const char * out); BOOL isWin95; SERVICE_STATUS status; SERVICE_STATUS_HANDLE statusHandle; HANDLE startedEvent; HANDLE terminationEvent; HWND controlWindow; HWND debugWindow; friend void PAssertFunc(const char *); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/syncpoint.h0100644000176200056700000000316607731772047022451 0ustar releasepostincr/* * syncpoint.h * * Thread synchonisation point (event) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: syncpoint.h,v $ * Revision 1.5 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 1998/11/30 02:55:37 robertj * New directory structure * * Revision 1.2 1998/09/24 03:30:30 robertj * Added open software license. * * Revision 1.1 1998/03/23 02:42:03 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PSyncPoint public: virtual void Signal(); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/tcpsock.h0100644000176200056700000000331607731772047022066 0ustar releasepostincr/* * tcpsock.h * * Transmission Control Protocol socket I/O channnel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: tcpsock.h,v $ * Revision 1.6 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:38 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:31 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:09:17 robertj * Directory structure changes for common files. * * Revision 1.1 1994/07/27 06:00:10 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTCPSocket // nothing to do // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/textfile.h0100644000176200056700000000406507731772047022246 0ustar releasepostincr/* * textfile.h * * Text file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: textfile.h,v $ * Revision 1.7 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1998/11/30 02:55:39 robertj * New directory structure * * Revision 1.4 1998/09/24 03:30:32 robertj * Added open software license. * * Revision 1.3 1996/08/08 10:09:18 robertj * Directory structure changes for common files. * * Revision 1.2 1995/03/12 05:00:01 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTextFile protected: virtual BOOL IsTextFile() const; // Return TRUE if text file translation is required private: char characterAfterCarriageReturn; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/thread.h0100644000176200056700000000770310343317552021660 0ustar releasepostincr/* * thread.h * * Thread of execution control class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: thread.h,v $ * Revision 1.24 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.23 2005/11/09 09:11:39 csoutheren * Moved Windows-specific AttachThreadInput callsto seperate member function * on PThread. This removes a linearly increasing delay in creating new threads * * Revision 1.22 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.21 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.20 2002/10/04 04:34:02 robertj * Added functions for getting operating system thread identifier values. * * Revision 1.19 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.18 1999/08/25 02:41:16 robertj * Fixed problem with creating windows in background threads, not happening until have a message sent. * * Revision 1.17 1998/11/30 02:55:41 robertj * New directory structure * * Revision 1.16 1998/09/24 03:30:34 robertj * Added open software license. * * Revision 1.15 1998/04/01 01:53:14 robertj * Fixed problem with NoAutoDelete threads. * * Revision 1.14 1996/08/17 10:00:36 robertj * Changes for Windows DLL support. * * Revision 1.13 1996/08/08 10:09:19 robertj * Directory structure changes for common files. * * Revision 1.12 1996/07/27 04:08:34 robertj * Changed thread creation to use C library function instead of direct WIN32. * * Revision 1.11 1996/06/13 13:32:12 robertj * Rewrite of auto-delete threads, fixes Windows95 total crash. * * Revision 1.10 1996/03/31 09:08:42 robertj * Added mutex to thread dictionary access. * * Revision 1.9 1995/12/10 11:48:54 robertj * Fixed bug in application shutdown of child threads. * * Revision 1.8 1995/08/24 12:38:36 robertj * Added extra conditional compile for WIN32 code. * * Revision 1.7 1995/07/02 01:23:51 robertj * Allowed access to thread info to descendents. * * Revision 1.6 1995/04/25 11:19:53 robertj * Fixes for DLL use in WIN32. * * Revision 1.5 1995/03/12 05:00:02 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.4 1994/07/27 06:00:10 robertj * Backup * * Revision 1.3 1994/07/21 12:35:18 robertj * *** empty log message *** * * Revision 1.2 1994/07/02 03:18:09 robertj * Multi-threading implementation. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PThread public: HANDLE GetHandle() const { return threadHandle; } void Win32AttachThreadInput(); protected: HANDLE threadHandle; UINT threadId; private: PINDEX originalStackSize; static UINT __stdcall MainFunction(void * thread); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/timeint.h0100644000176200056700000000446507731772047022077 0ustar releasepostincr/* * timeint.h * * Time interval (in milliseconds) class * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: timeint.h,v $ * Revision 1.10 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 1998/11/30 02:55:42 robertj * New directory structure * * Revision 1.7 1998/09/24 03:30:35 robertj * Added open software license. * * Revision 1.6 1996/08/08 10:09:20 robertj * Directory structure changes for common files. * * Revision 1.5 1995/12/10 11:49:26 robertj * Fixed bug in time interfval constant variable initialisation. Not guarenteed to work. * * Revision 1.4 1995/04/25 11:20:53 robertj * Moved const variable to .cxx file to better compiler portability. * * Revision 1.3 1995/03/12 05:00:03 robertj * Re-organisation of DOS/WIN16 and WIN32 platforms to maximise common code. * Used built-in equate for WIN32 API (_WIN32). * * Revision 1.2 1994/07/02 03:18:09 robertj * Fixed bug in time intervals being signed. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTimeInterval #define PMaxTimeInterval PTimeInterval(0x7fffffff) // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/timer.h0100644000176200056700000000333707731772047021543 0ustar releasepostincr/* * timer.h * * Real Time down counter class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: timer.h,v $ * Revision 1.6 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:43 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:37 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:09:21 robertj * Directory structure changes for common files. * * Revision 1.1 1994/06/25 12:13:01 robertj * Initial revision * * Revision 1.1 1994/04/12 08:31:05 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PTimer // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/udpsock.h0100644000176200056700000000374010340332117022045 0ustar releasepostincr/* * udpsock.h * * User Datagram Protocol socket I/O channel class * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: udpsock.h,v $ * Revision 1.8 2005/11/21 11:49:35 shorne * Changed disableQos to disableGQoS to better reflect what it does * * Revision 1.7 2005/07/13 12:08:09 csoutheren * Fixed QoS patches to be more consistent with PWLib style and to allow Unix compatibility * * Revision 1.6 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.5 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.4 1998/11/30 02:55:45 robertj * New directory structure * * Revision 1.3 1998/09/24 03:30:38 robertj * Added open software license. * * Revision 1.2 1996/08/08 10:09:22 robertj * Directory structure changes for common files. * * Revision 1.1 1994/07/27 06:00:10 robertj * Initial revision * */ /////////////////////////////////////////////////////////////////////////////// // PUDPSocket protected: static BOOL disableGQoS; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/video.h0100644000176200056700000000417510343317552021517 0ustar releasepostincr/* * video.h * * Video class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): Derek Smithies (derek@indranet.co.nz) * * $Log: video.h,v $ * Revision 1.6 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.5 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.4 2001/09/10 02:51:23 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.3 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.2 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.1 2000/11/09 00:33:23 dereks * Initial release. Required for PVideoChannel class. */ /////////////////////////////////////////////////////////////////////////////// // PVideo public: // Overrides from class PChannel virtual BOOL Close(); // Close the channel. virtual PString GetName() const; // Return the name of the channel protected: static PMutex bufferMutex; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/ptlib/videoio.h0100644000176200056700000000574107731772047022062 0ustar releasepostincr/* * videoio.h * * Classes to support streaming video input (grabbing) and output. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: videoio.h,v $ * Revision 1.11 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.10 2002/03/03 00:13:24 yurik * Added include for cevfw.h * * Revision 1.9 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.8 2001/04/09 10:44:36 yurik * Removed ifdefs around wince version * * Revision 1.7 2001/03/03 05:06:31 robertj * Major upgrade of video conversion and grabbing classes. * * Revision 1.6 2001/01/24 06:10:04 yurik * Windows CE port-related changes * * Revision 1.5 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.4 2000/07/26 02:54:41 robertj * Fixed platform dependent code changing public functions to protected. * * Revision 1.3 2000/07/25 13:38:26 robertj * Added frame rate parameter to video frame grabber. * * Revision 1.2 2000/07/25 13:14:07 robertj * Got the video capture stuff going! * * Revision 1.1 2000/07/15 09:47:35 robertj * Added video I/O device classes. * */ /////////////////////////////////////////////////////////////////////////////// // PVideoDevice public: virtual BOOL SetColourFormat(const PString & colourFormat); virtual BOOL SetFrameRate(unsigned rate); virtual BOOL SetFrameSize(unsigned width, unsigned height); protected: static LRESULT CALLBACK ErrorHandler(HWND hWnd, int id, LPCSTR err); LRESULT HandleError(int id, LPCSTR err); static LRESULT CALLBACK VideoHandler(HWND hWnd, LPVIDEOHDR vh); LRESULT HandleVideo(LPVIDEOHDR vh); BOOL InitialiseCapture(); void HandleCapture(); PThread * captureThread; PSyncPoint threadStarted; HWND hCaptureWindow; PSyncPoint frameAvailable; LPBYTE lastFramePtr; unsigned lastFrameSize; PMutex lastFrameMutex; BOOL isCapturingNow; friend class PVideoInputThread; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/msos/AUTOEXP.DAT0100644000176200056700000000126007550551217020601 0ustar releasepostincr; Add the contents of this file to ; C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\AUTOEXP.DAT ; from PTLib PObject =<,t> PString = PContainer=<,t> size=size> ref=count> PAbstractArray =<,t> size=size> ref=count> PArrayObjects =<,t> size=reference->size> ref=count> PIPSocket::Address =... PTimeInterval = PTime = ; from PWLib PPoint =x= y= PDim =width= height= PRect =top= bottom= left= right= pwlib_v1_10_2/include/ptlib/msos/ptlib.dtf0100644000176200056700000146272110276124406020744 0ustar releasepostincrLIBRARY ptlib EXPORTS ??0?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVPProcessStartup@@@1@@Z @4940 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@@Z @5838 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@1@@Z @5591 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@@Z @5592 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABU01@@Z @5593 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@ABQAVPFactoryBase@@@Z @5594 NONAME ??0?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU01@@Z @4944 NONAME ??0?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU?$pair@VPString@@PAVPProcessStartup@@@1@@Z @4945 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABU01@@Z @5595 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@Z @5596 NONAME ??0?$pair@Viterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@1@AB_N@Z @5597 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@1@AB_N@Z @4857 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@1@AB_N@Z @5598 NONAME ??0?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@ABVPString@@ABQAVPProcessStartup@@@Z @4949 NONAME ??0?$PArray@VPString@@@@IAE@HPBV0@@Z @4950 NONAME ??0?$PArray@VPString@@@@QAE@ABV0@@Z @1 NONAME ??0?$PArray@VPString@@@@QAE@H@Z @2 NONAME ??0?$PBaseArray@D@@QAE@ABV0@@Z @3 NONAME ??0?$PBaseArray@D@@QAE@H@Z @4 NONAME ??0?$PBaseArray@E@@QAE@H@Z @5 NONAME ??0?$PBaseArray@F@@QAE@H@Z @6 NONAME ??0?$PBaseArray@G@@QAE@H@Z @7 NONAME ??0?$PBaseArray@H@@QAE@ABV0@@Z @4953 NONAME ??0?$PBaseArray@H@@QAE@H@Z @8 NONAME ??0?$PBaseArray@H@@QAE@PBHHH@Z @4954 NONAME ??0?$PBaseArray@I@@QAE@H@Z @9 NONAME ??0?$PBaseArray@J@@QAE@H@Z @10 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@QAE@XZ @12 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@QAE@XZ @13 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@IAE@HPBV0@@Z @4957 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@QAE@XZ @4958 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@QAE@XZ @4786 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@IAE@HPBV0@@Z @4959 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@QAE@XZ @4960 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@IAE@HPBV0@@Z @4961 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@ABV0@@Z @4962 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@XZ @4963 NONAME ??0?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@XZ @5845 NONAME ??0?$PFactory@VPPluginModuleManager@@VPString@@@@IAE@XZ @5599 NONAME ??0?$PFactory@VPProcessStartup@@VPString@@@@IAE@XZ @5600 NONAME ??0?$PFactory@VPSoundChannel@@VPString@@@@IAE@XZ @6170 NONAME ??0?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@XZ @6171 NONAME ??0?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@XZ @6172 NONAME ??0?$PList@VPDynaLink@@@@IAE@HPBV0@@Z @4966 NONAME ??0?$PList@VPDynaLink@@@@QAE@XZ @4967 NONAME ??0?$PList@VPNotifier@@@@IAE@HPBV0@@Z @4968 NONAME ??0?$PList@VPNotifier@@@@QAE@XZ @4969 NONAME ??0?$PList@VPPluginService@@@@IAE@HPBV0@@Z @4970 NONAME ??0?$PList@VPPluginService@@@@QAE@XZ @4971 NONAME ??0?$PList@VPSocket@@@@QAE@XZ @4835 NONAME ??0?$PList@VPString@@@@IAE@HPBV0@@Z @4972 NONAME ??0?$PList@VPString@@@@QAE@ABV0@@Z @4973 NONAME ??0?$PList@VPString@@@@QAE@XZ @4974 NONAME ??0?$PList@VPThread@@@@IAE@HPBV0@@Z @4975 NONAME ??0?$PList@VPThread@@@@QAE@XZ @4976 NONAME ??0?$PList@VPTimer@@@@IAE@HPBV0@@Z @4977 NONAME ??0?$PList@VPTimer@@@@QAE@XZ @4978 NONAME ??0?$PScalarArray@H@@QAE@ABV0@@Z @4981 NONAME ??0?$PScalarArray@H@@QAE@H@Z @4982 NONAME ??0?$PScalarArray@K@@QAE@H@Z @16 NONAME ??0?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@QAE@XZ @6173 NONAME ??0?$PStringDictionary@VPString@@@@IAE@HPBV0@@Z @6174 NONAME ??0?$PStringDictionary@VPString@@@@QAE@XZ @6175 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@QAE@XZ @6176 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@QAE@XZ @6177 NONAME ??0?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@QAE@XZ @6178 NONAME ??0?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@ABV?$allocator@PAVPPluginModuleManager@@@1@@Z @4990 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@ABV01@@Z @4991 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@ABV?$allocator@VPString@@@1@@Z @4992 NONAME ??0?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @5601 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVPProcessStartup@@@1@@Z @4859 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@@Z @5846 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@1@@Z @5602 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@@Z @5603 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@ABV01@@Z @6179 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@ABV01@@Z @6180 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@ABV01@@Z @6181 NONAME ??0Address@PEthSocket@@QAE@ABT01@@Z @17 NONAME ??0Address@PEthSocket@@QAE@ABVPString@@@Z @18 NONAME ??0Address@PEthSocket@@QAE@PBE@Z @19 NONAME ??0Address@PEthSocket@@QAE@XZ @20 NONAME ??0Address@PIPSocket@@QAE@ABUin6_addr@@@Z @2918 NONAME ??0Address@PIPSocket@@QAE@ABUin_addr@@@Z @21 NONAME ??0Address@PIPSocket@@QAE@ABV01@@Z @22 NONAME ??0Address@PIPSocket@@QAE@ABVPString@@@Z @23 NONAME ??0Address@PIPSocket@@QAE@EEEE@Z @24 NONAME ??0Address@PIPSocket@@QAE@HHPAUsockaddr@@@Z @2919 NONAME ??0Address@PIPSocket@@QAE@HPBE@Z @25 NONAME ??0Address@PIPSocket@@QAE@K@Z @26 NONAME ??0Address@PIPSocket@@QAE@XZ @27 NONAME ??0Address@PIPXSocket@@QAE@ABV01@@Z @28 NONAME ??0Address@PIPXSocket@@QAE@ABVPString@@@Z @29 NONAME ??0Address@PIPXSocket@@QAE@KPBD@Z @30 NONAME ??0Address@PIPXSocket@@QAE@XZ @31 NONAME ??0Block@PTrace@@QAE@PBDH0@Z @32 NONAME ??0Buffer@PDebugStream@@QAE@XZ @33 NONAME ??0Buffer@PStringStream@@QAE@AAV1@H@Z @34 NONAME ??0Buffer@PStringStream@@QAE@ABV01@@Z @4512 NONAME ??0CMCDLL@PMail@@QAE@XZ @36 NONAME ??0CMC_message_reference_ptr@@QAE@ABVPString@@@Z @37 NONAME ??0const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@ABViterator@12@@Z @5604 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @5847 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@XZ @5848 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @5605 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@XZ @5606 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @5607 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@XZ @5608 NONAME ??0Element@PAbstractList@@QAE@PAVPObject@@@Z @38 NONAME ??0FactoryMap@PFactoryBase@@QAE@XZ @5609 NONAME ??0HouseKeepingThread@PProcess@@QAE@XZ @40 NONAME ??0Info@PAbstractSortedList@@QAE@XZ @6182 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABVPString@@ABVAddress@1@100@Z @6183 NONAME ??0iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@PAU_Node@12@@Z @5610 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE@PAU_Node@12@@Z @5003 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @5849 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@XZ @5850 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @5611 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@XZ @5612 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @5613 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@XZ @5614 NONAME ??0MAPIDLL@PMail@@QAE@XZ @43 NONAME ??0Nest@PReadWriteMutex@@QAE@XZ @5006 NONAME ??0PAbstractArray@@QAE@ABV0@@Z @44 NONAME ??0PAbstractArray@@QAE@HH@Z @45 NONAME ??0PAbstractArray@@QAE@HPBXHH@Z @46 NONAME ??0PAbstractDictionary@@IAE@HPBV0@@Z @4513 NONAME ??0PAbstractDictionary@@QAE@ABV0@@Z @5007 NONAME ??0PAbstractDictionary@@QAE@XZ @48 NONAME ??0PAbstractList@@IAE@HPBV0@@Z @5008 NONAME ??0PAbstractList@@QAE@ABV0@@Z @49 NONAME ??0PAbstractList@@QAE@XZ @50 NONAME ??0PAbstractSet@@QAE@XZ @4514 NONAME ??0PAbstractSortedList@@QAE@XZ @51 NONAME ??0PArgList@@QAE@ABV0@@Z @5009 NONAME ??0PArgList@@QAE@ABVPString@@0H@Z @52 NONAME ??0PArgList@@QAE@ABVPString@@PBDH@Z @53 NONAME ??0PArgList@@QAE@HPAPADABVPString@@H@Z @54 NONAME ??0PArgList@@QAE@HPAPADPBDH@Z @55 NONAME ??0PArgList@@QAE@PBD0H@Z @56 NONAME ??0PArrayObjects@@IAE@HPBV0@@Z @5010 NONAME ??0PArrayObjects@@QAE@ABV0@@Z @57 NONAME ??0PArrayObjects@@QAE@H@Z @58 NONAME ??0PBitArray@@QAE@H@Z @59 NONAME ??0PBitArray@@QAE@PBXHH@Z @60 NONAME ??0PBYTEArray@@QAE@H@Z @61 NONAME ??0PCapStatus@@QAE@PAUHWND__@@@Z @62 NONAME ??0PCaselessString@@IAE@HPBV0@@Z @4515 NONAME ??0PCaselessString@@QAE@ABV0@@Z @5013 NONAME ??0PCaselessString@@QAE@ABVPString@@@Z @63 NONAME ??0PCaselessString@@QAE@PBD@Z @64 NONAME ??0PCaselessString@@QAE@XZ @4516 NONAME ??0PChannel@@IAE@ABV0@@Z @4517 NONAME ??0PChannel@@QAE@XZ @65 NONAME ??0PChannelStreamBuffer@@IAE@PAVPChannel@@@Z @66 NONAME ??0PChannelStreamBuffer@@QAE@ABV0@@Z @4518 NONAME ??0PCharArray@@QAE@H@Z @68 NONAME ??0PCollection@@IAE@HPBV0@@Z @4519 NONAME ??0PCollection@@QAE@ABV0@@Z @69 NONAME ??0PCollection@@QAE@H@Z @70 NONAME ??0PColourConverter@@QAE@ABVPString@@0II@Z @71 NONAME ??0PColourConverterRegistration@@QAE@ABVPString@@0@Z @72 NONAME ??0PCondMutex@@QAE@XZ @5015 NONAME ??0PConfig@@QAE@ABVPFilePath@@ABVPString@@@Z @4520 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@00@Z @4521 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@0@Z @4522 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@@Z @4523 NONAME ??0PConfig@@QAE@W4Source@0@@Z @4524 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@1@Z @4525 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@@Z @4526 NONAME ??0PConfigArgs@@QAE@ABVPArgList@@@Z @73 NONAME ??0PConsoleChannel@@QAE@W4ConsoleType@0@@Z @74 NONAME ??0PConsoleChannel@@QAE@XZ @75 NONAME ??0PContainer@@IAE@HPBV0@@Z @76 NONAME ??0PContainer@@QAE@ABV0@@Z @77 NONAME ??0PContainer@@QAE@H@Z @78 NONAME ??0PCriticalSection@@QAE@XZ @4527 NONAME ??0PDebugStream@@QAE@XZ @79 NONAME ??0PDirectory@@QAE@ABV0@@Z @5016 NONAME ??0PDirectory@@QAE@ABVPString@@@Z @4528 NONAME ??0PDirectory@@QAE@PBD@Z @4529 NONAME ??0PDirectory@@QAE@XZ @4530 NONAME ??0PDynaLink@@QAE@ABVPString@@@Z @80 NONAME ??0PDynaLink@@QAE@XZ @81 NONAME ??0PEthSocket@@QAE@HHH@Z @82 NONAME ??0PFactoryBase@@IAE@XZ @5615 NONAME ??0PFile@@QAE@ABVPFilePath@@W4OpenMode@0@H@Z @4532 NONAME ??0PFile@@QAE@W4OpenMode@0@H@Z @4533 NONAME ??0PFile@@QAE@XZ @84 NONAME ??0PFilePath@@QAE@ABV0@@Z @4534 NONAME ??0PFilePath@@QAE@ABVPString@@@Z @85 NONAME ??0PFilePath@@QAE@PBD0@Z @86 NONAME ??0PFilePath@@QAE@PBD@Z @87 NONAME ??0PFilePath@@QAE@XZ @88 NONAME ??0PHashTable@@QAE@ABV0@@Z @4535 NONAME ??0PHashTable@@QAE@XZ @89 NONAME ??0PHostByAddr@@QAE@XZ @90 NONAME ??0PHostByName@@QAE@XZ @91 NONAME ??0PICMPDLL@@QAE@XZ @92 NONAME ??0PICMPSocket@@QAE@XZ @93 NONAME ??0PImageDLL@@QAE@XZ @94 NONAME ??0PIndirectChannel@@QAE@XZ @95 NONAME ??0PingInfo@PICMPSocket@@QAE@G@Z @96 NONAME ??0PInstantiateMe@@QAE@XZ @6184 NONAME ??0PIntCondMutex@@QAE@HHW4Operation@0@@Z @97 NONAME ??0PIPCacheData@@QAE@PAUaddrinfo@@PBD@Z @2920 NONAME ??0PIPCacheData@@QAE@PAUhostent@@PBD@Z @98 NONAME ??0PIPDatagramSocket@@IAE@XZ @99 NONAME ??0PIPSocket@@IAE@XZ @100 NONAME ??0PIPXSocket@@QAE@G@Z @101 NONAME ??0PluginLoaderStartup@@QAE@XZ @4862 NONAME ??0PMail@@QAE@ABVPString@@00@Z @102 NONAME ??0PMail@@QAE@ABVPString@@0@Z @103 NONAME ??0PMail@@QAE@XZ @104 NONAME ??0PMultiMediaFile@@QAE@XZ @105 NONAME ??0PMutex@@QAE@ABV0@@Z @106 NONAME ??0PMutex@@QAE@XZ @107 NONAME ??0PNotifier@@QAE@ABV0@@Z @5018 NONAME ??0PNotifier@@QAE@PAVPNotifierFunction@@@Z @5019 NONAME ??0PNotifyIconData@@QAE@PAUHWND__@@IPBD@Z @108 NONAME ??0PObject@@IAE@XZ @5020 NONAME ??0PObject@@QAE@ABV0@@Z @5021 NONAME ??0POrdinalKey@@QAE@H@Z @4536 NONAME ??0POrdinalToString@@QAE@HPBUInitialiser@0@@Z @109 NONAME ??0POrdinalToString@@QAE@XZ @110 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@0@HH@Z @111 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@W4OpenMode@0@HH@Z @112 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringToString@@W4OpenMode@0@HH@Z @113 NONAME ??0PPipeChannel@@QAE@ABVPString@@W4OpenMode@0@HH@Z @114 NONAME ??0PPipeChannel@@QAE@XZ @115 NONAME ??0PPluginManager@@QAE@XZ @2675 NONAME ??0PPluginModuleManager@@QAE@PBDPAVPPluginManager@@@Z @4722 NONAME ??0PPluginService@@QAE@ABVPString@@0PAVPPluginServiceDescriptor@@@Z @5023 NONAME ??0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z @2676 NONAME ??0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z @2825 NONAME ??0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z @2677 NONAME ??0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z @2826 NONAME ??0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z @6185 NONAME ??0PProcess@@QAE@PBD0GGW4CodeStatus@0@G@Z @116 NONAME ??0PProcessStartup@@QAE@XZ @5025 NONAME ??0PQoS@@QAE@H@Z @2645 NONAME ??0PQoS@@QAE@KKHKK@Z @2646 NONAME ??0PQoS@@QAE@XZ @2647 NONAME ??0PRASDLL@@QAE@XZ @117 NONAME ??0PReadWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3029 NONAME ??0PReadWriteMutex@@QAE@XZ @118 NONAME ??0PRegularExpression@@QAE@ABV0@@Z @2961 NONAME ??0PRegularExpression@@QAE@ABVPString@@H@Z @119 NONAME ??0PRegularExpression@@QAE@PBDH@Z @120 NONAME ??0PRegularExpression@@QAE@XZ @121 NONAME ??0PRemoteConnection@@QAE@ABVPString@@@Z @122 NONAME ??0PRemoteConnection@@QAE@XZ @123 NONAME ??0PSafeCollection@@QAE@PAVPCollection@@@Z @124 NONAME ??0PSafeLockReadOnly@@QAE@ABVPSafeObject@@@Z @6162 NONAME ??0PSafeLockReadWrite@@QAE@ABVPSafeObject@@@Z @6163 NONAME ??0PSafeObject@@QAE@XZ @125 NONAME ??0PSafePtrBase@@IAE@ABV0@@Z @128 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@H@Z @5851 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@PAVPSafeObject@@@Z @5852 NONAME ??0PSafePtrBase@@IAE@PAVPSafeObject@@W4PSafetyMode@@@Z @129 NONAME ??0PSemaphore@@IAE@PAX@Z @130 NONAME ??0PSemaphore@@QAE@ABV0@@Z @131 NONAME ??0PSemaphore@@QAE@II@Z @132 NONAME ??0PSerialChannel@@QAE@AAVPConfig@@@Z @133 NONAME ??0PSerialChannel@@QAE@ABVPString@@KEW4Parity@0@EW4FlowControl@0@2@Z @134 NONAME ??0PSerialChannel@@QAE@XZ @135 NONAME ??0PServiceProcess@@QAE@PBD0GGW4CodeStatus@PProcess@@G@Z @136 NONAME ??0PSimpleThread@@QAE@ABVPNotifier@@HW4AutoDeleteFlag@PThread@@W4Priority@3@ABVPString@@H@Z @137 NONAME ??0PSmartPointer@@QAE@ABV0@@Z @138 NONAME ??0PSmartPointer@@QAE@PAVPSmartObject@@@Z @5027 NONAME ??0Psockaddr@@QAE@ABVAddress@PIPSocket@@G@Z @2921 NONAME ??0PSocket@@IAE@XZ @139 NONAME ??0PSortedStringList@@QAE@ABVPString@@@Z @140 NONAME ??0PSortedStringList@@QAE@ABVPStringArray@@@Z @141 NONAME ??0PSortedStringList@@QAE@ABVPStringList@@@Z @142 NONAME ??0PSortedStringList@@QAE@HPBQBDH@Z @143 NONAME ??0PSound@@QAE@ABVPFilePath@@@Z @144 NONAME ??0PSound@@QAE@IIIHPBE@Z @145 NONAME ??0PSoundChannel@@QAE@ABVPString@@W4Directions@0@III@Z @146 NONAME ??0PSoundChannel@@QAE@XZ @147 NONAME ??0PSoundChannelWin32@@QAE@ABVPString@@W4Directions@PSoundChannel@@III@Z @2678 NONAME ??0PSoundChannelWin32@@QAE@XZ @2679 NONAME ??0PSPXSocket@@QAE@G@Z @148 NONAME ??0PString@@IAE@HPBV0@@Z @4537 NONAME ??0PString@@QAA@W4ConversionType@0@PBDZZ @149 NONAME ??0PString@@QAE@ABV0@@Z @150 NONAME ??0PString@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @5436 NONAME ??0PString@@QAE@ABV?$PScalarArray@G@@@Z @151 NONAME ??0PString@@QAE@D@Z @4538 NONAME ??0PString@@QAE@F@Z @152 NONAME ??0PString@@QAE@G@Z @153 NONAME ??0PString@@QAE@H@Z @154 NONAME ??0PString@@QAE@I@Z @155 NONAME ??0PString@@QAE@J@Z @156 NONAME ??0PString@@QAE@K@Z @157 NONAME ??0PString@@QAE@PBD@Z @158 NONAME ??0PString@@QAE@PBDH@Z @159 NONAME ??0PString@@QAE@PBG@Z @160 NONAME ??0PString@@QAE@PBGH@Z @161 NONAME ??0PString@@QAE@W4ConversionType@0@JI@Z @162 NONAME ??0PString@@QAE@W4ConversionType@0@NI@Z @163 NONAME ??0PString@@QAE@XZ @164 NONAME ??0PString@@QAE@_J@Z @165 NONAME ??0PString@@QAE@_K@Z @166 NONAME ??0PStringArray@@IAE@HPBV0@@Z @5029 NONAME ??0PStringArray@@QAE@ABV0@@Z @5030 NONAME ??0PStringArray@@QAE@ABVPSortedStringList@@@Z @168 NONAME ??0PStringArray@@QAE@ABVPString@@@Z @169 NONAME ??0PStringArray@@QAE@ABVPStringList@@@Z @170 NONAME ??0PStringArray@@QAE@H@Z @5031 NONAME ??0PStringArray@@QAE@HPBQBDH@Z @171 NONAME ??0PStringList@@IAE@HPBV0@@Z @5032 NONAME ??0PStringList@@QAE@ABV0@@Z @5033 NONAME ??0PStringList@@QAE@ABVPSortedStringList@@@Z @172 NONAME ??0PStringList@@QAE@ABVPString@@@Z @173 NONAME ??0PStringList@@QAE@ABVPStringArray@@@Z @174 NONAME ??0PStringList@@QAE@HPBQBDH@Z @175 NONAME ??0PStringList@@QAE@XZ @176 NONAME ??0PStringSet@@QAE@ABVPString@@@Z @177 NONAME ??0PStringSet@@QAE@H@Z @178 NONAME ??0PStringSet@@QAE@HPBQBDH@Z @179 NONAME ??0PStringStream@@QAE@ABVPString@@@Z @180 NONAME ??0PStringStream@@QAE@H@Z @181 NONAME ??0PStringStream@@QAE@PBD@Z @182 NONAME ??0PStringStream@@QAE@XZ @183 NONAME ??0PStringToOrdinal@@QAE@HPBUInitialiser@0@H@Z @184 NONAME ??0PStringToOrdinal@@QAE@XZ @185 NONAME ??0PStringToString@@IAE@HPBV0@@Z @6186 NONAME ??0PStringToString@@QAE@HPBUInitialiser@0@HH@Z @186 NONAME ??0PStringToString@@QAE@XZ @187 NONAME ??0PStructuredFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @188 NONAME ??0PStructuredFile@@QAE@W4OpenMode@PFile@@H@Z @189 NONAME ??0PStructuredFile@@QAE@XZ @190 NONAME ??0PSyncPoint@@QAE@ABV0@@Z @191 NONAME ??0PSyncPoint@@QAE@XZ @192 NONAME ??0PSynonymColourRegistration@@QAE@PBD0@Z @193 NONAME ??0PTCPSocket@@QAE@AAV0@@Z @194 NONAME ??0PTCPSocket@@QAE@AAVPSocket@@@Z @195 NONAME ??0PTCPSocket@@QAE@ABVPString@@0@Z @196 NONAME ??0PTCPSocket@@QAE@ABVPString@@@Z @197 NONAME ??0PTCPSocket@@QAE@ABVPString@@G@Z @198 NONAME ??0PTCPSocket@@QAE@G@Z @199 NONAME ??0PTextFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @4539 NONAME ??0PTextFile@@QAE@W4OpenMode@PFile@@H@Z @4540 NONAME ??0PTextFile@@QAE@XZ @4541 NONAME ??0PThread@@AAE@XZ @4542 NONAME ??0PThread@@QAE@HW4AutoDeleteFlag@0@W4Priority@0@ABVPString@@@Z @200 NONAME ??0PTime@@QAE@ABV0@@Z @5037 NONAME ??0PTime@@QAE@ABVPString@@@Z @201 NONAME ??0PTime@@QAE@HHHHHHH@Z @202 NONAME ??0PTime@@QAE@XZ @203 NONAME ??0PTimeInterval@@QAE@ABV0@@Z @5038 NONAME ??0PTimeInterval@@QAE@ABVPString@@@Z @204 NONAME ??0PTimeInterval@@QAE@JJJJH@Z @205 NONAME ??0PTimeInterval@@QAE@_J@Z @4543 NONAME ??0PTimer@@QAE@ABVPTimeInterval@@@Z @206 NONAME ??0PTimer@@QAE@JHHHH@Z @207 NONAME ??0PTimerList@@QAE@XZ @208 NONAME ??0PUDPSocket@@QAE@ABVPString@@0@Z @209 NONAME ??0PUDPSocket@@QAE@ABVPString@@G@Z @211 NONAME ??0PUDPSocket@@QAE@ABVPString@@PAVPQoS@@@Z @2648 NONAME ??0PUDPSocket@@QAE@G@Z @212 NONAME ??0PUDPSocket@@QAE@PAVPQoS@@G@Z @2649 NONAME ??0PVideoChannel@@QAE@ABVPString@@W4Directions@0@@Z @213 NONAME ??0PVideoChannel@@QAE@XZ @214 NONAME ??0PVideoDevice@@IAE@XZ @215 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@@Z @216 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@G@Z @217 NONAME ??0PVideoInputDevice_FakeVideo@@QAE@XZ @2827 NONAME ??0PVideoInputDevice_VideoForWindows@@QAE@XZ @2680 NONAME ??0PVideoOutputDevice@@QAE@XZ @219 NONAME ??0PVideoOutputDeviceRGB@@QAE@XZ @6187 NONAME ??0PVideoOutputDevice_NULLOutput@@QAE@XZ @2828 NONAME ??0PVideoOutputDevice_Window@@QAE@XZ @6188 NONAME ??0PVideoOutputDevice_Window_PluginServiceDescriptor@@QAE@XZ @6189 NONAME ??0PWaitAndSignal@@QAE@ABVPSemaphore@@H@Z @4544 NONAME ??0PWaveBuffer@@AAE@H@Z @223 NONAME ??0PWaveFormat@@QAE@ABV0@@Z @224 NONAME ??0PWaveFormat@@QAE@XZ @225 NONAME ??0PWin32AsnAny@@QAE@XZ @226 NONAME ??0PWin32AsnOid@@QAE@PBD@Z @227 NONAME ??0PWin32AsnOid@@QAE@XZ @228 NONAME ??0PWin32OidBuffer@@QAE@IIPBE@Z @229 NONAME ??0PWin32Overlapped@@QAE@XZ @230 NONAME ??0PWin32PacketBuffer@@QAE@H@Z @231 NONAME ??0PWin32PacketDriver@@IAE@XZ @232 NONAME ??0PWin32PacketSYS@@QAE@XZ @233 NONAME ??0PWin32PacketVxD@@QAE@XZ @234 NONAME ??0PWin32SnmpLibrary@@QAE@XZ @235 NONAME ??0PWinQoS@@QAE@AAVPQoS@@PAUsockaddr@@PADAAK@Z @2922 NONAME ??0PWinSock@@QAE@XZ @236 NONAME ??0PWriteWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3030 NONAME ??0P_BGR24_RGB24_Registration@@QAE@XZ @6190 NONAME ??0P_BGR24_RGB32_Registration@@QAE@XZ @6191 NONAME ??0P_BGR24_YUV420P_Registration@@QAE@XZ @2829 NONAME ??0P_BGR32_RGB24_Registration@@QAE@XZ @6192 NONAME ??0P_BGR32_RGB32_Registration@@QAE@XZ @6193 NONAME ??0P_BGR32_YUV420P_Registration@@QAE@XZ @2830 NONAME ??0P_fd_set@@QAE@I@Z @237 NONAME ??0P_fd_set@@QAE@XZ @238 NONAME ??0P_Grey_YUV420P_Registration@@QAE@XZ @240 NONAME ??0P_RGB24_BGR24_Registration@@QAE@XZ @6194 NONAME ??0P_RGB24_BGR32_Registration@@QAE@XZ @6195 NONAME ??0P_RGB24_RGB32_Registration@@QAE@XZ @242 NONAME ??0P_RGB24_YUV420P_Registration@@QAE@XZ @243 NONAME ??0P_RGB32_BGR24_Registration@@QAE@XZ @6196 NONAME ??0P_RGB32_BGR32_Registration@@QAE@XZ @6197 NONAME ??0P_RGB32_RGB24_Registration@@QAE@XZ @245 NONAME ??0P_RGB32_YUV420P_Registration@@QAE@XZ @246 NONAME ??0P_SBGGR8_RGB24_Registration@@QAE@XZ @6137 NONAME ??0P_SBGGR8_YUV420P_Registration@@QAE@XZ @6198 NONAME ??0P_timeval@@QAE@XZ @247 NONAME ??0P_UYV444_YUV420P_Registration@@QAE@XZ @248 NONAME ??0P_UYVY422_YUV420P_Registration@@QAE@XZ @249 NONAME ??0P_YUV411P_YUV420P_Registration@@QAE@XZ @250 NONAME ??0P_YUV420P_BGR24_Registration@@QAE@XZ @252 NONAME ??0P_YUV420P_BGR32_Registration@@QAE@XZ @2831 NONAME ??0P_YUV420P_RGB24_Registration@@QAE@XZ @254 NONAME ??0P_YUV420P_RGB32_Registration@@QAE@XZ @256 NONAME ??0P_YUV420P_YUV411P_Registration@@QAE@XZ @257 NONAME ??0P_YUV422_YUV420P_Registration@@QAE@XZ @258 NONAME ??0P_YUV422_YUV422_Registration@@QAE@XZ @259 NONAME ??0RegistryKey@@QAE@ABVPString@@W4OpenMode@0@@Z @260 NONAME ??0SecurityID@@QAE@PAU_SID_IDENTIFIER_AUTHORITY@@EKKKKKKKK@Z @5428 NONAME ??0SecurityID@@QAE@PBD0PADPAKPAW4_SID_NAME_USE@@@Z @262 NONAME ??0WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAE@_N@Z @5616 NONAME ??0__SMANIP_int@@QAE@P6AAAVios@@AAV1@H@ZH@Z @5040 NONAME ??1?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@XZ @5617 NONAME ??1?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE@XZ @4863 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE@XZ @5853 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE@XZ @5618 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE@XZ @5619 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE@XZ @5854 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE@XZ @5855 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE@XZ @5856 NONAME ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@XZ @5620 NONAME ??1?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@XZ @4866 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@XZ @5857 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAE@XZ @5621 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@XZ @5622 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@XZ @5858 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@XZ @5859 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@XZ @5860 NONAME ??1?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@XZ @4869 NONAME ??1?$PArray@VPString@@@@UAE@XZ @263 NONAME ??1?$PArray@VPWaveBuffer@@@@UAE@XZ @264 NONAME ??1?$PArray@VPWin32PacketBuffer@@@@UAE@XZ @265 NONAME ??1?$PBaseArray@D@@UAE@XZ @266 NONAME ??1?$PBaseArray@E@@UAE@XZ @267 NONAME ??1?$PBaseArray@F@@UAE@XZ @268 NONAME ??1?$PBaseArray@G@@UAE@XZ @269 NONAME ??1?$PBaseArray@H@@UAE@XZ @270 NONAME ??1?$PBaseArray@I@@UAE@XZ @271 NONAME ??1?$PBaseArray@J@@UAE@XZ @272 NONAME ??1?$PBaseArray@K@@UAE@XZ @273 NONAME ??1?$PBaseArray@PAVElement@PHashTable@@@@UAE@XZ @274 NONAME ??1?$PBaseArray@PAVPObject@@@@UAE@XZ @275 NONAME ??1?$PDevicePluginAdapter@VPSoundChannel@@@@UAE@XZ @5861 NONAME ??1?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAE@XZ @5862 NONAME ??1?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAE@XZ @5863 NONAME ??1?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAE@XZ @276 NONAME ??1?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAE@XZ @277 NONAME ??1?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAE@XZ @278 NONAME ??1?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAE@XZ @4787 NONAME ??1?$PDictionary@VPOrdinalKey@@VPThread@@@@UAE@XZ @279 NONAME ??1?$PDictionary@VPString@@VPDynaLink@@@@UAE@XZ @4723 NONAME ??1?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @5864 NONAME ??1?$PFactory@VPPluginModuleManager@@VPString@@@@MAE@XZ @5623 NONAME ??1?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @5624 NONAME ??1?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @5865 NONAME ??1?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @5866 NONAME ??1?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @5867 NONAME ??1?$PList@VInterfaceEntry@PIPSocket@@@@UAE@XZ @6199 NONAME ??1?$PList@VPDynaLink@@@@UAE@XZ @3033 NONAME ??1?$PList@VPNotifier@@@@UAE@XZ @3034 NONAME ??1?$PList@VPPluginService@@@@UAE@XZ @2682 NONAME ??1?$PList@VPSafeObject@@@@UAE@XZ @5868 NONAME ??1?$PList@VPSocket@@@@UAE@XZ @280 NONAME ??1?$PList@VPString@@@@UAE@XZ @281 NONAME ??1?$PList@VPThread@@@@UAE@XZ @282 NONAME ??1?$PList@VPTimer@@@@UAE@XZ @283 NONAME ??1?$POrdinalDictionary@VPString@@@@UAE@XZ @284 NONAME ??1?$PScalarArray@F@@UAE@XZ @285 NONAME ??1?$PScalarArray@G@@UAE@XZ @286 NONAME ??1?$PScalarArray@H@@UAE@XZ @287 NONAME ??1?$PScalarArray@I@@UAE@XZ @288 NONAME ??1?$PScalarArray@J@@UAE@XZ @289 NONAME ??1?$PScalarArray@K@@UAE@XZ @290 NONAME ??1?$PSet@VPString@@@@UAE@XZ @291 NONAME ??1?$PSortedList@VPString@@@@UAE@XZ @292 NONAME ??1?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UAE@XZ @6200 NONAME ??1?$PStringDictionary@VPOrdinalKey@@@@UAE@XZ @293 NONAME ??1?$PStringDictionary@VPString@@@@UAE@XZ @294 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UAE@XZ @6201 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UAE@XZ @6202 NONAME ??1?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UAE@XZ @6203 NONAME ??1?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@XZ @5047 NONAME ??1?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @4870 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @5869 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @5870 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @5871 NONAME ??1?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @5625 NONAME ??1?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @5626 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE@XZ @4871 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@XZ @5872 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@XZ @5627 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@XZ @5628 NONAME ??1Address@PIPSocket@@UAE@XZ @295 NONAME ??1Block@PTrace@@QAE@XZ @296 NONAME ??1Buffer@PDebugStream@@UAE@XZ @297 NONAME ??1Buffer@PStringStream@@UAE@XZ @298 NONAME ??1Buffer@PSystemLog@@UAE@XZ @299 NONAME ??1CMCDLL@PMail@@UAE@XZ @300 NONAME ??1CMC_message_reference_ptr@@QAE@XZ @301 NONAME ??1DeleteObjectsTimeout_PNotifier@PSafeCollection@@UAE@XZ @302 NONAME ??1FactoryMap@PFactoryBase@@QAE@XZ @5629 NONAME ??1HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UAE@XZ @6204 NONAME ??1HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UAE@XZ @6205 NONAME ??1HouseKeepingThread@PProcess@@UAE@XZ @303 NONAME ??1InterfaceEntry@PIPSocket@@UAE@XZ @304 NONAME ??1MAPIDLL@PMail@@UAE@XZ @305 NONAME ??1Nest@PReadWriteMutex@@UAE@XZ @306 NONAME ??1NT_ServiceManager@@QAE@XZ @307 NONAME ??1PAbstractArray@@UAE@XZ @308 NONAME ??1PAbstractDictionary@@UAE@XZ @309 NONAME ??1PAbstractList@@UAE@XZ @310 NONAME ??1PAbstractSet@@UAE@XZ @311 NONAME ??1PAbstractSortedList@@UAE@XZ @312 NONAME ??1PArgList@@UAE@XZ @313 NONAME ??1PArrayObjects@@UAE@XZ @314 NONAME ??1PBitArray@@UAE@XZ @315 NONAME ??1PBYTEArray@@UAE@XZ @316 NONAME ??1PCaselessString@@UAE@XZ @317 NONAME ??1PChannel@@UAE@XZ @318 NONAME ??1PChannelStreamBuffer@@UAE@XZ @319 NONAME ??1PCharArray@@UAE@XZ @320 NONAME ??1PCollection@@UAE@XZ @321 NONAME ??1PColourConverter@@UAE@XZ @322 NONAME ??1PColourConverterRegistration@@UAE@XZ @323 NONAME ??1PCondMutex@@UAE@XZ @5050 NONAME ??1PConfig@@UAE@XZ @324 NONAME ??1PConfigArgs@@UAE@XZ @325 NONAME ??1PConsoleChannel@@UAE@XZ @326 NONAME ??1PContainer@@UAE@XZ @327 NONAME ??1PCriticalSection@@UAE@XZ @4545 NONAME ??1PDebugStream@@UAE@XZ @328 NONAME ??1PDirectory@@UAE@XZ @329 NONAME ??1PDynaLink@@UAE@XZ @330 NONAME ??1PEthSocket@@UAE@XZ @331 NONAME ??1PFactoryBase@@UAE@XZ @5630 NONAME ??1PFile@@UAE@XZ @333 NONAME ??1PFileInfo@@UAE@XZ @334 NONAME ??1PFilePath@@UAE@XZ @335 NONAME ??1PHashTable@@UAE@XZ @336 NONAME ??1PHostByAddr@@UAE@XZ @337 NONAME ??1PHostByName@@UAE@XZ @338 NONAME ??1PICMPDLL@@UAE@XZ @339 NONAME ??1PICMPSocket@@UAE@XZ @340 NONAME ??1PImageDLL@@UAE@XZ @341 NONAME ??1PIndirectChannel@@UAE@XZ @342 NONAME ??1PingInfo@PICMPSocket@@QAE@XZ @343 NONAME ??1PIntCondMutex@@UAE@XZ @344 NONAME ??1PIPCacheData@@UAE@XZ @345 NONAME ??1PIPCacheKey@@UAE@XZ @346 NONAME ??1PIPDatagramSocket@@UAE@XZ @347 NONAME ??1PIPSocket@@UAE@XZ @348 NONAME ??1PIPXSocket@@UAE@XZ @349 NONAME ??1PluginLoaderStartup@@UAE@XZ @4872 NONAME ??1PMail@@UAE@XZ @350 NONAME ??1PMultiMediaFile@@QAE@XZ @351 NONAME ??1PMutex@@UAE@XZ @352 NONAME ??1PNotifier@@UAE@XZ @353 NONAME ??1PNotifierFunction@@UAE@XZ @354 NONAME ??1PObject@@UAE@XZ @355 NONAME ??1POrdinalKey@@UAE@XZ @356 NONAME ??1POrdinalToString@@UAE@XZ @357 NONAME ??1PPipeChannel@@UAE@XZ @358 NONAME ??1PPluginManager@@UAE@XZ @2684 NONAME ??1PPluginModuleManager@@UAE@XZ @4725 NONAME ??1PPluginService@@UAE@XZ @2685 NONAME ??1PPointer@@UAE@XZ @4788 NONAME ??1PProcess@@UAE@XZ @359 NONAME ??1PProcessStartup@@UAE@XZ @5051 NONAME ??1PQoS@@UAE@XZ @2651 NONAME ??1PRASDLL@@UAE@XZ @360 NONAME ??1PReadWaitAndSignal@@QAE@XZ @3031 NONAME ??1PReadWriteMutex@@UAE@XZ @361 NONAME ??1PRegularExpression@@UAE@XZ @362 NONAME ??1PRemoteConnection@@UAE@XZ @363 NONAME ??1PSafeCollection@@UAE@XZ @364 NONAME ??1PSafeLockReadOnly@@QAE@XZ @6164 NONAME ??1PSafeLockReadWrite@@QAE@XZ @6165 NONAME ??1PSafeObject@@UAE@XZ @365 NONAME ??1PSafePtrBase@@UAE@XZ @366 NONAME ??1PSemaphore@@UAE@XZ @367 NONAME ??1PSerialChannel@@UAE@XZ @368 NONAME ??1PServiceProcess@@UAE@XZ @369 NONAME ??1PSimpleThread@@UAE@XZ @370 NONAME ??1PSmartObject@@UAE@XZ @371 NONAME ??1PSmartPointer@@UAE@XZ @372 NONAME ??1PSmartPtrInspector@@UAE@XZ @4789 NONAME ??1PSocket@@UAE@XZ @373 NONAME ??1PSortedStringList@@UAE@XZ @374 NONAME ??1PSound@@UAE@XZ @375 NONAME ??1PSoundChannel@@UAE@XZ @376 NONAME ??1PSoundChannelWin32@@UAE@XZ @2686 NONAME ??1PSPXSocket@@UAE@XZ @377 NONAME ??1PString@@UAE@XZ @378 NONAME ??1PStringArray@@UAE@XZ @379 NONAME ??1PStringList@@UAE@XZ @380 NONAME ??1PStringSet@@UAE@XZ @381 NONAME ??1PStringStream@@UAE@XZ @382 NONAME ??1PStringToOrdinal@@UAE@XZ @383 NONAME ??1PStringToString@@UAE@XZ @384 NONAME ??1PStructuredFile@@UAE@XZ @385 NONAME ??1PSyncPoint@@UAE@XZ @386 NONAME ??1PSynonymColour@@UAE@XZ @387 NONAME ??1PSynonymColourRegistration@@UAE@XZ @388 NONAME ??1PSystemLog@@UAE@XZ @389 NONAME ??1PTCPSocket@@UAE@XZ @390 NONAME ??1PTextFile@@UAE@XZ @391 NONAME ??1PThread@@UAE@XZ @392 NONAME ??1PTime@@UAE@XZ @393 NONAME ??1PTimeInterval@@UAE@XZ @394 NONAME ??1PTimer@@UAE@XZ @395 NONAME ??1PTimerList@@UAE@XZ @396 NONAME ??1PUDPSocket@@UAE@XZ @397 NONAME ??1PVideoChannel@@UAE@XZ @398 NONAME ??1PVideoDevice@@UAE@XZ @399 NONAME ??1PVideoDeviceBitmap@@UAE@XZ @400 NONAME ??1PVideoInputDevice@@UAE@XZ @401 NONAME ??1PVideoInputDevice_FakeVideo@@UAE@XZ @2832 NONAME ??1PVideoInputDevice_VideoForWindows@@UAE@XZ @2687 NONAME ??1PVideoOutputDevice@@UAE@XZ @403 NONAME ??1PVideoOutputDeviceRGB@@UAE@XZ @6206 NONAME ??1PVideoOutputDevice_NULLOutput@@UAE@XZ @2833 NONAME ??1PVideoOutputDevice_Window@@UAE@XZ @6207 NONAME ??1PVideoOutputDevice_Window_PluginServiceDescriptor@@UAE@XZ @6208 NONAME ??1PWaitAndSignal@@QAE@XZ @407 NONAME ??1PWaveBuffer@@EAE@XZ @408 NONAME ??1PWaveFormat@@UAE@XZ @409 NONAME ??1PWin32AsnAny@@QAE@XZ @410 NONAME ??1PWin32AsnOid@@QAE@XZ @411 NONAME ??1PWin32OidBuffer@@QAE@XZ @412 NONAME ??1PWin32Overlapped@@QAE@XZ @413 NONAME ??1PWin32PacketBuffer@@UAE@XZ @414 NONAME ??1PWin32PacketDriver@@UAE@XZ @415 NONAME ??1PWin32PacketSYS@@UAE@XZ @416 NONAME ??1PWin32PacketVxD@@UAE@XZ @417 NONAME ??1PWin32SnmpLibrary@@UAE@XZ @418 NONAME ??1PWinQoS@@UAE@XZ @2923 NONAME ??1PWinSock@@UAE@XZ @419 NONAME ??1PWriteWaitAndSignal@@QAE@XZ @3032 NONAME ??1P_BGR24_RGB24@@UAE@XZ @6209 NONAME ??1P_BGR24_RGB24_Registration@@UAE@XZ @6210 NONAME ??1P_BGR24_RGB32@@UAE@XZ @6211 NONAME ??1P_BGR24_RGB32_Registration@@UAE@XZ @6212 NONAME ??1P_BGR24_YUV420P@@UAE@XZ @2834 NONAME ??1P_BGR24_YUV420P_Registration@@UAE@XZ @2835 NONAME ??1P_BGR32_RGB24@@UAE@XZ @6213 NONAME ??1P_BGR32_RGB24_Registration@@UAE@XZ @6214 NONAME ??1P_BGR32_RGB32@@UAE@XZ @6215 NONAME ??1P_BGR32_RGB32_Registration@@UAE@XZ @6216 NONAME ??1P_BGR32_YUV420P@@UAE@XZ @2836 NONAME ??1P_BGR32_YUV420P_Registration@@UAE@XZ @2837 NONAME ??1P_fd_set@@QAE@XZ @420 NONAME ??1P_Grey_YUV420P@@UAE@XZ @423 NONAME ??1P_Grey_YUV420P_Registration@@UAE@XZ @424 NONAME ??1P_RGB24_BGR24@@UAE@XZ @6217 NONAME ??1P_RGB24_BGR24_Registration@@UAE@XZ @6218 NONAME ??1P_RGB24_BGR32@@UAE@XZ @6219 NONAME ??1P_RGB24_BGR32_Registration@@UAE@XZ @6220 NONAME ??1P_RGB24_RGB32@@UAE@XZ @427 NONAME ??1P_RGB24_RGB32_Registration@@UAE@XZ @428 NONAME ??1P_RGB24_YUV420P@@UAE@XZ @429 NONAME ??1P_RGB24_YUV420P_Registration@@UAE@XZ @430 NONAME ??1P_RGB32_BGR24@@UAE@XZ @6221 NONAME ??1P_RGB32_BGR24_Registration@@UAE@XZ @6222 NONAME ??1P_RGB32_BGR32@@UAE@XZ @6223 NONAME ??1P_RGB32_BGR32_Registration@@UAE@XZ @6224 NONAME ??1P_RGB32_RGB24@@UAE@XZ @433 NONAME ??1P_RGB32_RGB24_Registration@@UAE@XZ @434 NONAME ??1P_RGB32_YUV420P@@UAE@XZ @435 NONAME ??1P_RGB32_YUV420P_Registration@@UAE@XZ @436 NONAME ??1P_SBGGR8_RGB24@@UAE@XZ @6138 NONAME ??1P_SBGGR8_RGB24_Registration@@UAE@XZ @6139 NONAME ??1P_SBGGR8_YUV420P@@UAE@XZ @6225 NONAME ??1P_SBGGR8_YUV420P_Registration@@UAE@XZ @6226 NONAME ??1P_UYV444_YUV420P@@UAE@XZ @437 NONAME ??1P_UYV444_YUV420P_Registration@@UAE@XZ @438 NONAME ??1P_UYVY422_YUV420P@@UAE@XZ @439 NONAME ??1P_UYVY422_YUV420P_Registration@@UAE@XZ @440 NONAME ??1P_YUV411P_YUV420P@@UAE@XZ @441 NONAME ??1P_YUV411P_YUV420P_Registration@@UAE@XZ @442 NONAME ??1P_YUV420P_BGR24@@UAE@XZ @443 NONAME ??1P_YUV420P_BGR24_Registration@@UAE@XZ @446 NONAME ??1P_YUV420P_BGR32@@UAE@XZ @2838 NONAME ??1P_YUV420P_BGR32_Registration@@UAE@XZ @2839 NONAME ??1P_YUV420P_RGB24@@UAE@XZ @447 NONAME ??1P_YUV420P_RGB24_Registration@@UAE@XZ @450 NONAME ??1P_YUV420P_RGB32@@UAE@XZ @451 NONAME ??1P_YUV420P_RGB32_Registration@@UAE@XZ @454 NONAME ??1P_YUV420P_YUV411P@@UAE@XZ @455 NONAME ??1P_YUV420P_YUV411P_Registration@@UAE@XZ @456 NONAME ??1P_YUV422_YUV420P@@UAE@XZ @457 NONAME ??1P_YUV422_YUV420P_Registration@@UAE@XZ @458 NONAME ??1P_YUV422_YUV422@@UAE@XZ @459 NONAME ??1P_YUV422_YUV422_Registration@@UAE@XZ @460 NONAME ??1RegistryKey@@QAE@XZ @461 NONAME ??1RouteEntry@PIPSocket@@UAE@XZ @462 NONAME ??1SecurityID@@QAE@XZ @463 NONAME ??1SelectList@PSocket@@UAE@XZ @464 NONAME ??1Table@PHashTable@@UAE@XZ @465 NONAME ??1WinSNMPLoader@@UAE@XZ @5437 NONAME ??1Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@UAE@XZ @5873 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@UAE@XZ @5874 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@UAE@XZ @5875 NONAME ??1WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @5876 NONAME ??1WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @5631 NONAME ??1WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @5877 NONAME ??1WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @5878 NONAME ??1WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @5879 NONAME ??2@YAPAXIPAX@Z @5052 NONAME ??3@YAXPAX0@Z @4873 NONAME ??4?$PArray@VPString@@@@QAEAAV0@ABV0@@Z @5053 NONAME ??4?$PBaseArray@D@@QAEAAV0@ABV0@@Z @516 NONAME ??4?$PBaseArray@E@@QAEAAV0@ABV0@@Z @517 NONAME ??4?$PBaseArray@F@@QAEAAV0@ABV0@@Z @518 NONAME ??4?$PBaseArray@G@@QAEAAV0@ABV0@@Z @519 NONAME ??4?$PBaseArray@H@@QAEAAV0@ABV0@@Z @520 NONAME ??4?$PBaseArray@I@@QAEAAV0@ABV0@@Z @5880 NONAME ??4?$PBaseArray@J@@QAEAAV0@ABV0@@Z @521 NONAME ??4?$PList@VPString@@@@QAEAAV0@ABV0@@Z @5054 NONAME ??4?$PScalarArray@K@@QAEAAV0@ABV0@@Z @523 NONAME ??4Address@PEthSocket@@QAEAAT01@ABT01@@Z @524 NONAME ??4Address@PEthSocket@@QAEAAT01@ABVPString@@@Z @525 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin6_addr@@@Z @2924 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin_addr@@@Z @526 NONAME ??4Address@PIPSocket@@QAEAAV01@ABV01@@Z @527 NONAME ??4Address@PIPSocket@@QAEAAV01@ABVPString@@@Z @528 NONAME ??4Address@PIPSocket@@QAEAAV01@K@Z @529 NONAME ??4Address@PIPXSocket@@QAEAAV01@ABV01@@Z @530 NONAME ??4Buffer@PStringStream@@QAEAAV01@ABV01@@Z @4548 NONAME ??4PAbstractList@@QAEAAV0@ABV0@@Z @5055 NONAME ??4PArrayObjects@@QAEAAV0@ABV0@@Z @5056 NONAME ??4PCaselessString@@QAEAAV0@ABVPString@@@Z @4549 NONAME ??4PCaselessString@@QAEAAV0@D@Z @4550 NONAME ??4PCaselessString@@QAEAAV0@PBD@Z @4551 NONAME ??4PChannel@@IAEAAV0@ABV0@@Z @4552 NONAME ??4PChannelStreamBuffer@@QAEAAV0@ABV0@@Z @4553 NONAME ??4PContainer@@QAEAAV0@ABV0@@Z @4554 NONAME ??4PDirectory@@QAEAAV0@ABVPString@@@Z @4555 NONAME ??4PDirectory@@QAEAAV0@PBD@Z @4556 NONAME ??4PFilePath@@QAEAAV0@ABV0@@Z @4557 NONAME ??4PFilePath@@QAEAAV0@ABVPString@@@Z @4558 NONAME ??4PFilePath@@QAEAAV0@PBD@Z @4559 NONAME ??4PIntCondMutex@@QAEAAV0@H@Z @531 NONAME ??4PObject@@QAEAAV0@ABV0@@Z @5057 NONAME ??4POrdinalKey@@QAEAAV0@H@Z @4560 NONAME ??4POrdinalToString@@QAEAAV0@ABV0@@Z @532 NONAME ??4PRegularExpression@@QAEAAV0@ABV0@@Z @2962 NONAME ??4PSmartPointer@@QAEAAV0@ABV0@@Z @533 NONAME ??4PSound@@QAEAAV0@ABVPBYTEArray@@@Z @534 NONAME ??4PString@@QAEAAV0@ABV0@@Z @4561 NONAME ??4PString@@QAEAAV0@D@Z @535 NONAME ??4PString@@QAEAAV0@F@Z @536 NONAME ??4PString@@QAEAAV0@G@Z @537 NONAME ??4PString@@QAEAAV0@H@Z @538 NONAME ??4PString@@QAEAAV0@I@Z @539 NONAME ??4PString@@QAEAAV0@J@Z @540 NONAME ??4PString@@QAEAAV0@K@Z @541 NONAME ??4PString@@QAEAAV0@PBD@Z @542 NONAME ??4PString@@QAEAAV0@_J@Z @543 NONAME ??4PString@@QAEAAV0@_K@Z @544 NONAME ??4PStringArray@@QAEAAV0@ABV0@@Z @5058 NONAME ??4PStringList@@QAEAAV0@ABV0@@Z @5059 NONAME ??4PStringSet@@QAEAAV0@ABV0@@Z @546 NONAME ??4PStringStream@@QAEAAV0@ABV0@@Z @4562 NONAME ??4PStringStream@@QAEAAV0@ABVPString@@@Z @4563 NONAME ??4PStringStream@@QAEAAV0@D@Z @4564 NONAME ??4PStringStream@@QAEAAV0@PBD@Z @4565 NONAME ??4PStringToOrdinal@@QAEAAV0@ABV0@@Z @547 NONAME ??4PStringToString@@QAEAAV0@ABV0@@Z @548 NONAME ??4PTimeInterval@@QAEAAV0@ABV0@@Z @5060 NONAME ??4PTimer@@QAEAAV0@ABVPTimeInterval@@@Z @550 NONAME ??4PTimer@@QAEAAV0@K@Z @551 NONAME ??4PWaveBuffer@@AAEAAV0@ABVPSound@@@Z @552 NONAME ??4PWaveFormat@@QAEAAV0@ABV0@@Z @553 NONAME ??4PWin32AsnOid@@QAEAAV0@ABUAsnObjectIdentifier@@@Z @554 NONAME ??4P_fd_set@@QAEAAV0@I@Z @555 NONAME ??4P_timeval@@QAEAAV0@ABVPTimeInterval@@@Z @556 NONAME ??5@YAAAVistream@@AAV0@AAVAddress@PIPSocket@@@Z @557 NONAME ??5@YAAAVistream@@AAV0@AAVPObject@@@Z @5061 NONAME ??5@YAAAVistream@@AAV0@AA_J@Z @558 NONAME ??5@YAAAVistream@@AAV0@AA_K@Z @559 NONAME ??5PArgList@@QAEAAV0@H@Z @4566 NONAME ??6@YAAAVostream@@AAV0@ABVAddress@PIPSocket@@@Z @560 NONAME ??6@YAAAVostream@@AAV0@ABVPObject@@@Z @5062 NONAME ??6@YAAAVostream@@AAV0@ABVPString@@@Z @6227 NONAME ??6@YAAAVostream@@AAV0@ABV__SMANIP_int@@@Z @5063 NONAME ??6@YAAAVostream@@AAV0@W4VideoFormat@PVideoDevice@@@Z @561 NONAME ??6@YAAAVostream@@AAV0@_J@Z @562 NONAME ??6@YAAAVostream@@AAV0@_K@Z @563 NONAME ??6PArgList@@QAEAAV0@H@Z @4567 NONAME ??7PString@@QBE_NXZ @4754 NONAME ??8Address@PEthSocket@@QBE_NPBE@Z @4755 NONAME ??8Address@PIPSocket@@QBE_NAAUin6_addr@@@Z @4756 NONAME ??8Address@PIPSocket@@QBE_NAAUin_addr@@@Z @4757 NONAME ??8Address@PIPSocket@@QBE_NK@Z @4758 NONAME ??8const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @5632 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5881 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5633 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5634 NONAME ??8iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @5635 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBE_NABV012@@Z @5066 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5882 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5636 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5637 NONAME ??8PObject@@QBE_NABV0@@Z @5069 NONAME ??8PString@@QBE_NABVPObject@@@Z @4759 NONAME ??8PString@@QBE_NPBD@Z @4760 NONAME ??8PTimeInterval@@QBE_NABV0@@Z @4761 NONAME ??8PTimeInterval@@QBE_NJ@Z @4762 NONAME ??9Address@PEthSocket@@QBE_NPBE@Z @4763 NONAME ??9const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @5638 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5883 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5639 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5640 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBE_NABV012@@Z @5072 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5884 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5641 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @5642 NONAME ??9PString@@QBE_NABVPObject@@@Z @4764 NONAME ??9PString@@QBE_NPBD@Z @4765 NONAME ??9PTimeInterval@@QBE_NABV0@@Z @4766 NONAME ??9PTimeInterval@@QBE_NJ@Z @4767 NONAME ??A?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEAAPAVPFactoryBase@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @5643 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@ABVPString@@@Z @5644 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@ABVPString@@@Z @5885 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@ABVPString@@@Z @5886 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@ABVPString@@@Z @5887 NONAME ??A?$PBaseArray@D@@QAEAADH@Z @5077 NONAME ??A?$PBaseArray@D@@QBEDH@Z @5078 NONAME ??A?$PBaseArray@H@@QAEAAHH@Z @5079 NONAME ??A?$PBaseArray@H@@QBEHH@Z @5080 NONAME ??A?$PBaseArray@I@@QAEAAIH@Z @570 NONAME ??A?$PBaseArray@K@@QAEAAKH@Z @571 NONAME ??A?$PList@VInterfaceEntry@PIPSocket@@@@QBEAAVInterfaceEntry@PIPSocket@@H@Z @6228 NONAME ??A?$PList@VPDynaLink@@@@QBEAAVPDynaLink@@H@Z @5081 NONAME ??A?$PList@VPNotifier@@@@QBEAAVPNotifier@@H@Z @5082 NONAME ??A?$PList@VPPluginService@@@@QBEAAVPPluginService@@H@Z @5083 NONAME ??A?$PList@VPString@@@@QBEAAVPString@@H@Z @6229 NONAME ??A?$PStringDictionary@VPString@@@@QBEABVPString@@ABV1@@Z @6230 NONAME ??AAddress@PIPSocket@@QBEEH@Z @572 NONAME ??APArgList@@QBE?AVPString@@H@Z @573 NONAME ??APStringArray@@QAEAAVPString@@H@Z @574 NONAME ??APStringArray@@QBE?AVPString@@H@Z @6231 NONAME ??B?$PBaseArray@D@@QBEPBDXZ @5085 NONAME ??B?$PBaseArray@H@@QBEPBHXZ @5087 NONAME ??BAddress@PEthSocket@@QBE?AVPString@@XZ @575 NONAME ??BAddress@PIPSocket@@QBE?AUin6_addr@@XZ @2926 NONAME ??BAddress@PIPSocket@@QBE?AUin_addr@@XZ @576 NONAME ??BAddress@PIPSocket@@QBE?AVPString@@XZ @577 NONAME ??BAddress@PIPSocket@@QBEKXZ @578 NONAME ??BAddress@PIPXSocket@@QBE?AVPString@@XZ @579 NONAME ??BPAtomicInteger@@QBEJXZ @5429 NONAME ??BPOrdinalKey@@QBEHXZ @4578 NONAME ??BPString@@QBEPBEXZ @4579 NONAME ??Cconst_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEPBU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @5645 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @5888 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @5646 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @5647 NONAME ??Citerator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @5091 NONAME ??Dconst_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @5648 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @5889 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @5649 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @5650 NONAME ??Diterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @5651 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @5094 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @5652 NONAME ??DPTimeInterval@@QBE?AV0@H@Z @4580 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEAAV012@XZ @5890 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAEAAV012@XZ @5653 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEAAV012@XZ @5654 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AV012@H@Z @5098 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEAAV012@XZ @5099 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AV012@H@Z @5891 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEAAV012@XZ @5892 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AV012@H@Z @5655 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAEAAV012@XZ @5656 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AV012@H@Z @5657 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEAAV012@XZ @5658 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AV012@H@Z @5893 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AV012@H@Z @5894 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AV012@H@Z @5895 NONAME ??EPIntCondMutex@@QAEAAV0@XZ @580 NONAME ??EPOrdinalKey@@QAEHH@Z @4581 NONAME ??EPOrdinalKey@@QAEHXZ @4582 NONAME ??Fiterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEAAV012@XZ @5659 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEAAV012@XZ @5104 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEAAV012@XZ @5660 NONAME ??FPAtomicInteger@@QAEJXZ @5430 NONAME ??FPIntCondMutex@@QAEAAV0@XZ @581 NONAME ??FPOrdinalKey@@QAEHH@Z @4584 NONAME ??FPOrdinalKey@@QAEHXZ @4585 NONAME ??GPTime@@QBE?AV0@ABVPTimeInterval@@@Z @582 NONAME ??GPTime@@QBE?AVPTimeInterval@@ABV0@@Z @583 NONAME ??GPTimeInterval@@QBE?AV0@ABV0@@Z @584 NONAME ??GPTimeInterval@@QBE?AV0@XZ @4586 NONAME ??H@YA?AVPString@@DABV0@@Z @585 NONAME ??H@YA?AVPString@@PBDABV0@@Z @586 NONAME ??HPString@@QBE?AV0@ABV0@@Z @587 NONAME ??HPString@@QBE?AV0@D@Z @588 NONAME ??HPString@@QBE?AV0@PBD@Z @589 NONAME ??HPStringArray@@QAE?AV0@ABV0@@Z @4587 NONAME ??HPStringArray@@QAE?AV0@ABVPString@@@Z @4588 NONAME ??HPStringList@@QAE?AV0@ABV0@@Z @4589 NONAME ??HPStringList@@QAE?AV0@ABVPString@@@Z @4590 NONAME ??HPTime@@QBE?AV0@ABVPTimeInterval@@@Z @590 NONAME ??HPTimeInterval@@QBE?AV0@ABV0@@Z @4591 NONAME ??I@YA?AVPString@@DABV0@@Z @4592 NONAME ??I@YA?AVPString@@PBDABV0@@Z @591 NONAME ??IPString@@QBE?AV0@ABV0@@Z @592 NONAME ??IPString@@QBE?AV0@D@Z @593 NONAME ??IPString@@QBE?AV0@PBD@Z @594 NONAME ??KPTimeInterval@@QBE?AV0@H@Z @4593 NONAME ??MPString@@QBE_NABVPObject@@@Z @4768 NONAME ??MPString@@QBE_NPBD@Z @4769 NONAME ??MPTimeInterval@@QBE_NABV0@@Z @4770 NONAME ??MPTimeInterval@@QBE_NJ@Z @4771 NONAME ??NPString@@QBE_NABVPObject@@@Z @4772 NONAME ??NPString@@QBE_NPBD@Z @4773 NONAME ??NPTimeInterval@@QBE_NABV0@@Z @4774 NONAME ??NPTimeInterval@@QBE_NJ@Z @4775 NONAME ??OPString@@QBE_NABVPObject@@@Z @4776 NONAME ??OPString@@QBE_NPBD@Z @4777 NONAME ??OPTimeInterval@@QBE_NABV0@@Z @4778 NONAME ??OPTimeInterval@@QBE_NJ@Z @4779 NONAME ??PPString@@QBE_NABVPObject@@@Z @4780 NONAME ??PPString@@QBE_NPBD@Z @4781 NONAME ??PPTimeInterval@@QBE_NABV0@@Z @4782 NONAME ??PPTimeInterval@@QBE_NJ@Z @4783 NONAME ??R?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@QBE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z @5489 NONAME ??R?$less@VPString@@@std@@QBE_NABVPString@@0@Z @5106 NONAME ??RPNotifier@@UBEXAAVPObject@@H@Z @595 NONAME ??RPString@@QBE?AV0@HH@Z @596 NONAME ??R_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @5661 NONAME ??R_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5107 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @5896 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@@Z @5662 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @5663 NONAME ??XAddress@PIPSocket@@QBE_NABV01@@Z @6232 NONAME ??XPString@@QBE_NABV0@@Z @4784 NONAME ??XPString@@QBE_NPBD@Z @4785 NONAME ??XPTimeInterval@@QAEAAV0@H@Z @4611 NONAME ??YPFilePath@@QAEAAV0@ABVPString@@@Z @598 NONAME ??YPFilePath@@QAEAAV0@PBD@Z @4612 NONAME ??YPIntCondMutex@@QAEAAV0@H@Z @599 NONAME ??YPOrdinalKey@@QAEAAV0@H@Z @4613 NONAME ??YPString@@QAEAAV0@ABV0@@Z @4614 NONAME ??YPString@@QAEAAV0@D@Z @600 NONAME ??YPString@@QAEAAV0@PBD@Z @601 NONAME ??YPStringArray@@QAEAAV0@ABV0@@Z @602 NONAME ??YPStringArray@@QAEAAV0@ABVPString@@@Z @4615 NONAME ??YPStringList@@QAEAAV0@ABV0@@Z @603 NONAME ??YPStringList@@QAEAAV0@ABVPString@@@Z @4616 NONAME ??YPStringSet@@QAEAAV0@ABVPString@@@Z @4617 NONAME ??YPTime@@QAEAAV0@ABVPTimeInterval@@@Z @604 NONAME ??YPTimeInterval@@QAEAAV0@ABV0@@Z @4618 NONAME ??YP_fd_set@@QAEAAV0@I@Z @605 NONAME ??ZPIntCondMutex@@QAEAAV0@H@Z @606 NONAME ??ZPOrdinalKey@@QAEAAV0@H@Z @4619 NONAME ??ZPStringSet@@QAEAAV0@ABVPString@@@Z @4620 NONAME ??ZPTime@@QAEAAV0@ABVPTimeInterval@@@Z @607 NONAME ??ZPTimeInterval@@QAEAAV0@ABV0@@Z @4621 NONAME ??ZP_fd_set@@QAEAAV0@I@Z @608 NONAME ??_0PTimeInterval@@QAEAAV0@H@Z @4622 NONAME ??_4PString@@QAEAAV0@ABV0@@Z @4623 NONAME ??_4PString@@QAEAAV0@D@Z @609 NONAME ??_4PString@@QAEAAV0@PBD@Z @610 NONAME ??_7?$PArray@VPString@@@@6B@ @611 NONAME ??_7?$PArray@VPWaveBuffer@@@@6B@ @612 NONAME ??_7?$PArray@VPWin32PacketBuffer@@@@6B@ @613 NONAME ??_7?$PBaseArray@D@@6B@ @614 NONAME ??_7?$PBaseArray@E@@6B@ @615 NONAME ??_7?$PBaseArray@F@@6B@ @616 NONAME ??_7?$PBaseArray@G@@6B@ @617 NONAME ??_7?$PBaseArray@H@@6B@ @618 NONAME ??_7?$PBaseArray@I@@6B@ @619 NONAME ??_7?$PBaseArray@J@@6B@ @620 NONAME ??_7?$PBaseArray@K@@6B@ @621 NONAME ??_7?$PBaseArray@PAVPObject@@@@6B@ @622 NONAME ??_7?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @5897 NONAME ??_7?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @5898 NONAME ??_7?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @5899 NONAME ??_7?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @623 NONAME ??_7?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @624 NONAME ??_7?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @625 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @4790 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @626 NONAME ??_7?$PDictionary@VPString@@VPDynaLink@@@@6B@ @4726 NONAME ??_7?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @5900 NONAME ??_7?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @5664 NONAME ??_7?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5665 NONAME ??_7?$PFactory@VPSoundChannel@@VPString@@@@6B@ @5901 NONAME ??_7?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @5902 NONAME ??_7?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @5903 NONAME ??_7?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @6233 NONAME ??_7?$PList@VPDynaLink@@@@6B@ @3035 NONAME ??_7?$PList@VPNotifier@@@@6B@ @3036 NONAME ??_7?$PList@VPPluginService@@@@6B@ @2689 NONAME ??_7?$PList@VPSafeObject@@@@6B@ @5904 NONAME ??_7?$PList@VPSocket@@@@6B@ @627 NONAME ??_7?$PList@VPString@@@@6B@ @5111 NONAME ??_7?$PList@VPThread@@@@6B@ @629 NONAME ??_7?$PList@VPTimer@@@@6B@ @630 NONAME ??_7?$PScalarArray@F@@6B@ @631 NONAME ??_7?$PScalarArray@G@@6B@ @632 NONAME ??_7?$PScalarArray@H@@6B@ @633 NONAME ??_7?$PScalarArray@I@@6B@ @634 NONAME ??_7?$PScalarArray@J@@6B@ @635 NONAME ??_7?$PScalarArray@K@@6B@ @636 NONAME ??_7?$PSet@VPString@@@@6B@ @637 NONAME ??_7?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @6234 NONAME ??_7?$PStringDictionary@VPString@@@@6B@ @6235 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @6236 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @6237 NONAME ??_7?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @6238 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @5905 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @5906 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @5907 NONAME ??_7?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5666 NONAME ??_7?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5667 NONAME ??_7Address@PIPSocket@@6B@ @638 NONAME ??_7Buffer@PDebugStream@@6B@ @639 NONAME ??_7Buffer@PStringStream@@6B@ @640 NONAME ??_7Buffer@PSystemLog@@6B@ @641 NONAME ??_7CMCDLL@PMail@@6B@ @642 NONAME ??_7DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @643 NONAME ??_7HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @6239 NONAME ??_7HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @6240 NONAME ??_7HouseKeepingThread@PProcess@@6B@ @644 NONAME ??_7InterfaceEntry@PIPSocket@@6B@ @645 NONAME ??_7MAPIDLL@PMail@@6B@ @646 NONAME ??_7Nest@PReadWriteMutex@@6B@ @647 NONAME ??_7NT_ServiceManager@@6B@ @648 NONAME ??_7PAbstractArray@@6B@ @649 NONAME ??_7PAbstractDictionary@@6B@ @650 NONAME ??_7PAbstractList@@6B@ @651 NONAME ??_7PAbstractSet@@6B@ @652 NONAME ??_7PAbstractSortedList@@6B@ @653 NONAME ??_7PArgList@@6B@ @654 NONAME ??_7PArrayObjects@@6B@ @655 NONAME ??_7PBitArray@@6B@ @656 NONAME ??_7PBYTEArray@@6B@ @657 NONAME ??_7PCaselessString@@6B@ @658 NONAME ??_7PChannel@@6Biostream@@@ @659 NONAME ??_7PChannel@@6BPObject@@@ @660 NONAME ??_7PChannelStreamBuffer@@6B@ @661 NONAME ??_7PCharArray@@6B@ @662 NONAME ??_7PCollection@@6B@ @663 NONAME ??_7PColourConverter@@6B@ @664 NONAME ??_7PColourConverterRegistration@@6B@ @665 NONAME ??_7PCondMutex@@6B@ @5116 NONAME ??_7PConfig@@6B@ @666 NONAME ??_7PConfigArgs@@6B@ @667 NONAME ??_7PConsoleChannel@@6Biostream@@@ @668 NONAME ??_7PConsoleChannel@@6BPObject@@@ @669 NONAME ??_7PContainer@@6B@ @670 NONAME ??_7PCriticalSection@@6B@ @4624 NONAME ??_7PDebugStream@@6B@ @671 NONAME ??_7PDevicePluginAdapterBase@@6B@ @5908 NONAME ??_7PDirectory@@6B@ @672 NONAME ??_7PDynaLink@@6B@ @673 NONAME ??_7PEthSocket@@6Biostream@@@ @674 NONAME ??_7PEthSocket@@6BPObject@@@ @675 NONAME ??_7PFactoryBase@@6B@ @5668 NONAME ??_7PFile@@6Biostream@@@ @677 NONAME ??_7PFile@@6BPObject@@@ @678 NONAME ??_7PFileInfo@@6B@ @679 NONAME ??_7PFilePath@@6B@ @680 NONAME ??_7PHashTable@@6B@ @681 NONAME ??_7PHostByAddr@@6B@ @682 NONAME ??_7PHostByName@@6B@ @683 NONAME ??_7PICMPDLL@@6B@ @684 NONAME ??_7PICMPSocket@@6Biostream@@@ @685 NONAME ??_7PICMPSocket@@6BPObject@@@ @686 NONAME ??_7PImageDLL@@6B@ @687 NONAME ??_7PIndirectChannel@@6Biostream@@@ @688 NONAME ??_7PIndirectChannel@@6BPObject@@@ @689 NONAME ??_7PIntCondMutex@@6B@ @690 NONAME ??_7PIPCacheData@@6B@ @691 NONAME ??_7PIPCacheKey@@6B@ @692 NONAME ??_7PIPDatagramSocket@@6Biostream@@@ @693 NONAME ??_7PIPDatagramSocket@@6BPObject@@@ @694 NONAME ??_7PIPSocket@@6Biostream@@@ @695 NONAME ??_7PIPSocket@@6BPObject@@@ @696 NONAME ??_7PIPXSocket@@6Biostream@@@ @697 NONAME ??_7PIPXSocket@@6BPObject@@@ @698 NONAME ??_7PluginLoaderStartup@@6B@ @4875 NONAME ??_7PMail@@6B@ @699 NONAME ??_7PMutex@@6B@ @700 NONAME ??_7PNotifier@@6B@ @701 NONAME ??_7PNotifierFunction@@6B@ @702 NONAME ??_7PObject@@6B@ @703 NONAME ??_7POrdinalKey@@6B@ @704 NONAME ??_7POrdinalToString@@6B@ @705 NONAME ??_7PPipeChannel@@6Biostream@@@ @706 NONAME ??_7PPipeChannel@@6BPObject@@@ @707 NONAME ??_7PPluginManager@@6B@ @2691 NONAME ??_7PPluginModuleManager@@6B@ @4728 NONAME ??_7PPluginService@@6B@ @2692 NONAME ??_7PPluginServiceDescriptor@@6B@ @6241 NONAME ??_7PPointer@@6B@ @4791 NONAME ??_7PProcess@@6B@ @708 NONAME ??_7PProcessStartup@@6B@ @5117 NONAME ??_7PQoS@@6B@ @2653 NONAME ??_7PRASDLL@@6B@ @709 NONAME ??_7PReadWriteMutex@@6B@ @710 NONAME ??_7PRegularExpression@@6B@ @711 NONAME ??_7PRemoteConnection@@6B@ @712 NONAME ??_7PSafeCollection@@6B@ @713 NONAME ??_7PSafeObject@@6B@ @714 NONAME ??_7PSafePtrBase@@6B@ @715 NONAME ??_7PSemaphore@@6B@ @716 NONAME ??_7PSerialChannel@@6Biostream@@@ @717 NONAME ??_7PSerialChannel@@6BPObject@@@ @718 NONAME ??_7PServiceProcess@@6B@ @719 NONAME ??_7PSimpleThread@@6B@ @720 NONAME ??_7PSmartPointer@@6B@ @721 NONAME ??_7PSmartPtrInspector@@6B@ @4792 NONAME ??_7PSocket@@6Biostream@@@ @722 NONAME ??_7PSocket@@6BPObject@@@ @723 NONAME ??_7PSortedStringList@@6B@ @724 NONAME ??_7PSound@@6B@ @725 NONAME ??_7PSoundChannel@@6Biostream@@@ @726 NONAME ??_7PSoundChannel@@6BPObject@@@ @727 NONAME ??_7PSoundChannelWin32@@6Biostream@@@ @2693 NONAME ??_7PSoundChannelWin32@@6BPObject@@@ @2694 NONAME ??_7PSPXSocket@@6Biostream@@@ @728 NONAME ??_7PSPXSocket@@6BPObject@@@ @729 NONAME ??_7PString@@6B@ @730 NONAME ??_7PStringArray@@6B@ @731 NONAME ??_7PStringList@@6B@ @732 NONAME ??_7PStringSet@@6B@ @733 NONAME ??_7PStringStream@@6Biostream@@@ @734 NONAME ??_7PStringStream@@6BPString@@@ @735 NONAME ??_7PStringToOrdinal@@6B@ @736 NONAME ??_7PStringToString@@6B@ @737 NONAME ??_7PStructuredFile@@6Biostream@@@ @738 NONAME ??_7PStructuredFile@@6BPObject@@@ @739 NONAME ??_7PSyncPoint@@6B@ @740 NONAME ??_7PSynonymColour@@6B@ @741 NONAME ??_7PSynonymColourRegistration@@6B@ @742 NONAME ??_7PSystemLog@@6Biostream@@@ @743 NONAME ??_7PSystemLog@@6BPObject@@@ @744 NONAME ??_7PTCPSocket@@6Biostream@@@ @745 NONAME ??_7PTCPSocket@@6BPObject@@@ @746 NONAME ??_7PTextFile@@6Biostream@@@ @747 NONAME ??_7PTextFile@@6BPObject@@@ @748 NONAME ??_7PThread@@6B@ @749 NONAME ??_7PTime@@6B@ @750 NONAME ??_7PTimeInterval@@6B@ @751 NONAME ??_7PTimer@@6B@ @752 NONAME ??_7PTimerList@@6B@ @753 NONAME ??_7PUDPSocket@@6Biostream@@@ @754 NONAME ??_7PUDPSocket@@6BPObject@@@ @755 NONAME ??_7PVideoChannel@@6Biostream@@@ @756 NONAME ??_7PVideoChannel@@6BPObject@@@ @757 NONAME ??_7PVideoDevice@@6B@ @758 NONAME ??_7PVideoDeviceBitmap@@6B@ @759 NONAME ??_7PVideoInputDevice@@6B@ @760 NONAME ??_7PVideoInputDevice_FakeVideo@@6B@ @2840 NONAME ??_7PVideoInputDevice_VideoForWindows@@6B@ @2695 NONAME ??_7PVideoOutputDevice@@6B@ @762 NONAME ??_7PVideoOutputDeviceRGB@@6B@ @6242 NONAME ??_7PVideoOutputDevice_NULLOutput@@6B@ @2841 NONAME ??_7PVideoOutputDevice_Window@@6B@ @6243 NONAME ??_7PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @6244 NONAME ??_7PWaveBuffer@@6B@ @766 NONAME ??_7PWaveFormat@@6B@ @767 NONAME ??_7PWin32PacketBuffer@@6B@ @768 NONAME ??_7PWin32PacketDriver@@6B@ @769 NONAME ??_7PWin32PacketSYS@@6B@ @770 NONAME ??_7PWin32PacketVxD@@6B@ @771 NONAME ??_7PWin32SnmpLibrary@@6B@ @772 NONAME ??_7PWinQoS@@6B@ @2927 NONAME ??_7PWinSock@@6Biostream@@@ @773 NONAME ??_7PWinSock@@6BPObject@@@ @774 NONAME ??_7P_BGR24_RGB24@@6B@ @6245 NONAME ??_7P_BGR24_RGB24_Registration@@6B@ @6246 NONAME ??_7P_BGR24_RGB32@@6B@ @6247 NONAME ??_7P_BGR24_RGB32_Registration@@6B@ @6248 NONAME ??_7P_BGR24_YUV420P@@6B@ @2842 NONAME ??_7P_BGR24_YUV420P_Registration@@6B@ @2843 NONAME ??_7P_BGR32_RGB24@@6B@ @6249 NONAME ??_7P_BGR32_RGB24_Registration@@6B@ @6250 NONAME ??_7P_BGR32_RGB32@@6B@ @6251 NONAME ??_7P_BGR32_RGB32_Registration@@6B@ @6252 NONAME ??_7P_BGR32_YUV420P@@6B@ @2844 NONAME ??_7P_BGR32_YUV420P_Registration@@6B@ @2845 NONAME ??_7P_Grey_YUV420P@@6B@ @777 NONAME ??_7P_Grey_YUV420P_Registration@@6B@ @778 NONAME ??_7P_RGB24_BGR24@@6B@ @6253 NONAME ??_7P_RGB24_BGR24_Registration@@6B@ @6254 NONAME ??_7P_RGB24_BGR32@@6B@ @6255 NONAME ??_7P_RGB24_BGR32_Registration@@6B@ @6256 NONAME ??_7P_RGB24_RGB32@@6B@ @781 NONAME ??_7P_RGB24_RGB32_Registration@@6B@ @782 NONAME ??_7P_RGB24_YUV420P@@6B@ @783 NONAME ??_7P_RGB24_YUV420P_Registration@@6B@ @784 NONAME ??_7P_RGB32_BGR24@@6B@ @6257 NONAME ??_7P_RGB32_BGR24_Registration@@6B@ @6258 NONAME ??_7P_RGB32_BGR32@@6B@ @6259 NONAME ??_7P_RGB32_BGR32_Registration@@6B@ @6260 NONAME ??_7P_RGB32_RGB24@@6B@ @787 NONAME ??_7P_RGB32_RGB24_Registration@@6B@ @788 NONAME ??_7P_RGB32_YUV420P@@6B@ @789 NONAME ??_7P_RGB32_YUV420P_Registration@@6B@ @790 NONAME ??_7P_SBGGR8_RGB24@@6B@ @6140 NONAME ??_7P_SBGGR8_RGB24_Registration@@6B@ @6141 NONAME ??_7P_SBGGR8_YUV420P@@6B@ @6261 NONAME ??_7P_SBGGR8_YUV420P_Registration@@6B@ @6262 NONAME ??_7P_UYV444_YUV420P@@6B@ @791 NONAME ??_7P_UYV444_YUV420P_Registration@@6B@ @792 NONAME ??_7P_UYVY422_YUV420P@@6B@ @793 NONAME ??_7P_UYVY422_YUV420P_Registration@@6B@ @794 NONAME ??_7P_YUV411P_YUV420P@@6B@ @795 NONAME ??_7P_YUV411P_YUV420P_Registration@@6B@ @796 NONAME ??_7P_YUV420P_BGR24@@6B@ @797 NONAME ??_7P_YUV420P_BGR24_Registration@@6B@ @800 NONAME ??_7P_YUV420P_BGR32@@6B@ @2846 NONAME ??_7P_YUV420P_BGR32_Registration@@6B@ @2847 NONAME ??_7P_YUV420P_RGB24@@6B@ @801 NONAME ??_7P_YUV420P_RGB24_Registration@@6B@ @804 NONAME ??_7P_YUV420P_RGB32@@6B@ @805 NONAME ??_7P_YUV420P_RGB32_Registration@@6B@ @808 NONAME ??_7P_YUV420P_YUV411P@@6B@ @809 NONAME ??_7P_YUV420P_YUV411P_Registration@@6B@ @810 NONAME ??_7P_YUV422_YUV420P@@6B@ @811 NONAME ??_7P_YUV422_YUV420P_Registration@@6B@ @812 NONAME ??_7P_YUV422_YUV422@@6B@ @813 NONAME ??_7P_YUV422_YUV422_Registration@@6B@ @814 NONAME ??_7RouteEntry@PIPSocket@@6B@ @815 NONAME ??_7SelectList@PSocket@@6B@ @816 NONAME ??_7Table@PHashTable@@6B@ @817 NONAME ??_7Win95_ServiceManager@@6B@ @818 NONAME ??_7WinSNMPLoader@@6B@ @5438 NONAME ??_7Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @5909 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @5910 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @5911 NONAME ??_7WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @5912 NONAME ??_7WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5669 NONAME ??_7WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @5913 NONAME ??_7WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @5914 NONAME ??_7WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @5915 NONAME ??_8PChannel@@7Bistream@@@ @819 NONAME ??_8PChannel@@7Bostream@@@ @820 NONAME ??_8PConsoleChannel@@7Bistream@@@ @821 NONAME ??_8PConsoleChannel@@7Bostream@@@ @822 NONAME ??_8PDebugStream@@7B@ @823 NONAME ??_8PEthSocket@@7Bistream@@@ @824 NONAME ??_8PEthSocket@@7Bostream@@@ @825 NONAME ??_8PFile@@7Bistream@@@ @826 NONAME ??_8PFile@@7Bostream@@@ @827 NONAME ??_8PICMPSocket@@7Bistream@@@ @828 NONAME ??_8PICMPSocket@@7Bostream@@@ @829 NONAME ??_8PIndirectChannel@@7Bistream@@@ @830 NONAME ??_8PIndirectChannel@@7Bostream@@@ @831 NONAME ??_8PIPDatagramSocket@@7Bistream@@@ @832 NONAME ??_8PIPDatagramSocket@@7Bostream@@@ @833 NONAME ??_8PIPSocket@@7Bistream@@@ @834 NONAME ??_8PIPSocket@@7Bostream@@@ @835 NONAME ??_8PIPXSocket@@7Bistream@@@ @836 NONAME ??_8PIPXSocket@@7Bostream@@@ @837 NONAME ??_8PPipeChannel@@7Bistream@@@ @838 NONAME ??_8PPipeChannel@@7Bostream@@@ @839 NONAME ??_8PSerialChannel@@7Bistream@@@ @840 NONAME ??_8PSerialChannel@@7Bostream@@@ @841 NONAME ??_8PSocket@@7Bistream@@@ @842 NONAME ??_8PSocket@@7Bostream@@@ @843 NONAME ??_8PSoundChannel@@7Bistream@@@ @844 NONAME ??_8PSoundChannel@@7Bostream@@@ @845 NONAME ??_8PSoundChannelWin32@@7Bistream@@@ @2696 NONAME ??_8PSoundChannelWin32@@7Bostream@@@ @2697 NONAME ??_8PSPXSocket@@7Bistream@@@ @846 NONAME ??_8PSPXSocket@@7Bostream@@@ @847 NONAME ??_8PStringStream@@7Bistream@@@ @848 NONAME ??_8PStringStream@@7Bostream@@@ @849 NONAME ??_8PStructuredFile@@7Bistream@@@ @850 NONAME ??_8PStructuredFile@@7Bostream@@@ @851 NONAME ??_8PSystemLog@@7Bistream@@@ @852 NONAME ??_8PSystemLog@@7Bostream@@@ @853 NONAME ??_8PTCPSocket@@7Bistream@@@ @854 NONAME ??_8PTCPSocket@@7Bostream@@@ @855 NONAME ??_8PTextFile@@7Bistream@@@ @856 NONAME ??_8PTextFile@@7Bostream@@@ @857 NONAME ??_8PUDPSocket@@7Bistream@@@ @858 NONAME ??_8PUDPSocket@@7Bostream@@@ @859 NONAME ??_8PVideoChannel@@7Bistream@@@ @860 NONAME ??_8PVideoChannel@@7Bostream@@@ @861 NONAME ??_8PWinSock@@7Bistream@@@ @862 NONAME ??_8PWinSock@@7Bostream@@@ @863 NONAME ??_DPFile@@QAEXXZ @864 NONAME ??_DPSoundChannel@@QAEXXZ @865 NONAME ??_DPStringStream@@QAEXXZ @866 NONAME ??_R0?AV?$PArray@VPString@@@@@8 @3050 NONAME ??_R0?AV?$PArray@VPWaveBuffer@@@@@8 @3051 NONAME ??_R0?AV?$PArray@VPWin32PacketBuffer@@@@@8 @3052 NONAME ??_R0?AV?$PBaseArray@D@@@8 @3053 NONAME ??_R0?AV?$PBaseArray@E@@@8 @3054 NONAME ??_R0?AV?$PBaseArray@F@@@8 @3055 NONAME ??_R0?AV?$PBaseArray@G@@@8 @3056 NONAME ??_R0?AV?$PBaseArray@H@@@8 @3057 NONAME ??_R0?AV?$PBaseArray@I@@@8 @3058 NONAME ??_R0?AV?$PBaseArray@J@@@8 @3059 NONAME ??_R0?AV?$PBaseArray@K@@@8 @3060 NONAME ??_R0?AV?$PBaseArray@PAVElement@PHashTable@@@@@8 @3061 NONAME ??_R0?AV?$PBaseArray@PAVPObject@@@@@8 @3062 NONAME ??_R0?AV?$PDevicePluginAdapter@VPSoundChannel@@@@@8 @5916 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoInputDevice@@@@@8 @5917 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@8 @5918 NONAME ??_R0?AV?$PDictionary@VPCaselessString@@VPIPCacheData@@@@@8 @3063 NONAME ??_R0?AV?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@@8 @3064 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@@8 @3065 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPPointer@@@@@8 @4793 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPThread@@@@@8 @3066 NONAME ??_R0?AV?$PDictionary@VPString@@VPDynaLink@@@@@8 @4729 NONAME ??_R0?AV?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @5919 NONAME ??_R0?AV?$PFactory@VPPluginModuleManager@@VPString@@@@@8 @5670 NONAME ??_R0?AV?$PFactory@VPProcessStartup@@VPString@@@@@8 @5671 NONAME ??_R0?AV?$PFactory@VPSoundChannel@@VPString@@@@@8 @5920 NONAME ??_R0?AV?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @5921 NONAME ??_R0?AV?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @5922 NONAME ??_R0?AV?$PList@VInterfaceEntry@PIPSocket@@@@@8 @6263 NONAME ??_R0?AV?$PList@VPDynaLink@@@@@8 @3067 NONAME ??_R0?AV?$PList@VPNotifier@@@@@8 @3068 NONAME ??_R0?AV?$PList@VPPluginService@@@@@8 @3069 NONAME ??_R0?AV?$PList@VPSafeObject@@@@@8 @5923 NONAME ??_R0?AV?$PList@VPSocket@@@@@8 @3070 NONAME ??_R0?AV?$PList@VPString@@@@@8 @3071 NONAME ??_R0?AV?$PList@VPThread@@@@@8 @3072 NONAME ??_R0?AV?$PList@VPTimer@@@@@8 @3073 NONAME ??_R0?AV?$POrdinalDictionary@VPString@@@@@8 @3074 NONAME ??_R0?AV?$PScalarArray@F@@@8 @3075 NONAME ??_R0?AV?$PScalarArray@G@@@8 @3076 NONAME ??_R0?AV?$PScalarArray@H@@@8 @3077 NONAME ??_R0?AV?$PScalarArray@I@@@8 @3078 NONAME ??_R0?AV?$PScalarArray@J@@@8 @3079 NONAME ??_R0?AV?$PScalarArray@K@@@8 @3080 NONAME ??_R0?AV?$PSet@VPString@@@@@8 @3081 NONAME ??_R0?AV?$PSortedList@VPString@@@@@8 @3082 NONAME ??_R0?AV?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@@8 @6264 NONAME ??_R0?AV?$PStringDictionary@VPOrdinalKey@@@@@8 @3083 NONAME ??_R0?AV?$PStringDictionary@VPString@@@@@8 @3084 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@@8 @6265 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@@8 @6266 NONAME ??_R0?AV?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@@8 @6267 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @5924 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @5925 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @5926 NONAME ??_R0?AV?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @5672 NONAME ??_R0?AV?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @5673 NONAME ??_R0?AVAddress@PIPSocket@@@8 @3085 NONAME ??_R0?AVBuffer@PDebugStream@@@8 @3086 NONAME ??_R0?AVBuffer@PStringStream@@@8 @3087 NONAME ??_R0?AVBuffer@PSystemLog@@@8 @3088 NONAME ??_R0?AVCMCDLL@PMail@@@8 @3089 NONAME ??_R0?AVDeleteObjectsTimeout_PNotifier@PSafeCollection@@@8 @3090 NONAME ??_R0?AVHandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@@8 @6268 NONAME ??_R0?AVHandleDisplay_PNotifier@PVideoOutputDevice_Window@@@8 @6269 NONAME ??_R0?AVHouseKeepingThread@PProcess@@@8 @3091 NONAME ??_R0?AVInterfaceEntry@PIPSocket@@@8 @3092 NONAME ??_R0?AVios@@@8 @3093 NONAME ??_R0?AViostream@@@8 @3094 NONAME ??_R0?AVistream@@@8 @3095 NONAME ??_R0?AVMAPIDLL@PMail@@@8 @3096 NONAME ??_R0?AVNest@PReadWriteMutex@@@8 @3097 NONAME ??_R0?AVNT_ServiceManager@@@8 @3098 NONAME ??_R0?AVofstream@@@8 @3099 NONAME ??_R0?AVostream@@@8 @3100 NONAME ??_R0?AVPAbstractArray@@@8 @3101 NONAME ??_R0?AVPAbstractDictionary@@@8 @3102 NONAME ??_R0?AVPAbstractList@@@8 @3103 NONAME ??_R0?AVPAbstractSet@@@8 @3104 NONAME ??_R0?AVPAbstractSortedList@@@8 @3105 NONAME ??_R0?AVPArgList@@@8 @3106 NONAME ??_R0?AVPArrayObjects@@@8 @3107 NONAME ??_R0?AVPBitArray@@@8 @3108 NONAME ??_R0?AVPBYTEArray@@@8 @3109 NONAME ??_R0?AVPCaselessString@@@8 @3110 NONAME ??_R0?AVPChannel@@@8 @3111 NONAME ??_R0?AVPChannelStreamBuffer@@@8 @3112 NONAME ??_R0?AVPCharArray@@@8 @3113 NONAME ??_R0?AVPCollection@@@8 @3114 NONAME ??_R0?AVPColourConverter@@@8 @3115 NONAME ??_R0?AVPColourConverterRegistration@@@8 @3116 NONAME ??_R0?AVPCondMutex@@@8 @3117 NONAME ??_R0?AVPConfig@@@8 @3118 NONAME ??_R0?AVPConfigArgs@@@8 @3119 NONAME ??_R0?AVPConsoleChannel@@@8 @3120 NONAME ??_R0?AVPContainer@@@8 @3121 NONAME ??_R0?AVPCriticalSection@@@8 @4625 NONAME ??_R0?AVPDebugStream@@@8 @3122 NONAME ??_R0?AVPDevicePluginAdapterBase@@@8 @5927 NONAME ??_R0?AVPDevicePluginServiceDescriptor@@@8 @6270 NONAME ??_R0?AVPDirectory@@@8 @3123 NONAME ??_R0?AVPDynaLink@@@8 @3124 NONAME ??_R0?AVPEthSocket@@@8 @3125 NONAME ??_R0?AVPFactoryBase@@@8 @5674 NONAME ??_R0?AVPFile@@@8 @3126 NONAME ??_R0?AVPFileInfo@@@8 @3127 NONAME ??_R0?AVPFilePath@@@8 @3128 NONAME ??_R0?AVPHashTable@@@8 @3129 NONAME ??_R0?AVPHostByAddr@@@8 @3130 NONAME ??_R0?AVPHostByName@@@8 @3131 NONAME ??_R0?AVPICMPDLL@@@8 @3132 NONAME ??_R0?AVPICMPSocket@@@8 @3133 NONAME ??_R0?AVPImageDLL@@@8 @3134 NONAME ??_R0?AVPIndirectChannel@@@8 @3135 NONAME ??_R0?AVPIntCondMutex@@@8 @3136 NONAME ??_R0?AVPIPCacheData@@@8 @3137 NONAME ??_R0?AVPIPCacheKey@@@8 @3138 NONAME ??_R0?AVPIPDatagramSocket@@@8 @3139 NONAME ??_R0?AVPIPSocket@@@8 @3140 NONAME ??_R0?AVPIPXSocket@@@8 @3141 NONAME ??_R0?AVPluginLoaderStartup@@@8 @4876 NONAME ??_R0?AVPMail@@@8 @3142 NONAME ??_R0?AVPMutex@@@8 @3143 NONAME ??_R0?AVPNotifier@@@8 @3144 NONAME ??_R0?AVPNotifierFunction@@@8 @3145 NONAME ??_R0?AVPObject@@@8 @3146 NONAME ??_R0?AVPOrdinalKey@@@8 @3147 NONAME ??_R0?AVPOrdinalToString@@@8 @3148 NONAME ??_R0?AVPPipeChannel@@@8 @3149 NONAME ??_R0?AVPPluginManager@@@8 @3150 NONAME ??_R0?AVPPluginModuleManager@@@8 @4731 NONAME ??_R0?AVPPluginService@@@8 @3151 NONAME ??_R0?AVPPluginServiceDescriptor@@@8 @6271 NONAME ??_R0?AVPPointer@@@8 @4794 NONAME ??_R0?AVPProcess@@@8 @3152 NONAME ??_R0?AVPProcessStartup@@@8 @4877 NONAME ??_R0?AVPQoS@@@8 @3153 NONAME ??_R0?AVPRASDLL@@@8 @3154 NONAME ??_R0?AVPReadWriteMutex@@@8 @3155 NONAME ??_R0?AVPRegularExpression@@@8 @3156 NONAME ??_R0?AVPRemoteConnection@@@8 @3157 NONAME ??_R0?AVPSafeCollection@@@8 @3158 NONAME ??_R0?AVPSafeObject@@@8 @3159 NONAME ??_R0?AVPSafePtrBase@@@8 @3160 NONAME ??_R0?AVPSemaphore@@@8 @3161 NONAME ??_R0?AVPSerialChannel@@@8 @3162 NONAME ??_R0?AVPServiceProcess@@@8 @3163 NONAME ??_R0?AVPSimpleThread@@@8 @3164 NONAME ??_R0?AVPSmartNotifierFunction@@@8 @4795 NONAME ??_R0?AVPSmartObject@@@8 @3165 NONAME ??_R0?AVPSmartPointer@@@8 @3166 NONAME ??_R0?AVPSmartPtrInspector@@@8 @4796 NONAME ??_R0?AVPSocket@@@8 @3167 NONAME ??_R0?AVPSortedStringList@@@8 @3168 NONAME ??_R0?AVPSound@@@8 @3169 NONAME ??_R0?AVPSoundChannel@@@8 @3170 NONAME ??_R0?AVPSoundChannelWin32@@@8 @3171 NONAME ??_R0?AVPSPXSocket@@@8 @3172 NONAME ??_R0?AVPStandardColourConverter@@@8 @3173 NONAME ??_R0?AVPString@@@8 @3174 NONAME ??_R0?AVPStringArray@@@8 @3175 NONAME ??_R0?AVPStringList@@@8 @3176 NONAME ??_R0?AVPStringSet@@@8 @3177 NONAME ??_R0?AVPStringStream@@@8 @3178 NONAME ??_R0?AVPStringToOrdinal@@@8 @3179 NONAME ??_R0?AVPStringToString@@@8 @3180 NONAME ??_R0?AVPStructuredFile@@@8 @3181 NONAME ??_R0?AVPSyncPoint@@@8 @3182 NONAME ??_R0?AVPSynonymColour@@@8 @3183 NONAME ??_R0?AVPSynonymColourRegistration@@@8 @3184 NONAME ??_R0?AVPSystemLog@@@8 @3185 NONAME ??_R0?AVPTCPSocket@@@8 @3186 NONAME ??_R0?AVPTextFile@@@8 @3187 NONAME ??_R0?AVPThread@@@8 @3188 NONAME ??_R0?AVPTime@@@8 @3189 NONAME ??_R0?AVPTimeInterval@@@8 @3190 NONAME ??_R0?AVPTimer@@@8 @3191 NONAME ??_R0?AVPTimerList@@@8 @3192 NONAME ??_R0?AVPUDPSocket@@@8 @3193 NONAME ??_R0?AVPVideoChannel@@@8 @3194 NONAME ??_R0?AVPVideoDevice@@@8 @3195 NONAME ??_R0?AVPVideoDeviceBitmap@@@8 @3196 NONAME ??_R0?AVPVideoInputDevice@@@8 @3197 NONAME ??_R0?AVPVideoInputDevice_FakeVideo@@@8 @3198 NONAME ??_R0?AVPVideoInputDevice_VideoForWindows@@@8 @3199 NONAME ??_R0?AVPVideoOutputDevice@@@8 @3201 NONAME ??_R0?AVPVideoOutputDeviceRGB@@@8 @6272 NONAME ??_R0?AVPVideoOutputDevice_NULLOutput@@@8 @3202 NONAME ??_R0?AVPVideoOutputDevice_Window@@@8 @6273 NONAME ??_R0?AVPVideoOutputDevice_Window_PluginServiceDescriptor@@@8 @6274 NONAME ??_R0?AVPWaveBuffer@@@8 @3203 NONAME ??_R0?AVPWaveFormat@@@8 @3204 NONAME ??_R0?AVPWin32PacketBuffer@@@8 @3205 NONAME ??_R0?AVPWin32PacketDriver@@@8 @3206 NONAME ??_R0?AVPWin32PacketSYS@@@8 @3207 NONAME ??_R0?AVPWin32PacketVxD@@@8 @3208 NONAME ??_R0?AVPWin32SnmpLibrary@@@8 @3209 NONAME ??_R0?AVPWinQoS@@@8 @3210 NONAME ??_R0?AVPWinSock@@@8 @3211 NONAME ??_R0?AVP_BGR24_RGB24@@@8 @6275 NONAME ??_R0?AVP_BGR24_RGB24_Registration@@@8 @6276 NONAME ??_R0?AVP_BGR24_RGB32@@@8 @6277 NONAME ??_R0?AVP_BGR24_RGB32_Registration@@@8 @6278 NONAME ??_R0?AVP_BGR24_YUV420P@@@8 @3212 NONAME ??_R0?AVP_BGR24_YUV420P_Registration@@@8 @3213 NONAME ??_R0?AVP_BGR32_RGB24@@@8 @6279 NONAME ??_R0?AVP_BGR32_RGB24_Registration@@@8 @6280 NONAME ??_R0?AVP_BGR32_RGB32@@@8 @6281 NONAME ??_R0?AVP_BGR32_RGB32_Registration@@@8 @6282 NONAME ??_R0?AVP_BGR32_YUV420P@@@8 @3214 NONAME ??_R0?AVP_BGR32_YUV420P_Registration@@@8 @3215 NONAME ??_R0?AVP_Grey_YUV420P@@@8 @3218 NONAME ??_R0?AVP_Grey_YUV420P_Registration@@@8 @3219 NONAME ??_R0?AVP_RGB24_BGR24@@@8 @6283 NONAME ??_R0?AVP_RGB24_BGR24_Registration@@@8 @6284 NONAME ??_R0?AVP_RGB24_BGR32@@@8 @6285 NONAME ??_R0?AVP_RGB24_BGR32_Registration@@@8 @6286 NONAME ??_R0?AVP_RGB24_RGB32@@@8 @3222 NONAME ??_R0?AVP_RGB24_RGB32_Registration@@@8 @3223 NONAME ??_R0?AVP_RGB24_YUV420P@@@8 @3224 NONAME ??_R0?AVP_RGB24_YUV420P_Registration@@@8 @3225 NONAME ??_R0?AVP_RGB32_BGR24@@@8 @6287 NONAME ??_R0?AVP_RGB32_BGR24_Registration@@@8 @6288 NONAME ??_R0?AVP_RGB32_BGR32@@@8 @6289 NONAME ??_R0?AVP_RGB32_BGR32_Registration@@@8 @6290 NONAME ??_R0?AVP_RGB32_RGB24@@@8 @3228 NONAME ??_R0?AVP_RGB32_RGB24_Registration@@@8 @3229 NONAME ??_R0?AVP_RGB32_YUV420P@@@8 @3230 NONAME ??_R0?AVP_RGB32_YUV420P_Registration@@@8 @3231 NONAME ??_R0?AVP_SBGGR8_RGB24@@@8 @6142 NONAME ??_R0?AVP_SBGGR8_RGB24_Registration@@@8 @6143 NONAME ??_R0?AVP_SBGGR8_YUV420P@@@8 @6291 NONAME ??_R0?AVP_SBGGR8_YUV420P_Registration@@@8 @6292 NONAME ??_R0?AVP_UYV444_YUV420P@@@8 @3232 NONAME ??_R0?AVP_UYV444_YUV420P_Registration@@@8 @3233 NONAME ??_R0?AVP_UYVY422_YUV420P@@@8 @3234 NONAME ??_R0?AVP_UYVY422_YUV420P_Registration@@@8 @3235 NONAME ??_R0?AVP_YUV411P_YUV420P@@@8 @3236 NONAME ??_R0?AVP_YUV411P_YUV420P_Registration@@@8 @3237 NONAME ??_R0?AVP_YUV420P_BGR24@@@8 @3238 NONAME ??_R0?AVP_YUV420P_BGR24_Registration@@@8 @3241 NONAME ??_R0?AVP_YUV420P_BGR32@@@8 @3242 NONAME ??_R0?AVP_YUV420P_BGR32_Registration@@@8 @3243 NONAME ??_R0?AVP_YUV420P_RGB24@@@8 @3244 NONAME ??_R0?AVP_YUV420P_RGB24_Registration@@@8 @3247 NONAME ??_R0?AVP_YUV420P_RGB32@@@8 @3248 NONAME ??_R0?AVP_YUV420P_RGB32_Registration@@@8 @3251 NONAME ??_R0?AVP_YUV420P_YUV411P@@@8 @3252 NONAME ??_R0?AVP_YUV420P_YUV411P_Registration@@@8 @3253 NONAME ??_R0?AVP_YUV422_YUV420P@@@8 @3254 NONAME ??_R0?AVP_YUV422_YUV420P_Registration@@@8 @3255 NONAME ??_R0?AVP_YUV422_YUV422@@@8 @3256 NONAME ??_R0?AVP_YUV422_YUV422_Registration@@@8 @3257 NONAME ??_R0?AVRouteEntry@PIPSocket@@@8 @3258 NONAME ??_R0?AVSelectList@PSocket@@@8 @3259 NONAME ??_R0?AVServiceManager@@@8 @3260 NONAME ??_R0?AVstreambuf@@@8 @3261 NONAME ??_R0?AVTable@PHashTable@@@8 @3262 NONAME ??_R0?AVWin95_ServiceManager@@@8 @3263 NONAME ??_R0?AVWinSNMPLoader@@@8 @5439 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@@8 @5928 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@@8 @5929 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@@8 @5930 NONAME ??_R0?AVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @5931 NONAME ??_R0?AVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@8 @5675 NONAME ??_R0?AVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@8 @5932 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @5933 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @5934 NONAME ??_R13?0A@A@iostream@@8 @3264 NONAME ??_R13?0A@A@istream@@8 @3265 NONAME ??_R1A@33BA@ios@@8 @3266 NONAME ??_R1A@?0A@8?$PBaseArray@E@@8 @3267 NONAME ??_R1A@?0A@8?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3268 NONAME ??_R1A@?0A@8?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3269 NONAME ??_R1A@?0A@8?$PList@VPTimer@@@@8 @3270 NONAME ??_R1A@?0A@8PAbstractArray@@8 @3271 NONAME ??_R1A@?0A@8PAbstractDictionary@@8 @3272 NONAME ??_R1A@?0A@8PAbstractList@@8 @3273 NONAME ??_R1A@?0A@8PBYTEArray@@8 @3274 NONAME ??_R1A@?0A@8PCollection@@8 @3275 NONAME ??_R1A@?0A@8PContainer@@8 @3276 NONAME ??_R1A@?0A@8PFactoryBase@@8 @5676 NONAME ??_R1A@?0A@8PHashTable@@8 @3277 NONAME ??_R1A@?0A@8PObject@@8 @3278 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5935 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @5677 NONAME ??_R1A@?0A@A@?$PArray@VPString@@@@8 @3279 NONAME ??_R1A@?0A@A@?$PArray@VPWaveBuffer@@@@8 @3280 NONAME ??_R1A@?0A@A@?$PArray@VPWin32PacketBuffer@@@@8 @3281 NONAME ??_R1A@?0A@A@?$PBaseArray@D@@8 @3282 NONAME ??_R1A@?0A@A@?$PBaseArray@E@@8 @3283 NONAME ??_R1A@?0A@A@?$PBaseArray@F@@8 @3284 NONAME ??_R1A@?0A@A@?$PBaseArray@G@@8 @3285 NONAME ??_R1A@?0A@A@?$PBaseArray@H@@8 @3286 NONAME ??_R1A@?0A@A@?$PBaseArray@I@@8 @3287 NONAME ??_R1A@?0A@A@?$PBaseArray@J@@8 @3288 NONAME ??_R1A@?0A@A@?$PBaseArray@K@@8 @3289 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVElement@PHashTable@@@@8 @3290 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVPObject@@@@8 @3291 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPSoundChannel@@@@8 @5936 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @5937 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @5938 NONAME ??_R1A@?0A@A@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3292 NONAME ??_R1A@?0A@A@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3293 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @3294 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @4797 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @3295 NONAME ??_R1A@?0A@A@?$PDictionary@VPString@@VPDynaLink@@@@8 @4732 NONAME ??_R1A@?0A@A@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5939 NONAME ??_R1A@?0A@A@?$PFactory@VPPluginModuleManager@@VPString@@@@8 @5678 NONAME ??_R1A@?0A@A@?$PFactory@VPProcessStartup@@VPString@@@@8 @5679 NONAME ??_R1A@?0A@A@?$PFactory@VPSoundChannel@@VPString@@@@8 @5940 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @5941 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @5942 NONAME ??_R1A@?0A@A@?$PList@VInterfaceEntry@PIPSocket@@@@8 @6293 NONAME ??_R1A@?0A@A@?$PList@VPDynaLink@@@@8 @3296 NONAME ??_R1A@?0A@A@?$PList@VPNotifier@@@@8 @3297 NONAME ??_R1A@?0A@A@?$PList@VPPluginService@@@@8 @3298 NONAME ??_R1A@?0A@A@?$PList@VPSafeObject@@@@8 @5943 NONAME ??_R1A@?0A@A@?$PList@VPSocket@@@@8 @3299 NONAME ??_R1A@?0A@A@?$PList@VPString@@@@8 @3300 NONAME ??_R1A@?0A@A@?$PList@VPThread@@@@8 @3301 NONAME ??_R1A@?0A@A@?$PList@VPTimer@@@@8 @3302 NONAME ??_R1A@?0A@A@?$POrdinalDictionary@VPString@@@@8 @3303 NONAME ??_R1A@?0A@A@?$PScalarArray@F@@8 @3304 NONAME ??_R1A@?0A@A@?$PScalarArray@G@@8 @3305 NONAME ??_R1A@?0A@A@?$PScalarArray@H@@8 @3306 NONAME ??_R1A@?0A@A@?$PScalarArray@I@@8 @3307 NONAME ??_R1A@?0A@A@?$PScalarArray@J@@8 @3308 NONAME ??_R1A@?0A@A@?$PScalarArray@K@@8 @3309 NONAME ??_R1A@?0A@A@?$PSet@VPString@@@@8 @3310 NONAME ??_R1A@?0A@A@?$PSortedList@VPString@@@@8 @3311 NONAME ??_R1A@?0A@A@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @6294 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPOrdinalKey@@@@8 @3312 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPString@@@@8 @3313 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @6295 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @6296 NONAME ??_R1A@?0A@A@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @6297 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5944 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5945 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5946 NONAME ??_R1A@?0A@A@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @5680 NONAME ??_R1A@?0A@A@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @5681 NONAME ??_R1A@?0A@A@Address@PIPSocket@@8 @3314 NONAME ??_R1A@?0A@A@Buffer@PDebugStream@@8 @3315 NONAME ??_R1A@?0A@A@Buffer@PStringStream@@8 @3316 NONAME ??_R1A@?0A@A@Buffer@PSystemLog@@8 @3317 NONAME ??_R1A@?0A@A@CMCDLL@PMail@@8 @3318 NONAME ??_R1A@?0A@A@DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @3319 NONAME ??_R1A@?0A@A@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @6298 NONAME ??_R1A@?0A@A@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @6299 NONAME ??_R1A@?0A@A@HouseKeepingThread@PProcess@@8 @3320 NONAME ??_R1A@?0A@A@InterfaceEntry@PIPSocket@@8 @3321 NONAME ??_R1A@?0A@A@MAPIDLL@PMail@@8 @3322 NONAME ??_R1A@?0A@A@Nest@PReadWriteMutex@@8 @3323 NONAME ??_R1A@?0A@A@NT_ServiceManager@@8 @3324 NONAME ??_R1A@?0A@A@ofstream@@8 @3325 NONAME ??_R1A@?0A@A@ostream@@8 @3326 NONAME ??_R1A@?0A@A@PAbstractArray@@8 @3327 NONAME ??_R1A@?0A@A@PAbstractDictionary@@8 @3328 NONAME ??_R1A@?0A@A@PAbstractList@@8 @3329 NONAME ??_R1A@?0A@A@PAbstractSet@@8 @3330 NONAME ??_R1A@?0A@A@PAbstractSortedList@@8 @3331 NONAME ??_R1A@?0A@A@PArgList@@8 @3332 NONAME ??_R1A@?0A@A@PArrayObjects@@8 @3333 NONAME ??_R1A@?0A@A@PBitArray@@8 @3334 NONAME ??_R1A@?0A@A@PBYTEArray@@8 @3335 NONAME ??_R1A@?0A@A@PCaselessString@@8 @3336 NONAME ??_R1A@?0A@A@PChannel@@8 @3337 NONAME ??_R1A@?0A@A@PChannelStreamBuffer@@8 @3338 NONAME ??_R1A@?0A@A@PCharArray@@8 @3339 NONAME ??_R1A@?0A@A@PCollection@@8 @3340 NONAME ??_R1A@?0A@A@PColourConverter@@8 @3341 NONAME ??_R1A@?0A@A@PColourConverterRegistration@@8 @3342 NONAME ??_R1A@?0A@A@PCondMutex@@8 @3343 NONAME ??_R1A@?0A@A@PConfig@@8 @3344 NONAME ??_R1A@?0A@A@PConfigArgs@@8 @3345 NONAME ??_R1A@?0A@A@PConsoleChannel@@8 @3346 NONAME ??_R1A@?0A@A@PContainer@@8 @3347 NONAME ??_R1A@?0A@A@PCriticalSection@@8 @4626 NONAME ??_R1A@?0A@A@PDebugStream@@8 @3348 NONAME ??_R1A@?0A@A@PDevicePluginAdapterBase@@8 @5947 NONAME ??_R1A@?0A@A@PDevicePluginServiceDescriptor@@8 @6300 NONAME ??_R1A@?0A@A@PDirectory@@8 @3349 NONAME ??_R1A@?0A@A@PDynaLink@@8 @3350 NONAME ??_R1A@?0A@A@PEthSocket@@8 @3351 NONAME ??_R1A@?0A@A@PFactoryBase@@8 @5682 NONAME ??_R1A@?0A@A@PFile@@8 @3352 NONAME ??_R1A@?0A@A@PFileInfo@@8 @3353 NONAME ??_R1A@?0A@A@PFilePath@@8 @3354 NONAME ??_R1A@?0A@A@PHashTable@@8 @3355 NONAME ??_R1A@?0A@A@PHostByAddr@@8 @3356 NONAME ??_R1A@?0A@A@PHostByName@@8 @3357 NONAME ??_R1A@?0A@A@PICMPDLL@@8 @3358 NONAME ??_R1A@?0A@A@PICMPSocket@@8 @3359 NONAME ??_R1A@?0A@A@PImageDLL@@8 @3360 NONAME ??_R1A@?0A@A@PIndirectChannel@@8 @3361 NONAME ??_R1A@?0A@A@PIntCondMutex@@8 @3362 NONAME ??_R1A@?0A@A@PIPCacheData@@8 @3363 NONAME ??_R1A@?0A@A@PIPCacheKey@@8 @3364 NONAME ??_R1A@?0A@A@PIPDatagramSocket@@8 @3365 NONAME ??_R1A@?0A@A@PIPSocket@@8 @3366 NONAME ??_R1A@?0A@A@PIPXSocket@@8 @3367 NONAME ??_R1A@?0A@A@PluginLoaderStartup@@8 @4878 NONAME ??_R1A@?0A@A@PMail@@8 @3368 NONAME ??_R1A@?0A@A@PMutex@@8 @3369 NONAME ??_R1A@?0A@A@PNotifier@@8 @3370 NONAME ??_R1A@?0A@A@PNotifierFunction@@8 @3371 NONAME ??_R1A@?0A@A@PObject@@8 @3372 NONAME ??_R1A@?0A@A@POrdinalKey@@8 @3373 NONAME ??_R1A@?0A@A@POrdinalToString@@8 @3374 NONAME ??_R1A@?0A@A@PPipeChannel@@8 @3375 NONAME ??_R1A@?0A@A@PPluginManager@@8 @3376 NONAME ??_R1A@?0A@A@PPluginModuleManager@@8 @4734 NONAME ??_R1A@?0A@A@PPluginService@@8 @3377 NONAME ??_R1A@?0A@A@PPluginServiceDescriptor@@8 @6301 NONAME ??_R1A@?0A@A@PPointer@@8 @4798 NONAME ??_R1A@?0A@A@PProcess@@8 @3378 NONAME ??_R1A@?0A@A@PProcessStartup@@8 @4879 NONAME ??_R1A@?0A@A@PQoS@@8 @3379 NONAME ??_R1A@?0A@A@PRASDLL@@8 @3380 NONAME ??_R1A@?0A@A@PReadWriteMutex@@8 @3381 NONAME ??_R1A@?0A@A@PRegularExpression@@8 @3382 NONAME ??_R1A@?0A@A@PRemoteConnection@@8 @3383 NONAME ??_R1A@?0A@A@PSafeCollection@@8 @3384 NONAME ??_R1A@?0A@A@PSafeObject@@8 @3385 NONAME ??_R1A@?0A@A@PSafePtrBase@@8 @3386 NONAME ??_R1A@?0A@A@PSemaphore@@8 @3387 NONAME ??_R1A@?0A@A@PSerialChannel@@8 @3388 NONAME ??_R1A@?0A@A@PServiceProcess@@8 @3389 NONAME ??_R1A@?0A@A@PSimpleThread@@8 @3390 NONAME ??_R1A@?0A@A@PSmartObject@@8 @3391 NONAME ??_R1A@?0A@A@PSmartPointer@@8 @3392 NONAME ??_R1A@?0A@A@PSmartPtrInspector@@8 @4799 NONAME ??_R1A@?0A@A@PSocket@@8 @3393 NONAME ??_R1A@?0A@A@PSortedStringList@@8 @3394 NONAME ??_R1A@?0A@A@PSound@@8 @3395 NONAME ??_R1A@?0A@A@PSoundChannel@@8 @3396 NONAME ??_R1A@?0A@A@PSoundChannelWin32@@8 @3397 NONAME ??_R1A@?0A@A@PSPXSocket@@8 @3398 NONAME ??_R1A@?0A@A@PStandardColourConverter@@8 @3399 NONAME ??_R1A@?0A@A@PString@@8 @3400 NONAME ??_R1A@?0A@A@PStringArray@@8 @3401 NONAME ??_R1A@?0A@A@PStringList@@8 @3402 NONAME ??_R1A@?0A@A@PStringSet@@8 @3403 NONAME ??_R1A@?0A@A@PStringStream@@8 @3404 NONAME ??_R1A@?0A@A@PStringToOrdinal@@8 @3405 NONAME ??_R1A@?0A@A@PStringToString@@8 @3406 NONAME ??_R1A@?0A@A@PStructuredFile@@8 @3407 NONAME ??_R1A@?0A@A@PSyncPoint@@8 @3408 NONAME ??_R1A@?0A@A@PSynonymColour@@8 @3409 NONAME ??_R1A@?0A@A@PSynonymColourRegistration@@8 @3410 NONAME ??_R1A@?0A@A@PSystemLog@@8 @3411 NONAME ??_R1A@?0A@A@PTCPSocket@@8 @3412 NONAME ??_R1A@?0A@A@PTextFile@@8 @3413 NONAME ??_R1A@?0A@A@PThread@@8 @3414 NONAME ??_R1A@?0A@A@PTime@@8 @3415 NONAME ??_R1A@?0A@A@PTimeInterval@@8 @3416 NONAME ??_R1A@?0A@A@PTimer@@8 @3417 NONAME ??_R1A@?0A@A@PTimerList@@8 @3418 NONAME ??_R1A@?0A@A@PUDPSocket@@8 @3419 NONAME ??_R1A@?0A@A@PVideoChannel@@8 @3420 NONAME ??_R1A@?0A@A@PVideoDevice@@8 @3421 NONAME ??_R1A@?0A@A@PVideoDeviceBitmap@@8 @3422 NONAME ??_R1A@?0A@A@PVideoInputDevice@@8 @3423 NONAME ??_R1A@?0A@A@PVideoInputDevice_FakeVideo@@8 @3424 NONAME ??_R1A@?0A@A@PVideoInputDevice_VideoForWindows@@8 @3425 NONAME ??_R1A@?0A@A@PVideoOutputDevice@@8 @3427 NONAME ??_R1A@?0A@A@PVideoOutputDeviceRGB@@8 @6302 NONAME ??_R1A@?0A@A@PVideoOutputDevice_NULLOutput@@8 @3428 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window@@8 @6303 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @6304 NONAME ??_R1A@?0A@A@PWaveBuffer@@8 @3429 NONAME ??_R1A@?0A@A@PWaveFormat@@8 @3430 NONAME ??_R1A@?0A@A@PWin32PacketBuffer@@8 @3431 NONAME ??_R1A@?0A@A@PWin32PacketDriver@@8 @3432 NONAME ??_R1A@?0A@A@PWin32PacketSYS@@8 @3433 NONAME ??_R1A@?0A@A@PWin32PacketVxD@@8 @3434 NONAME ??_R1A@?0A@A@PWin32SnmpLibrary@@8 @3435 NONAME ??_R1A@?0A@A@PWinQoS@@8 @3436 NONAME ??_R1A@?0A@A@PWinSock@@8 @3437 NONAME ??_R1A@?0A@A@P_BGR24_RGB24@@8 @6305 NONAME ??_R1A@?0A@A@P_BGR24_RGB24_Registration@@8 @6306 NONAME ??_R1A@?0A@A@P_BGR24_RGB32@@8 @6307 NONAME ??_R1A@?0A@A@P_BGR24_RGB32_Registration@@8 @6308 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P@@8 @3438 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P_Registration@@8 @3439 NONAME ??_R1A@?0A@A@P_BGR32_RGB24@@8 @6309 NONAME ??_R1A@?0A@A@P_BGR32_RGB24_Registration@@8 @6310 NONAME ??_R1A@?0A@A@P_BGR32_RGB32@@8 @6311 NONAME ??_R1A@?0A@A@P_BGR32_RGB32_Registration@@8 @6312 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P@@8 @3440 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P_Registration@@8 @3441 NONAME ??_R1A@?0A@A@P_Grey_YUV420P@@8 @3444 NONAME ??_R1A@?0A@A@P_Grey_YUV420P_Registration@@8 @3445 NONAME ??_R1A@?0A@A@P_RGB24_BGR24@@8 @6313 NONAME ??_R1A@?0A@A@P_RGB24_BGR24_Registration@@8 @6314 NONAME ??_R1A@?0A@A@P_RGB24_BGR32@@8 @6315 NONAME ??_R1A@?0A@A@P_RGB24_BGR32_Registration@@8 @6316 NONAME ??_R1A@?0A@A@P_RGB24_RGB32@@8 @3448 NONAME ??_R1A@?0A@A@P_RGB24_RGB32_Registration@@8 @3449 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P@@8 @3450 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P_Registration@@8 @3451 NONAME ??_R1A@?0A@A@P_RGB32_BGR24@@8 @6317 NONAME ??_R1A@?0A@A@P_RGB32_BGR24_Registration@@8 @6318 NONAME ??_R1A@?0A@A@P_RGB32_BGR32@@8 @6319 NONAME ??_R1A@?0A@A@P_RGB32_BGR32_Registration@@8 @6320 NONAME ??_R1A@?0A@A@P_RGB32_RGB24@@8 @3454 NONAME ??_R1A@?0A@A@P_RGB32_RGB24_Registration@@8 @3455 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P@@8 @3456 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P_Registration@@8 @3457 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24@@8 @6144 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24_Registration@@8 @6145 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P@@8 @6321 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P_Registration@@8 @6322 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P@@8 @3458 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P_Registration@@8 @3459 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P@@8 @3460 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P_Registration@@8 @3461 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P@@8 @3462 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P_Registration@@8 @3463 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24@@8 @3464 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24_Registration@@8 @3467 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32@@8 @3468 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32_Registration@@8 @3469 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24@@8 @3470 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24_Registration@@8 @3473 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32@@8 @3474 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32_Registration@@8 @3477 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P@@8 @3478 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P_Registration@@8 @3479 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P@@8 @3480 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P_Registration@@8 @3481 NONAME ??_R1A@?0A@A@P_YUV422_YUV422@@8 @3482 NONAME ??_R1A@?0A@A@P_YUV422_YUV422_Registration@@8 @3483 NONAME ??_R1A@?0A@A@RouteEntry@PIPSocket@@8 @3484 NONAME ??_R1A@?0A@A@SelectList@PSocket@@8 @3485 NONAME ??_R1A@?0A@A@ServiceManager@@8 @3486 NONAME ??_R1A@?0A@A@streambuf@@8 @3487 NONAME ??_R1A@?0A@A@Table@PHashTable@@8 @3488 NONAME ??_R1A@?0A@A@Win95_ServiceManager@@8 @3489 NONAME ??_R1A@?0A@A@WinSNMPLoader@@8 @5440 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @5948 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @5949 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @5950 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5951 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @5683 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @5952 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @5953 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @5954 NONAME ??_R1A@A@3BA@ios@@8 @3490 NONAME ??_R1A@BE@3BA@ios@@8 @3491 NONAME ??_R1BA@?0A@A@ostream@@8 @3492 NONAME ??_R1BE@?0A@A@iostream@@8 @3493 NONAME ??_R1BE@?0A@A@istream@@8 @3494 NONAME ??_R1CA@?0A@A@ostream@@8 @3495 NONAME ??_R2?$PArray@VPString@@@@8 @3496 NONAME ??_R2?$PArray@VPWaveBuffer@@@@8 @3497 NONAME ??_R2?$PArray@VPWin32PacketBuffer@@@@8 @3498 NONAME ??_R2?$PBaseArray@D@@8 @3499 NONAME ??_R2?$PBaseArray@E@@8 @3500 NONAME ??_R2?$PBaseArray@F@@8 @3501 NONAME ??_R2?$PBaseArray@G@@8 @3502 NONAME ??_R2?$PBaseArray@H@@8 @3503 NONAME ??_R2?$PBaseArray@I@@8 @3504 NONAME ??_R2?$PBaseArray@J@@8 @3505 NONAME ??_R2?$PBaseArray@K@@8 @3506 NONAME ??_R2?$PBaseArray@PAVPObject@@@@8 @3507 NONAME ??_R2?$PDevicePluginAdapter@VPSoundChannel@@@@8 @5955 NONAME ??_R2?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @5956 NONAME ??_R2?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @5957 NONAME ??_R2?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3508 NONAME ??_R2?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3509 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @3510 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @4800 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @3511 NONAME ??_R2?$PDictionary@VPString@@VPDynaLink@@@@8 @4735 NONAME ??_R2?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5958 NONAME ??_R2?$PFactory@VPPluginModuleManager@@VPString@@@@8 @5684 NONAME ??_R2?$PFactory@VPProcessStartup@@VPString@@@@8 @5685 NONAME ??_R2?$PFactory@VPSoundChannel@@VPString@@@@8 @5959 NONAME ??_R2?$PFactory@VPVideoInputDevice@@VPString@@@@8 @5960 NONAME ??_R2?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @5961 NONAME ??_R2?$PList@VInterfaceEntry@PIPSocket@@@@8 @6323 NONAME ??_R2?$PList@VPDynaLink@@@@8 @3512 NONAME ??_R2?$PList@VPNotifier@@@@8 @3513 NONAME ??_R2?$PList@VPPluginService@@@@8 @3514 NONAME ??_R2?$PList@VPSafeObject@@@@8 @5962 NONAME ??_R2?$PList@VPSocket@@@@8 @3515 NONAME ??_R2?$PList@VPString@@@@8 @5120 NONAME ??_R2?$PList@VPThread@@@@8 @3517 NONAME ??_R2?$PList@VPTimer@@@@8 @3518 NONAME ??_R2?$PScalarArray@F@@8 @3519 NONAME ??_R2?$PScalarArray@G@@8 @3520 NONAME ??_R2?$PScalarArray@H@@8 @3521 NONAME ??_R2?$PScalarArray@I@@8 @3522 NONAME ??_R2?$PScalarArray@J@@8 @3523 NONAME ??_R2?$PScalarArray@K@@8 @3524 NONAME ??_R2?$PSet@VPString@@@@8 @3525 NONAME ??_R2?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @6324 NONAME ??_R2?$PStringDictionary@VPString@@@@8 @6325 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @6326 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @6327 NONAME ??_R2?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @6328 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5963 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5964 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5965 NONAME ??_R2?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @5686 NONAME ??_R2?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @5687 NONAME ??_R2Address@PIPSocket@@8 @3527 NONAME ??_R2Buffer@PDebugStream@@8 @3528 NONAME ??_R2Buffer@PStringStream@@8 @3529 NONAME ??_R2Buffer@PSystemLog@@8 @3530 NONAME ??_R2CMCDLL@PMail@@8 @3531 NONAME ??_R2DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @3532 NONAME ??_R2HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @6329 NONAME ??_R2HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @6330 NONAME ??_R2HouseKeepingThread@PProcess@@8 @3533 NONAME ??_R2InterfaceEntry@PIPSocket@@8 @3534 NONAME ??_R2MAPIDLL@PMail@@8 @3535 NONAME ??_R2Nest@PReadWriteMutex@@8 @3536 NONAME ??_R2NT_ServiceManager@@8 @3537 NONAME ??_R2ofstream@@8 @3538 NONAME ??_R2PAbstractArray@@8 @3539 NONAME ??_R2PAbstractDictionary@@8 @3540 NONAME ??_R2PAbstractList@@8 @3541 NONAME ??_R2PAbstractSet@@8 @3542 NONAME ??_R2PAbstractSortedList@@8 @3543 NONAME ??_R2PArgList@@8 @3544 NONAME ??_R2PArrayObjects@@8 @3545 NONAME ??_R2PBitArray@@8 @3546 NONAME ??_R2PBYTEArray@@8 @3547 NONAME ??_R2PCaselessString@@8 @3548 NONAME ??_R2PChannel@@8 @3549 NONAME ??_R2PChannelStreamBuffer@@8 @3550 NONAME ??_R2PCharArray@@8 @3551 NONAME ??_R2PCollection@@8 @3552 NONAME ??_R2PColourConverter@@8 @3553 NONAME ??_R2PColourConverterRegistration@@8 @3554 NONAME ??_R2PCondMutex@@8 @5125 NONAME ??_R2PConfig@@8 @3555 NONAME ??_R2PConfigArgs@@8 @3556 NONAME ??_R2PConsoleChannel@@8 @3557 NONAME ??_R2PContainer@@8 @3558 NONAME ??_R2PCriticalSection@@8 @4627 NONAME ??_R2PDebugStream@@8 @3559 NONAME ??_R2PDevicePluginAdapterBase@@8 @5966 NONAME ??_R2PDirectory@@8 @3560 NONAME ??_R2PDynaLink@@8 @3561 NONAME ??_R2PEthSocket@@8 @3562 NONAME ??_R2PFactoryBase@@8 @5688 NONAME ??_R2PFile@@8 @3563 NONAME ??_R2PFileInfo@@8 @3564 NONAME ??_R2PFilePath@@8 @3565 NONAME ??_R2PHashTable@@8 @3566 NONAME ??_R2PHostByAddr@@8 @3567 NONAME ??_R2PHostByName@@8 @3568 NONAME ??_R2PICMPDLL@@8 @3569 NONAME ??_R2PICMPSocket@@8 @3570 NONAME ??_R2PImageDLL@@8 @3571 NONAME ??_R2PIndirectChannel@@8 @3572 NONAME ??_R2PIntCondMutex@@8 @3573 NONAME ??_R2PIPCacheData@@8 @3574 NONAME ??_R2PIPCacheKey@@8 @3575 NONAME ??_R2PIPDatagramSocket@@8 @3576 NONAME ??_R2PIPSocket@@8 @3577 NONAME ??_R2PIPXSocket@@8 @3578 NONAME ??_R2PluginLoaderStartup@@8 @4880 NONAME ??_R2PMail@@8 @3579 NONAME ??_R2PMutex@@8 @3580 NONAME ??_R2PNotifier@@8 @3581 NONAME ??_R2PNotifierFunction@@8 @3582 NONAME ??_R2PObject@@8 @3583 NONAME ??_R2POrdinalKey@@8 @3584 NONAME ??_R2POrdinalToString@@8 @3585 NONAME ??_R2PPipeChannel@@8 @3586 NONAME ??_R2PPluginManager@@8 @3587 NONAME ??_R2PPluginModuleManager@@8 @4737 NONAME ??_R2PPluginService@@8 @3588 NONAME ??_R2PPluginServiceDescriptor@@8 @6331 NONAME ??_R2PPointer@@8 @4801 NONAME ??_R2PProcess@@8 @3589 NONAME ??_R2PProcessStartup@@8 @5126 NONAME ??_R2PQoS@@8 @3590 NONAME ??_R2PRASDLL@@8 @3591 NONAME ??_R2PReadWriteMutex@@8 @3592 NONAME ??_R2PRegularExpression@@8 @3593 NONAME ??_R2PRemoteConnection@@8 @3594 NONAME ??_R2PSafeCollection@@8 @3595 NONAME ??_R2PSafeObject@@8 @3596 NONAME ??_R2PSafePtrBase@@8 @3597 NONAME ??_R2PSemaphore@@8 @3598 NONAME ??_R2PSerialChannel@@8 @3599 NONAME ??_R2PServiceProcess@@8 @3600 NONAME ??_R2PSimpleThread@@8 @3601 NONAME ??_R2PSmartPointer@@8 @3602 NONAME ??_R2PSmartPtrInspector@@8 @4802 NONAME ??_R2PSocket@@8 @3603 NONAME ??_R2PSortedStringList@@8 @3604 NONAME ??_R2PSound@@8 @3605 NONAME ??_R2PSoundChannel@@8 @3606 NONAME ??_R2PSoundChannelWin32@@8 @3607 NONAME ??_R2PSPXSocket@@8 @3608 NONAME ??_R2PString@@8 @3609 NONAME ??_R2PStringArray@@8 @3610 NONAME ??_R2PStringList@@8 @3611 NONAME ??_R2PStringSet@@8 @3612 NONAME ??_R2PStringStream@@8 @3613 NONAME ??_R2PStringToOrdinal@@8 @3614 NONAME ??_R2PStringToString@@8 @3615 NONAME ??_R2PStructuredFile@@8 @3616 NONAME ??_R2PSyncPoint@@8 @3617 NONAME ??_R2PSynonymColour@@8 @3618 NONAME ??_R2PSynonymColourRegistration@@8 @3619 NONAME ??_R2PSystemLog@@8 @3620 NONAME ??_R2PTCPSocket@@8 @3621 NONAME ??_R2PTextFile@@8 @3622 NONAME ??_R2PThread@@8 @3623 NONAME ??_R2PTime@@8 @3624 NONAME ??_R2PTimeInterval@@8 @3625 NONAME ??_R2PTimer@@8 @3626 NONAME ??_R2PTimerList@@8 @3627 NONAME ??_R2PUDPSocket@@8 @3628 NONAME ??_R2PVideoChannel@@8 @3629 NONAME ??_R2PVideoDevice@@8 @3630 NONAME ??_R2PVideoDeviceBitmap@@8 @3631 NONAME ??_R2PVideoInputDevice@@8 @3632 NONAME ??_R2PVideoInputDevice_FakeVideo@@8 @3633 NONAME ??_R2PVideoInputDevice_VideoForWindows@@8 @3634 NONAME ??_R2PVideoOutputDevice@@8 @3636 NONAME ??_R2PVideoOutputDeviceRGB@@8 @6332 NONAME ??_R2PVideoOutputDevice_NULLOutput@@8 @3637 NONAME ??_R2PVideoOutputDevice_Window@@8 @6333 NONAME ??_R2PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @6334 NONAME ??_R2PWaveBuffer@@8 @3638 NONAME ??_R2PWaveFormat@@8 @3639 NONAME ??_R2PWin32PacketBuffer@@8 @3640 NONAME ??_R2PWin32PacketDriver@@8 @3641 NONAME ??_R2PWin32PacketSYS@@8 @3642 NONAME ??_R2PWin32PacketVxD@@8 @3643 NONAME ??_R2PWin32SnmpLibrary@@8 @3644 NONAME ??_R2PWinQoS@@8 @3645 NONAME ??_R2PWinSock@@8 @3646 NONAME ??_R2P_BGR24_RGB24@@8 @6335 NONAME ??_R2P_BGR24_RGB24_Registration@@8 @6336 NONAME ??_R2P_BGR24_RGB32@@8 @6337 NONAME ??_R2P_BGR24_RGB32_Registration@@8 @6338 NONAME ??_R2P_BGR24_YUV420P@@8 @3647 NONAME ??_R2P_BGR24_YUV420P_Registration@@8 @3648 NONAME ??_R2P_BGR32_RGB24@@8 @6339 NONAME ??_R2P_BGR32_RGB24_Registration@@8 @6340 NONAME ??_R2P_BGR32_RGB32@@8 @6341 NONAME ??_R2P_BGR32_RGB32_Registration@@8 @6342 NONAME ??_R2P_BGR32_YUV420P@@8 @3649 NONAME ??_R2P_BGR32_YUV420P_Registration@@8 @3650 NONAME ??_R2P_Grey_YUV420P@@8 @3653 NONAME ??_R2P_Grey_YUV420P_Registration@@8 @3654 NONAME ??_R2P_RGB24_BGR24@@8 @6343 NONAME ??_R2P_RGB24_BGR24_Registration@@8 @6344 NONAME ??_R2P_RGB24_BGR32@@8 @6345 NONAME ??_R2P_RGB24_BGR32_Registration@@8 @6346 NONAME ??_R2P_RGB24_RGB32@@8 @3657 NONAME ??_R2P_RGB24_RGB32_Registration@@8 @3658 NONAME ??_R2P_RGB24_YUV420P@@8 @3659 NONAME ??_R2P_RGB24_YUV420P_Registration@@8 @3660 NONAME ??_R2P_RGB32_BGR24@@8 @6347 NONAME ??_R2P_RGB32_BGR24_Registration@@8 @6348 NONAME ??_R2P_RGB32_BGR32@@8 @6349 NONAME ??_R2P_RGB32_BGR32_Registration@@8 @6350 NONAME ??_R2P_RGB32_RGB24@@8 @3663 NONAME ??_R2P_RGB32_RGB24_Registration@@8 @3664 NONAME ??_R2P_RGB32_YUV420P@@8 @3665 NONAME ??_R2P_RGB32_YUV420P_Registration@@8 @3666 NONAME ??_R2P_SBGGR8_RGB24@@8 @6146 NONAME ??_R2P_SBGGR8_RGB24_Registration@@8 @6147 NONAME ??_R2P_SBGGR8_YUV420P@@8 @6351 NONAME ??_R2P_SBGGR8_YUV420P_Registration@@8 @6352 NONAME ??_R2P_UYV444_YUV420P@@8 @3667 NONAME ??_R2P_UYV444_YUV420P_Registration@@8 @3668 NONAME ??_R2P_UYVY422_YUV420P@@8 @3669 NONAME ??_R2P_UYVY422_YUV420P_Registration@@8 @3670 NONAME ??_R2P_YUV411P_YUV420P@@8 @3671 NONAME ??_R2P_YUV411P_YUV420P_Registration@@8 @3672 NONAME ??_R2P_YUV420P_BGR24@@8 @3673 NONAME ??_R2P_YUV420P_BGR24_Registration@@8 @3676 NONAME ??_R2P_YUV420P_BGR32@@8 @3677 NONAME ??_R2P_YUV420P_BGR32_Registration@@8 @3678 NONAME ??_R2P_YUV420P_RGB24@@8 @3679 NONAME ??_R2P_YUV420P_RGB24_Registration@@8 @3682 NONAME ??_R2P_YUV420P_RGB32@@8 @3683 NONAME ??_R2P_YUV420P_RGB32_Registration@@8 @3686 NONAME ??_R2P_YUV420P_YUV411P@@8 @3687 NONAME ??_R2P_YUV420P_YUV411P_Registration@@8 @3688 NONAME ??_R2P_YUV422_YUV420P@@8 @3689 NONAME ??_R2P_YUV422_YUV420P_Registration@@8 @3690 NONAME ??_R2P_YUV422_YUV422@@8 @3691 NONAME ??_R2P_YUV422_YUV422_Registration@@8 @3692 NONAME ??_R2RouteEntry@PIPSocket@@8 @3693 NONAME ??_R2SelectList@PSocket@@8 @3694 NONAME ??_R2Table@PHashTable@@8 @3695 NONAME ??_R2Win95_ServiceManager@@8 @3696 NONAME ??_R2WinSNMPLoader@@8 @5441 NONAME ??_R2Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @5967 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @5968 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @5969 NONAME ??_R2WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5970 NONAME ??_R2WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @5689 NONAME ??_R2WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @5971 NONAME ??_R2WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @5972 NONAME ??_R2WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @5973 NONAME ??_R3?$PArray@VPString@@@@8 @3697 NONAME ??_R3?$PArray@VPWaveBuffer@@@@8 @3698 NONAME ??_R3?$PArray@VPWin32PacketBuffer@@@@8 @3699 NONAME ??_R3?$PBaseArray@D@@8 @3700 NONAME ??_R3?$PBaseArray@E@@8 @3701 NONAME ??_R3?$PBaseArray@F@@8 @3702 NONAME ??_R3?$PBaseArray@G@@8 @3703 NONAME ??_R3?$PBaseArray@H@@8 @3704 NONAME ??_R3?$PBaseArray@I@@8 @3705 NONAME ??_R3?$PBaseArray@J@@8 @3706 NONAME ??_R3?$PBaseArray@K@@8 @3707 NONAME ??_R3?$PBaseArray@PAVPObject@@@@8 @3708 NONAME ??_R3?$PDevicePluginAdapter@VPSoundChannel@@@@8 @5974 NONAME ??_R3?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @5975 NONAME ??_R3?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @5976 NONAME ??_R3?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3709 NONAME ??_R3?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3710 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @3711 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @4803 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @3712 NONAME ??_R3?$PDictionary@VPString@@VPDynaLink@@@@8 @4738 NONAME ??_R3?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5977 NONAME ??_R3?$PFactory@VPPluginModuleManager@@VPString@@@@8 @5690 NONAME ??_R3?$PFactory@VPProcessStartup@@VPString@@@@8 @5691 NONAME ??_R3?$PFactory@VPSoundChannel@@VPString@@@@8 @5978 NONAME ??_R3?$PFactory@VPVideoInputDevice@@VPString@@@@8 @5979 NONAME ??_R3?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @5980 NONAME ??_R3?$PList@VInterfaceEntry@PIPSocket@@@@8 @6353 NONAME ??_R3?$PList@VPDynaLink@@@@8 @3713 NONAME ??_R3?$PList@VPNotifier@@@@8 @3714 NONAME ??_R3?$PList@VPPluginService@@@@8 @3715 NONAME ??_R3?$PList@VPSafeObject@@@@8 @5981 NONAME ??_R3?$PList@VPSocket@@@@8 @3716 NONAME ??_R3?$PList@VPString@@@@8 @5129 NONAME ??_R3?$PList@VPThread@@@@8 @3718 NONAME ??_R3?$PList@VPTimer@@@@8 @3719 NONAME ??_R3?$PScalarArray@F@@8 @3720 NONAME ??_R3?$PScalarArray@G@@8 @3721 NONAME ??_R3?$PScalarArray@H@@8 @3722 NONAME ??_R3?$PScalarArray@I@@8 @3723 NONAME ??_R3?$PScalarArray@J@@8 @3724 NONAME ??_R3?$PScalarArray@K@@8 @3725 NONAME ??_R3?$PSet@VPString@@@@8 @3726 NONAME ??_R3?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @6354 NONAME ??_R3?$PStringDictionary@VPString@@@@8 @6355 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @6356 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @6357 NONAME ??_R3?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @6358 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5982 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5983 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5984 NONAME ??_R3?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @5692 NONAME ??_R3?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @5693 NONAME ??_R3Address@PIPSocket@@8 @3728 NONAME ??_R3Buffer@PDebugStream@@8 @3729 NONAME ??_R3Buffer@PStringStream@@8 @3730 NONAME ??_R3Buffer@PSystemLog@@8 @3731 NONAME ??_R3CMCDLL@PMail@@8 @3732 NONAME ??_R3DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @3733 NONAME ??_R3HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @6359 NONAME ??_R3HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @6360 NONAME ??_R3HouseKeepingThread@PProcess@@8 @3734 NONAME ??_R3InterfaceEntry@PIPSocket@@8 @3735 NONAME ??_R3MAPIDLL@PMail@@8 @3736 NONAME ??_R3Nest@PReadWriteMutex@@8 @3737 NONAME ??_R3NT_ServiceManager@@8 @3738 NONAME ??_R3ofstream@@8 @3739 NONAME ??_R3PAbstractArray@@8 @3740 NONAME ??_R3PAbstractDictionary@@8 @3741 NONAME ??_R3PAbstractList@@8 @3742 NONAME ??_R3PAbstractSet@@8 @3743 NONAME ??_R3PAbstractSortedList@@8 @3744 NONAME ??_R3PArgList@@8 @3745 NONAME ??_R3PArrayObjects@@8 @3746 NONAME ??_R3PBitArray@@8 @3747 NONAME ??_R3PBYTEArray@@8 @3748 NONAME ??_R3PCaselessString@@8 @3749 NONAME ??_R3PChannel@@8 @3750 NONAME ??_R3PChannelStreamBuffer@@8 @3751 NONAME ??_R3PCharArray@@8 @3752 NONAME ??_R3PCollection@@8 @3753 NONAME ??_R3PColourConverter@@8 @3754 NONAME ??_R3PColourConverterRegistration@@8 @3755 NONAME ??_R3PCondMutex@@8 @5134 NONAME ??_R3PConfig@@8 @3756 NONAME ??_R3PConfigArgs@@8 @3757 NONAME ??_R3PConsoleChannel@@8 @3758 NONAME ??_R3PContainer@@8 @3759 NONAME ??_R3PCriticalSection@@8 @4628 NONAME ??_R3PDebugStream@@8 @3760 NONAME ??_R3PDevicePluginAdapterBase@@8 @5985 NONAME ??_R3PDirectory@@8 @3761 NONAME ??_R3PDynaLink@@8 @3762 NONAME ??_R3PEthSocket@@8 @3763 NONAME ??_R3PFactoryBase@@8 @5694 NONAME ??_R3PFile@@8 @3764 NONAME ??_R3PFileInfo@@8 @3765 NONAME ??_R3PFilePath@@8 @3766 NONAME ??_R3PHashTable@@8 @3767 NONAME ??_R3PHostByAddr@@8 @3768 NONAME ??_R3PHostByName@@8 @3769 NONAME ??_R3PICMPDLL@@8 @3770 NONAME ??_R3PICMPSocket@@8 @3771 NONAME ??_R3PImageDLL@@8 @3772 NONAME ??_R3PIndirectChannel@@8 @3773 NONAME ??_R3PIntCondMutex@@8 @3774 NONAME ??_R3PIPCacheData@@8 @3775 NONAME ??_R3PIPCacheKey@@8 @3776 NONAME ??_R3PIPDatagramSocket@@8 @3777 NONAME ??_R3PIPSocket@@8 @3778 NONAME ??_R3PIPXSocket@@8 @3779 NONAME ??_R3PluginLoaderStartup@@8 @4881 NONAME ??_R3PMail@@8 @3780 NONAME ??_R3PMutex@@8 @3781 NONAME ??_R3PNotifier@@8 @3782 NONAME ??_R3PNotifierFunction@@8 @3783 NONAME ??_R3PObject@@8 @3784 NONAME ??_R3POrdinalKey@@8 @3785 NONAME ??_R3POrdinalToString@@8 @3786 NONAME ??_R3PPipeChannel@@8 @3787 NONAME ??_R3PPluginManager@@8 @3788 NONAME ??_R3PPluginModuleManager@@8 @4740 NONAME ??_R3PPluginService@@8 @3789 NONAME ??_R3PPluginServiceDescriptor@@8 @6361 NONAME ??_R3PPointer@@8 @4804 NONAME ??_R3PProcess@@8 @3790 NONAME ??_R3PProcessStartup@@8 @5135 NONAME ??_R3PQoS@@8 @3791 NONAME ??_R3PRASDLL@@8 @3792 NONAME ??_R3PReadWriteMutex@@8 @3793 NONAME ??_R3PRegularExpression@@8 @3794 NONAME ??_R3PRemoteConnection@@8 @3795 NONAME ??_R3PSafeCollection@@8 @3796 NONAME ??_R3PSafeObject@@8 @3797 NONAME ??_R3PSafePtrBase@@8 @3798 NONAME ??_R3PSemaphore@@8 @3799 NONAME ??_R3PSerialChannel@@8 @3800 NONAME ??_R3PServiceProcess@@8 @3801 NONAME ??_R3PSimpleThread@@8 @3802 NONAME ??_R3PSmartPointer@@8 @3803 NONAME ??_R3PSmartPtrInspector@@8 @4805 NONAME ??_R3PSocket@@8 @3804 NONAME ??_R3PSortedStringList@@8 @3805 NONAME ??_R3PSound@@8 @3806 NONAME ??_R3PSoundChannel@@8 @3807 NONAME ??_R3PSoundChannelWin32@@8 @3808 NONAME ??_R3PSPXSocket@@8 @3809 NONAME ??_R3PString@@8 @3810 NONAME ??_R3PStringArray@@8 @3811 NONAME ??_R3PStringList@@8 @3812 NONAME ??_R3PStringSet@@8 @3813 NONAME ??_R3PStringStream@@8 @3814 NONAME ??_R3PStringToOrdinal@@8 @3815 NONAME ??_R3PStringToString@@8 @3816 NONAME ??_R3PStructuredFile@@8 @3817 NONAME ??_R3PSyncPoint@@8 @3818 NONAME ??_R3PSynonymColour@@8 @3819 NONAME ??_R3PSynonymColourRegistration@@8 @3820 NONAME ??_R3PSystemLog@@8 @3821 NONAME ??_R3PTCPSocket@@8 @3822 NONAME ??_R3PTextFile@@8 @3823 NONAME ??_R3PThread@@8 @3824 NONAME ??_R3PTime@@8 @3825 NONAME ??_R3PTimeInterval@@8 @3826 NONAME ??_R3PTimer@@8 @3827 NONAME ??_R3PTimerList@@8 @3828 NONAME ??_R3PUDPSocket@@8 @3829 NONAME ??_R3PVideoChannel@@8 @3830 NONAME ??_R3PVideoDevice@@8 @3831 NONAME ??_R3PVideoDeviceBitmap@@8 @3832 NONAME ??_R3PVideoInputDevice@@8 @3833 NONAME ??_R3PVideoInputDevice_FakeVideo@@8 @3834 NONAME ??_R3PVideoInputDevice_VideoForWindows@@8 @3835 NONAME ??_R3PVideoOutputDevice@@8 @3837 NONAME ??_R3PVideoOutputDeviceRGB@@8 @6362 NONAME ??_R3PVideoOutputDevice_NULLOutput@@8 @3838 NONAME ??_R3PVideoOutputDevice_Window@@8 @6363 NONAME ??_R3PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @6364 NONAME ??_R3PWaveBuffer@@8 @3839 NONAME ??_R3PWaveFormat@@8 @3840 NONAME ??_R3PWin32PacketBuffer@@8 @3841 NONAME ??_R3PWin32PacketDriver@@8 @3842 NONAME ??_R3PWin32PacketSYS@@8 @3843 NONAME ??_R3PWin32PacketVxD@@8 @3844 NONAME ??_R3PWin32SnmpLibrary@@8 @3845 NONAME ??_R3PWinQoS@@8 @3846 NONAME ??_R3PWinSock@@8 @3847 NONAME ??_R3P_BGR24_RGB24@@8 @6365 NONAME ??_R3P_BGR24_RGB24_Registration@@8 @6366 NONAME ??_R3P_BGR24_RGB32@@8 @6367 NONAME ??_R3P_BGR24_RGB32_Registration@@8 @6368 NONAME ??_R3P_BGR24_YUV420P@@8 @3848 NONAME ??_R3P_BGR24_YUV420P_Registration@@8 @3849 NONAME ??_R3P_BGR32_RGB24@@8 @6369 NONAME ??_R3P_BGR32_RGB24_Registration@@8 @6370 NONAME ??_R3P_BGR32_RGB32@@8 @6371 NONAME ??_R3P_BGR32_RGB32_Registration@@8 @6372 NONAME ??_R3P_BGR32_YUV420P@@8 @3850 NONAME ??_R3P_BGR32_YUV420P_Registration@@8 @3851 NONAME ??_R3P_Grey_YUV420P@@8 @3854 NONAME ??_R3P_Grey_YUV420P_Registration@@8 @3855 NONAME ??_R3P_RGB24_BGR24@@8 @6373 NONAME ??_R3P_RGB24_BGR24_Registration@@8 @6374 NONAME ??_R3P_RGB24_BGR32@@8 @6375 NONAME ??_R3P_RGB24_BGR32_Registration@@8 @6376 NONAME ??_R3P_RGB24_RGB32@@8 @3858 NONAME ??_R3P_RGB24_RGB32_Registration@@8 @3859 NONAME ??_R3P_RGB24_YUV420P@@8 @3860 NONAME ??_R3P_RGB24_YUV420P_Registration@@8 @3861 NONAME ??_R3P_RGB32_BGR24@@8 @6377 NONAME ??_R3P_RGB32_BGR24_Registration@@8 @6378 NONAME ??_R3P_RGB32_BGR32@@8 @6379 NONAME ??_R3P_RGB32_BGR32_Registration@@8 @6380 NONAME ??_R3P_RGB32_RGB24@@8 @3864 NONAME ??_R3P_RGB32_RGB24_Registration@@8 @3865 NONAME ??_R3P_RGB32_YUV420P@@8 @3866 NONAME ??_R3P_RGB32_YUV420P_Registration@@8 @3867 NONAME ??_R3P_SBGGR8_RGB24@@8 @6148 NONAME ??_R3P_SBGGR8_RGB24_Registration@@8 @6149 NONAME ??_R3P_SBGGR8_YUV420P@@8 @6381 NONAME ??_R3P_SBGGR8_YUV420P_Registration@@8 @6382 NONAME ??_R3P_UYV444_YUV420P@@8 @3868 NONAME ??_R3P_UYV444_YUV420P_Registration@@8 @3869 NONAME ??_R3P_UYVY422_YUV420P@@8 @3870 NONAME ??_R3P_UYVY422_YUV420P_Registration@@8 @3871 NONAME ??_R3P_YUV411P_YUV420P@@8 @3872 NONAME ??_R3P_YUV411P_YUV420P_Registration@@8 @3873 NONAME ??_R3P_YUV420P_BGR24@@8 @3874 NONAME ??_R3P_YUV420P_BGR24_Registration@@8 @3877 NONAME ??_R3P_YUV420P_BGR32@@8 @3878 NONAME ??_R3P_YUV420P_BGR32_Registration@@8 @3879 NONAME ??_R3P_YUV420P_RGB24@@8 @3880 NONAME ??_R3P_YUV420P_RGB24_Registration@@8 @3883 NONAME ??_R3P_YUV420P_RGB32@@8 @3884 NONAME ??_R3P_YUV420P_RGB32_Registration@@8 @3887 NONAME ??_R3P_YUV420P_YUV411P@@8 @3888 NONAME ??_R3P_YUV420P_YUV411P_Registration@@8 @3889 NONAME ??_R3P_YUV422_YUV420P@@8 @3890 NONAME ??_R3P_YUV422_YUV420P_Registration@@8 @3891 NONAME ??_R3P_YUV422_YUV422@@8 @3892 NONAME ??_R3P_YUV422_YUV422_Registration@@8 @3893 NONAME ??_R3RouteEntry@PIPSocket@@8 @3894 NONAME ??_R3SelectList@PSocket@@8 @3895 NONAME ??_R3Table@PHashTable@@8 @3896 NONAME ??_R3Win95_ServiceManager@@8 @3897 NONAME ??_R3WinSNMPLoader@@8 @5442 NONAME ??_R3Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @5986 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @5987 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @5988 NONAME ??_R3WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @5989 NONAME ??_R3WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @5695 NONAME ??_R3WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @5990 NONAME ??_R3WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @5991 NONAME ??_R3WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @5992 NONAME ??_R4?$PArray@VPString@@@@6B@ @3898 NONAME ??_R4?$PArray@VPWaveBuffer@@@@6B@ @3899 NONAME ??_R4?$PArray@VPWin32PacketBuffer@@@@6B@ @3900 NONAME ??_R4?$PBaseArray@D@@6B@ @3901 NONAME ??_R4?$PBaseArray@E@@6B@ @3902 NONAME ??_R4?$PBaseArray@F@@6B@ @3903 NONAME ??_R4?$PBaseArray@G@@6B@ @3904 NONAME ??_R4?$PBaseArray@H@@6B@ @3905 NONAME ??_R4?$PBaseArray@I@@6B@ @3906 NONAME ??_R4?$PBaseArray@J@@6B@ @3907 NONAME ??_R4?$PBaseArray@K@@6B@ @3908 NONAME ??_R4?$PBaseArray@PAVPObject@@@@6B@ @3909 NONAME ??_R4?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @5993 NONAME ??_R4?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @5994 NONAME ??_R4?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @5995 NONAME ??_R4?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @3910 NONAME ??_R4?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @3911 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @3912 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @4806 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @3913 NONAME ??_R4?$PDictionary@VPString@@VPDynaLink@@@@6B@ @4741 NONAME ??_R4?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @5996 NONAME ??_R4?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @5696 NONAME ??_R4?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5697 NONAME ??_R4?$PFactory@VPSoundChannel@@VPString@@@@6B@ @5997 NONAME ??_R4?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @5998 NONAME ??_R4?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @5999 NONAME ??_R4?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @6383 NONAME ??_R4?$PList@VPDynaLink@@@@6B@ @3914 NONAME ??_R4?$PList@VPNotifier@@@@6B@ @3915 NONAME ??_R4?$PList@VPPluginService@@@@6B@ @3916 NONAME ??_R4?$PList@VPSafeObject@@@@6B@ @6000 NONAME ??_R4?$PList@VPSocket@@@@6B@ @3917 NONAME ??_R4?$PList@VPString@@@@6B@ @5138 NONAME ??_R4?$PList@VPThread@@@@6B@ @3919 NONAME ??_R4?$PList@VPTimer@@@@6B@ @3920 NONAME ??_R4?$PScalarArray@F@@6B@ @3921 NONAME ??_R4?$PScalarArray@G@@6B@ @3922 NONAME ??_R4?$PScalarArray@H@@6B@ @3923 NONAME ??_R4?$PScalarArray@I@@6B@ @3924 NONAME ??_R4?$PScalarArray@J@@6B@ @3925 NONAME ??_R4?$PScalarArray@K@@6B@ @3926 NONAME ??_R4?$PSet@VPString@@@@6B@ @3927 NONAME ??_R4?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @6384 NONAME ??_R4?$PStringDictionary@VPString@@@@6B@ @6385 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @6386 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @6387 NONAME ??_R4?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @6388 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6001 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6002 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6003 NONAME ??_R4?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5698 NONAME ??_R4?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5699 NONAME ??_R4Address@PIPSocket@@6B@ @3929 NONAME ??_R4Buffer@PDebugStream@@6B@ @3930 NONAME ??_R4Buffer@PStringStream@@6B@ @3931 NONAME ??_R4Buffer@PSystemLog@@6B@ @3932 NONAME ??_R4CMCDLL@PMail@@6B@ @3933 NONAME ??_R4DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @3934 NONAME ??_R4HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @6389 NONAME ??_R4HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @6390 NONAME ??_R4HouseKeepingThread@PProcess@@6B@ @3935 NONAME ??_R4InterfaceEntry@PIPSocket@@6B@ @3936 NONAME ??_R4MAPIDLL@PMail@@6B@ @3937 NONAME ??_R4Nest@PReadWriteMutex@@6B@ @3938 NONAME ??_R4NT_ServiceManager@@6B@ @3939 NONAME ??_R4ofstream@@6B@ @3940 NONAME ??_R4PAbstractArray@@6B@ @3941 NONAME ??_R4PAbstractDictionary@@6B@ @3942 NONAME ??_R4PAbstractList@@6B@ @3943 NONAME ??_R4PAbstractSet@@6B@ @3944 NONAME ??_R4PAbstractSortedList@@6B@ @3945 NONAME ??_R4PArgList@@6B@ @3946 NONAME ??_R4PArrayObjects@@6B@ @3947 NONAME ??_R4PBitArray@@6B@ @3948 NONAME ??_R4PBYTEArray@@6B@ @3949 NONAME ??_R4PCaselessString@@6B@ @3950 NONAME ??_R4PChannel@@6Biostream@@@ @3951 NONAME ??_R4PChannel@@6BPObject@@@ @3952 NONAME ??_R4PChannelStreamBuffer@@6B@ @3953 NONAME ??_R4PCharArray@@6B@ @3954 NONAME ??_R4PCollection@@6B@ @3955 NONAME ??_R4PColourConverter@@6B@ @3956 NONAME ??_R4PColourConverterRegistration@@6B@ @3957 NONAME ??_R4PCondMutex@@6B@ @5143 NONAME ??_R4PConfig@@6B@ @3958 NONAME ??_R4PConfigArgs@@6B@ @3959 NONAME ??_R4PConsoleChannel@@6Biostream@@@ @3960 NONAME ??_R4PConsoleChannel@@6BPObject@@@ @3961 NONAME ??_R4PContainer@@6B@ @3962 NONAME ??_R4PCriticalSection@@6B@ @4629 NONAME ??_R4PDebugStream@@6B@ @3963 NONAME ??_R4PDevicePluginAdapterBase@@6B@ @6004 NONAME ??_R4PDirectory@@6B@ @3964 NONAME ??_R4PDynaLink@@6B@ @3965 NONAME ??_R4PEthSocket@@6Biostream@@@ @3966 NONAME ??_R4PEthSocket@@6BPObject@@@ @3967 NONAME ??_R4PFactoryBase@@6B@ @5700 NONAME ??_R4PFile@@6Biostream@@@ @3968 NONAME ??_R4PFile@@6BPObject@@@ @3969 NONAME ??_R4PFileInfo@@6B@ @3970 NONAME ??_R4PFilePath@@6B@ @3971 NONAME ??_R4PHashTable@@6B@ @3972 NONAME ??_R4PHostByAddr@@6B@ @3973 NONAME ??_R4PHostByName@@6B@ @3974 NONAME ??_R4PICMPDLL@@6B@ @3975 NONAME ??_R4PICMPSocket@@6Biostream@@@ @3976 NONAME ??_R4PICMPSocket@@6BPObject@@@ @3977 NONAME ??_R4PImageDLL@@6B@ @3978 NONAME ??_R4PIndirectChannel@@6Biostream@@@ @3979 NONAME ??_R4PIndirectChannel@@6BPObject@@@ @3980 NONAME ??_R4PIntCondMutex@@6B@ @3981 NONAME ??_R4PIPCacheData@@6B@ @3982 NONAME ??_R4PIPCacheKey@@6B@ @3983 NONAME ??_R4PIPDatagramSocket@@6Biostream@@@ @3984 NONAME ??_R4PIPDatagramSocket@@6BPObject@@@ @3985 NONAME ??_R4PIPSocket@@6Biostream@@@ @3986 NONAME ??_R4PIPSocket@@6BPObject@@@ @3987 NONAME ??_R4PIPXSocket@@6Biostream@@@ @3988 NONAME ??_R4PIPXSocket@@6BPObject@@@ @3989 NONAME ??_R4PluginLoaderStartup@@6B@ @4882 NONAME ??_R4PMail@@6B@ @3990 NONAME ??_R4PMutex@@6B@ @3991 NONAME ??_R4PNotifier@@6B@ @3992 NONAME ??_R4PNotifierFunction@@6B@ @3993 NONAME ??_R4PObject@@6B@ @3994 NONAME ??_R4POrdinalKey@@6B@ @3995 NONAME ??_R4POrdinalToString@@6B@ @3996 NONAME ??_R4PPipeChannel@@6Biostream@@@ @3997 NONAME ??_R4PPipeChannel@@6BPObject@@@ @3998 NONAME ??_R4PPluginManager@@6B@ @3999 NONAME ??_R4PPluginModuleManager@@6B@ @4743 NONAME ??_R4PPluginService@@6B@ @4000 NONAME ??_R4PPluginServiceDescriptor@@6B@ @6391 NONAME ??_R4PPointer@@6B@ @4807 NONAME ??_R4PProcess@@6B@ @4001 NONAME ??_R4PProcessStartup@@6B@ @5144 NONAME ??_R4PQoS@@6B@ @4002 NONAME ??_R4PRASDLL@@6B@ @4003 NONAME ??_R4PReadWriteMutex@@6B@ @4004 NONAME ??_R4PRegularExpression@@6B@ @4005 NONAME ??_R4PRemoteConnection@@6B@ @4006 NONAME ??_R4PSafeCollection@@6B@ @4007 NONAME ??_R4PSafeObject@@6B@ @4008 NONAME ??_R4PSafePtrBase@@6B@ @4009 NONAME ??_R4PSemaphore@@6B@ @4010 NONAME ??_R4PSerialChannel@@6Biostream@@@ @4011 NONAME ??_R4PSerialChannel@@6BPObject@@@ @4012 NONAME ??_R4PServiceProcess@@6B@ @4013 NONAME ??_R4PSimpleThread@@6B@ @4014 NONAME ??_R4PSmartPointer@@6B@ @4015 NONAME ??_R4PSmartPtrInspector@@6B@ @4808 NONAME ??_R4PSocket@@6Biostream@@@ @4016 NONAME ??_R4PSocket@@6BPObject@@@ @4017 NONAME ??_R4PSortedStringList@@6B@ @4018 NONAME ??_R4PSound@@6B@ @4019 NONAME ??_R4PSoundChannel@@6Biostream@@@ @4020 NONAME ??_R4PSoundChannel@@6BPObject@@@ @4021 NONAME ??_R4PSoundChannelWin32@@6Biostream@@@ @4022 NONAME ??_R4PSoundChannelWin32@@6BPObject@@@ @4023 NONAME ??_R4PSPXSocket@@6Biostream@@@ @4024 NONAME ??_R4PSPXSocket@@6BPObject@@@ @4025 NONAME ??_R4PString@@6B@ @4026 NONAME ??_R4PStringArray@@6B@ @4027 NONAME ??_R4PStringList@@6B@ @4028 NONAME ??_R4PStringSet@@6B@ @4029 NONAME ??_R4PStringStream@@6Biostream@@@ @4030 NONAME ??_R4PStringStream@@6BPString@@@ @4031 NONAME ??_R4PStringToOrdinal@@6B@ @4032 NONAME ??_R4PStringToString@@6B@ @4033 NONAME ??_R4PStructuredFile@@6Biostream@@@ @4034 NONAME ??_R4PStructuredFile@@6BPObject@@@ @4035 NONAME ??_R4PSyncPoint@@6B@ @4036 NONAME ??_R4PSynonymColour@@6B@ @4037 NONAME ??_R4PSynonymColourRegistration@@6B@ @4038 NONAME ??_R4PSystemLog@@6Biostream@@@ @4039 NONAME ??_R4PSystemLog@@6BPObject@@@ @4040 NONAME ??_R4PTCPSocket@@6Biostream@@@ @4041 NONAME ??_R4PTCPSocket@@6BPObject@@@ @4042 NONAME ??_R4PTextFile@@6Biostream@@@ @4043 NONAME ??_R4PTextFile@@6BPObject@@@ @4044 NONAME ??_R4PThread@@6B@ @4045 NONAME ??_R4PTime@@6B@ @4046 NONAME ??_R4PTimeInterval@@6B@ @4047 NONAME ??_R4PTimer@@6B@ @4048 NONAME ??_R4PTimerList@@6B@ @4049 NONAME ??_R4PUDPSocket@@6Biostream@@@ @4050 NONAME ??_R4PUDPSocket@@6BPObject@@@ @4051 NONAME ??_R4PVideoChannel@@6Biostream@@@ @4052 NONAME ??_R4PVideoChannel@@6BPObject@@@ @4053 NONAME ??_R4PVideoDevice@@6B@ @4054 NONAME ??_R4PVideoDeviceBitmap@@6B@ @4055 NONAME ??_R4PVideoInputDevice@@6B@ @4056 NONAME ??_R4PVideoInputDevice_FakeVideo@@6B@ @4057 NONAME ??_R4PVideoInputDevice_VideoForWindows@@6B@ @4058 NONAME ??_R4PVideoOutputDevice@@6B@ @4060 NONAME ??_R4PVideoOutputDeviceRGB@@6B@ @6392 NONAME ??_R4PVideoOutputDevice_NULLOutput@@6B@ @4061 NONAME ??_R4PVideoOutputDevice_Window@@6B@ @6393 NONAME ??_R4PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @6394 NONAME ??_R4PWaveBuffer@@6B@ @4062 NONAME ??_R4PWaveFormat@@6B@ @4063 NONAME ??_R4PWin32PacketBuffer@@6B@ @4064 NONAME ??_R4PWin32PacketDriver@@6B@ @4065 NONAME ??_R4PWin32PacketSYS@@6B@ @4066 NONAME ??_R4PWin32PacketVxD@@6B@ @4067 NONAME ??_R4PWin32SnmpLibrary@@6B@ @4068 NONAME ??_R4PWinQoS@@6B@ @4069 NONAME ??_R4PWinSock@@6Biostream@@@ @4070 NONAME ??_R4PWinSock@@6BPObject@@@ @4071 NONAME ??_R4P_BGR24_RGB24@@6B@ @6395 NONAME ??_R4P_BGR24_RGB24_Registration@@6B@ @6396 NONAME ??_R4P_BGR24_RGB32@@6B@ @6397 NONAME ??_R4P_BGR24_RGB32_Registration@@6B@ @6398 NONAME ??_R4P_BGR24_YUV420P@@6B@ @4072 NONAME ??_R4P_BGR24_YUV420P_Registration@@6B@ @4073 NONAME ??_R4P_BGR32_RGB24@@6B@ @6399 NONAME ??_R4P_BGR32_RGB24_Registration@@6B@ @6400 NONAME ??_R4P_BGR32_RGB32@@6B@ @6401 NONAME ??_R4P_BGR32_RGB32_Registration@@6B@ @6402 NONAME ??_R4P_BGR32_YUV420P@@6B@ @4074 NONAME ??_R4P_BGR32_YUV420P_Registration@@6B@ @4075 NONAME ??_R4P_Grey_YUV420P@@6B@ @4078 NONAME ??_R4P_Grey_YUV420P_Registration@@6B@ @4079 NONAME ??_R4P_RGB24_BGR24@@6B@ @6403 NONAME ??_R4P_RGB24_BGR24_Registration@@6B@ @6404 NONAME ??_R4P_RGB24_BGR32@@6B@ @6405 NONAME ??_R4P_RGB24_BGR32_Registration@@6B@ @6406 NONAME ??_R4P_RGB24_RGB32@@6B@ @4082 NONAME ??_R4P_RGB24_RGB32_Registration@@6B@ @4083 NONAME ??_R4P_RGB24_YUV420P@@6B@ @4084 NONAME ??_R4P_RGB24_YUV420P_Registration@@6B@ @4085 NONAME ??_R4P_RGB32_BGR24@@6B@ @6407 NONAME ??_R4P_RGB32_BGR24_Registration@@6B@ @6408 NONAME ??_R4P_RGB32_BGR32@@6B@ @6409 NONAME ??_R4P_RGB32_BGR32_Registration@@6B@ @6410 NONAME ??_R4P_RGB32_RGB24@@6B@ @4088 NONAME ??_R4P_RGB32_RGB24_Registration@@6B@ @4089 NONAME ??_R4P_RGB32_YUV420P@@6B@ @4090 NONAME ??_R4P_RGB32_YUV420P_Registration@@6B@ @4091 NONAME ??_R4P_SBGGR8_RGB24@@6B@ @6150 NONAME ??_R4P_SBGGR8_RGB24_Registration@@6B@ @6151 NONAME ??_R4P_SBGGR8_YUV420P@@6B@ @6411 NONAME ??_R4P_SBGGR8_YUV420P_Registration@@6B@ @6412 NONAME ??_R4P_UYV444_YUV420P@@6B@ @4092 NONAME ??_R4P_UYV444_YUV420P_Registration@@6B@ @4093 NONAME ??_R4P_UYVY422_YUV420P@@6B@ @4094 NONAME ??_R4P_UYVY422_YUV420P_Registration@@6B@ @4095 NONAME ??_R4P_YUV411P_YUV420P@@6B@ @4096 NONAME ??_R4P_YUV411P_YUV420P_Registration@@6B@ @4097 NONAME ??_R4P_YUV420P_BGR24@@6B@ @4098 NONAME ??_R4P_YUV420P_BGR24_Registration@@6B@ @4101 NONAME ??_R4P_YUV420P_BGR32@@6B@ @4102 NONAME ??_R4P_YUV420P_BGR32_Registration@@6B@ @4103 NONAME ??_R4P_YUV420P_RGB24@@6B@ @4104 NONAME ??_R4P_YUV420P_RGB24_Registration@@6B@ @4107 NONAME ??_R4P_YUV420P_RGB32@@6B@ @4108 NONAME ??_R4P_YUV420P_RGB32_Registration@@6B@ @4111 NONAME ??_R4P_YUV420P_YUV411P@@6B@ @4112 NONAME ??_R4P_YUV420P_YUV411P_Registration@@6B@ @4113 NONAME ??_R4P_YUV422_YUV420P@@6B@ @4114 NONAME ??_R4P_YUV422_YUV420P_Registration@@6B@ @4115 NONAME ??_R4P_YUV422_YUV422@@6B@ @4116 NONAME ??_R4P_YUV422_YUV422_Registration@@6B@ @4117 NONAME ??_R4RouteEntry@PIPSocket@@6B@ @4118 NONAME ??_R4SelectList@PSocket@@6B@ @4119 NONAME ??_R4Table@PHashTable@@6B@ @4120 NONAME ??_R4Win95_ServiceManager@@6B@ @4121 NONAME ??_R4WinSNMPLoader@@6B@ @5443 NONAME ??_R4Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @6005 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @6006 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6007 NONAME ??_R4WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6008 NONAME ??_R4WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @5701 NONAME ??_R4WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @6009 NONAME ??_R4WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @6010 NONAME ??_R4WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6011 NONAME ??_Sofstream@@6B@ @867 NONAME ??_U@YAPAXI@Z @5444 NONAME ??_V@YAXPAX@Z @5445 NONAME ?Abort@PSoundChannel@@UAEHXZ @2698 NONAME ?Abort@PSoundChannelWin32@@UAEHXZ @2699 NONAME ?AbortCommandString@PChannel@@QAEXXZ @4630 NONAME ?AbstractContains@PHashTable@@IBEHABVPObject@@@Z @4631 NONAME ?AbstractGetAt@PAbstractDictionary@@UBEPAVPObject@@ABV2@@Z @871 NONAME ?AbstractGetDataAt@PHashTable@@MBEAAVPObject@@H@Z @872 NONAME ?AbstractGetKeyAt@PHashTable@@MBEABVPObject@@H@Z @873 NONAME ?AbstractSetAt@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @874 NONAME ?Accept@PSocket@@UAEHAAV1@@Z @875 NONAME ?Accept@PSPXSocket@@UAEHAAVPSocket@@@Z @876 NONAME ?Accept@PTCPSocket@@UAEHAAVPSocket@@@Z @877 NONAME ?Access@PFile@@QAEHW4OpenMode@1@@Z @4632 NONAME ?Access@PFile@@SAHABVPFilePath@@W4OpenMode@1@@Z @878 NONAME ?Acknowledge@PSyncPointAck@@QAEXXZ @879 NONAME ?AddEntry@PIPCacheData@@QAEXPAUaddrinfo@@@Z @2928 NONAME ?AddNotifier@PPluginManager@@QAEXABVPNotifier@@H@Z @3037 NONAME ?allocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEPAPAVPPluginModuleManager@@IPBX@Z @5146 NONAME ?allocate@?$allocator@VPString@@@std@@QAEPAVPString@@IPBX@Z @5147 NONAME ?AllowDeleteObjects@PCollection@@QAEXH@Z @4633 NONAME ?Append@PAbstractDictionary@@EAEHPAVPObject@@@Z @880 NONAME ?Append@PAbstractList@@UAEHPAVPObject@@@Z @881 NONAME ?Append@PAbstractSet@@UAEHPAVPObject@@@Z @882 NONAME ?Append@PAbstractSortedList@@UAEHPAVPObject@@@Z @883 NONAME ?Append@PArrayObjects@@UAEHPAVPObject@@@Z @884 NONAME ?AppendElement@Table@PHashTable@@QAEHPAVPObject@@0@Z @885 NONAME ?AppendString@PSortedStringList@@QAEHABVPString@@@Z @4634 NONAME ?AppendString@PStringArray@@QAEHABVPString@@@Z @4635 NONAME ?AppendString@PStringList@@QAEHABVPString@@@Z @4636 NONAME ?ApplyFormat@PVideoDeviceBitmap@@QAEHPAUHWND__@@PBD@Z @6413 NONAME ?ApplyQoS@PUDPSocket@@MAEHXZ @2655 NONAME ?AreAllRecordBuffersFull@PSoundChannel@@UAEHXZ @2700 NONAME ?AreAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @2701 NONAME ?Ascend@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @888 NONAME ?AsInt64@PString@@QBE_JI@Z @889 NONAME ?AsInteger@PString@@QBEJI@Z @890 NONAME ?AsNumeric@PIPSocket@@SAIVAddress@1@@Z @6414 NONAME ?AsReal@PString@@QBENXZ @891 NONAME ?Assign@PSafePtrBase@@QAEXABV1@@Z @6415 NONAME ?Assign@PSafePtrBase@@QAEXABVPSafeCollection@@@Z @6416 NONAME ?Assign@PSafePtrBase@@QAEXH@Z @6417 NONAME ?Assign@PSafePtrBase@@QAEXPAVPSafeObject@@@Z @6418 NONAME ?AssignContents@PAbstractArray@@MAEXABVPContainer@@@Z @896 NONAME ?AssignContents@PAbstractList@@MAEXABVPContainer@@@Z @897 NONAME ?AssignContents@PAbstractSet@@MAEXABVPContainer@@@Z @898 NONAME ?AssignContents@PAbstractSortedList@@MAEXABVPContainer@@@Z @899 NONAME ?AssignContents@PArrayObjects@@MAEXABVPContainer@@@Z @900 NONAME ?AssignContents@PContainer@@MAEXABV1@@Z @901 NONAME ?AssignContents@PDirectory@@MAEXABVPContainer@@@Z @902 NONAME ?AssignContents@PFilePath@@MAEXABVPContainer@@@Z @903 NONAME ?AssignContents@PHashTable@@MAEXABVPContainer@@@Z @904 NONAME ?AssignContents@PStringStream@@MAEXABVPContainer@@@Z @905 NONAME ?AsString@Address@PIPSocket@@QBE?AVPString@@XZ @906 NONAME ?AsString@PTime@@QBE?AVPString@@ABV2@H@Z @907 NONAME ?AsString@PTime@@QBE?AVPString@@PBDH@Z @908 NONAME ?AsString@PTime@@QBE?AVPString@@W4TimeFormat@1@H@Z @909 NONAME ?AsString@PTimeInterval@@QBE?AVPString@@HW4Formats@1@H@Z @910 NONAME ?AsUCS2@PString@@QBE?AV?$PScalarArray@G@@XZ @911 NONAME ?AsUnsigned64@PString@@QBE_KI@Z @912 NONAME ?AsUnsigned@PString@@QBEKI@Z @913 NONAME ?Attach@PAbstractArray@@QAEXPBXH@Z @914 NONAME ?Attach@PBitArray@@QAEXPBXH@Z @915 NONAME ?AttachVideoPlayer@PVideoChannel@@UAEXPAVPVideoOutputDevice@@H@Z @916 NONAME ?AttachVideoReader@PVideoChannel@@UAEXPAVPVideoInputDevice@@H@Z @917 NONAME ?begin@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@2@XZ @5148 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@2@XZ @6013 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@2@XZ @5702 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@2@XZ @5703 NONAME ?begin@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@XZ @5151 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEPAVPString@@XZ @5152 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEPBVPString@@XZ @5153 NONAME ?begin@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@XZ @5704 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@XZ @4883 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6014 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @5705 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @5706 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6015 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6016 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6017 NONAME ?Begin@PTrace@@SAAAVostream@@IPBDH@Z @918 NONAME ?BeginRead@PWin32PacketSYS@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @919 NONAME ?BeginRead@PWin32PacketVxD@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @920 NONAME ?BeginWrite@PWin32PacketSYS@@UAEHPBXKAAVPWin32Overlapped@@@Z @921 NONAME ?BeginWrite@PWin32PacketVxD@@UAEHPBXKAAVPWin32Overlapped@@@Z @922 NONAME ?bestEffortDSCP@PQoS@@2DA @2656 NONAME ?BindInterface@PWin32PacketSYS@@UAEHABVPString@@@Z @923 NONAME ?BindInterface@PWin32PacketVxD@@UAEHABVPString@@@Z @924 NONAME ?bInitialized@?1??WspiapiLoad@@9@4@4HA @2929 NONAME ?Byte1@Address@PIPSocket@@QBEEXZ @925 NONAME ?Byte2@Address@PIPSocket@@QBEEXZ @926 NONAME ?Byte3@Address@PIPSocket@@QBEEXZ @927 NONAME ?Byte4@Address@PIPSocket@@QBEEXZ @928 NONAME ?CalculateFrameBytes@PVideoDevice@@SAIIIABVPString@@@Z @929 NONAME ?Call@DeleteObjectsTimeout_PNotifier@PSafeCollection@@UBEXAAVPObject@@H@Z @930 NONAME ?Call@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UBEXAAVPObject@@H@Z @6419 NONAME ?Call@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UBEXAAVPObject@@H@Z @6420 NONAME ?CallNotifier@PPluginManager@@IAEXAAVPDynaLink@@H@Z @3038 NONAME ?CanCaptureVideo@PVideoInputDevice@@UBEHXZ @931 NONAME ?CanCaptureVideo@PVideoOutputDevice@@UBEHXZ @932 NONAME ?CanReadAndWrite@PPipeChannel@@SAHXZ @933 NONAME ?CanTrace@PTrace@@SAHI@Z @934 NONAME ?Change@PDirectory@@QBEHXZ @4637 NONAME ?Change@PDirectory@@SAHABVPString@@@Z @935 NONAME ?CharToString@PConfigArgs@@IBE?AVPString@@D@Z @936 NONAME ?Class@?$PArray@VPString@@@@SAPBDXZ @5156 NONAME ?Class@?$PBaseArray@D@@SAPBDXZ @5157 NONAME ?Class@?$PBaseArray@H@@SAPBDXZ @5158 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@SAPBDXZ @5159 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPThread@@@@SAPBDXZ @5160 NONAME ?Class@?$PDictionary@VPString@@VPDynaLink@@@@SAPBDXZ @5161 NONAME ?Class@?$PList@VPDynaLink@@@@SAPBDXZ @5162 NONAME ?Class@?$PList@VPNotifier@@@@SAPBDXZ @5163 NONAME ?Class@?$PList@VPPluginService@@@@SAPBDXZ @5164 NONAME ?Class@?$PList@VPString@@@@SAPBDXZ @5165 NONAME ?Class@?$PList@VPThread@@@@SAPBDXZ @5166 NONAME ?Class@?$PList@VPTimer@@@@SAPBDXZ @5167 NONAME ?Class@?$PStringDictionary@VPString@@@@SAPBDXZ @6421 NONAME ?Class@Nest@PReadWriteMutex@@SAPBDXZ @5169 NONAME ?Class@PAbstractArray@@SAPBDXZ @5170 NONAME ?Class@PAbstractDictionary@@SAPBDXZ @5171 NONAME ?Class@PAbstractList@@SAPBDXZ @5172 NONAME ?Class@PArgList@@SAPBDXZ @5175 NONAME ?Class@PArrayObjects@@SAPBDXZ @5176 NONAME ?Class@PCaselessString@@SAPBDXZ @5179 NONAME ?Class@PCharArray@@SAPBDXZ @5181 NONAME ?Class@PCollection@@SAPBDXZ @5182 NONAME ?Class@PCondMutex@@SAPBDXZ @5183 NONAME ?Class@PConfigArgs@@SAPBDXZ @5185 NONAME ?Class@PContainer@@SAPBDXZ @5187 NONAME ?Class@PDirectory@@SAPBDXZ @5189 NONAME ?Class@PHashTable@@SAPBDXZ @5194 NONAME ?Class@PIntCondMutex@@SAPBDXZ @5196 NONAME ?Class@PluginLoaderStartup@@SAPBDXZ @5197 NONAME ?Class@PMutex@@SAPBDXZ @5198 NONAME ?Class@PNotifier@@SAPBDXZ @5199 NONAME ?Class@PObject@@SAPBDXZ @5201 NONAME ?Class@PPluginManager@@SAPBDXZ @5204 NONAME ?Class@PProcess@@SAPBDXZ @5205 NONAME ?Class@PProcessStartup@@SAPBDXZ @5206 NONAME ?Class@PReadWriteMutex@@SAPBDXZ @5207 NONAME ?Class@PSemaphore@@SAPBDXZ @5209 NONAME ?Class@PSimpleThread@@SAPBDXZ @5210 NONAME ?Class@PSmartPointer@@SAPBDXZ @5212 NONAME ?Class@PString@@SAPBDXZ @5216 NONAME ?Class@PStringArray@@SAPBDXZ @5217 NONAME ?Class@PStringList@@SAPBDXZ @5218 NONAME ?Class@PStringToString@@SAPBDXZ @6422 NONAME ?Class@PThread@@SAPBDXZ @5226 NONAME ?Class@PTime@@SAPBDXZ @5227 NONAME ?Class@PTimeInterval@@SAPBDXZ @5228 NONAME ?Class@PTimer@@SAPBDXZ @5229 NONAME ?Class@PTimerList@@SAPBDXZ @5230 NONAME ?Cleanup@PNotifierList@@AAEXXZ @4809 NONAME ?ClearBreak@PSerialChannel@@QAEXXZ @937 NONAME ?ClearDTR@PSerialChannel@@QAEXXZ @938 NONAME ?ClearNameCache@PIPSocket@@SAXXZ @939 NONAME ?ClearOptions@PTrace@@SAXI@Z @940 NONAME ?ClearRTS@PSerialChannel@@QAEXXZ @941 NONAME ?Clone@?$PArray@VPString@@@@UBEPAVPObject@@XZ @942 NONAME ?Clone@?$PArray@VPWaveBuffer@@@@UBEPAVPObject@@XZ @943 NONAME ?Clone@?$PArray@VPWin32PacketBuffer@@@@UBEPAVPObject@@XZ @944 NONAME ?Clone@?$PBaseArray@D@@UBEPAVPObject@@XZ @945 NONAME ?Clone@?$PBaseArray@E@@UBEPAVPObject@@XZ @946 NONAME ?Clone@?$PBaseArray@F@@UBEPAVPObject@@XZ @947 NONAME ?Clone@?$PBaseArray@G@@UBEPAVPObject@@XZ @948 NONAME ?Clone@?$PBaseArray@H@@UBEPAVPObject@@XZ @949 NONAME ?Clone@?$PBaseArray@I@@UBEPAVPObject@@XZ @950 NONAME ?Clone@?$PBaseArray@J@@UBEPAVPObject@@XZ @951 NONAME ?Clone@?$PBaseArray@K@@UBEPAVPObject@@XZ @952 NONAME ?Clone@?$PBaseArray@PAVPObject@@@@UBEPAVPObject@@XZ @953 NONAME ?Clone@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPObject@@XZ @954 NONAME ?Clone@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPObject@@XZ @955 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVPObject@@XZ @956 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPObject@@XZ @4810 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPObject@@XZ @957 NONAME ?Clone@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPObject@@XZ @4745 NONAME ?Clone@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPAVPObject@@XZ @6423 NONAME ?Clone@?$PList@VPDynaLink@@@@UBEPAVPObject@@XZ @3039 NONAME ?Clone@?$PList@VPNotifier@@@@UBEPAVPObject@@XZ @3040 NONAME ?Clone@?$PList@VPPluginService@@@@UBEPAVPObject@@XZ @2703 NONAME ?Clone@?$PList@VPSafeObject@@@@UBEPAVPObject@@XZ @6018 NONAME ?Clone@?$PList@VPSocket@@@@UBEPAVPObject@@XZ @958 NONAME ?Clone@?$PList@VPString@@@@UBEPAVPObject@@XZ @5237 NONAME ?Clone@?$PList@VPThread@@@@UBEPAVPObject@@XZ @960 NONAME ?Clone@?$PList@VPTimer@@@@UBEPAVPObject@@XZ @961 NONAME ?Clone@?$PSet@VPString@@@@UBEPAVPObject@@XZ @962 NONAME ?Clone@?$PStringDictionary@VPString@@@@UBEPAVPObject@@XZ @6424 NONAME ?Clone@PBitArray@@UBEPAVPObject@@XZ @963 NONAME ?Clone@PBYTEArray@@UBEPAVPObject@@XZ @964 NONAME ?Clone@PCaselessString@@UBEPAVPObject@@XZ @965 NONAME ?Clone@PCharArray@@UBEPAVPObject@@XZ @966 NONAME ?Clone@PIPCacheKey@@UBEPAVPObject@@XZ @967 NONAME ?Clone@PObject@@UBEPAV1@XZ @968 NONAME ?Clone@POrdinalKey@@UBEPAVPObject@@XZ @969 NONAME ?Clone@POrdinalToString@@UBEPAVPObject@@XZ @970 NONAME ?Clone@PSortedStringList@@UBEPAVPObject@@XZ @971 NONAME ?Clone@PString@@UBEPAVPObject@@XZ @972 NONAME ?Clone@PStringArray@@UBEPAVPObject@@XZ @973 NONAME ?Clone@PStringList@@UBEPAVPObject@@XZ @974 NONAME ?Clone@PStringSet@@UBEPAVPObject@@XZ @975 NONAME ?Clone@PStringToOrdinal@@UBEPAVPObject@@XZ @976 NONAME ?Clone@PStringToString@@UBEPAVPObject@@XZ @977 NONAME ?Clone@PTCPSocket@@UBEPAVPObject@@XZ @978 NONAME ?Clone@PTime@@UBEPAVPObject@@XZ @979 NONAME ?Clone@PTimeInterval@@UBEPAVPObject@@XZ @980 NONAME ?Clone@Table@PHashTable@@UBEPAVPObject@@XZ @981 NONAME ?CloneContents@PAbstractArray@@IAEXPBV1@@Z @982 NONAME ?CloneContents@PAbstractList@@IAEXPBV1@@Z @983 NONAME ?CloneContents@PAbstractSet@@IAEXPBV1@@Z @984 NONAME ?CloneContents@PAbstractSortedList@@IAEXPBV1@@Z @985 NONAME ?CloneContents@PArrayObjects@@IAEXPBV1@@Z @986 NONAME ?CloneContents@PContainer@@IAEXPBV1@@Z @4638 NONAME ?CloneContents@PDirectory@@IAEXPBV1@@Z @987 NONAME ?CloneContents@PHashTable@@IAEXPBV1@@Z @988 NONAME ?Close@PChannel@@UAEHXZ @989 NONAME ?Close@PConsoleChannel@@UAEHXZ @990 NONAME ?Close@PDirectory@@UAEXXZ @6152 NONAME ?Close@PDynaLink@@UAEXXZ @992 NONAME ?Close@PEthSocket@@UAEHXZ @993 NONAME ?Close@PFile@@UAEHXZ @995 NONAME ?Close@PICMPSocket@@UAEHXZ @996 NONAME ?Close@PIndirectChannel@@UAEHXZ @997 NONAME ?Close@PMultiMediaFile@@QAEHI@Z @998 NONAME ?Close@PPipeChannel@@UAEHXZ @999 NONAME ?Close@PRemoteConnection@@QAEXXZ @1000 NONAME ?Close@PSerialChannel@@UAEHXZ @1001 NONAME ?Close@PSocket@@UAEHXZ @1002 NONAME ?Close@PSoundChannelWin32@@UAEHXZ @2704 NONAME ?Close@PVideoChannel@@UAEHXZ @1004 NONAME ?Close@PVideoDevice@@UAEHXZ @1005 NONAME ?Close@PVideoInputDevice@@UAEHXZ @1006 NONAME ?Close@PVideoInputDevice_FakeVideo@@UAEHXZ @2848 NONAME ?Close@PVideoInputDevice_VideoForWindows@@UAEHXZ @2705 NONAME ?Close@PVideoOutputDevice@@UAEHXZ @2706 NONAME ?Close@PVideoOutputDevice_NULLOutput@@UAEHXZ @2849 NONAME ?Close@PVideoOutputDevice_Window@@UAEHXZ @6425 NONAME ?Close@PWin32PacketDriver@@QAEXXZ @1008 NONAME ?CloseVideoPlayer@PVideoChannel@@UAEXXZ @1009 NONAME ?CloseVideoReader@PVideoChannel@@UAEXXZ @1010 NONAME ?Compare@Address@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1011 NONAME ?Compare@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1012 NONAME ?Compare@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1013 NONAME ?Compare@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1014 NONAME ?Compare@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1015 NONAME ?Compare@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1016 NONAME ?Compare@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1017 NONAME ?Compare@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1018 NONAME ?Compare@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1019 NONAME ?Compare@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1020 NONAME ?Compare@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1021 NONAME ?Compare@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1022 NONAME ?Compare@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1023 NONAME ?Compare@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1024 NONAME ?Compare@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1025 NONAME ?Compare@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1026 NONAME ?Compare@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1027 NONAME ?Compare@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1028 NONAME ?Compare@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1029 NONAME ?CompareObjectMemoryDirect@?$PArray@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1030 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWaveBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1031 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWin32PacketBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1032 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@D@@UBE?AW4Comparison@PObject@@ABV3@@Z @1033 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@E@@UBE?AW4Comparison@PObject@@ABV3@@Z @1034 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@F@@UBE?AW4Comparison@PObject@@ABV3@@Z @1035 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@G@@UBE?AW4Comparison@PObject@@ABV3@@Z @1036 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@H@@UBE?AW4Comparison@PObject@@ABV3@@Z @1037 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@I@@UBE?AW4Comparison@PObject@@ABV3@@Z @1038 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@J@@UBE?AW4Comparison@PObject@@ABV3@@Z @1039 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@K@@UBE?AW4Comparison@PObject@@ABV3@@Z @1040 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVPObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1041 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1042 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1043 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1044 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @4811 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1045 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPString@@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @4746 NONAME ?CompareObjectMemoryDirect@?$PList@VInterfaceEntry@PIPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @6426 NONAME ?CompareObjectMemoryDirect@?$PList@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3041 NONAME ?CompareObjectMemoryDirect@?$PList@VPNotifier@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3042 NONAME ?CompareObjectMemoryDirect@?$PList@VPPluginService@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @2708 NONAME ?CompareObjectMemoryDirect@?$PList@VPSafeObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @6019 NONAME ?CompareObjectMemoryDirect@?$PList@VPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1046 NONAME ?CompareObjectMemoryDirect@?$PList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5243 NONAME ?CompareObjectMemoryDirect@?$PList@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1048 NONAME ?CompareObjectMemoryDirect@?$PList@VPTimer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1049 NONAME ?CompareObjectMemoryDirect@?$PSet@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1050 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @6427 NONAME ?CompareObjectMemoryDirect@CMCDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1051 NONAME ?CompareObjectMemoryDirect@HouseKeepingThread@PProcess@@UBE?AW4Comparison@PObject@@ABV4@@Z @1052 NONAME ?CompareObjectMemoryDirect@InterfaceEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1053 NONAME ?CompareObjectMemoryDirect@MAPIDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1054 NONAME ?CompareObjectMemoryDirect@Nest@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV4@@Z @1055 NONAME ?CompareObjectMemoryDirect@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1056 NONAME ?CompareObjectMemoryDirect@PAbstractDictionary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1057 NONAME ?CompareObjectMemoryDirect@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1058 NONAME ?CompareObjectMemoryDirect@PAbstractSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1059 NONAME ?CompareObjectMemoryDirect@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1060 NONAME ?CompareObjectMemoryDirect@PArgList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1061 NONAME ?CompareObjectMemoryDirect@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1062 NONAME ?CompareObjectMemoryDirect@PBitArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1063 NONAME ?CompareObjectMemoryDirect@PBYTEArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1064 NONAME ?CompareObjectMemoryDirect@PCaselessString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1065 NONAME ?CompareObjectMemoryDirect@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1066 NONAME ?CompareObjectMemoryDirect@PCharArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1067 NONAME ?CompareObjectMemoryDirect@PCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1068 NONAME ?CompareObjectMemoryDirect@PColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1069 NONAME ?CompareObjectMemoryDirect@PColourConverterRegistration@@UBE?AW4Comparison@PObject@@ABV3@@Z @1070 NONAME ?CompareObjectMemoryDirect@PCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @5248 NONAME ?CompareObjectMemoryDirect@PConfig@@UBE?AW4Comparison@PObject@@ABV3@@Z @1071 NONAME ?CompareObjectMemoryDirect@PConfigArgs@@UBE?AW4Comparison@PObject@@ABV3@@Z @1072 NONAME ?CompareObjectMemoryDirect@PConsoleChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1073 NONAME ?CompareObjectMemoryDirect@PContainer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1074 NONAME ?CompareObjectMemoryDirect@PCriticalSection@@UBE?AW4Comparison@PObject@@ABV3@@Z @4639 NONAME ?CompareObjectMemoryDirect@PDirectory@@UBE?AW4Comparison@PObject@@ABV3@@Z @1075 NONAME ?CompareObjectMemoryDirect@PDynaLink@@UBE?AW4Comparison@PObject@@ABV3@@Z @1076 NONAME ?CompareObjectMemoryDirect@PEthSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1077 NONAME ?CompareObjectMemoryDirect@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1079 NONAME ?CompareObjectMemoryDirect@PFileInfo@@UBE?AW4Comparison@PObject@@ABV3@@Z @1080 NONAME ?CompareObjectMemoryDirect@PFilePath@@UBE?AW4Comparison@PObject@@ABV3@@Z @1081 NONAME ?CompareObjectMemoryDirect@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1082 NONAME ?CompareObjectMemoryDirect@PICMPDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1083 NONAME ?CompareObjectMemoryDirect@PICMPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1084 NONAME ?CompareObjectMemoryDirect@PImageDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1085 NONAME ?CompareObjectMemoryDirect@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1086 NONAME ?CompareObjectMemoryDirect@PIntCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1087 NONAME ?CompareObjectMemoryDirect@PIPCacheData@@UBE?AW4Comparison@PObject@@ABV3@@Z @1088 NONAME ?CompareObjectMemoryDirect@PIPCacheKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1089 NONAME ?CompareObjectMemoryDirect@PIPDatagramSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1090 NONAME ?CompareObjectMemoryDirect@PIPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1091 NONAME ?CompareObjectMemoryDirect@PIPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1092 NONAME ?CompareObjectMemoryDirect@PluginLoaderStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @4886 NONAME ?CompareObjectMemoryDirect@PMail@@UBE?AW4Comparison@PObject@@ABV3@@Z @1093 NONAME ?CompareObjectMemoryDirect@PMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1094 NONAME ?CompareObjectMemoryDirect@PNotifier@@UBE?AW4Comparison@PObject@@ABV3@@Z @1095 NONAME ?CompareObjectMemoryDirect@PNotifierFunction@@UBE?AW4Comparison@PObject@@ABV3@@Z @1096 NONAME ?CompareObjectMemoryDirect@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1097 NONAME ?CompareObjectMemoryDirect@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1098 NONAME ?CompareObjectMemoryDirect@POrdinalToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1099 NONAME ?CompareObjectMemoryDirect@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1100 NONAME ?CompareObjectMemoryDirect@PPluginManager@@UBE?AW4Comparison@PObject@@ABV3@@Z @2709 NONAME ?CompareObjectMemoryDirect@PPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @4812 NONAME ?CompareObjectMemoryDirect@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1101 NONAME ?CompareObjectMemoryDirect@PProcessStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @5249 NONAME ?CompareObjectMemoryDirect@PQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @2657 NONAME ?CompareObjectMemoryDirect@PRASDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1102 NONAME ?CompareObjectMemoryDirect@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1103 NONAME ?CompareObjectMemoryDirect@PRegularExpression@@UBE?AW4Comparison@PObject@@ABV3@@Z @1104 NONAME ?CompareObjectMemoryDirect@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1105 NONAME ?CompareObjectMemoryDirect@PSafeCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1106 NONAME ?CompareObjectMemoryDirect@PSafeObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @1107 NONAME ?CompareObjectMemoryDirect@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1108 NONAME ?CompareObjectMemoryDirect@PSemaphore@@UBE?AW4Comparison@PObject@@ABV3@@Z @1109 NONAME ?CompareObjectMemoryDirect@PSerialChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1110 NONAME ?CompareObjectMemoryDirect@PServiceProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1111 NONAME ?CompareObjectMemoryDirect@PSimpleThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1112 NONAME ?CompareObjectMemoryDirect@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1113 NONAME ?CompareObjectMemoryDirect@PSmartPtrInspector@@UBE?AW4Comparison@PObject@@ABV3@@Z @4813 NONAME ?CompareObjectMemoryDirect@PSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1114 NONAME ?CompareObjectMemoryDirect@PSortedStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1115 NONAME ?CompareObjectMemoryDirect@PSound@@UBE?AW4Comparison@PObject@@ABV3@@Z @1116 NONAME ?CompareObjectMemoryDirect@PSoundChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1117 NONAME ?CompareObjectMemoryDirect@PSPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1118 NONAME ?CompareObjectMemoryDirect@PStandardColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1119 NONAME ?CompareObjectMemoryDirect@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1120 NONAME ?CompareObjectMemoryDirect@PStringArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1121 NONAME ?CompareObjectMemoryDirect@PStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1122 NONAME ?CompareObjectMemoryDirect@PStringSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1123 NONAME ?CompareObjectMemoryDirect@PStringStream@@UBE?AW4Comparison@PObject@@ABV3@@Z @1124 NONAME ?CompareObjectMemoryDirect@PStringToOrdinal@@UBE?AW4Comparison@PObject@@ABV3@@Z @1125 NONAME ?CompareObjectMemoryDirect@PStringToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1126 NONAME ?CompareObjectMemoryDirect@PStructuredFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1127 NONAME ?CompareObjectMemoryDirect@PSyncPoint@@UBE?AW4Comparison@PObject@@ABV3@@Z @1128 NONAME ?CompareObjectMemoryDirect@PSystemLog@@UBE?AW4Comparison@PObject@@ABV3@@Z @1129 NONAME ?CompareObjectMemoryDirect@PTCPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1130 NONAME ?CompareObjectMemoryDirect@PTextFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1131 NONAME ?CompareObjectMemoryDirect@PThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1132 NONAME ?CompareObjectMemoryDirect@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1133 NONAME ?CompareObjectMemoryDirect@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1134 NONAME ?CompareObjectMemoryDirect@PTimer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1135 NONAME ?CompareObjectMemoryDirect@PTimerList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1136 NONAME ?CompareObjectMemoryDirect@PUDPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1137 NONAME ?CompareObjectMemoryDirect@PVideoChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1138 NONAME ?CompareObjectMemoryDirect@PVideoDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1139 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1140 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_FakeVideo@@UBE?AW4Comparison@PObject@@ABV3@@Z @2850 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_VideoForWindows@@UBE?AW4Comparison@PObject@@ABV3@@Z @2710 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1142 NONAME ?CompareObjectMemoryDirect@PVideoOutputDeviceRGB@@UBE?AW4Comparison@PObject@@ABV3@@Z @6428 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_NULLOutput@@UBE?AW4Comparison@PObject@@ABV3@@Z @2851 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_Window@@UBE?AW4Comparison@PObject@@ABV3@@Z @6429 NONAME ?CompareObjectMemoryDirect@PWaveBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1146 NONAME ?CompareObjectMemoryDirect@PWaveFormat@@UBE?AW4Comparison@PObject@@ABV3@@Z @1147 NONAME ?CompareObjectMemoryDirect@PWin32PacketBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1148 NONAME ?CompareObjectMemoryDirect@PWin32SnmpLibrary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1149 NONAME ?CompareObjectMemoryDirect@PWinQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @2930 NONAME ?CompareObjectMemoryDirect@PWinSock@@UBE?AW4Comparison@PObject@@ABV3@@Z @1150 NONAME ?CompareObjectMemoryDirect@RouteEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1151 NONAME ?CompareObjectMemoryDirect@SelectList@PSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1152 NONAME ?CompareObjectMemoryDirect@Table@PHashTable@@UBE?AW4Comparison@PObject@@ABV4@@Z @1153 NONAME ?CompareObjectMemoryDirect@WinSNMPLoader@@UBE?AW4Comparison@PObject@@ABV3@@Z @5446 NONAME ?Compile@PRegularExpression@@QAEHABVPString@@H@Z @1154 NONAME ?Compile@PRegularExpression@@QAEHPBDH@Z @1155 NONAME ?CompleteIO@PWin32PacketDriver@@QAEHAAKAAVPWin32Overlapped@@@Z @1156 NONAME ?Concatenate@PAbstractArray@@QAEHABV1@@Z @1157 NONAME ?Concatenate@PBitArray@@QAEHABV1@@Z @1158 NONAME ?Condition@PIntCondMutex@@UAEHXZ @1159 NONAME ?Connect@PEthSocket@@UAEHABVPString@@@Z @1160 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@0@Z @1161 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@@Z @1162 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@G0@Z @1163 NONAME ?Connect@PIPSocket@@UAEHABVPString@@@Z @1164 NONAME ?Connect@PIPSocket@@UAEHGABVAddress@1@@Z @1165 NONAME ?Connect@PIPXSocket@@UAEHABVAddress@1@@Z @1166 NONAME ?Connect@PIPXSocket@@UAEHABVPString@@@Z @1167 NONAME ?Connect@PSocket@@UAEHABVPString@@@Z @1168 NONAME ?Connect@PUDPSocket@@UAEHABVPString@@@Z @1169 NONAME ?construct@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAPAVPPluginModuleManager@@ABQAV3@@Z @5251 NONAME ?construct@?$allocator@VPString@@@std@@QAEXPAVPString@@ABV3@@Z @5252 NONAME ?Construct@PChannel@@AAEXXZ @1170 NONAME ?Construct@PConfig@@AAEXABVPFilePath@@@Z @1171 NONAME ?Construct@PConfig@@AAEXW4Source@1@ABVPString@@1@Z @1172 NONAME ?Construct@PDirectory@@IAEXXZ @1173 NONAME ?Construct@PMail@@IAEXXZ @1174 NONAME ?Construct@PProcess@@AAEXXZ @1175 NONAME ?Construct@PRemoteConnection@@AAEXXZ @1176 NONAME ?Construct@PSerialChannel@@AAEXXZ @1177 NONAME ?Construct@PSoundChannelWin32@@QAEXXZ @2711 NONAME ?Construct@PTimer@@AAEXXZ @1179 NONAME ?Construct@P_fd_set@@AAEXXZ @1180 NONAME ?Contains@?$PStringDictionary@VPString@@@@QBEHABVPString@@@Z @6430 NONAME ?Control@NT_ServiceManager@@AAEHPAVPServiceProcess@@K@Z @1181 NONAME ?ControlEntry@PServiceProcess@@AAEXK@Z @1182 NONAME ?controlledLoadDSCP@PQoS@@2DA @2659 NONAME ?Convert@PSynonymColour@@UAEHPBEPAEPAH@Z @1183 NONAME ?Convert@P_BGR24_RGB24@@UAEHPBEPAEPAH@Z @6431 NONAME ?Convert@P_BGR24_RGB32@@UAEHPBEPAEPAH@Z @6432 NONAME ?Convert@P_BGR24_YUV420P@@UAEHPBEPAEPAH@Z @2852 NONAME ?Convert@P_BGR32_RGB24@@UAEHPBEPAEPAH@Z @6433 NONAME ?Convert@P_BGR32_RGB32@@UAEHPBEPAEPAH@Z @6434 NONAME ?Convert@P_BGR32_YUV420P@@UAEHPBEPAEPAH@Z @2853 NONAME ?Convert@P_Grey_YUV420P@@UAEHPBEPAEPAH@Z @1185 NONAME ?Convert@P_RGB24_BGR24@@UAEHPBEPAEPAH@Z @6435 NONAME ?Convert@P_RGB24_BGR32@@UAEHPBEPAEPAH@Z @6436 NONAME ?Convert@P_RGB24_RGB32@@UAEHPBEPAEPAH@Z @1187 NONAME ?Convert@P_RGB24_YUV420P@@UAEHPBEPAEPAH@Z @1188 NONAME ?Convert@P_RGB32_BGR24@@UAEHPBEPAEPAH@Z @6437 NONAME ?Convert@P_RGB32_BGR32@@UAEHPBEPAEPAH@Z @6438 NONAME ?Convert@P_RGB32_RGB24@@UAEHPBEPAEPAH@Z @1190 NONAME ?Convert@P_RGB32_YUV420P@@UAEHPBEPAEPAH@Z @1191 NONAME ?Convert@P_SBGGR8_RGB24@@UAEHPBEPAEPAH@Z @6153 NONAME ?Convert@P_SBGGR8_YUV420P@@UAEHPBEPAEPAH@Z @6439 NONAME ?Convert@P_UYV444_YUV420P@@UAEHPBEPAEPAH@Z @1192 NONAME ?Convert@P_UYVY422_YUV420P@@UAEHPBEPAEPAH@Z @1193 NONAME ?Convert@P_YUV411P_YUV420P@@UAEHPBEPAEPAH@Z @1194 NONAME ?Convert@P_YUV420P_BGR24@@UAEHPBEPAEPAH@Z @1195 NONAME ?Convert@P_YUV420P_BGR32@@UAEHPBEPAEPAH@Z @2854 NONAME ?Convert@P_YUV420P_RGB24@@UAEHPBEPAEPAH@Z @1197 NONAME ?Convert@P_YUV420P_RGB32@@UAEHPBEPAEPAH@Z @1199 NONAME ?Convert@P_YUV420P_YUV411P@@UAEHPBEPAEPAH@Z @1201 NONAME ?Convert@P_YUV422_YUV420P@@UAEHPBEPAEPAH@Z @1202 NONAME ?Convert@P_YUV422_YUV422@@UAEHPBEPAEPAH@Z @1203 NONAME ?ConvertInPlace@PColourConverter@@UAEHPAEPAHH@Z @1204 NONAME ?ConvertOSError@PChannel@@MAEHHW4ErrorGroup@1@@Z @1205 NONAME ?ConvertOSError@PChannel@@SAHHAAW4Errors@1@AAH@Z @1206 NONAME ?ConvertOSError@PSocket@@KAHHAAW4Errors@PChannel@@AAH@Z @1207 NONAME ?ConvertOSError@PSocket@@MAEHHW4ErrorGroup@PChannel@@@Z @1208 NONAME ?Copy@PFile@@QAEHABVPFilePath@@H@Z @4640 NONAME ?Copy@PFile@@SAHABVPFilePath@@0H@Z @1209 NONAME ?copy@std@@YAPAPAVPPluginModuleManager@@PAPAV2@00@Z @5447 NONAME ?CopyContents@PAbstractArray@@IAEXABV1@@Z @1210 NONAME ?CopyContents@PAbstractList@@IAEXABV1@@Z @1211 NONAME ?CopyContents@PAbstractSet@@IAEXABV1@@Z @1212 NONAME ?CopyContents@PAbstractSortedList@@IAEXABV1@@Z @1213 NONAME ?CopyContents@PArrayObjects@@IAEXABV1@@Z @1214 NONAME ?CopyContents@PContainer@@IAEXABV1@@Z @4641 NONAME ?CopyContents@PDirectory@@IAEXABV1@@Z @1215 NONAME ?CopyContents@PHashTable@@IAEXABV1@@Z @1216 NONAME ?copy_backward@std@@YAPAPAVPPluginModuleManager@@PAPAV2@00@Z @5253 NONAME ?copy_backward@std@@YAPAVPString@@PAV2@00@Z @5254 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6020 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6021 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6022 NONAME ?Create@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @6023 NONAME ?Create@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @6024 NONAME ?Create@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1217 NONAME ?Create@PColourConverter@@SAPAV1@ABVPString@@0II@Z @1218 NONAME ?Create@PDirectory@@QBEHH@Z @4642 NONAME ?Create@PDirectory@@SAHABVPString@@H@Z @4643 NONAME ?Create@PSynonymColourRegistration@@UBEPAVPColourConverter@@II@Z @1219 NONAME ?Create@PThread@@SAPAV1@ABVPNotifier@@HW4AutoDeleteFlag@1@W4Priority@1@ABVPString@@H@Z @1220 NONAME ?Create@PWin32PacketDriver@@SAPAV1@XZ @1221 NONAME ?Create@P_BGR24_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @6440 NONAME ?Create@P_BGR24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @6441 NONAME ?Create@P_BGR24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @2855 NONAME ?Create@P_BGR32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @6442 NONAME ?Create@P_BGR32_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @6443 NONAME ?Create@P_BGR32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @2856 NONAME ?Create@P_Grey_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1223 NONAME ?Create@P_RGB24_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @6444 NONAME ?Create@P_RGB24_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @6445 NONAME ?Create@P_RGB24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1225 NONAME ?Create@P_RGB24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1226 NONAME ?Create@P_RGB32_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @6446 NONAME ?Create@P_RGB32_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @6447 NONAME ?Create@P_RGB32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1228 NONAME ?Create@P_RGB32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1229 NONAME ?Create@P_SBGGR8_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @6154 NONAME ?Create@P_SBGGR8_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @6448 NONAME ?Create@P_UYV444_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1230 NONAME ?Create@P_UYVY422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1231 NONAME ?Create@P_YUV411P_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1232 NONAME ?Create@P_YUV420P_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @1234 NONAME ?Create@P_YUV420P_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @2857 NONAME ?Create@P_YUV420P_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1236 NONAME ?Create@P_YUV420P_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1238 NONAME ?Create@P_YUV420P_YUV411P_Registration@@UBEPAVPColourConverter@@II@Z @1239 NONAME ?Create@P_YUV422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1240 NONAME ?Create@P_YUV422_YUV422_Registration@@UBEPAVPColourConverter@@II@Z @1241 NONAME ?Create@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1242 NONAME ?Create@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @6025 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @6026 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @6027 NONAME ?Create@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6028 NONAME ?Create@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @6029 NONAME ?Create@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @6030 NONAME ?Create@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @6031 NONAME ?Create@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @6032 NONAME ?CreateChannel@PSoundChannel@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @2712 NONAME ?CreateChannelByName@PSoundChannel@@SAPAV1@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @6449 NONAME ?CreateChunk@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @1243 NONAME ?CreateControlWindow@PServiceProcess@@AAEHH@Z @1244 NONAME ?CreateDevice@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @2713 NONAME ?CreateDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @2858 NONAME ?CreateDeviceByName@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3013 NONAME ?CreateDeviceByName@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @6450 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPSoundChannel@@@@UAEXABVPString@@@Z @6033 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAEXABVPString@@@Z @6034 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAEXABVPString@@@Z @6035 NONAME ?CreateFullPath@PDirectory@@SA?AVPString@@ABV2@H@Z @1245 NONAME ?CreateInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6036 NONAME ?CreateInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@SAPAVPPluginModuleManager@@ABVPString@@@Z @5710 NONAME ?CreateInstance@?$PFactory@VPProcessStartup@@VPString@@@@SAPAVPProcessStartup@@ABVPString@@@Z @5711 NONAME ?CreateInstance@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBEPAVPObject@@H@Z @6451 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBEPAVPObject@@H@Z @6452 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBEPAVPObject@@H@Z @6453 NONAME ?CreateInstance@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBEPAVPObject@@H@Z @6454 NONAME ?CreateInstance@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBEPAVPObject@@H@Z @6455 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6037 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @6038 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @6039 NONAME ?CreateInstance_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @6040 NONAME ?CreateInstance_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @5714 NONAME ?CreateInstance_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @5715 NONAME ?CreateOpenedChannel@PSoundChannel@@SAPAV1@ABVPString@@0W4Directions@1@IIIPAVPPluginManager@@@Z @6456 NONAME ?CreateOpenedDevice@PVideoInputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @2715 NONAME ?CreateOpenedDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @2859 NONAME ?CreatePluginsDevice@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @6457 NONAME ?CreatePluginsDeviceByName@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @6458 NONAME ?CreateWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@ABVPWaveFormat@@K@Z @1246 NONAME ?Current@PProcess@@SAAAV1@XZ @1247 NONAME ?Current@PServiceProcess@@SAAAV1@XZ @1248 NONAME ?Current@PThread@@SAPAV1@XZ @1249 NONAME ?Current@PWin32SnmpLibrary@@SAAAV1@XZ @1250 NONAME ?Current@WinSNMPLoader@@QAEAAVPWin32SnmpLibrary@@XZ @5450 NONAME ?deallocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAXI@Z @5257 NONAME ?deallocate@?$allocator@PAVPProcessStartup@@@std@@QAEXPAXI@Z @5258 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAEXPAXI@Z @6041 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAEXPAXI@Z @5716 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAEXPAXI@Z @5717 NONAME ?deallocate@?$allocator@VPString@@@std@@QAEXPAXI@Z @5261 NONAME ?DebugOutput@PServiceProcess@@AAEXPBD@Z @1251 NONAME ?Delete@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1252 NONAME ?Delete@PString@@QAEXHH@Z @1253 NONAME ?Delete@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1254 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@0@Z @2968 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@@Z @2969 NONAME ?DeleteKey@RegistryKey@@QAEHABVPString@@@Z @1256 NONAME ?DeleteMessage@PMail@@QAEHABVPString@@@Z @1257 NONAME ?DeleteObject@PSafeCollection@@UBEXPAVPObject@@@Z @6042 NONAME ?DeleteObjectsTimeout@PSafeCollection@@MAEXAAVPTimer@@H@Z @1258 NONAME ?DeleteObjectsToBeRemoved@PSafeCollection@@UAEHXZ @6043 NONAME ?DeleteSection@PConfig@@UAEXABVPString@@@Z @2970 NONAME ?DeleteSection@PConfig@@UAEXXZ @2971 NONAME ?DeleteSubTrees@PAbstractSortedList@@IAEXPAUElement@1@H@Z @3018 NONAME ?DeleteValue@RegistryKey@@QAEHABVPString@@@Z @1262 NONAME ?Descend@PMultiMediaFile@@QAEHIAAU_MMCKINFO@@PAU2@@Z @1263 NONAME ?destroy@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAPAVPPluginModuleManager@@@Z @5262 NONAME ?destroy@?$allocator@VPString@@@std@@QAEXPAVPString@@@Z @5263 NONAME ?DestroyContents@PAbstractArray@@MAEXXZ @1264 NONAME ?DestroyContents@PAbstractList@@MAEXXZ @1265 NONAME ?DestroyContents@PAbstractSet@@MAEXXZ @1266 NONAME ?DestroyContents@PAbstractSortedList@@MAEXXZ @1267 NONAME ?DestroyContents@PArrayObjects@@MAEXXZ @1268 NONAME ?DestroyContents@PDirectory@@MAEXXZ @1269 NONAME ?DestroyContents@PHashTable@@MAEXXZ @1270 NONAME ?DestroyContents@Table@PHashTable@@UAEXXZ @1271 NONAME ?Destruct@PContainer@@IAEXXZ @1272 NONAME ?Destruct@PDirectory@@IAEXXZ @6155 NONAME ?disableQoS@PUDPSocket@@1HA @6459 NONAME ?DisallowDeleteObjects@PCollection@@QAEXXZ @4644 NONAME ?DisplayRawData@PVideoChannel@@QAEHPAX@Z @1273 NONAME ?Draw@PVideoOutputDevice_Window@@IAEXPAUHDC__@@@Z @6460 NONAME ?Empty@PString@@SA?AV1@XZ @3014 NONAME ?EnableAccess@PVideoChannel@@QAEXXZ @1275 NONAME ?EnableQoS@PUDPSocket@@SAXXZ @6461 NONAME ?end@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@XZ @5718 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@2@XZ @6044 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@2@XZ @5719 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@2@XZ @5720 NONAME ?end@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@XZ @5266 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEPAVPString@@XZ @5267 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEPBVPString@@XZ @5268 NONAME ?end@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@XZ @5721 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@XZ @5269 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6045 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @5722 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @5723 NONAME ?End@PTrace@@SAAAVostream@@AAV2@@Z @1276 NONAME ?EndFrame@PVideoOutputDevice_NULLOutput@@UAEHXZ @2860 NONAME ?EndNest@PReadWriteMutex@@IAEXXZ @1279 NONAME ?EndRead@PReadWriteMutex@@QAEXXZ @1280 NONAME ?EndWrite@PReadWriteMutex@@QAEXXZ @1281 NONAME ?Enter@PCriticalSection@@QAEXXZ @4645 NONAME ?EnterSafetyMode@PSafePtrBase@@IAEHW4EnterSafetyModeOption@1@@Z @1282 NONAME ?EnumInterfaces@PEthSocket@@QAEHHAAVPString@@@Z @1283 NONAME ?EnumInterfaces@PWin32PacketSYS@@UAEHHAAVPString@@@Z @1284 NONAME ?EnumInterfaces@PWin32PacketVxD@@UAEHHAAVPString@@@Z @1285 NONAME ?EnumIpAddress@PEthSocket@@QAEHHAAVAddress@PIPSocket@@0@Z @1286 NONAME ?EnumIpAddress@PWin32PacketSYS@@UAEHHAAVAddress@PIPSocket@@0@Z @1287 NONAME ?EnumIpAddress@PWin32PacketVxD@@UAEHHAAVAddress@PIPSocket@@0@Z @1288 NONAME ?EnumKey@RegistryKey@@QAEHHAAVPString@@@Z @1289 NONAME ?EnumValue@RegistryKey@@QAEHHAAVPString@@@Z @1290 NONAME ?erase@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@2@V342@@Z @5272 NONAME ?erase@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@PAPAV3@@Z @5451 NONAME ?erase@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@V312@@Z @5724 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@V312@0@Z @5273 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@V312@@Z @4888 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @6046 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @6047 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @5725 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @5726 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @5727 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @5728 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @6462 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @6048 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @6463 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @6049 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @6464 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @6050 NONAME ?ErrorHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@HPBD@Z @2716 NONAME ?EscapeString@PRegularExpression@@SA?AVPString@@ABV2@@Z @1292 NONAME ?Exclude@PStringSet@@QAEXABVPString@@@Z @4646 NONAME ?Execute@PPipeChannel@@QAEHXZ @1293 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAH1H@Z @1294 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAHH@Z @1295 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@1H@Z @1296 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@H@Z @1297 NONAME ?Execute@PRegularExpression@@QBEHPBDAAH1H@Z @1298 NONAME ?Execute@PRegularExpression@@QBEHPBDAAHH@Z @1299 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@1H@Z @1300 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@H@Z @1301 NONAME ?Exists@PDirectory@@QBEHXZ @4647 NONAME ?Exists@PDirectory@@SAHABVPString@@@Z @4648 NONAME ?Exists@PFile@@QBEHXZ @4649 NONAME ?Exists@PFile@@SAHABVPFilePath@@@Z @4650 NONAME ?ExitSafetyMode@PSafePtrBase@@IAEXW4ExitSafetyModeOption@1@@Z @1302 NONAME ?factory@?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@A @6051 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @6052 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @6053 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @6054 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @6465 NONAME ?fill@std@@YAXPAPAVPPluginModuleManager@@0ABQAV2@@Z @5280 NONAME ?fill@std@@YAXPAVPString@@0ABV2@@Z @5281 NONAME ?FillRect@PVideoInputDevice_FakeVideo@@QAEXPAEHHHHHHH@Z @6466 NONAME ?Filtered@PDirectory@@IAEHXZ @1304 NONAME ?find@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @5729 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@2@ABVPString@@@Z @6055 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@2@ABVPString@@@Z @5730 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@2@ABVPString@@@Z @5731 NONAME ?find@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @5732 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6056 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @5733 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @5734 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6057 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6058 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6059 NONAME ?Find@PString@@QBEHABV1@H@Z @4651 NONAME ?Find@PString@@QBEHDH@Z @1305 NONAME ?Find@PString@@QBEHPBDH@Z @1306 NONAME ?FindLast@PString@@QBEHABV1@H@Z @4652 NONAME ?FindLast@PString@@QBEHDH@Z @1307 NONAME ?FindLast@PString@@QBEHPBDH@Z @1308 NONAME ?FindLetter@PVideoInputDevice_FakeVideo@@QAEPAUOneVFakeLetterData@@D@Z @2862 NONAME ?FindOneOf@PString@@QBEHABV1@H@Z @4653 NONAME ?FindOneOf@PString@@QBEHPBDH@Z @1310 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@AAH1HH@Z @1311 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@H@Z @1312 NONAME ?Fire@PNotifierList@@QAEHAAVPObject@@H@Z @4814 NONAME ?FrameComplete@PVideoOutputDevice_Window@@UAEHXZ @6467 NONAME ?FromString@Address@PIPSocket@@QAEHABVPString@@@Z @1313 NONAME ?GetAddress@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @6468 NONAME ?GetAddress@PEthSocket@@QAEHAATAddress@1@@Z @1314 NONAME ?GetAddress@PRemoteConnection@@QAE?AVPString@@XZ @1315 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@ABVPString@@@Z @2972 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@XZ @2973 NONAME ?GetAny6@Address@PIPSocket@@SAABV12@XZ @2931 NONAME ?GetArguments@PProcess@@QAEAAVPArgList@@XZ @4654 NONAME ?GetAt@?$PBaseArray@D@@QBEDH@Z @1317 NONAME ?GetAt@?$PBaseArray@H@@QBEHH@Z @5286 NONAME ?GetAt@?$PBaseArray@I@@QBEIH@Z @1318 NONAME ?GetAt@?$PBaseArray@K@@QBEKH@Z @1319 NONAME ?GetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPCaselessString@@@Z @1320 NONAME ?GetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @1321 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @1322 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPPointer@@ABVPOrdinalKey@@@Z @4815 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPThread@@ABVPOrdinalKey@@@Z @1323 NONAME ?GetAt@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPDynaLink@@ABVPString@@@Z @4747 NONAME ?GetAt@?$POrdinalDictionary@VPString@@@@UBEPAVPOrdinalKey@@ABVPString@@@Z @1324 NONAME ?GetAt@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPString@@ABVPOrdinalKey@@@Z @1325 NONAME ?GetAt@?$PStringDictionary@VPString@@@@UBEPAVPString@@ABV2@@Z @1326 NONAME ?GetAt@PAbstractDictionary@@UBEPAVPObject@@H@Z @1327 NONAME ?GetAt@PAbstractList@@UBEPAVPObject@@H@Z @1328 NONAME ?GetAt@PAbstractSet@@UBEPAVPObject@@H@Z @1329 NONAME ?GetAt@PAbstractSortedList@@UBEPAVPObject@@H@Z @1330 NONAME ?GetAt@PArrayObjects@@UBEPAVPObject@@H@Z @1331 NONAME ?GetAt@PBitArray@@QBEHH@Z @1332 NONAME ?GetAvailableNames@PRemoteConnection@@SA?AVPStringArray@@XZ @1333 NONAME ?GetBaseReadChannel@PChannel@@UBEPAV1@XZ @1334 NONAME ?GetBaseReadChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @1335 NONAME ?GetBaseWriteChannel@PChannel@@UBEPAV1@XZ @1336 NONAME ?GetBaseWriteChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @1337 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@0H@Z @2974 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@H@Z @2975 NONAME ?GetBrightness@PVideoDevice@@UAEHXZ @1339 NONAME ?GetBroadcast@Address@PIPSocket@@SAABV12@XZ @1340 NONAME ?GetBuffers@PSoundChannel@@UAEHAAH0@Z @2717 NONAME ?GetBuffers@PSoundChannelWin32@@UAEHAAH0@Z @2718 NONAME ?GetChannel@PVideoDevice@@UBEHXZ @1342 NONAME ?GetChannels@PSoundChannel@@UBEIXZ @2719 NONAME ?GetChannels@PSoundChannelWin32@@UBEIXZ @2720 NONAME ?GetClass@?$PArray@VPString@@@@UBEPBDI@Z @4382 NONAME ?GetClass@?$PArray@VPWaveBuffer@@@@UBEPBDI@Z @4383 NONAME ?GetClass@?$PArray@VPWin32PacketBuffer@@@@UBEPBDI@Z @4384 NONAME ?GetClass@?$PBaseArray@D@@UBEPBDI@Z @4385 NONAME ?GetClass@?$PBaseArray@E@@UBEPBDI@Z @4386 NONAME ?GetClass@?$PBaseArray@F@@UBEPBDI@Z @4387 NONAME ?GetClass@?$PBaseArray@G@@UBEPBDI@Z @4388 NONAME ?GetClass@?$PBaseArray@H@@UBEPBDI@Z @4389 NONAME ?GetClass@?$PBaseArray@I@@UBEPBDI@Z @4390 NONAME ?GetClass@?$PBaseArray@J@@UBEPBDI@Z @4391 NONAME ?GetClass@?$PBaseArray@K@@UBEPBDI@Z @4392 NONAME ?GetClass@?$PBaseArray@PAVPObject@@@@UBEPBDI@Z @4393 NONAME ?GetClass@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPBDI@Z @4394 NONAME ?GetClass@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPBDI@Z @4395 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPBDI@Z @4396 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPBDI@Z @4816 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPBDI@Z @4397 NONAME ?GetClass@?$PDictionary@VPString@@VPDynaLink@@@@UBEPBDI@Z @4748 NONAME ?GetClass@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPBDI@Z @6469 NONAME ?GetClass@?$PList@VPDynaLink@@@@UBEPBDI@Z @4398 NONAME ?GetClass@?$PList@VPNotifier@@@@UBEPBDI@Z @4399 NONAME ?GetClass@?$PList@VPPluginService@@@@UBEPBDI@Z @4400 NONAME ?GetClass@?$PList@VPSafeObject@@@@UBEPBDI@Z @6060 NONAME ?GetClass@?$PList@VPSocket@@@@UBEPBDI@Z @4401 NONAME ?GetClass@?$PList@VPString@@@@UBEPBDI@Z @5288 NONAME ?GetClass@?$PList@VPThread@@@@UBEPBDI@Z @4403 NONAME ?GetClass@?$PList@VPTimer@@@@UBEPBDI@Z @4404 NONAME ?GetClass@?$PSet@VPString@@@@UBEPBDI@Z @4405 NONAME ?GetClass@?$PStringDictionary@VPString@@@@UBEPBDI@Z @6470 NONAME ?GetClass@CMCDLL@PMail@@UBEPBDI@Z @4407 NONAME ?GetClass@HouseKeepingThread@PProcess@@UBEPBDI@Z @4408 NONAME ?GetClass@InterfaceEntry@PIPSocket@@UBEPBDI@Z @4409 NONAME ?GetClass@MAPIDLL@PMail@@UBEPBDI@Z @4410 NONAME ?GetClass@Nest@PReadWriteMutex@@UBEPBDI@Z @4411 NONAME ?GetClass@PAbstractArray@@UBEPBDI@Z @4412 NONAME ?GetClass@PAbstractDictionary@@UBEPBDI@Z @4413 NONAME ?GetClass@PAbstractList@@UBEPBDI@Z @4414 NONAME ?GetClass@PAbstractSet@@UBEPBDI@Z @4415 NONAME ?GetClass@PAbstractSortedList@@UBEPBDI@Z @4416 NONAME ?GetClass@PArgList@@UBEPBDI@Z @4417 NONAME ?GetClass@PArrayObjects@@UBEPBDI@Z @4418 NONAME ?GetClass@PBitArray@@UBEPBDI@Z @4419 NONAME ?GetClass@PBYTEArray@@UBEPBDI@Z @4420 NONAME ?GetClass@PCaselessString@@UBEPBDI@Z @4421 NONAME ?GetClass@PChannel@@UBEPBDI@Z @4422 NONAME ?GetClass@PCharArray@@UBEPBDI@Z @4423 NONAME ?GetClass@PCollection@@UBEPBDI@Z @4424 NONAME ?GetClass@PColourConverter@@UBEPBDI@Z @4425 NONAME ?GetClass@PColourConverterRegistration@@UBEPBDI@Z @4426 NONAME ?GetClass@PCondMutex@@UBEPBDI@Z @5293 NONAME ?GetClass@PConfig@@UBEPBDI@Z @4427 NONAME ?GetClass@PConfigArgs@@UBEPBDI@Z @4428 NONAME ?GetClass@PConsoleChannel@@UBEPBDI@Z @4429 NONAME ?GetClass@PContainer@@UBEPBDI@Z @4430 NONAME ?GetClass@PCriticalSection@@UBEPBDI@Z @4655 NONAME ?GetClass@PDirectory@@UBEPBDI@Z @4431 NONAME ?GetClass@PDynaLink@@UBEPBDI@Z @4432 NONAME ?GetClass@PEthSocket@@UBEPBDI@Z @4433 NONAME ?GetClass@PFile@@UBEPBDI@Z @4434 NONAME ?GetClass@PFileInfo@@UBEPBDI@Z @4435 NONAME ?GetClass@PFilePath@@UBEPBDI@Z @4436 NONAME ?GetClass@PHashTable@@UBEPBDI@Z @4437 NONAME ?GetClass@PICMPDLL@@UBEPBDI@Z @4438 NONAME ?GetClass@PICMPSocket@@UBEPBDI@Z @4439 NONAME ?GetClass@PImageDLL@@UBEPBDI@Z @4440 NONAME ?GetClass@PIndirectChannel@@UBEPBDI@Z @4441 NONAME ?GetClass@PIntCondMutex@@UBEPBDI@Z @4442 NONAME ?GetClass@PIPCacheData@@UBEPBDI@Z @4443 NONAME ?GetClass@PIPCacheKey@@UBEPBDI@Z @4444 NONAME ?GetClass@PIPDatagramSocket@@UBEPBDI@Z @4445 NONAME ?GetClass@PIPSocket@@UBEPBDI@Z @4446 NONAME ?GetClass@PIPXSocket@@UBEPBDI@Z @4447 NONAME ?GetClass@PluginLoaderStartup@@UBEPBDI@Z @4893 NONAME ?GetClass@PMail@@UBEPBDI@Z @4448 NONAME ?GetClass@PMutex@@UBEPBDI@Z @4449 NONAME ?GetClass@PNotifier@@UBEPBDI@Z @4450 NONAME ?GetClass@PNotifierFunction@@UBEPBDI@Z @4451 NONAME ?GetClass@PObject@@UBEPBDI@Z @4452 NONAME ?GetClass@POrdinalKey@@UBEPBDI@Z @4453 NONAME ?GetClass@POrdinalToString@@UBEPBDI@Z @4454 NONAME ?GetClass@PPipeChannel@@UBEPBDI@Z @4455 NONAME ?GetClass@PPluginManager@@UBEPBDI@Z @4456 NONAME ?GetClass@PPointer@@UBEPBDI@Z @4817 NONAME ?GetClass@PProcess@@UBEPBDI@Z @4457 NONAME ?GetClass@PProcessStartup@@UBEPBDI@Z @5294 NONAME ?GetClass@PQoS@@UBEPBDI@Z @4458 NONAME ?GetClass@PRASDLL@@UBEPBDI@Z @4459 NONAME ?GetClass@PReadWriteMutex@@UBEPBDI@Z @4460 NONAME ?GetClass@PRegularExpression@@UBEPBDI@Z @4461 NONAME ?GetClass@PRemoteConnection@@UBEPBDI@Z @4462 NONAME ?GetClass@PSafeCollection@@UBEPBDI@Z @4463 NONAME ?GetClass@PSafeObject@@UBEPBDI@Z @4464 NONAME ?GetClass@PSafePtrBase@@UBEPBDI@Z @4465 NONAME ?GetClass@PSemaphore@@UBEPBDI@Z @4466 NONAME ?GetClass@PSerialChannel@@UBEPBDI@Z @4467 NONAME ?GetClass@PServiceProcess@@UBEPBDI@Z @4468 NONAME ?GetClass@PSimpleThread@@UBEPBDI@Z @4469 NONAME ?GetClass@PSmartPointer@@UBEPBDI@Z @4470 NONAME ?GetClass@PSmartPtrInspector@@UBEPBDI@Z @4818 NONAME ?GetClass@PSocket@@UBEPBDI@Z @4471 NONAME ?GetClass@PSortedStringList@@UBEPBDI@Z @4472 NONAME ?GetClass@PSound@@UBEPBDI@Z @4473 NONAME ?GetClass@PSoundChannel@@UBEPBDI@Z @4474 NONAME ?GetClass@PSPXSocket@@UBEPBDI@Z @4475 NONAME ?GetClass@PStandardColourConverter@@UBEPBDI@Z @4476 NONAME ?GetClass@PString@@UBEPBDI@Z @4477 NONAME ?GetClass@PStringArray@@UBEPBDI@Z @4478 NONAME ?GetClass@PStringList@@UBEPBDI@Z @4479 NONAME ?GetClass@PStringSet@@UBEPBDI@Z @4480 NONAME ?GetClass@PStringStream@@UBEPBDI@Z @4481 NONAME ?GetClass@PStringToOrdinal@@UBEPBDI@Z @4482 NONAME ?GetClass@PStringToString@@UBEPBDI@Z @4483 NONAME ?GetClass@PStructuredFile@@UBEPBDI@Z @4484 NONAME ?GetClass@PSyncPoint@@UBEPBDI@Z @4485 NONAME ?GetClass@PSystemLog@@UBEPBDI@Z @4486 NONAME ?GetClass@PTCPSocket@@UBEPBDI@Z @4487 NONAME ?GetClass@PTextFile@@UBEPBDI@Z @4488 NONAME ?GetClass@PThread@@UBEPBDI@Z @4489 NONAME ?GetClass@PTime@@UBEPBDI@Z @4490 NONAME ?GetClass@PTimeInterval@@UBEPBDI@Z @4491 NONAME ?GetClass@PTimer@@UBEPBDI@Z @4492 NONAME ?GetClass@PTimerList@@UBEPBDI@Z @4493 NONAME ?GetClass@PUDPSocket@@UBEPBDI@Z @4494 NONAME ?GetClass@PVideoChannel@@UBEPBDI@Z @4495 NONAME ?GetClass@PVideoDevice@@UBEPBDI@Z @4496 NONAME ?GetClass@PVideoInputDevice@@UBEPBDI@Z @4497 NONAME ?GetClass@PVideoInputDevice_FakeVideo@@UBEPBDI@Z @4498 NONAME ?GetClass@PVideoInputDevice_VideoForWindows@@UBEPBDI@Z @4499 NONAME ?GetClass@PVideoOutputDevice@@UBEPBDI@Z @4501 NONAME ?GetClass@PVideoOutputDeviceRGB@@UBEPBDI@Z @6471 NONAME ?GetClass@PVideoOutputDevice_NULLOutput@@UBEPBDI@Z @4502 NONAME ?GetClass@PVideoOutputDevice_Window@@UBEPBDI@Z @6472 NONAME ?GetClass@PWaveBuffer@@UBEPBDI@Z @4503 NONAME ?GetClass@PWaveFormat@@UBEPBDI@Z @4504 NONAME ?GetClass@PWin32PacketBuffer@@UBEPBDI@Z @4505 NONAME ?GetClass@PWin32SnmpLibrary@@UBEPBDI@Z @4506 NONAME ?GetClass@PWinQoS@@UBEPBDI@Z @4507 NONAME ?GetClass@PWinSock@@UBEPBDI@Z @4508 NONAME ?GetClass@RouteEntry@PIPSocket@@UBEPBDI@Z @4509 NONAME ?GetClass@SelectList@PSocket@@UBEPBDI@Z @4510 NONAME ?GetClass@Table@PHashTable@@UBEPBDI@Z @4511 NONAME ?GetClass@WinSNMPLoader@@UBEPBDI@Z @5452 NONAME ?GetColour@PVideoDevice@@UAEHXZ @1468 NONAME ?GetColourFormat@PVideoDevice@@QBEABVPString@@XZ @1469 NONAME ?GetConfiguration@PRemoteConnection@@QAE?AW4Status@1@AAUConfiguration@1@@Z @1470 NONAME ?GetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@AAUConfiguration@1@@Z @1471 NONAME ?GetConfigurationFile@PProcess@@UAE?AVPString@@XZ @1472 NONAME ?GetContrast@PVideoDevice@@UAEHXZ @1473 NONAME ?GetCount@PArgList@@QBEHXZ @4656 NONAME ?GetCTS@PSerialChannel@@QAEHXZ @1474 NONAME ?GetCurrentThreadId@PThread@@SAKXZ @4657 NONAME ?GetData@PWin32PacketBuffer@@QAEHPAXH@Z @1475 NONAME ?GetDataBits@PSerialChannel@@QBEEXZ @1476 NONAME ?GetDateOrder@PTime@@SA?AW4DateOrder@1@XZ @1477 NONAME ?GetDateSeparator@PTime@@SA?AVPString@@XZ @1478 NONAME ?GetDay@PTime@@QBEHXZ @4658 NONAME ?GetDayName@PTime@@SA?AVPString@@W4Weekdays@1@W4NameType@1@@Z @1479 NONAME ?GetDayOfWeek@PTime@@QBE?AW4Weekdays@1@XZ @4659 NONAME ?GetDayOfYear@PTime@@QBEHXZ @4660 NONAME ?GetDays@PTimeInterval@@QBEHXZ @4661 NONAME ?GetDCD@PSerialChannel@@QAEHXZ @1480 NONAME ?GetDefaultDevice@PSoundChannel@@SA?AVPString@@W4Directions@1@@Z @1481 NONAME ?GetDefaultDevice@PSoundChannelWin32@@SA?AVPString@@W4Directions@PSoundChannel@@@Z @2725 NONAME ?GetDefaultDevice@PVideoChannel@@SA?AVPString@@W4Directions@1@@Z @1482 NONAME ?GetDefaultIpAddressFamily@PIPSocket@@SAHXZ @1483 NONAME ?GetDefaultIpAny@PIPSocket@@SA?AVAddress@1@XZ @1484 NONAME ?GetDefaultSection@PConfig@@UBE?AVPString@@XZ @2976 NONAME ?GetDeviceID@PSoundChannelWin32@@AAEHABVPString@@W4Directions@PSoundChannel@@AAI@Z @2726 NONAME ?GetDeviceNames@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBE?AVPStringList@@H@Z @6473 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBE?AVPStringList@@H@Z @6474 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBE?AVPStringList@@H@Z @6475 NONAME ?GetDeviceNames@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBE?AVPStringList@@H@Z @6476 NONAME ?GetDeviceNames@PSoundChannel@@SA?AVPStringList@@W4Directions@1@PAVPPluginManager@@@Z @6477 NONAME ?GetDeviceNames@PSoundChannelWin32@@SA?AVPStringArray@@W4Directions@PSoundChannel@@@Z @2729 NONAME ?GetDeviceNames@PVideoChannel@@SA?AVPStringList@@W4Directions@1@@Z @1488 NONAME ?GetDeviceNames@PVideoDevice@@UBE?AVPStringList@@XZ @2730 NONAME ?GetDeviceNames@PVideoInputDevice_FakeVideo@@UBE?AVPStringList@@XZ @2933 NONAME ?GetDeviceNames@PVideoInputDevice_VideoForWindows@@UBE?AVPStringList@@XZ @2934 NONAME ?GetDeviceNames@PVideoOutputDevice_NULLOutput@@UBE?AVPStringList@@XZ @2935 NONAME ?GetDeviceNames@PVideoOutputDevice_Window@@UBE?AVPStringList@@XZ @6478 NONAME ?GetDeviceNames@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE?AVPStringList@@H@Z @6479 NONAME ?GetDirectory@PFilePath@@QBE?AVPDirectory@@XZ @1492 NONAME ?GetDriverNames@PSoundChannel@@SA?AVPStringList@@PAVPPluginManager@@@Z @2733 NONAME ?GetDriverNames@PVideoInputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @2734 NONAME ?GetDriverNames@PVideoOutputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @2867 NONAME ?GetDriversDeviceNames@PSoundChannel@@SA?AVPStringList@@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @6480 NONAME ?GetDriversDeviceNames@PVideoInputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @2936 NONAME ?GetDriversDeviceNames@PVideoOutputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @2937 NONAME ?GetDSR@PSerialChannel@@QAEHXZ @1493 NONAME ?GetDstFrameSize@PColourConverter@@QBEHAAI0@Z @1494 NONAME ?GetElementAt@Table@PHashTable@@QAEPAVElement@2@ABVPObject@@@Z @1495 NONAME ?GetElementsIndex@Table@PHashTable@@QBEHPBVPObject@@HH@Z @1496 NONAME ?GetEntryName@PDirectory@@UBE?AVPCaselessString@@XZ @6156 NONAME ?GetErrorCode@PChannel@@QBE?AW4Errors@1@W4ErrorGroup@1@@Z @4662 NONAME ?GetErrorCode@PMail@@QBEHXZ @1498 NONAME ?GetErrorCode@PRegularExpression@@QBE?AW4ErrorCodes@1@XZ @1499 NONAME ?GetErrorNumber@PChannel@@QBEHW4ErrorGroup@1@@Z @4663 NONAME ?GetErrorText@PChannel@@SA?AVPString@@W4Errors@1@H@Z @1500 NONAME ?GetErrorText@PChannel@@UBE?AVPString@@W4ErrorGroup@1@@Z @1501 NONAME ?GetErrorText@PIndirectChannel@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @1502 NONAME ?GetErrorText@PMail@@QBE?AVPString@@XZ @1503 NONAME ?GetErrorText@PRegularExpression@@QBE?AVPString@@XZ @1504 NONAME ?GetErrorText@PSoundChannelWin32@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @2735 NONAME ?GetExtension@PDynaLink@@SA?AVPString@@XZ @1506 NONAME ?GetFactories@PFactoryBase@@SAAAVFactoryMap@1@XZ @5835 NONAME ?GetFactoriesMutex@PFactoryBase@@SAAAVPMutex@@XZ @5836 NONAME ?GetFile@PProcess@@QBEABVPFilePath@@XZ @4664 NONAME ?GetFileName@PFilePath@@QBE?AVPCaselessString@@XZ @1507 NONAME ?GetFilePath@PFile@@QBEABVPFilePath@@XZ @4665 NONAME ?GetFilter@PEthSocket@@QAEHAAIAAG@Z @1508 NONAME ?GetFrame@PVideoInputDevice@@UAEHAAVPBYTEArray@@@Z @6481 NONAME ?GetFrameData@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @2869 NONAME ?GetFrameData@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @2737 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @2870 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @2738 NONAME ?GetFrameHeight@PVideoDevice@@UBEIXZ @1514 NONAME ?GetFrameRate@PVideoDevice@@UBEIXZ @1515 NONAME ?GetFrameSize@PVideoDevice@@UAEHAAI0@Z @1516 NONAME ?GetFrameSizeLimits@PVideoDevice@@UAEHAAI000@Z @1518 NONAME ?GetFrameSizeLimits@PVideoInputDevice_FakeVideo@@UAEHAAI000@Z @2871 NONAME ?GetFrameWidth@PVideoDevice@@UBEIXZ @1519 NONAME ?GetFunction@PDynaLink@@QAEHABVPString@@AAP6AXXZ@Z @1520 NONAME ?GetFunction@PDynaLink@@QAEHHAAP6AXXZ@Z @1521 NONAME ?GetGatewayAddress@PIPSocket@@SAHAAVAddress@1@@Z @1522 NONAME ?GetGatewayInterface@PIPSocket@@SA?AVPString@@XZ @1523 NONAME ?GetGatewayInterfaceAddress@PIPSocket@@SA?AVAddress@1@XZ @6482 NONAME ?GetGrabHeight@PVideoChannel@@UAEHXZ @1524 NONAME ?GetGrabWidth@PVideoChannel@@UAEHXZ @1525 NONAME ?GetGroupName@PProcess@@QBE?AVPString@@XZ @1526 NONAME ?GetHandle@PChannel@@QBEHXZ @4666 NONAME ?GetHandle@PSoundChannel@@UBEHXZ @2739 NONAME ?GetHost@PHostByAddr@@AAEPAVPIPCacheData@@ABVAddress@PIPSocket@@@Z @1527 NONAME ?GetHost@PHostByName@@AAEPAVPIPCacheData@@ABVPString@@@Z @1528 NONAME ?GetHostAddress@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAV23@@Z @1529 NONAME ?GetHostAddress@PHostByName@@QAEHABVPString@@AAVAddress@PIPSocket@@@Z @1530 NONAME ?GetHostAddress@PIPSocket@@SAHAAVAddress@1@@Z @1531 NONAME ?GetHostAddress@PIPSocket@@SAHABVPString@@AAVAddress@1@@Z @1532 NONAME ?GetHostAddress@PIPXSocket@@SAHAAVAddress@1@@Z @1533 NONAME ?GetHostAddress@PIPXSocket@@SAHABVPString@@AAVAddress@1@@Z @1534 NONAME ?GetHostAliases@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPStringArray@@@Z @1535 NONAME ?GetHostAliases@PHostByName@@QAEHABVPString@@AAVPStringArray@@@Z @1536 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVAddress@1@@Z @1537 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVPString@@@Z @1538 NONAME ?GetHostName@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPString@@@Z @1539 NONAME ?GetHostName@PHostByName@@QAEHABVPString@@AAV2@@Z @1540 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABV2@@Z @1541 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABVAddress@1@@Z @1542 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@XZ @1543 NONAME ?GetHostName@PIPXSocket@@SA?AVPString@@ABVAddress@1@@Z @1544 NONAME ?GetHour@PTime@@QBEHXZ @4667 NONAME ?GetHours@PTimeInterval@@QBEHXZ @4668 NONAME ?GetHue@PVideoDevice@@UAEHXZ @1545 NONAME ?GetInfo@PDirectory@@UBEHAAVPFileInfo@@@Z @6157 NONAME ?GetInfo@PFile@@QAEHAAVPFileInfo@@@Z @4669 NONAME ?GetInfo@PFile@@SAHABVPFilePath@@AAVPFileInfo@@@Z @1547 NONAME ?GetInputDeviceNames@PVideoInputDevice_FakeVideo@@SA?AVPStringList@@XZ @2872 NONAME ?GetInputDeviceNames@PVideoInputDevice_VideoForWindows@@SA?AVPStringList@@XZ @2740 NONAME ?GetInputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @1550 NONAME ?GetInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@KAAAV1@XZ @6061 NONAME ?GetInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@KAAAV1@XZ @5736 NONAME ?GetInstance@?$PFactory@VPProcessStartup@@VPString@@@@KAAAV1@XZ @5737 NONAME ?GetInstance@?$PFactory@VPSoundChannel@@VPString@@@@KAAAV1@XZ @6062 NONAME ?GetInstance@?$PFactory@VPVideoInputDevice@@VPString@@@@KAAAV1@XZ @6063 NONAME ?GetInstance@?$PFactory@VPVideoOutputDevice@@VPString@@@@KAAAV1@XZ @6064 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@0_J@Z @2977 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@_J@Z @2978 NONAME ?GetInteger@PConfig@@UBEJABVPString@@0J@Z @2979 NONAME ?GetInteger@PConfig@@UBEJABVPString@@J@Z @2980 NONAME ?GetInteger@PWin32AsnAny@@QAEHAAJ@Z @1553 NONAME ?GetInterface@PIPSocket@@SA?AVPString@@VAddress@1@@Z @6483 NONAME ?GetInterfaceAddress@PWin32SnmpLibrary@@QAE?AVAddress@PIPSocket@@H@Z @6484 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@H@Z @1554 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@VAddress@PIPSocket@@@Z @1555 NONAME ?GetInterfaceTable@PIPSocket@@SAHAAV?$PList@VInterfaceEntry@PIPSocket@@@@@Z @1556 NONAME ?GetInterval@PTimeInterval@@QBEKXZ @1557 NONAME ?GetIP@Psockaddr@@QBE?AVAddress@PIPSocket@@XZ @2938 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@0@Z @1558 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@@Z @1559 NONAME ?GetIpAddress@PWin32AsnAny@@QAEHAAVAddress@PIPSocket@@@Z @1560 NONAME ?GetKeyAt@?$PSet@VPString@@@@UBEABVPString@@H@Z @1561 NONAME ?GetKeyAt@?$PStringDictionary@VPString@@@@QBEABVPString@@H@Z @6485 NONAME ?GetKeyList@?$PFactory@VPPluginModuleManager@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @5738 NONAME ?GetKeyList@?$PFactory@VPProcessStartup@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @5739 NONAME ?GetKeyList_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @5740 NONAME ?GetKeyList_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @5741 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@ABVPString@@@Z @2981 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@XZ @2982 NONAME ?GetLastError@PWin32PacketDriver@@QBEKXZ @1563 NONAME ?GetLastReadCount@PChannel@@UBEHXZ @2963 NONAME ?GetLastReadCount@PSoundChannel@@UBEHXZ @2964 NONAME ?GetLastReceiveAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @1564 NONAME ?GetLastWriteCount@PChannel@@UBEHXZ @2965 NONAME ?GetLastWriteCount@PSoundChannel@@UBEHXZ @2966 NONAME ?GetLength@PFile@@UBEJXZ @1565 NONAME ?GetLength@PString@@QBEHXZ @4670 NONAME ?GetLevel@PTrace@@SAIXZ @1566 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@@Z @1567 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @1568 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @1569 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @1570 NONAME ?GetLocalHostName@PIPSocket@@QAE?AVPString@@XZ @1571 NONAME ?GetLoopback6@Address@PIPSocket@@SAABV12@XZ @2939 NONAME ?GetLoopback@Address@PIPSocket@@SAABV12@XZ @1572 NONAME ?GetManufacturer@PProcess@@UBEABVPString@@XZ @1573 NONAME ?GetMaxFrameBytes@PVideoInputDevice_FakeVideo@@UAEHXZ @2873 NONAME ?GetMaxFrameBytes@PVideoInputDevice_VideoForWindows@@UAEHXZ @2741 NONAME ?GetMaxFrameBytes@PVideoOutputDeviceRGB@@UAEHXZ @6486 NONAME ?GetMaxFrameBytes@PVideoOutputDevice_NULLOutput@@UAEHXZ @2874 NONAME ?GetMaxFrameBytesConverted@PVideoDevice@@IBEHH@Z @6487 NONAME ?GetMaxHandles@PProcess@@QBEHXZ @4671 NONAME ?GetMedium@PEthSocket@@QAE?AW4MediumTypes@1@XZ @1578 NONAME ?GetMessageAttachments@PMail@@QAEHABVPString@@AAVPStringArray@@HH@Z @1579 NONAME ?GetMessageBody@PMail@@QAEHABVPString@@AAV2@H@Z @1580 NONAME ?GetMessageHeader@PMail@@QAEHABVPString@@AAUHeader@1@@Z @1581 NONAME ?GetMessageIDs@PMail@@QAE?AVPStringArray@@H@Z @1582 NONAME ?GetMicrosecond@PTime@@QBEJXZ @4672 NONAME ?GetMilliSeconds@PTimeInterval@@QBE_JXZ @4673 NONAME ?GetMinute@PTime@@QBEHXZ @4674 NONAME ?GetMinutes@PTimeInterval@@QBEJXZ @4675 NONAME ?GetMonth@PTime@@QBE?AW4Months@1@XZ @4676 NONAME ?GetMonthName@PTime@@SA?AVPString@@W4Months@1@W4NameType@1@@Z @1583 NONAME ?GetMutex@PWin32SnmpLibrary@@SAAAVPMutex@@XZ @5454 NONAME ?GetName@PChannel@@UBE?AVPString@@XZ @1584 NONAME ?GetName@PConsoleChannel@@UBE?AVPString@@XZ @1585 NONAME ?GetName@PDynaLink@@UBE?AVPString@@H@Z @1586 NONAME ?GetName@PEthSocket@@UBE?AVPString@@XZ @1587 NONAME ?GetName@PFile@@UBE?AVPString@@XZ @1588 NONAME ?GetName@PIndirectChannel@@UBE?AVPString@@XZ @1589 NONAME ?GetName@PIPSocket@@UBE?AVPString@@XZ @1590 NONAME ?GetName@PIPXSocket@@UBE?AVPString@@XZ @1591 NONAME ?GetName@PPipeChannel@@UBE?AVPString@@XZ @1592 NONAME ?GetName@PProcess@@UBEABVPString@@XZ @1593 NONAME ?GetName@PSerialChannel@@UBE?AVPString@@XZ @1594 NONAME ?GetName@PSoundChannelWin32@@UBE?AVPString@@XZ @2742 NONAME ?GetName@PVideoChannel@@UBE?AVPString@@XZ @1596 NONAME ?GetNameByProtocol@PSocket@@SA?AVPString@@G@Z @1597 NONAME ?GetNest@PReadWriteMutex@@IBEPAVNest@1@XZ @1598 NONAME ?GetNetMask@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @6488 NONAME ?GetNetworkInterface@PIPSocket@@SAHAAVAddress@1@@Z @6489 NONAME ?GetNextStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @1599 NONAME ?GetNotifiee@PSmartNotifieeRegistrar@@SAPAXI@Z @4819 NONAME ?GetNotifier@PTimer@@QBEABVPNotifier@@XZ @4677 NONAME ?GetNumChannels@PVideoDevice@@UAEHXZ @1601 NONAME ?GetNumChannels@PVideoInputDevice_FakeVideo@@UAEHXZ @2875 NONAME ?GetObjectsIndex@PAbstractDictionary@@UBEHPBVPObject@@@Z @1602 NONAME ?GetObjectsIndex@PAbstractList@@UBEHPBVPObject@@@Z @1603 NONAME ?GetObjectsIndex@PAbstractSet@@UBEHPBVPObject@@@Z @1604 NONAME ?GetObjectsIndex@PAbstractSortedList@@UBEHPBVPObject@@@Z @1605 NONAME ?GetObjectsIndex@PArrayObjects@@UBEHPBVPObject@@@Z @1606 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAJ@Z @1607 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVAddress@PIPSocket@@@Z @1608 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPString@@@Z @1609 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@PAXIPAI@Z @1610 NONAME ?GetOption@PSocket@@QAEHHAAHH@Z @1611 NONAME ?GetOption@PSocket@@QAEHHPAXHH@Z @1612 NONAME ?GetOptionCount@PArgList@@UBEHABVPString@@@Z @1613 NONAME ?GetOptionCount@PArgList@@UBEHD@Z @1614 NONAME ?GetOptionCount@PArgList@@UBEHPBD@Z @1615 NONAME ?GetOptionCount@PConfigArgs@@UBEHABVPString@@@Z @1616 NONAME ?GetOptionCount@PConfigArgs@@UBEHD@Z @1617 NONAME ?GetOptionCount@PConfigArgs@@UBEHPBD@Z @1618 NONAME ?GetOptionCountByIndex@PArgList@@ABEHH@Z @1619 NONAME ?GetOptions@PTrace@@SAIXZ @1620 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@ABV2@PBD@Z @1621 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@DPBD@Z @1622 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@PBD0@Z @1623 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@ABV2@PBD@Z @1624 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@DPBD@Z @1625 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@PBD0@Z @1626 NONAME ?GetOptionStringByIndex@PArgList@@ABE?AVPString@@HPBD@Z @1627 NONAME ?GetOSClass@PProcess@@SA?AVPString@@XZ @1628 NONAME ?GetOSConfigDir@PProcess@@SA?AVPDirectory@@XZ @1629 NONAME ?GetOSHardware@PProcess@@SA?AVPString@@XZ @1630 NONAME ?GetOSName@PProcess@@SA?AVPString@@XZ @1631 NONAME ?GetOSVersion@PProcess@@SA?AVPString@@XZ @1632 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_NULLOutput@@SA?AVPStringList@@XZ @2876 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_Window@@SA?AVPStringList@@XZ @6490 NONAME ?GetOutputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @1633 NONAME ?GetPacketType@PIPXSocket@@QAEHXZ @1634 NONAME ?GetParameter@PArgList@@QBE?AVPString@@H@Z @1635 NONAME ?GetParameters@PArgList@@QBE?AVPStringArray@@HH@Z @1636 NONAME ?GetParameters@PVideoDevice@@UAEHPAH0000@Z @1637 NONAME ?GetParent@PDirectory@@QBE?AV1@XZ @1638 NONAME ?GetParity@PSerialChannel@@QBE?AW4Parity@1@XZ @1639 NONAME ?GetPath@PDirectory@@QBE?AVPStringArray@@XZ @1640 NONAME ?GetPath@PFilePath@@QBE?AVPCaselessString@@XZ @1641 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@@Z @1642 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @1643 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @1644 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @1645 NONAME ?GetPeerHostName@PIPSocket@@QAE?AVPString@@XZ @1646 NONAME ?GetPluginAPIVersion@PPluginServiceDescriptor@@UBEIXZ @6491 NONAME ?GetPluginDirs@PPluginManager@@SA?AVPStringArray@@XZ @4820 NONAME ?GetPluginList@PPluginModuleManager@@UBE?AV?$PDictionary@VPString@@VPDynaLink@@@@XZ @4749 NONAME ?GetPluginManager@PPluginManager@@SAAAV1@XZ @2743 NONAME ?GetPluginsDeviceNames@PPluginManager@@QBE?AVPStringList@@ABVPString@@0H@Z @6492 NONAME ?GetPluginsProviding@PPluginManager@@QBE?AVPStringList@@ABVPString@@@Z @2744 NONAME ?GetPluginTypes@PPluginManager@@QBE?AVPStringList@@XZ @2745 NONAME ?GetPointer@PAbstractArray@@QAEPAXH@Z @1647 NONAME ?GetPointer@PBitArray@@QAEPAEH@Z @1648 NONAME ?GetPort@Psockaddr@@QBEGXZ @2940 NONAME ?GetPort@PSocket@@QBEGXZ @1649 NONAME ?GetPortByService@PSocket@@SAGPBDABVPString@@@Z @1650 NONAME ?GetPortByService@PSocket@@UBEGABVPString@@@Z @1651 NONAME ?GetPortNames@PSerialChannel@@SA?AVPStringList@@XZ @1652 NONAME ?GetPosition@PFile@@UBEJXZ @1653 NONAME ?GetPriority@PThread@@UBE?AW4Priority@1@XZ @1654 NONAME ?GetProcessID@PProcess@@QBEKXZ @1655 NONAME ?GetProtocolByName@PSocket@@SAGABVPString@@@Z @1656 NONAME ?GetProtocolName@PEthSocket@@MBEPBDXZ @1657 NONAME ?GetProtocolName@PICMPSocket@@MBEPBDXZ @1658 NONAME ?GetProtocolName@PIPXSocket@@MBEPBDXZ @1659 NONAME ?GetProtocolName@PSPXSocket@@MBEPBDXZ @1660 NONAME ?GetProtocolName@PTCPSocket@@MBEPBDXZ @1661 NONAME ?GetProtocolName@PUDPSocket@@MBEPBDXZ @1662 NONAME ?GetProtocolName@PWinSock@@EBEPBDXZ @1663 NONAME ?GetQoSSpec@PUDPSocket@@UAEAAVPQoS@@XZ @6493 NONAME ?GetQueryOidCommand@PWin32PacketSYS@@UBEIK@Z @1664 NONAME ?GetQueryOidCommand@PWin32PacketVxD@@UBEIK@Z @1665 NONAME ?GetReadChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @4678 NONAME ?GetReadTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @1666 NONAME ?GetReal@PConfig@@UBENABVPString@@0N@Z @2983 NONAME ?GetReal@PConfig@@UBENABVPString@@N@Z @2984 NONAME ?GetRefAt@PAbstractDictionary@@UBEAAVPObject@@ABV2@@Z @1668 NONAME ?GetReferenceAt@PAbstractList@@IBEAAVPObject@@H@Z @1669 NONAME ?GetRenderHeight@PVideoChannel@@QAEHXZ @1670 NONAME ?GetRenderWidth@PVideoChannel@@QAEHXZ @1671 NONAME ?GetResetTime@PTimer@@QBEABVPTimeInterval@@XZ @4679 NONAME ?GetReturnCode@PPipeChannel@@QBEHXZ @1672 NONAME ?GetRing@PSerialChannel@@QAEHXZ @1673 NONAME ?GetRoot@PDirectory@@QBE?AV1@XZ @1674 NONAME ?GetRouteAddress@PIPSocket@@SA?AVAddress@1@V21@@Z @6494 NONAME ?GetRouteTable@PIPSocket@@SAHAAV?$PList@VRouteEntry@PIPSocket@@@@@Z @1675 NONAME ?GetSampleRate@PSoundChannel@@UBEIXZ @2746 NONAME ?GetSampleRate@PSoundChannelWin32@@UBEIXZ @2747 NONAME ?GetSampleSize@PSoundChannel@@UBEIXZ @2748 NONAME ?GetSampleSize@PSoundChannelWin32@@UBEIXZ @2749 NONAME ?GetSecond@PTime@@QBEHXZ @4680 NONAME ?GetSeconds@PTimeInterval@@QBEJXZ @4681 NONAME ?GetSections@PConfig@@UBE?AVPStringList@@XZ @2985 NONAME ?GetSendAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @1679 NONAME ?GetService@PSocket@@QBE?AVPString@@XZ @1680 NONAME ?GetServiceByPort@PSocket@@SA?AVPString@@PBDG@Z @1681 NONAME ?GetServiceByPort@PSocket@@UBE?AVPString@@G@Z @1682 NONAME ?GetServiceDependencies@PServiceProcess@@UBEPBDXZ @1683 NONAME ?GetServiceDescriptor@PPluginManager@@QBEPAVPPluginServiceDescriptor@@ABVPString@@0@Z @6495 NONAME ?GetSize@Address@PIPSocket@@QBEHXZ @1684 NONAME ?GetSize@PArrayObjects@@UBEHXZ @1685 NONAME ?GetSize@PBitArray@@UBEHXZ @1686 NONAME ?GetSize@PContainer@@UBEHXZ @1687 NONAME ?GetSize@PSafeCollection@@QBEHXZ @6065 NONAME ?GetSize@Psockaddr@@QBEHXZ @2941 NONAME ?GetSpeed@PSerialChannel@@QBEKXZ @1688 NONAME ?GetSrcFrameSize@PColourConverter@@QBEHAAI0@Z @1689 NONAME ?GetStartTime@PProcess@@QBE?AVPTime@@XZ @1690 NONAME ?GetStatus@PRemoteConnection@@QBE?AW4Status@1@XZ @1691 NONAME ?GetStopBits@PSerialChannel@@QBEEXZ @1692 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@00@Z @2986 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@0@Z @2987 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@@Z @2988 NONAME ?GetStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @4682 NONAME ?GetStringsIndex@PStringArray@@QBEHABVPString@@@Z @4683 NONAME ?GetStringsIndex@PStringList@@QBEHABVPString@@@Z @4684 NONAME ?GetTarget@PSmartPtrInspector@@QBEPAXXZ @4821 NONAME ?GetTerminationValue@PProcess@@QBEHXZ @4685 NONAME ?GetThreadId@PThread@@UBEKXZ @1696 NONAME ?GetThreadName@PProcess@@UBE?AVPString@@XZ @1697 NONAME ?GetThreadName@PThread@@UBE?AVPString@@XZ @1698 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0@Z @2989 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0ABV2@@Z @2990 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@@Z @2991 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@ABV2@@Z @2992 NONAME ?GetTimeAM@PTime@@SA?AVPString@@XZ @1701 NONAME ?GetTimeAMPM@PTime@@SAHXZ @1702 NONAME ?GetTimeInSeconds@PTime@@QBEJXZ @4686 NONAME ?GetTimePM@PTime@@SA?AVPString@@XZ @1703 NONAME ?GetTimerList@PProcess@@QAEPAVPTimerList@@XZ @4687 NONAME ?GetTimeSeparator@PTime@@SA?AVPString@@XZ @1704 NONAME ?GetTimestamp@PTime@@QBE_JXZ @4688 NONAME ?GetTimeZone@PTime@@SAHW4TimeZoneType@1@@Z @1705 NONAME ?GetTimeZone@PTime@@SAHXZ @4689 NONAME ?GetTimeZoneString@PTime@@SA?AVPString@@W4TimeZoneType@1@@Z @1706 NONAME ?GetTitle@PFilePath@@QBE?AVPCaselessString@@XZ @1707 NONAME ?GetType@PFilePath@@QBE?AVPCaselessString@@XZ @1708 NONAME ?GetUserNameA@PProcess@@QBE?AVPString@@XZ @1709 NONAME ?GetValuesIndex@PAbstractDictionary@@UBEHABVPObject@@@Z @1710 NONAME ?GetValuesIndex@PAbstractList@@UBEHABVPObject@@@Z @1711 NONAME ?GetValuesIndex@PAbstractSet@@UBEHABVPObject@@@Z @1712 NONAME ?GetValuesIndex@PAbstractSortedList@@UBEHABVPObject@@@Z @1713 NONAME ?GetValuesIndex@PArrayObjects@@UBEHABVPObject@@@Z @1714 NONAME ?GetVersion@PProcess@@UBE?AVPString@@H@Z @1715 NONAME ?GetVFlipState@PVideoDevice@@UAEHXZ @1716 NONAME ?GetVFlipState@PVideoOutputDevice_Window@@UAEHXZ @6496 NONAME ?GetVideoFormat@PVideoDevice@@UBE?AW4VideoFormat@1@XZ @1717 NONAME ?GetVideoPlayer@PVideoChannel@@UAEPAVPVideoOutputDevice@@XZ @1718 NONAME ?GetVideoReader@PVideoChannel@@UAEPAVPVideoInputDevice@@XZ @1719 NONAME ?GetVolume@PDirectory@@QBE?AVPCaselessString@@XZ @1720 NONAME ?GetVolume@PFilePath@@QBE?AVPCaselessString@@XZ @1721 NONAME ?GetVolume@PSoundChannel@@UAEHAAI@Z @2751 NONAME ?GetVolume@PSoundChannelWin32@@UAEHAAI@Z @2752 NONAME ?GetVolumeSpace@PDirectory@@QBEHAA_J0AAK@Z @1723 NONAME ?GetWhiteness@PVideoDevice@@UAEHXZ @1724 NONAME ?GetWriteChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @4690 NONAME ?GetWriteTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @4691 NONAME ?GetYear@PTime@@QBEHXZ @4692 NONAME ?GrabBlankImage@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2877 NONAME ?GrabBouncingBoxes@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2878 NONAME ?GrabMovingBlocksTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2879 NONAME ?GrabMovingLineTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2880 NONAME ?GrabNTSCTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2881 NONAME ?GrabOriginalMovingBlocksFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2882 NONAME ?GrabTextVideoFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2883 NONAME ?GreytoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @6497 NONAME ?GreytoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAE@Z @6498 NONAME ?GreytoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAE@Z @6499 NONAME ?guaranteedDSCP@PQoS@@2DA @2662 NONAME ?HandleCapture@PVideoInputDevice_VideoForWindows@@MAEXAAVPThread@@H@Z @6500 NONAME ?HandleDisplay@PVideoOutputDevice_Window@@MAEXAAVPThread@@H@Z @6501 NONAME ?HandleError@PVideoInputDevice_VideoForWindows@@IAEJHPBD@Z @2754 NONAME ?HandleVideo@PVideoInputDevice_VideoForWindows@@IAEJPAUvideohdr_tag@@@Z @2755 NONAME ?HasAged@PIPCacheData@@QBEHXZ @1738 NONAME ?HashFunction@PChannel@@UBEHXZ @1739 NONAME ?HashFunction@PIPCacheKey@@UBEHXZ @1740 NONAME ?HashFunction@PObject@@UBEHXZ @1741 NONAME ?HashFunction@POrdinalKey@@UBEHXZ @1742 NONAME ?HashFunction@PRemoteConnection@@UBEHXZ @1743 NONAME ?HashFunction@PString@@UBEHXZ @1744 NONAME ?HasKey@PConfig@@UBEHABVPString@@0@Z @2993 NONAME ?HasKey@PConfig@@UBEHABVPString@@@Z @2994 NONAME ?HasOption@PArgList@@QBEHABVPString@@@Z @4693 NONAME ?HasOption@PArgList@@QBEHD@Z @4694 NONAME ?HasOption@PArgList@@QBEHPBD@Z @4695 NONAME ?HasPlayCompleted@PSoundChannel@@UAEHXZ @2756 NONAME ?HasPlayCompleted@PSoundChannelWin32@@UAEHXZ @2757 NONAME ?ICMP@@3VPICMPDLL@@A @1747 NONAME ?IllegalArgumentIndex@PArgList@@UBEXH@Z @1748 NONAME ?IN6_IS_ADDR_V4COMPAT@@YAHPBUin6_addr@@@Z @6502 NONAME ?IN6_IS_ADDR_V4MAPPED@@YAHPBUin6_addr@@@Z @6503 NONAME ?Include@PStringSet@@QAEXABVPString@@@Z @4696 NONAME ?Initialise@PTrace@@SAXIPBDI@Z @1749 NONAME ?InitialiseCapture@PVideoInputDevice_VideoForWindows@@IAEHXZ @2758 NONAME ?InitialiseProcessThread@PThread@@IAEXXZ @1751 NONAME ?insert@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@_N@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @5742 NONAME ?insert@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5303 NONAME ?insert@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @5743 NONAME ?insert@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@PAPAV3@ABQAV3@@Z @5305 NONAME ?insert@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEXPAPAVPPluginModuleManager@@IABQAV3@@Z @4898 NONAME ?insert@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEPAVPString@@PAV3@ABV3@@Z @5306 NONAME ?insert@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEXPAVPString@@IABV3@@Z @4899 NONAME ?insert@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@_N@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @5744 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @4900 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @6066 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @5745 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @6067 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @6068 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @6069 NONAME ?Insert@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @1752 NONAME ?Insert@PAbstractList@@UAEHABVPObject@@PAV2@@Z @1753 NONAME ?Insert@PAbstractSet@@UAEHABVPObject@@PAV2@@Z @1754 NONAME ?Insert@PAbstractSortedList@@UAEHABVPObject@@PAV2@@Z @1755 NONAME ?Insert@PArrayObjects@@UAEHABVPObject@@PAV2@@Z @1756 NONAME ?InsertAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @1757 NONAME ?InsertAt@PAbstractList@@UAEHHPAVPObject@@@Z @1758 NONAME ?InsertAt@PAbstractSet@@UAEHHPAVPObject@@@Z @1759 NONAME ?InsertAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @1760 NONAME ?InsertAt@PArrayObjects@@UAEHHPAVPObject@@@Z @1761 NONAME ?InsertString@PStringList@@QAEHABVPString@@0@Z @4697 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HD@Z @1762 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HHPBD@Z @1763 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HD@Z @1764 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HHPBD@Z @1765 NONAME ?InternalEndRead@PReadWriteMutex@@IAEXXZ @1766 NONAME ?InternalFromUCS2@PString@@IAEXPBGH@Z @1767 NONAME ?InternalIsDescendant@?$PArray@VPString@@@@UBEHPBD@Z @4252 NONAME ?InternalIsDescendant@?$PArray@VPWaveBuffer@@@@UBEHPBD@Z @4253 NONAME ?InternalIsDescendant@?$PArray@VPWin32PacketBuffer@@@@UBEHPBD@Z @4254 NONAME ?InternalIsDescendant@?$PBaseArray@D@@UBEHPBD@Z @4255 NONAME ?InternalIsDescendant@?$PBaseArray@E@@UBEHPBD@Z @4256 NONAME ?InternalIsDescendant@?$PBaseArray@F@@UBEHPBD@Z @4257 NONAME ?InternalIsDescendant@?$PBaseArray@G@@UBEHPBD@Z @4258 NONAME ?InternalIsDescendant@?$PBaseArray@H@@UBEHPBD@Z @4259 NONAME ?InternalIsDescendant@?$PBaseArray@I@@UBEHPBD@Z @4260 NONAME ?InternalIsDescendant@?$PBaseArray@J@@UBEHPBD@Z @4261 NONAME ?InternalIsDescendant@?$PBaseArray@K@@UBEHPBD@Z @4262 NONAME ?InternalIsDescendant@?$PBaseArray@PAVPObject@@@@UBEHPBD@Z @4263 NONAME ?InternalIsDescendant@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEHPBD@Z @4264 NONAME ?InternalIsDescendant@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEHPBD@Z @4265 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEHPBD@Z @4266 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEHPBD@Z @4822 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEHPBD@Z @4267 NONAME ?InternalIsDescendant@?$PDictionary@VPString@@VPDynaLink@@@@UBEHPBD@Z @4750 NONAME ?InternalIsDescendant@?$PList@VInterfaceEntry@PIPSocket@@@@UBEHPBD@Z @6504 NONAME ?InternalIsDescendant@?$PList@VPDynaLink@@@@UBEHPBD@Z @4268 NONAME ?InternalIsDescendant@?$PList@VPNotifier@@@@UBEHPBD@Z @4269 NONAME ?InternalIsDescendant@?$PList@VPPluginService@@@@UBEHPBD@Z @4270 NONAME ?InternalIsDescendant@?$PList@VPSafeObject@@@@UBEHPBD@Z @6070 NONAME ?InternalIsDescendant@?$PList@VPSocket@@@@UBEHPBD@Z @4271 NONAME ?InternalIsDescendant@?$PList@VPString@@@@UBEHPBD@Z @5309 NONAME ?InternalIsDescendant@?$PList@VPThread@@@@UBEHPBD@Z @4273 NONAME ?InternalIsDescendant@?$PList@VPTimer@@@@UBEHPBD@Z @4274 NONAME ?InternalIsDescendant@?$PSet@VPString@@@@UBEHPBD@Z @4275 NONAME ?InternalIsDescendant@?$PStringDictionary@VPString@@@@UBEHPBD@Z @6505 NONAME ?InternalIsDescendant@CMCDLL@PMail@@UBEHPBD@Z @4277 NONAME ?InternalIsDescendant@HouseKeepingThread@PProcess@@UBEHPBD@Z @4278 NONAME ?InternalIsDescendant@InterfaceEntry@PIPSocket@@UBEHPBD@Z @4279 NONAME ?InternalIsDescendant@MAPIDLL@PMail@@UBEHPBD@Z @4280 NONAME ?InternalIsDescendant@Nest@PReadWriteMutex@@UBEHPBD@Z @4281 NONAME ?InternalIsDescendant@PAbstractArray@@UBEHPBD@Z @4282 NONAME ?InternalIsDescendant@PAbstractDictionary@@UBEHPBD@Z @4283 NONAME ?InternalIsDescendant@PAbstractList@@UBEHPBD@Z @4284 NONAME ?InternalIsDescendant@PAbstractSet@@UBEHPBD@Z @4285 NONAME ?InternalIsDescendant@PAbstractSortedList@@UBEHPBD@Z @4286 NONAME ?InternalIsDescendant@PArgList@@UBEHPBD@Z @4287 NONAME ?InternalIsDescendant@PArrayObjects@@UBEHPBD@Z @4288 NONAME ?InternalIsDescendant@PBitArray@@UBEHPBD@Z @4289 NONAME ?InternalIsDescendant@PBYTEArray@@UBEHPBD@Z @4290 NONAME ?InternalIsDescendant@PCaselessString@@UBEHPBD@Z @4291 NONAME ?InternalIsDescendant@PChannel@@UBEHPBD@Z @4292 NONAME ?InternalIsDescendant@PCharArray@@UBEHPBD@Z @4293 NONAME ?InternalIsDescendant@PCollection@@UBEHPBD@Z @4294 NONAME ?InternalIsDescendant@PColourConverter@@UBEHPBD@Z @4295 NONAME ?InternalIsDescendant@PColourConverterRegistration@@UBEHPBD@Z @4296 NONAME ?InternalIsDescendant@PCondMutex@@UBEHPBD@Z @5314 NONAME ?InternalIsDescendant@PConfig@@UBEHPBD@Z @4297 NONAME ?InternalIsDescendant@PConfigArgs@@UBEHPBD@Z @4298 NONAME ?InternalIsDescendant@PConsoleChannel@@UBEHPBD@Z @4299 NONAME ?InternalIsDescendant@PContainer@@UBEHPBD@Z @4300 NONAME ?InternalIsDescendant@PCriticalSection@@UBEHPBD@Z @4698 NONAME ?InternalIsDescendant@PDirectory@@UBEHPBD@Z @4301 NONAME ?InternalIsDescendant@PDynaLink@@UBEHPBD@Z @4302 NONAME ?InternalIsDescendant@PEthSocket@@UBEHPBD@Z @4303 NONAME ?InternalIsDescendant@PFile@@UBEHPBD@Z @4304 NONAME ?InternalIsDescendant@PFileInfo@@UBEHPBD@Z @4305 NONAME ?InternalIsDescendant@PFilePath@@UBEHPBD@Z @4306 NONAME ?InternalIsDescendant@PHashTable@@UBEHPBD@Z @4307 NONAME ?InternalIsDescendant@PICMPDLL@@UBEHPBD@Z @4308 NONAME ?InternalIsDescendant@PICMPSocket@@UBEHPBD@Z @4309 NONAME ?InternalIsDescendant@PImageDLL@@UBEHPBD@Z @4310 NONAME ?InternalIsDescendant@PIndirectChannel@@UBEHPBD@Z @4311 NONAME ?InternalIsDescendant@PIntCondMutex@@UBEHPBD@Z @4312 NONAME ?InternalIsDescendant@PIPCacheData@@UBEHPBD@Z @4313 NONAME ?InternalIsDescendant@PIPCacheKey@@UBEHPBD@Z @4314 NONAME ?InternalIsDescendant@PIPDatagramSocket@@UBEHPBD@Z @4315 NONAME ?InternalIsDescendant@PIPSocket@@UBEHPBD@Z @4316 NONAME ?InternalIsDescendant@PIPXSocket@@UBEHPBD@Z @4317 NONAME ?InternalIsDescendant@PluginLoaderStartup@@UBEHPBD@Z @4903 NONAME ?InternalIsDescendant@PMail@@UBEHPBD@Z @4318 NONAME ?InternalIsDescendant@PMutex@@UBEHPBD@Z @4319 NONAME ?InternalIsDescendant@PNotifier@@UBEHPBD@Z @4320 NONAME ?InternalIsDescendant@PNotifierFunction@@UBEHPBD@Z @4321 NONAME ?InternalIsDescendant@PObject@@UBEHPBD@Z @4322 NONAME ?InternalIsDescendant@POrdinalKey@@UBEHPBD@Z @4323 NONAME ?InternalIsDescendant@POrdinalToString@@UBEHPBD@Z @4324 NONAME ?InternalIsDescendant@PPipeChannel@@UBEHPBD@Z @4325 NONAME ?InternalIsDescendant@PPluginManager@@UBEHPBD@Z @4326 NONAME ?InternalIsDescendant@PPointer@@UBEHPBD@Z @4823 NONAME ?InternalIsDescendant@PProcess@@UBEHPBD@Z @4327 NONAME ?InternalIsDescendant@PProcessStartup@@UBEHPBD@Z @5315 NONAME ?InternalIsDescendant@PQoS@@UBEHPBD@Z @4328 NONAME ?InternalIsDescendant@PRASDLL@@UBEHPBD@Z @4329 NONAME ?InternalIsDescendant@PReadWriteMutex@@UBEHPBD@Z @4330 NONAME ?InternalIsDescendant@PRegularExpression@@UBEHPBD@Z @4331 NONAME ?InternalIsDescendant@PRemoteConnection@@UBEHPBD@Z @4332 NONAME ?InternalIsDescendant@PSafeCollection@@UBEHPBD@Z @4333 NONAME ?InternalIsDescendant@PSafeObject@@UBEHPBD@Z @4334 NONAME ?InternalIsDescendant@PSafePtrBase@@UBEHPBD@Z @4335 NONAME ?InternalIsDescendant@PSemaphore@@UBEHPBD@Z @4336 NONAME ?InternalIsDescendant@PSerialChannel@@UBEHPBD@Z @4337 NONAME ?InternalIsDescendant@PServiceProcess@@UBEHPBD@Z @4338 NONAME ?InternalIsDescendant@PSimpleThread@@UBEHPBD@Z @4339 NONAME ?InternalIsDescendant@PSmartPointer@@UBEHPBD@Z @4340 NONAME ?InternalIsDescendant@PSmartPtrInspector@@UBEHPBD@Z @4824 NONAME ?InternalIsDescendant@PSocket@@UBEHPBD@Z @4341 NONAME ?InternalIsDescendant@PSortedStringList@@UBEHPBD@Z @4342 NONAME ?InternalIsDescendant@PSound@@UBEHPBD@Z @4343 NONAME ?InternalIsDescendant@PSoundChannel@@UBEHPBD@Z @4344 NONAME ?InternalIsDescendant@PSPXSocket@@UBEHPBD@Z @4345 NONAME ?InternalIsDescendant@PStandardColourConverter@@UBEHPBD@Z @4346 NONAME ?InternalIsDescendant@PString@@UBEHPBD@Z @4347 NONAME ?InternalIsDescendant@PStringArray@@UBEHPBD@Z @4348 NONAME ?InternalIsDescendant@PStringList@@UBEHPBD@Z @4349 NONAME ?InternalIsDescendant@PStringSet@@UBEHPBD@Z @4350 NONAME ?InternalIsDescendant@PStringStream@@UBEHPBD@Z @4351 NONAME ?InternalIsDescendant@PStringToOrdinal@@UBEHPBD@Z @4352 NONAME ?InternalIsDescendant@PStringToString@@UBEHPBD@Z @4353 NONAME ?InternalIsDescendant@PStructuredFile@@UBEHPBD@Z @4354 NONAME ?InternalIsDescendant@PSyncPoint@@UBEHPBD@Z @4355 NONAME ?InternalIsDescendant@PSystemLog@@UBEHPBD@Z @4356 NONAME ?InternalIsDescendant@PTCPSocket@@UBEHPBD@Z @4357 NONAME ?InternalIsDescendant@PTextFile@@UBEHPBD@Z @4358 NONAME ?InternalIsDescendant@PThread@@UBEHPBD@Z @4359 NONAME ?InternalIsDescendant@PTime@@UBEHPBD@Z @4360 NONAME ?InternalIsDescendant@PTimeInterval@@UBEHPBD@Z @4361 NONAME ?InternalIsDescendant@PTimer@@UBEHPBD@Z @4362 NONAME ?InternalIsDescendant@PTimerList@@UBEHPBD@Z @4363 NONAME ?InternalIsDescendant@PUDPSocket@@UBEHPBD@Z @4364 NONAME ?InternalIsDescendant@PVideoChannel@@UBEHPBD@Z @4365 NONAME ?InternalIsDescendant@PVideoDevice@@UBEHPBD@Z @4366 NONAME ?InternalIsDescendant@PVideoInputDevice@@UBEHPBD@Z @4367 NONAME ?InternalIsDescendant@PVideoInputDevice_FakeVideo@@UBEHPBD@Z @4368 NONAME ?InternalIsDescendant@PVideoInputDevice_VideoForWindows@@UBEHPBD@Z @4369 NONAME ?InternalIsDescendant@PVideoOutputDevice@@UBEHPBD@Z @4371 NONAME ?InternalIsDescendant@PVideoOutputDeviceRGB@@UBEHPBD@Z @6506 NONAME ?InternalIsDescendant@PVideoOutputDevice_NULLOutput@@UBEHPBD@Z @4372 NONAME ?InternalIsDescendant@PVideoOutputDevice_Window@@UBEHPBD@Z @6507 NONAME ?InternalIsDescendant@PWaveBuffer@@UBEHPBD@Z @4373 NONAME ?InternalIsDescendant@PWaveFormat@@UBEHPBD@Z @4374 NONAME ?InternalIsDescendant@PWin32PacketBuffer@@UBEHPBD@Z @4375 NONAME ?InternalIsDescendant@PWin32SnmpLibrary@@UBEHPBD@Z @4376 NONAME ?InternalIsDescendant@PWinQoS@@UBEHPBD@Z @4377 NONAME ?InternalIsDescendant@PWinSock@@UBEHPBD@Z @4378 NONAME ?InternalIsDescendant@RouteEntry@PIPSocket@@UBEHPBD@Z @4379 NONAME ?InternalIsDescendant@SelectList@PSocket@@UBEHPBD@Z @4380 NONAME ?InternalIsDescendant@Table@PHashTable@@UBEHPBD@Z @4381 NONAME ?InternalIsDescendant@WinSNMPLoader@@UBEHPBD@Z @5457 NONAME ?InternalSetSize@PAbstractArray@@IAEHHH@Z @6508 NONAME ?InternalStartRead@PReadWriteMutex@@IAEXXZ @1768 NONAME ?InternalStringSelect@PSortedStringList@@IBEHPBDHPAUElement@PAbstractSortedList@@@Z @3027 NONAME ?iNumGlobal@?1??WspiapiLoad@@9@4@4HB @2942 NONAME ?IoControl@PWin32PacketDriver@@QAEHIPBXKPAXKAAK@Z @1770 NONAME ?IsAddressReachable@PIPSocket@@SAHVAddress@1@00@Z @6509 NONAME ?IsAny@Address@PIPSocket@@QBEHXZ @6510 NONAME ?IsBroadcast@Address@PIPSocket@@QBEHXZ @1772 NONAME ?IsCapturing@PVideoInputDevice_FakeVideo@@UAEHXZ @2884 NONAME ?IsCapturing@PVideoInputDevice_VideoForWindows@@UAEHXZ @2759 NONAME ?IsClass@PObject@@QBEHPBD@Z @5317 NONAME ?IsDaylightSavings@PTime@@SAHXZ @1899 NONAME ?IsEmpty@PContainer@@UBEHXZ @2024 NONAME ?IsEmpty@PString@@UBEHXZ @2025 NONAME ?IsEndOfFile@PFile@@QBEHXZ @2026 NONAME ?IsFuture@PTime@@QBEHXZ @4699 NONAME ?IsGrabberOpen@PVideoChannel@@UAEHXZ @2027 NONAME ?IsGUIProcess@PProcess@@UBEHXZ @2028 NONAME ?IsInitialised@PProcess@@SAHXZ @2029 NONAME ?IsIpAddressFamilyV6Supported@PIPSocket@@SAHXZ @2945 NONAME ?IsLoaded@PDynaLink@@UBEHXZ @2030 NONAME ?IsLocalHost@PIPSocket@@SAHABVPString@@@Z @2031 NONAME ?IsLoggedOn@PMail@@QBEHXZ @2032 NONAME ?IsLoopback@Address@PIPSocket@@QBEHXZ @2033 NONAME ?IsNULL@PSmartPointer@@QBEHXZ @5318 NONAME ?IsOpen@PChannel@@UBEHXZ @2034 NONAME ?IsOpen@PICMPSocket@@UBEHXZ @2036 NONAME ?IsOpen@PIndirectChannel@@UBEHXZ @2037 NONAME ?IsOpen@PPipeChannel@@UBEHXZ @2038 NONAME ?IsOpen@PSoundChannel@@UBEHXZ @2768 NONAME ?IsOpen@PSoundChannelWin32@@UBEHXZ @2769 NONAME ?IsOpen@PVideoChannel@@UBEHXZ @2039 NONAME ?IsOpen@PVideoInputDevice_FakeVideo@@UAEHXZ @2889 NONAME ?IsOpen@PVideoInputDevice_VideoForWindows@@UAEHXZ @2770 NONAME ?IsOpen@PVideoOutputDevice_NULLOutput@@UAEHXZ @2890 NONAME ?IsOpen@PVideoOutputDevice_Window@@UAEHXZ @6511 NONAME ?IsOpen@PWin32PacketDriver@@QBEHXZ @2043 NONAME ?IsPast@PTime@@QBEHXZ @4700 NONAME ?IsPaused@PTimer@@QBEHXZ @4701 NONAME ?IsRecordBufferFull@PSoundChannel@@UAEHXZ @2771 NONAME ?IsRecordBufferFull@PSoundChannelWin32@@UAEHXZ @2772 NONAME ?IsRenderOpen@PVideoChannel@@UAEHXZ @2045 NONAME ?IsRFC1918@Address@PIPSocket@@QBEHXZ @6512 NONAME ?IsRoot@PDirectory@@QBEHXZ @2046 NONAME ?IsRunning@PPipeChannel@@QBEHXZ @2047 NONAME ?IsRunning@PTimer@@QBEHXZ @4702 NONAME ?IsSeparator@PDirectory@@SAHD@Z @4703 NONAME ?IsServiceProcess@PProcess@@UBEHXZ @2048 NONAME ?IsServiceProcess@PServiceProcess@@UBEHXZ @2049 NONAME ?IsSingleton@?$PFactory@VPProcessStartup@@VPString@@@@SAHABVPString@@@Z @5746 NONAME ?IsSingleton_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE_NABVPString@@@Z @5747 NONAME ?IsSubDir@PDirectory@@UBEHXZ @6158 NONAME ?IsSuspended@PThread@@UBEHXZ @2051 NONAME ?IsTerminated@PThread@@UBEHXZ @2052 NONAME ?IsTextFile@PFile@@MBEHXZ @2053 NONAME ?IsTextFile@PTextFile@@MBEHXZ @2054 NONAME ?IsType@PWin32PacketBuffer@@QBEHG@Z @2055 NONAME ?IsUnique@PContainer@@QBEHXZ @4704 NONAME ?IsV4Mapped@Address@PIPSocket@@QBEHXZ @2946 NONAME ?IsValid@Address@PIPSocket@@QBEHXZ @2056 NONAME ?IsValid@Address@PIPXSocket@@QBEHXZ @2057 NONAME ?IsValid@PFilePath@@SAHABVPString@@@Z @2058 NONAME ?IsValid@PFilePath@@SAHD@Z @2059 NONAME ?IsValid@PTime@@QBEHXZ @4705 NONAME ?Kill@PPipeChannel@@QAEHH@Z @2060 NONAME ?Leave@PCriticalSection@@QAEXXZ @4706 NONAME ?Left@PString@@QBE?AV1@H@Z @2061 NONAME ?LeftRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3020 NONAME ?LeftTrim@PString@@QBE?AV1@XZ @2063 NONAME ?Lines@PString@@QBE?AVPStringArray@@XZ @2064 NONAME ?Listen@PEthSocket@@UAEHIGW4Reusability@PSocket@@@Z @2065 NONAME ?Listen@PIPSocket@@UAEHABVAddress@1@IGW4Reusability@PSocket@@@Z @2066 NONAME ?Listen@PIPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2067 NONAME ?Listen@PIPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2068 NONAME ?Listen@PSocket@@UAEHIGW4Reusability@1@@Z @2069 NONAME ?Listen@PSPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2070 NONAME ?Listen@PTCPSocket@@UAEHABVAddress@PIPSocket@@IGW4Reusability@PSocket@@@Z @2071 NONAME ?Listen@PTCPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2072 NONAME ?Load@PSound@@QAEHABVPFilePath@@@Z @2073 NONAME ?LoadPlugin@PPluginManager@@QAEHABVPString@@@Z @2773 NONAME ?LoadPluginDirectory@PPluginManager@@QAEXABVPDirectory@@@Z @5320 NONAME ?loadSoundStuff@PWLibStupidWindowsHacks@@3HA @6071 NONAME ?loadVideoStuff@PWLibStupidWindowsHacks@@3HA @6072 NONAME ?Lock@PSafeLockReadOnly@@QAEHXZ @6166 NONAME ?Lock@PSafeLockReadWrite@@QAEHXZ @6167 NONAME ?LockReadOnly@PSafeObject@@QBEHXZ @2074 NONAME ?LockReadWrite@PSafeObject@@QAEHXZ @2075 NONAME ?LogOff@PMail@@UAEHXZ @2076 NONAME ?LogOn@PMail@@QAEHABVPString@@00@Z @2077 NONAME ?LogOn@PMail@@QAEHABVPString@@0@Z @2078 NONAME ?LogOnCommonInterface@PMail@@IAEHPBD00@Z @2079 NONAME ?LookUp@PMail@@QAE?AW4LookUpResult@1@ABVPString@@PAV3@@Z @2080 NONAME ?lower_bound@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @5748 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6073 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @5749 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @5750 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6513 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6514 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6515 NONAME ?Main@HouseKeepingThread@PProcess@@UAEXXZ @2081 NONAME ?Main@PSimpleThread@@UAEXXZ @2082 NONAME ?MainEntry@PServiceProcess@@AAEXKPAPAD@Z @2084 NONAME ?MainFunction@PThread@@CGIPAX@Z @2085 NONAME ?MakeEmpty@PString@@UAEAAV1@XZ @4836 NONAME ?MakeEmpty@PStringStream@@UAEAAVPString@@XZ @4837 NONAME ?MakeMinimumSize@PString@@QAEHXZ @4708 NONAME ?MakeUnique@PAbstractArray@@UAEHXZ @2086 NONAME ?MakeUnique@PAbstractList@@UAEHXZ @2087 NONAME ?MakeUnique@PAbstractSet@@UAEHXZ @2088 NONAME ?MakeUnique@PAbstractSortedList@@UAEHXZ @2089 NONAME ?MakeUnique@PArrayObjects@@UAEHXZ @2090 NONAME ?MakeUnique@PContainer@@UAEHXZ @2091 NONAME ?MakeUnique@PDirectory@@UAEHXZ @2092 NONAME ?MakeUnique@PHashTable@@UAEHXZ @2093 NONAME ?MakeUnique@PString@@UAEHXZ @2094 NONAME ?MarkMessageRead@PMail@@QAEHABVPString@@@Z @2095 NONAME ?MemFree@PWin32AsnAny@@QAEXXZ @2096 NONAME ?Mid@PString@@QBE?AV1@HH@Z @2097 NONAME ?MissingArgument@PArgList@@UBEXABVPString@@@Z @2098 NONAME ?ModifyQoSSpec@PUDPSocket@@UAEHPAVPQoS@@@Z @2667 NONAME ?Move@PFile@@SAHABVPFilePath@@0H@Z @2099 NONAME ?Move@PNotifierList@@QAEXAAV1@@Z @4825 NONAME ?Move@PWin32OidBuffer@@QAEXPAEK@Z @2100 NONAME ?Next@PDirectory@@QAEHXZ @2101 NONAME ?Next@PSafePtrBase@@IAEXXZ @2102 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@ABV1@HH@Z @2104 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@PBDHH@Z @2105 NONAME ?OnContinue@PServiceProcess@@UAEXXZ @2106 NONAME ?OnControl@PServiceProcess@@UAEXXZ @2107 NONAME ?OnLoadModule@PPluginModuleManager@@MAEXAAVPDynaLink@@H@Z @4751 NONAME ?OnLoadPlugin@PPluginModuleManager@@UAEXAAVPDynaLink@@H@Z @4826 NONAME ?OnOpen@PIndirectChannel@@MAEHXZ @2108 NONAME ?OnOutOfBand@PTCPSocket@@UAEXPBXH@Z @2109 NONAME ?OnPause@PServiceProcess@@UAEHXZ @2110 NONAME ?OnReadComplete@PChannel@@UAEXPAXH@Z @2111 NONAME ?OnShutdown@PluginLoaderStartup@@UAEXXZ @5458 NONAME ?OnShutdown@PPluginModuleManager@@UAEXXZ @5459 NONAME ?OnShutdown@PProcessStartup@@UAEXXZ @4908 NONAME ?OnShutdown@WinSNMPLoader@@UAEXXZ @5460 NONAME ?OnStartup@PluginLoaderStartup@@UAEXXZ @4909 NONAME ?OnStartup@PProcessStartup@@UAEXXZ @5323 NONAME ?OnStartup@WinSNMPLoader@@UAEXXZ @5461 NONAME ?OnStop@PServiceProcess@@UAEXXZ @2112 NONAME ?OnTimeout@PTimer@@UAEXXZ @2113 NONAME ?OnWait@PCondMutex@@UAEXXZ @2114 NONAME ?OnWriteComplete@PChannel@@UAEXPBXH@Z @2115 NONAME ?Open@NT_ServiceManager@@AAEHPAVPServiceProcess@@@Z @2116 NONAME ?Open@PConsoleChannel@@UAEHW4ConsoleType@1@@Z @2117 NONAME ?Open@PDirectory@@UAEHH@Z @6159 NONAME ?Open@PDynaLink@@UAEHABVPString@@@Z @2119 NONAME ?Open@PFile@@UAEHABVPFilePath@@W4OpenMode@1@H@Z @2121 NONAME ?Open@PFile@@UAEHW4OpenMode@1@H@Z @2122 NONAME ?Open@PIndirectChannel@@QAEHAAVPChannel@@@Z @2123 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@0HH@Z @2124 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2125 NONAME ?Open@PMultiMediaFile@@QAEHABVPFilePath@@KPAU_MMIOINFO@@@Z @2126 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@1@HH@Z @2127 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HH@Z @2128 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringToString@@W4OpenMode@1@HH@Z @2129 NONAME ?Open@PPipeChannel@@QAEHABVPString@@W4OpenMode@1@HH@Z @2130 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@00H@Z @2131 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@H@Z @2132 NONAME ?Open@PRemoteConnection@@QAEHH@Z @2133 NONAME ?Open@PSerialChannel@@UAEHAAVPConfig@@@Z @2134 NONAME ?Open@PSerialChannel@@UAEHABVPString@@KEW4Parity@1@EW4FlowControl@1@2@Z @2135 NONAME ?Open@PSoundChannel@@UAEHABVPString@@W4Directions@1@III@Z @2775 NONAME ?Open@PSoundChannelWin32@@QAEHABVPString@@W4Directions@PSoundChannel@@ABVPWaveFormat@@@Z @2776 NONAME ?Open@PSoundChannelWin32@@UAEHABVPString@@W4Directions@PSoundChannel@@III@Z @2777 NONAME ?Open@PVideoChannel@@QAEHABVPString@@W4Directions@1@@Z @2138 NONAME ?Open@PVideoInputDevice_FakeVideo@@UAEHABVPString@@H@Z @2891 NONAME ?Open@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@H@Z @2778 NONAME ?Open@PVideoOutputDevice_NULLOutput@@UAEHABVPString@@H@Z @2892 NONAME ?Open@PVideoOutputDevice_Window@@UAEHABVPString@@H@Z @6516 NONAME ?OpenDevice@PSoundChannelWin32@@AAEHI@Z @2779 NONAME ?OpenFull@PVideoDevice@@UAEHABUOpenArgs@1@H@Z @2143 NONAME ?OpenManager@NT_ServiceManager@@AAEHXZ @2144 NONAME ?OpenSocket@PEthSocket@@MAEHXZ @2145 NONAME ?OpenSocket@PICMPSocket@@MAEHH@Z @2146 NONAME ?OpenSocket@PICMPSocket@@MAEHXZ @2147 NONAME ?OpenSocket@PIPXSocket@@MAEHXZ @2148 NONAME ?OpenSocket@PSPXSocket@@MAEHXZ @2149 NONAME ?OpenSocket@PTCPSocket@@MAEHH@Z @2150 NONAME ?OpenSocket@PTCPSocket@@MAEHXZ @2151 NONAME ?OpenSocket@PUDPSocket@@MAEHH@Z @2152 NONAME ?OpenSocket@PUDPSocket@@MAEHXZ @2153 NONAME ?OpenSocket@PWinSock@@EAEHXZ @2154 NONAME ?OpenSocketGQOS@PUDPSocket@@MAEHHHH@Z @2668 NONAME ?OpenWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@AAVPWaveFormat@@AAK@Z @2155 NONAME ?OrderSelect@Info@PAbstractSortedList@@QBEPAUElement@2@PAU32@H@Z @6517 NONAME ?os_accept@PSocket@@IAEHAAV1@PAUsockaddr@@PAH@Z @2157 NONAME ?os_close@PSocket@@IAEHXZ @2158 NONAME ?os_connect@PSocket@@IAEHPAUsockaddr@@H@Z @2159 NONAME ?os_gmtime@PTime@@SAPAUtm@@PBJPAU2@@Z @2160 NONAME ?os_localtime@PTime@@SAPAUtm@@PBJPAU2@@Z @2161 NONAME ?os_recvfrom@PSocket@@IAEHPAXHHPAUsockaddr@@PAH@Z @2162 NONAME ?os_sendto@PSocket@@IAEHPBXHHPAUsockaddr@@H@Z @2164 NONAME ?os_socket@PSocket@@IAEHHHH@Z @2165 NONAME ?Output@PSystemLog@@SAXW4Level@1@PBD@Z @2166 NONAME ?overflow@Buffer@PDebugStream@@UAEHH@Z @2167 NONAME ?overflow@Buffer@PStringStream@@UAEHH@Z @2168 NONAME ?overflow@Buffer@PSystemLog@@UAEHH@Z @2169 NONAME ?overflow@PChannelStreamBuffer@@MAEHH@Z @2170 NONAME ?Parse@Frame@PEthSocket@@QAEXAAGAAPAEAAH@Z @2171 NONAME ?Parse@PArgList@@UAEHABVPString@@H@Z @2172 NONAME ?Parse@PArgList@@UAEHPBDH@Z @2173 NONAME ?ParseOption@PArgList@@AAEHHHAAHABV?$PScalarArray@H@@@Z @2174 NONAME ?PAssertFunc@@YAXPBD@Z @2175 NONAME ?PAssertFunc@@YAXPBDH00@Z @2176 NONAME ?PAssertFunc@@YAXPBDH0W4PStandardAssertMessage@@@Z @2177 NONAME ?PAssertFuncInline@@YA_N_NPBDH11@Z @6074 NONAME ?PAssertFuncInline@@YA_N_NPBDH1W4PStandardAssertMessage@@@Z @6075 NONAME ?Pause@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2178 NONAME ?Pause@PTimer@@QAEXXZ @2179 NONAME ?Pause@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2180 NONAME ?PDummyFunctionToMakeSureSymbolsAreInDEFFile@@YAXXZ @2181 NONAME ?pfFreeAddrInfo@?1??WspiapiFreeAddrInfo@@9@4@4P6GXPAUaddrinfo@@@ZA @2947 NONAME ?pfGetAddrInfo@?1??WspiapiGetAddrInfo@@9@16@4P6GHPBD0PBUaddrinfo@@PAPAU2@@ZA @2948 NONAME ?pfGetNameInfo@?1??WspiapiGetNameInfo@@9@28@4P6GHPBUsockaddr@@HPADI1IH@ZA @2949 NONAME ?PGetErrorStream@@YAAAVostream@@XZ @2182 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@@Z @2183 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@AAVPingInfo@1@@Z @2184 NONAME ?PlatformOpen@PPipeChannel@@AAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HHPBVPStringToString@@@Z @2185 NONAME ?Play@PSound@@QAEHABVPString@@@Z @6518 NONAME ?Play@PSound@@QAEHXZ @2186 NONAME ?PlayFile@PSound@@SAHABVPFilePath@@H@Z @2187 NONAME ?PlayFile@PSoundChannel@@UAEHABVPFilePath@@H@Z @2780 NONAME ?PlayFile@PSoundChannelWin32@@UAEHABVPFilePath@@H@Z @2781 NONAME ?PlaySoundA@PSoundChannel@@UAEHABVPSound@@H@Z @2782 NONAME ?PlaySoundA@PSoundChannelWin32@@UAEHABVPSound@@H@Z @2783 NONAME ?PLoadPluginDirectory@@YAXAAVPPluginManager@@ABVPDirectory@@PBD@Z @5464 NONAME ?PluginLoaderStartup_PString@PWLibFactoryLoader@@3HA @6519 NONAME ?PPlugin_PSoundChannel_WindowsMultimedia_Registration_Instance@@3VPPlugin_PSoundChannel_WindowsMultimedia_Registration@@A @2785 NONAME ?PPlugin_PVideoInputDevice_FakeVideo_Registration_Instance@@3VPPlugin_PVideoInputDevice_FakeVideo_Registration@@A @2894 NONAME ?PPlugin_PVideoInputDevice_VideoForWindows_Registration_Instance@@3VPPlugin_PVideoInputDevice_VideoForWindows_Registration@@A @2787 NONAME ?PPlugin_PVideoOutputDevice_NULLOutput_Registration_Instance@@3VPPlugin_PVideoOutputDevice_NULLOutput_Registration@@A @2896 NONAME ?PPlugin_PVideoOutputDevice_Window_Registration_Instance@@3VPPlugin_PVideoOutputDevice_Window_Registration@@A @6520 NONAME ?Predecessor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @6521 NONAME ?PreInitialise@PProcess@@SAXHPAPAD0@Z @2191 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEIN__@@@Z @2192 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEOUT__@@AAH@Z @2193 NONAME ?PrepareCommon@PWaveBuffer@@AAEXH@Z @2194 NONAME ?PreShutdown@PProcess@@SAXXZ @5324 NONAME ?Previous@PSafePtrBase@@IAEXXZ @2195 NONAME ?PrintElementOn@?$PBaseArray@D@@MBEXAAVostream@@H@Z @2196 NONAME ?PrintElementOn@?$PBaseArray@E@@MBEXAAVostream@@H@Z @2197 NONAME ?PrintElementOn@?$PBaseArray@F@@MBEXAAVostream@@H@Z @2198 NONAME ?PrintElementOn@?$PBaseArray@G@@MBEXAAVostream@@H@Z @2199 NONAME ?PrintElementOn@?$PBaseArray@H@@MBEXAAVostream@@H@Z @2200 NONAME ?PrintElementOn@?$PBaseArray@I@@MBEXAAVostream@@H@Z @2201 NONAME ?PrintElementOn@?$PBaseArray@J@@MBEXAAVostream@@H@Z @2202 NONAME ?PrintElementOn@?$PBaseArray@K@@MBEXAAVostream@@H@Z @2203 NONAME ?PrintElementOn@?$PBaseArray@PAVElement@PHashTable@@@@MBEXAAVostream@@H@Z @2204 NONAME ?PrintElementOn@?$PBaseArray@PAVPObject@@@@MBEXAAVostream@@H@Z @2205 NONAME ?PrintElementOn@PAbstractArray@@MBEXAAVostream@@H@Z @2206 NONAME ?PrintOn@InterfaceEntry@PIPSocket@@UBEXAAVostream@@@Z @2207 NONAME ?PrintOn@PAbstractArray@@UBEXAAVostream@@@Z @2208 NONAME ?PrintOn@PAbstractDictionary@@UBEXAAVostream@@@Z @2209 NONAME ?PrintOn@PArgList@@UBEXAAVostream@@@Z @2210 NONAME ?PrintOn@PBYTEArray@@UBEXAAVostream@@@Z @2211 NONAME ?PrintOn@PCharArray@@UBEXAAVostream@@@Z @2212 NONAME ?PrintOn@PCollection@@UBEXAAVostream@@@Z @2213 NONAME ?PrintOn@PIntCondMutex@@UBEXAAVostream@@@Z @2214 NONAME ?PrintOn@PObject@@UBEXAAVostream@@@Z @2215 NONAME ?PrintOn@POrdinalKey@@UBEXAAVostream@@@Z @2216 NONAME ?PrintOn@PString@@UBEXAAVostream@@@Z @2217 NONAME ?PrintOn@PThread@@UBEXAAVostream@@@Z @2218 NONAME ?PrintOn@PTime@@UBEXAAVostream@@@Z @2219 NONAME ?PrintOn@PTimeInterval@@UBEXAAVostream@@@Z @2220 NONAME ?PrintOn@PWaveFormat@@UBEXAAVostream@@@Z @2221 NONAME ?Process@PTimer@@AAEXABVPTimeInterval@@AAV2@@Z @2222 NONAME ?Process@PTimerList@@QAE?AVPTimeInterval@@XZ @2223 NONAME ?ProcessCommand@PServiceProcess@@AAEHPBD@Z @2224 NONAME ?PSetErrorStream@@YAXPAVostream@@@Z @2225 NONAME ?psprintf@@YA?AVPString@@PBDZZ @2226 NONAME ?PTraceCurrentLevel@@3IA @5325 NONAME ?push_back@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEXABQAVPPluginModuleManager@@@Z @5326 NONAME ?push_back@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEXABVPString@@@Z @5327 NONAME ?PutData@PWin32PacketBuffer@@QAEHPBXH@Z @2227 NONAME ?PVideoOutputDevice_Window_descriptor@@3VPVideoOutputDevice_Window_PluginServiceDescriptor@@A @6522 NONAME ?pvsprintf@@YA?AVPString@@ABV1@PAD@Z @4709 NONAME ?pvsprintf@@YA?AVPString@@PBDPAD@Z @2228 NONAME ?PWaitOnExitConsoleWindow@@YAXXZ @2229 NONAME ?p_argc@PProcess@@0HA @2230 NONAME ?p_argv@PProcess@@0PAPADA @2231 NONAME ?p_envp@PProcess@@0PAPADA @2232 NONAME ?P_IsOldWin95@@YAHXZ @2233 NONAME ?p_unsigned2string@@YAPADHHPAD@Z @2234 NONAME ?p_unsigned2string@@YAPADIIPAD@Z @2235 NONAME ?p_unsigned2string@@YAPADJJPAD@Z @2236 NONAME ?p_unsigned2string@@YAPADKKPAD@Z @2237 NONAME ?p_unsigned2string@@YAPAD_J0PAD@Z @2238 NONAME ?p_unsigned2string@@YAPAD_K0PAD@Z @2239 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIAAK@Z @2240 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIIPAE@Z @2241 NONAME ?QueryOid@PWin32SnmpLibrary@@AAEHEAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @2242 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAKH@Z @2243 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAV2@@Z @2244 NONAME ?Ras@@3VPRASDLL@@A @2245 NONAME ?Read@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @6523 NONAME ?Read@PChannel@@UAEHPAXH@Z @2246 NONAME ?Read@PConsoleChannel@@UAEHPAXH@Z @2247 NONAME ?Read@PEthSocket@@UAEHPAXH@Z @2248 NONAME ?Read@PFile@@UAEHPAXH@Z @2249 NONAME ?Read@PIndirectChannel@@UAEHPAXH@Z @2250 NONAME ?Read@PMultiMediaFile@@QAEHPAXH@Z @2251 NONAME ?Read@PPipeChannel@@UAEHPAXH@Z @2252 NONAME ?Read@PSerialChannel@@UAEHPAXH@Z @2253 NONAME ?Read@PSocket@@UAEHPAXH@Z @2254 NONAME ?Read@PSoundChannel@@UAEHPAXH@Z @2255 NONAME ?Read@PSoundChannelWin32@@UAEHPAXH@Z @2794 NONAME ?Read@PStructuredFile@@EAEHPAXH@Z @2256 NONAME ?Read@PStructuredFile@@QAEHPAX@Z @2257 NONAME ?Read@PUDPSocket@@UAEHPAXH@Z @2258 NONAME ?Read@PVideoChannel@@UAEHPAXH@Z @2259 NONAME ?ReadAsync@PChannel@@UAEHPAXH@Z @2260 NONAME ?ReadAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2261 NONAME ?ReadBlock@PChannel@@QAEHPAXH@Z @2262 NONAME ?ReadChar@PChannel@@UAEHXZ @2263 NONAME ?ReadCharWithTimeout@PChannel@@IAEHAAVPTimeInterval@@@Z @2264 NONAME ?ReadComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2265 NONAME ?ReadElementFrom@?$PScalarArray@F@@MAEXAAVistream@@H@Z @2266 NONAME ?ReadElementFrom@?$PScalarArray@G@@MAEXAAVistream@@H@Z @2267 NONAME ?ReadElementFrom@?$PScalarArray@H@@MAEXAAVistream@@H@Z @2268 NONAME ?ReadElementFrom@?$PScalarArray@I@@MAEXAAVistream@@H@Z @2269 NONAME ?ReadElementFrom@?$PScalarArray@J@@MAEXAAVistream@@H@Z @2270 NONAME ?ReadElementFrom@?$PScalarArray@K@@MAEXAAVistream@@H@Z @2271 NONAME ?ReadElementFrom@PAbstractArray@@MAEXAAVistream@@H@Z @2272 NONAME ?ReadFrom@PAbstractArray@@UAEXAAVistream@@@Z @2273 NONAME ?ReadFrom@PArgList@@UAEXAAVistream@@@Z @2274 NONAME ?ReadFrom@PBYTEArray@@UAEXAAVistream@@@Z @2275 NONAME ?ReadFrom@PCharArray@@UAEXAAVistream@@@Z @2276 NONAME ?ReadFrom@PIPDatagramSocket@@UAEHPAXHAAVAddress@PIPSocket@@AAG@Z @2277 NONAME ?ReadFrom@PIPXSocket@@UAEHPAXHAAVAddress@1@AAG@Z @2278 NONAME ?ReadFrom@PObject@@UAEXAAVistream@@@Z @2279 NONAME ?ReadFrom@POrdinalToString@@UAEXAAVistream@@@Z @2280 NONAME ?ReadFrom@PSortedStringList@@UAEXAAVistream@@@Z @2281 NONAME ?ReadFrom@PString@@UAEXAAVistream@@@Z @2282 NONAME ?ReadFrom@PStringArray@@UAEXAAVistream@@@Z @2283 NONAME ?ReadFrom@PStringList@@UAEXAAVistream@@@Z @2284 NONAME ?ReadFrom@PStringSet@@UAEXAAVistream@@@Z @2285 NONAME ?ReadFrom@PStringToOrdinal@@UAEXAAVistream@@@Z @2286 NONAME ?ReadFrom@PStringToString@@UAEXAAVistream@@@Z @2287 NONAME ?ReadFrom@PTime@@UAEXAAVistream@@@Z @2288 NONAME ?ReadFrom@PTimeInterval@@UAEXAAVistream@@@Z @2289 NONAME ?ReadFrom@PWaveFormat@@UAEXAAVistream@@@Z @2290 NONAME ?ReadLine@PTextFile@@QAEHAAVPString@@@Z @2291 NONAME ?ReadPacket@PEthSocket@@QAEHAAVPBYTEArray@@AATAddress@1@1AAGAAHAAPAE@Z @2292 NONAME ?ReadStandardError@PPipeChannel@@QAEHAAVPString@@H@Z @2293 NONAME ?ReadString@PChannel@@QAE?AVPString@@H@Z @2294 NONAME ?ReceiveCommandString@PChannel@@IAEHHABVPString@@AAHH@Z @2295 NONAME ?RecordFile@PSoundChannel@@UAEHABVPFilePath@@@Z @2795 NONAME ?RecordFile@PSoundChannelWin32@@UAEHABVPFilePath@@@Z @2796 NONAME ?RecordSound@PSoundChannel@@UAEHAAVPSound@@@Z @2797 NONAME ?RecordSound@PSoundChannelWin32@@UAEHAAVPSound@@@Z @2798 NONAME ?Redraw@PVideoChannel@@UAEHPBX@Z @2298 NONAME ?Register@?$PFactory@VPProcessStartup@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @5752 NONAME ?RegisterNotifiee@PSmartNotifieeRegistrar@@SAIPAX@Z @4828 NONAME ?RegisterService@PPluginManager@@QAEHABVPString@@0PAVPPluginServiceDescriptor@@@Z @2799 NONAME ?Register_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6076 NONAME ?Register_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @5753 NONAME ?Register_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6524 NONAME ?Register_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6525 NONAME ?Register_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6526 NONAME ?Release@PWaveBuffer@@AAEKXZ @2299 NONAME ?Remove@PAbstractDictionary@@EAEHPBVPObject@@@Z @2300 NONAME ?Remove@PAbstractList@@UAEHPBVPObject@@@Z @2301 NONAME ?Remove@PAbstractSet@@UAEHPBVPObject@@@Z @2302 NONAME ?Remove@PAbstractSortedList@@UAEHPBVPObject@@@Z @2303 NONAME ?Remove@PArrayObjects@@UAEHPBVPObject@@@Z @2304 NONAME ?Remove@PDirectory@@QAEHXZ @4710 NONAME ?Remove@PDirectory@@SAHABVPString@@@Z @4711 NONAME ?Remove@PFile@@QAEHH@Z @4712 NONAME ?Remove@PFile@@SAHABVPFilePath@@H@Z @2305 NONAME ?RemoveAll@PAbstractSortedList@@UAEXXZ @2306 NONAME ?RemoveAll@PArrayObjects@@UAEXXZ @2307 NONAME ?RemoveAll@PCollection@@UAEXXZ @2308 NONAME ?RemoveAll@PSafeCollection@@UAEXH@Z @6527 NONAME ?RemoveAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPCaselessString@@@Z @2310 NONAME ?RemoveAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @2311 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @2312 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEPAVPPointer@@ABVPOrdinalKey@@@Z @4829 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEPAVPThread@@ABVPOrdinalKey@@@Z @2313 NONAME ?RemoveAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEPAVPDynaLink@@ABVPString@@@Z @4752 NONAME ?RemoveAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@@Z @2314 NONAME ?RemoveAt@?$PStringDictionary@VPOrdinalKey@@@@UAEPAVPString@@ABVPOrdinalKey@@@Z @2315 NONAME ?RemoveAt@?$PStringDictionary@VPString@@@@UAEPAVPString@@ABV2@@Z @2316 NONAME ?RemoveAt@PAbstractDictionary@@UAEPAVPObject@@H@Z @2317 NONAME ?RemoveAt@PAbstractList@@UAEPAVPObject@@H@Z @2318 NONAME ?RemoveAt@PAbstractSet@@UAEPAVPObject@@H@Z @2319 NONAME ?RemoveAt@PAbstractSortedList@@UAEPAVPObject@@H@Z @2320 NONAME ?RemoveAt@PArrayObjects@@UAEPAVPObject@@H@Z @2321 NONAME ?RemoveConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@@Z @2322 NONAME ?RemoveElement@PAbstractSortedList@@IAEXPAUElement@1@@Z @3023 NONAME ?RemoveElement@Table@PHashTable@@QAEPAVPObject@@ABV3@@Z @2324 NONAME ?RemoveNotifier@PPluginManager@@QAEXABVPNotifier@@@Z @3049 NONAME ?RemoveTarget@PNotifierList@@QAEHPAVPObject@@@Z @4830 NONAME ?Rename@PFile@@QAEHABVPString@@H@Z @2325 NONAME ?Rename@PFile@@SAHABVPFilePath@@ABVPString@@H@Z @2326 NONAME ?Replace@PString@@QAEXABV1@0HH@Z @2327 NONAME ?ReplaceAt@PAbstractList@@UAEHHPAVPObject@@@Z @2328 NONAME ?ReportStatus@PServiceProcess@@AAEHKKKK@Z @2329 NONAME ?Reset@PTimer@@QAEXXZ @2330 NONAME ?Reset@PWin32Overlapped@@QAEXXZ @2331 NONAME ?ResizeYUV422@PStandardColourConverter@@IBEXPBEPAE@Z @2332 NONAME ?Resolution@PTimer@@SAIXZ @2333 NONAME ?Restart@PDirectory@@UAEHH@Z @6160 NONAME ?Restart@PThread@@UAEXXZ @2334 NONAME ?RestrictAccess@PVideoChannel@@QAEXXZ @2335 NONAME ?Resume@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2336 NONAME ?Resume@PThread@@UAEXXZ @2337 NONAME ?Resume@PTimer@@QAEXXZ @2338 NONAME ?Resume@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2339 NONAME ?RGBtoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @6528 NONAME ?RGBtoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAEIII@Z @6529 NONAME ?RGBtoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAEIII@Z @6530 NONAME ?rgtGlobal@?1??WspiapiLoad@@9@4@4PAUWSPIAPI_FUNCTION@@A @2950 NONAME ?Right@PString@@QBE?AV1@H@Z @2343 NONAME ?RightRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3024 NONAME ?RightTrim@PString@@QBE?AV1@XZ @2345 NONAME ?RunContinuous@PTimer@@QAEXABVPTimeInterval@@@Z @2346 NONAME ?SafeDereference@PSafeObject@@QAEXXZ @2347 NONAME ?SafelyCanBeDeleted@PSafeObject@@QBEHXZ @6077 NONAME ?SafeReference@PSafeObject@@QAEHXZ @2349 NONAME ?SafeRemove@PSafeCollection@@MAEHPAVPSafeObject@@@Z @2350 NONAME ?SafeRemove@PSafeObject@@QAEXXZ @2351 NONAME ?SafeRemoveAt@PSafeCollection@@MAEHH@Z @2352 NONAME ?SafeRemoveObject@PSafeCollection@@IAEXPAVPSafeObject@@@Z @2353 NONAME ?Save@PConfigArgs@@QAEXABVPString@@@Z @2354 NONAME ?Save@PSound@@QAEHABVPFilePath@@@Z @2355 NONAME ?SaveSettings@PSerialChannel@@UAEXAAVPConfig@@@Z @2356 NONAME ?SBGGR8toRGB@PStandardColourConverter@@IBEHPBEPAEPAH@Z @6531 NONAME ?SBGGR8toYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @6532 NONAME ?seekoff@Buffer@PStringStream@@UAEJJW4seek_dir@ios@@H@Z @2357 NONAME ?seekoff@PChannelStreamBuffer@@MAEJJW4seek_dir@ios@@H@Z @2358 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00@Z @2359 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00ABVPTimeInterval@@@Z @2360 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0@Z @2361 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0ABVPTimeInterval@@@Z @2362 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@@Z @2363 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@ABVPTimeInterval@@@Z @2364 NONAME ?Select@PSocket@@SAHAAV1@0@Z @2365 NONAME ?Select@PSocket@@SAHAAV1@0ABVPTimeInterval@@@Z @2366 NONAME ?SendCommandString@PChannel@@QAEHABVPString@@@Z @2367 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBD@Z @2368 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBDABVPStringList@@@Z @2369 NONAME ?SendNote@PMail@@QAEHABVPString@@ABVPStringList@@10PBD1@Z @2370 NONAME ?SeparatorChar@PDevicePluginServiceDescriptor@@2DB @6533 NONAME ?SetArgs@PArgList@@QAEXABVPString@@@Z @2371 NONAME ?SetArgs@PArgList@@QAEXABVPStringArray@@@Z @2372 NONAME ?SetArgs@PArgList@@QAEXHPAPAD@Z @2373 NONAME ?SetAt@?$PBaseArray@D@@QAEHHD@Z @2374 NONAME ?SetAt@?$PBaseArray@H@@QAEHHH@Z @5330 NONAME ?SetAt@?$PBaseArray@I@@QAEHHI@Z @2375 NONAME ?SetAt@?$PBaseArray@K@@QAEHHK@Z @2376 NONAME ?SetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEHABVPCaselessString@@PAVPIPCacheData@@@Z @2377 NONAME ?SetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEHABVPIPCacheKey@@PAVPIPCacheData@@@Z @2378 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEHABVPOrdinalKey@@PAVNest@PReadWriteMutex@@@Z @2379 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEHABVPOrdinalKey@@PAVPPointer@@@Z @4831 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEHABVPOrdinalKey@@PAVPThread@@@Z @2380 NONAME ?SetAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEHABVPString@@PAVPDynaLink@@@Z @4753 NONAME ?SetAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@H@Z @2381 NONAME ?SetAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHABVPOrdinalKey@@ABVPString@@@Z @2382 NONAME ?SetAt@?$PStringDictionary@VPString@@@@UAEHABVPString@@0@Z @2383 NONAME ?SetAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @2384 NONAME ?SetAt@PAbstractList@@UAEHHPAVPObject@@@Z @2385 NONAME ?SetAt@PAbstractSet@@UAEHHPAVPObject@@@Z @2386 NONAME ?SetAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @2387 NONAME ?SetAt@PArrayObjects@@UAEHHPAVPObject@@@Z @2388 NONAME ?SetAt@PBitArray@@QAEHHH@Z @2389 NONAME ?SetAutoDelete@PThread@@UAEXW4AutoDeleteFlag@1@@Z @2390 NONAME ?SetAutoDeleteObjects@PSafeCollection@@UAEXXZ @2391 NONAME ?SetAvgBytesPerSec@PQoS@@QAEXK@Z @2669 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@0H@Z @2995 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@H@Z @2996 NONAME ?SetBreak@PSerialChannel@@QAEXH@Z @2393 NONAME ?SetBrightness@PVideoDevice@@UAEHI@Z @2394 NONAME ?SetBuffers@PSoundChannel@@UAEHHH@Z @2800 NONAME ?SetBuffers@PSoundChannelWin32@@UAEHHH@Z @2801 NONAME ?SetBufferSize@PChannel@@QAEHH@Z @2396 NONAME ?SetBufferSize@PChannelStreamBuffer@@IAEHH@Z @2397 NONAME ?SetChannel@PVideoDevice@@UAEHH@Z @2399 NONAME ?SetChannel@PVideoInputDevice_FakeVideo@@UAEHH@Z @2906 NONAME ?SetColour@PVideoDevice@@UAEHI@Z @2400 NONAME ?SetColourFormat@PVideoDevice@@UAEHABVPString@@@Z @2402 NONAME ?SetColourFormat@PVideoInputDevice_FakeVideo@@UAEHABVPString@@@Z @2907 NONAME ?SetColourFormat@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@@Z @2802 NONAME ?SetColourFormat@PVideoOutputDeviceRGB@@UAEHABVPString@@@Z @6534 NONAME ?SetColourFormat@PVideoOutputDevice_Window@@UAEHABVPString@@@Z @6535 NONAME ?SetColourFormatConverter@PVideoDevice@@UAEHABVPString@@@Z @2405 NONAME ?SetCommsParam@PSerialChannel@@AAEHKEW4Parity@1@EW4FlowControl@1@1@Z @2406 NONAME ?SetConfiguration@PRemoteConnection@@QAE?AW4Status@1@ABUConfiguration@1@H@Z @2407 NONAME ?SetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@ABUConfiguration@1@H@Z @2408 NONAME ?SetConfigurationPath@PProcess@@QAEXABVPString@@@Z @2409 NONAME ?SetContrast@PVideoDevice@@UAEHI@Z @2410 NONAME ?SetCurrent@PAbstractList@@IBEHH@Z @2411 NONAME ?SetDataAt@?$POrdinalDictionary@VPString@@@@UAEHHH@Z @2412 NONAME ?SetDataAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHHABVPString@@@Z @2413 NONAME ?SetDataAt@?$PStringDictionary@VPString@@@@UAEHHABVPString@@@Z @2414 NONAME ?SetDataAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @2415 NONAME ?SetDataBits@PSerialChannel@@QAEHE@Z @2416 NONAME ?SetDefaultIpAddressFamily@PIPSocket@@SAXH@Z @2417 NONAME ?SetDefaultIpAddressFamilyV4@PIPSocket@@SAXXZ @2418 NONAME ?SetDefaultIpAddressFamilyV6@PIPSocket@@SAXXZ @2951 NONAME ?SetDefaultSection@PConfig@@UAEXABVPString@@@Z @2997 NONAME ?SetDSCP@PQoS@@QAEXH@Z @2670 NONAME ?SetDSCPAlternative@PQoS@@SAXKI@Z @2671 NONAME ?SetDstFrameSize@PColourConverter@@UAEHIIH@Z @2419 NONAME ?SetDTR@PSerialChannel@@QAEXH@Z @2420 NONAME ?SetErrorValues@PChannel@@IAEHW4Errors@1@HW4ErrorGroup@1@@Z @2421 NONAME ?SetFilePath@PFile@@QAEXABVPString@@@Z @2422 NONAME ?setfill@@YA?AV__SMANIP_int@@H@Z @5331 NONAME ?SetFilter@PEthSocket@@QAEHIG@Z @2423 NONAME ?SetFormat@PSound@@QAEXIII@Z @2424 NONAME ?SetFormat@PSoundChannel@@UAEHIII@Z @2803 NONAME ?SetFormat@PSoundChannelWin32@@QAEHABVPWaveFormat@@@Z @2804 NONAME ?SetFormat@PSoundChannelWin32@@UAEHIII@Z @2805 NONAME ?SetFormat@PWaveFormat@@QAEXIII@Z @2427 NONAME ?SetFormat@PWaveFormat@@QAEXPBXH@Z @2428 NONAME ?SetFrameData@PVideoOutputDeviceRGB@@UAEHIIIIPBEH@Z @6536 NONAME ?SetFrameData@PVideoOutputDevice_NULLOutput@@UAEHIIIIPBEH@Z @2908 NONAME ?SetFrameRate@PVideoDevice@@UAEHI@Z @2432 NONAME ?SetFrameRate@PVideoInputDevice_FakeVideo@@UAEHI@Z @2909 NONAME ?SetFrameRate@PVideoInputDevice_VideoForWindows@@UAEHI@Z @2806 NONAME ?SetFrameSize@PColourConverter@@UAEHII@Z @2434 NONAME ?SetFrameSize@PVideoDevice@@UAEHII@Z @2436 NONAME ?SetFrameSize@PVideoInputDevice_FakeVideo@@UAEHII@Z @2910 NONAME ?SetFrameSize@PVideoInputDevice_VideoForWindows@@UAEHII@Z @2807 NONAME ?SetFrameSize@PVideoOutputDeviceRGB@@UAEHII@Z @6537 NONAME ?SetFrameSize@PVideoOutputDevice_Window@@UAEHII@Z @6538 NONAME ?SetFrameSizeConverter@PVideoDevice@@UAEHIIH@Z @2439 NONAME ?SetGrabberFrameSize@PVideoChannel@@UAEXHH@Z @2440 NONAME ?SetGroupName@PProcess@@QAEHABVPString@@H@Z @2441 NONAME ?SetHue@PVideoDevice@@UAEHI@Z @2442 NONAME ?SetInputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @2443 NONAME ?SetInt64@PConfig@@UAEXABVPString@@0_J@Z @2998 NONAME ?SetInt64@PConfig@@UAEXABVPString@@_J@Z @2999 NONAME ?SetInteger@PConfig@@UAEXABVPString@@0J@Z @3000 NONAME ?SetInteger@PConfig@@UAEXABVPString@@J@Z @3001 NONAME ?SetInterval@PTimeInterval@@UAEX_JJJJH@Z @2446 NONAME ?SetInterval@PTimer@@UAEX_JJJJH@Z @2447 NONAME ?SetLastElementAt@Table@PHashTable@@QAEHH@Z @2448 NONAME ?SetLength@PFile@@UAEHJ@Z @2449 NONAME ?SetLevel@PTrace@@SAXI@Z @2450 NONAME ?SetMaxFrameBytes@PQoS@@QAEXK@Z @2672 NONAME ?SetMaxHandles@PProcess@@QAEHH@Z @2451 NONAME ?SetMinSize@PContainer@@QAEHH@Z @2452 NONAME ?SetNotifier@PTimer@@QAEXABVPNotifier@@@Z @4714 NONAME ?SetOid@PWin32PacketDriver@@QAEHIIPBE@Z @2453 NONAME ?SetOid@PWin32PacketDriver@@QAEHIK@Z @2454 NONAME ?SetOption@PSocket@@QAEHHHH@Z @2455 NONAME ?SetOption@PSocket@@QAEHHPBXHH@Z @2456 NONAME ?SetOptions@PTrace@@SAXI@Z @2457 NONAME ?SetOutputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @2458 NONAME ?SetPacketType@PIPXSocket@@QAEHH@Z @2459 NONAME ?SetParity@PSerialChannel@@QAEHW4Parity@1@@Z @2460 NONAME ?SetPeakBytesPerSec@PQoS@@QAEXK@Z @2673 NONAME ?SetPermissions@PFile@@QAEHH@Z @4715 NONAME ?SetPermissions@PFile@@SAHABVPFilePath@@H@Z @2461 NONAME ?SetPort@PSocket@@QAEXABVPString@@@Z @2462 NONAME ?SetPort@PSocket@@QAEXG@Z @2463 NONAME ?SetPosition@PFile@@UAEHJW4FilePositionOrigin@1@@Z @2464 NONAME ?setprecision@@YA?AV__SMANIP_int@@H@Z @5332 NONAME ?SetPriority@PThread@@UAEXW4Priority@1@@Z @2465 NONAME ?SetReadChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2466 NONAME ?SetReadTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @4716 NONAME ?SetReal@PConfig@@UAEXABVPString@@0N@Z @3002 NONAME ?SetReal@PConfig@@UAEXABVPString@@N@Z @3003 NONAME ?SetRenderFrameSize@PVideoChannel@@UAEXHH@Z @2468 NONAME ?SetRTS@PSerialChannel@@QAEXH@Z @2469 NONAME ?SetSafetyMode@PSafePtrBase@@QAEHW4PSafetyMode@@@Z @2470 NONAME ?SetSendAddress@PUDPSocket@@QAEXABVAddress@PIPSocket@@G@Z @2471 NONAME ?SetSize@PAbstractArray@@UAEHH@Z @2472 NONAME ?SetSize@PAbstractList@@UAEHH@Z @2473 NONAME ?SetSize@PAbstractSortedList@@UAEHH@Z @2474 NONAME ?SetSize@PArrayObjects@@UAEHH@Z @2475 NONAME ?SetSize@PBitArray@@UAEHH@Z @2476 NONAME ?SetSize@PHashTable@@MAEHH@Z @2477 NONAME ?SetSize@PString@@UAEHH@Z @2478 NONAME ?SetSize@PWaveFormat@@QAEHH@Z @2479 NONAME ?SetSpeed@PSerialChannel@@QAEHK@Z @2480 NONAME ?SetSrcFrameSize@PColourConverter@@UAEHII@Z @2481 NONAME ?SetStopBits@PSerialChannel@@QAEHE@Z @2482 NONAME ?SetStream@PTrace@@SAXPAVostream@@@Z @2483 NONAME ?SetString@PConfig@@UAEXABVPString@@00@Z @3004 NONAME ?SetString@PConfig@@UAEXABVPString@@0@Z @3005 NONAME ?SetStructure@PStructuredFile@@QAEXPAUElement@1@H@Z @2485 NONAME ?SetTerminationValue@PProcess@@QAEXH@Z @4717 NONAME ?SetThreadName@PProcess@@UAEXABVPString@@@Z @2486 NONAME ?SetThreadName@PThread@@UAEXABVPString@@@Z @2487 NONAME ?SetTime@PConfig@@UAEXABVPString@@0ABVPTime@@@Z @3006 NONAME ?SetTime@PConfig@@UAEXABVPString@@ABVPTime@@@Z @3007 NONAME ?SetType@PFilePath@@QAEXABVPCaselessString@@@Z @2489 NONAME ?SetUserName@PProcess@@QAEHABVPString@@H@Z @2490 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@0@Z @2491 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@K@Z @2492 NONAME ?SetVFlipState@PVideoDevice@@UAEHH@Z @2493 NONAME ?SetVFlipState@PVideoOutputDevice_Window@@UAEHH@Z @6539 NONAME ?SetVideoChannelFormat@PVideoDevice@@UAEHHW4VideoFormat@1@@Z @2494 NONAME ?SetVideoFormat@PVideoDevice@@UAEHW4VideoFormat@1@@Z @2496 NONAME ?SetVideoFormat@PVideoInputDevice_FakeVideo@@UAEHW4VideoFormat@PVideoDevice@@@Z @2911 NONAME ?SetVolume@PSoundChannel@@UAEHI@Z @2808 NONAME ?SetVolume@PSoundChannelWin32@@UAEHI@Z @2809 NONAME ?setw@@YA?AV__SMANIP_int@@H@Z @5333 NONAME ?SetWhiteness@PVideoDevice@@UAEHI@Z @2498 NONAME ?SetWinDebugThreadName@@YAXPAUtagTHREADNAME_INFO@@@Z @2810 NONAME ?SetWinServiceType@PQoS@@QAEXK@Z @2674 NONAME ?SetWriteChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2499 NONAME ?SetWriteTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @4718 NONAME ?Shift@PArgList@@QAEXH@Z @2500 NONAME ?Shutdown@PChannel@@UAEHW4ShutdownValue@1@@Z @2501 NONAME ?Shutdown@PIndirectChannel@@UAEHW4ShutdownValue@PChannel@@@Z @2502 NONAME ?Shutdown@PSocket@@UAEHW4ShutdownValue@PChannel@@@Z @2503 NONAME ?Signal@PCondMutex@@UAEXXZ @2504 NONAME ?Signal@PMutex@@UAEXXZ @2505 NONAME ?Signal@PSemaphore@@UAEXXZ @2506 NONAME ?Signal@PSyncPoint@@UAEXXZ @2507 NONAME ?Signal@PSyncPointAck@@QAEXABVPTimeInterval@@@Z @2508 NONAME ?Signal@PSyncPointAck@@UAEXXZ @2509 NONAME ?SignalTimerChange@PProcess@@QAEXXZ @2510 NONAME ?size@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QBEIXZ @5334 NONAME ?size@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @5335 NONAME ?size@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @5336 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEIXZ @5337 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEIXZ @6078 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEIXZ @5754 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEIXZ @5755 NONAME ?Sleep@PThread@@SAXABVPTimeInterval@@@Z @4719 NONAME ?snmpLibrary@WinSNMPLoader@@1PAVPWin32SnmpLibrary@@A @5463 NONAME ?soundChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @6079 NONAME ?Splice@PString@@QAEXABV1@HH@Z @4720 NONAME ?Splice@PString@@QAEXPBDHH@Z @2511 NONAME ?sprintf@PString@@QAAAAV1@PBDZZ @2512 NONAME ?Start@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2513 NONAME ?Start@PVideoDevice@@UAEHXZ @2515 NONAME ?Start@PVideoInputDevice_FakeVideo@@UAEHXZ @2912 NONAME ?Start@PVideoInputDevice_VideoForWindows@@UAEHXZ @2811 NONAME ?Start@PVideoOutputDevice@@UAEHXZ @2952 NONAME ?Start@PVideoOutputDevice_NULLOutput@@UAEHXZ @2913 NONAME ?Start@PVideoOutputDevice_Window@@UAEHXZ @6540 NONAME ?Start@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2517 NONAME ?StartNest@PReadWriteMutex@@IAEAAVNest@1@XZ @2518 NONAME ?StartRead@PReadWriteMutex@@QAEXXZ @2519 NONAME ?StartRecording@PSoundChannel@@UAEHXZ @2812 NONAME ?StartRecording@PSoundChannelWin32@@UAEHXZ @2813 NONAME ?StartRunning@PTimer@@AAEXH@Z @2521 NONAME ?StartWrite@PReadWriteMutex@@QAEXXZ @2522 NONAME ?StaticControlEntry@PServiceProcess@@CGXK@Z @2523 NONAME ?StaticMainEntry@PServiceProcess@@CGXKPAPAD@Z @2524 NONAME ?StaticThreadEntry@PServiceProcess@@CAXPAX@Z @2525 NONAME ?StaticWndProc@PServiceProcess@@CGJPAUHWND__@@IIJ@Z @2526 NONAME ?Stop@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2527 NONAME ?Stop@PTimer@@QAEXXZ @2529 NONAME ?Stop@PVideoDevice@@UAEHXZ @2530 NONAME ?Stop@PVideoInputDevice_FakeVideo@@UAEHXZ @2914 NONAME ?Stop@PVideoInputDevice_VideoForWindows@@UAEHXZ @2814 NONAME ?Stop@PVideoOutputDevice@@UAEHXZ @2953 NONAME ?Stop@PVideoOutputDevice_NULLOutput@@UAEHXZ @2915 NONAME ?Stop@PVideoOutputDevice_Window@@UAEHXZ @6541 NONAME ?Stop@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2532 NONAME ?Successor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @6542 NONAME ?SupportQoS@PUDPSocket@@SAHABVAddress@PIPSocket@@@Z @6543 NONAME ?Suspend@PThread@@UAEXH@Z @2534 NONAME ?swap@std@@YAXAAD0@Z @5531 NONAME ?SwapRedAndBlue@PStandardColourConverter@@IBEHPBEPAEPAHII@Z @6544 NONAME ?sync@Buffer@PDebugStream@@UAEHXZ @2535 NONAME ?sync@Buffer@PStringStream@@UAEHXZ @2536 NONAME ?sync@Buffer@PSystemLog@@UAEHXZ @2537 NONAME ?sync@PChannelStreamBuffer@@MAEHXZ @2538 NONAME ?Terminate@PProcess@@UAEXXZ @2539 NONAME ?Terminate@PThread@@UAEXXZ @2540 NONAME ?TestAllFormats@PVideoInputDevice_FakeVideo@@UAEHXZ @2916 NONAME ?TestAllFormats@PVideoInputDevice_VideoForWindows@@UAEHXZ @2815 NONAME ?ThreadEntry@PServiceProcess@@AAEXXZ @2543 NONAME ?Tick@PTimer@@SA?AVPTimeInterval@@XZ @2544 NONAME ?ToCharArray@PStringArray@@QBEPAPADPAVPCharArray@@@Z @2545 NONAME ?ToggleVFlipInput@PVideoChannel@@QAEHXZ @2546 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@ABV1@H@Z @2547 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@PBDH@Z @2548 NONAME ?ToLiteral@PString@@QBE?AV1@XZ @2549 NONAME ?ToLower@PString@@QBE?AV1@XZ @2550 NONAME ?ToPascal@PString@@QBE?AVPBYTEArray@@XZ @2551 NONAME ?ToUpper@PString@@QBE?AV1@XZ @2552 NONAME ?Trim@PString@@QBE?AV1@XZ @2553 NONAME ?underflow@Buffer@PDebugStream@@UAEHXZ @2554 NONAME ?underflow@Buffer@PStringStream@@UAEHXZ @2555 NONAME ?underflow@Buffer@PSystemLog@@UAEHXZ @2556 NONAME ?underflow@PChannelStreamBuffer@@MAEHXZ @2557 NONAME ?UnknownOption@PArgList@@UBEXABVPString@@@Z @2558 NONAME ?Unlock@PSafeLockReadOnly@@QAEXXZ @6168 NONAME ?Unlock@PSafeLockReadWrite@@QAEXXZ @6169 NONAME ?UnlockReadOnly@PSafeObject@@QBEXXZ @2559 NONAME ?UnlockReadWrite@PSafeObject@@QAEXXZ @2560 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHI@Z @4832 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHPAX@Z @4833 NONAME ?upper_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6545 NONAME ?upper_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6546 NONAME ?upper_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6547 NONAME ?ValidateDeviceName@PDevicePluginServiceDescriptor@@UBE_NABVPString@@H@Z @6548 NONAME ?ValidateDeviceName@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE_NABVPString@@H@Z @6549 NONAME ?ValueSelect@PAbstractSortedList@@IBEHPBUElement@1@ABVPObject@@PAPBU21@@Z @3028 NONAME ?VerifyHardwareFrameSize@PVideoInputDevice_VideoForWindows@@MAEHII@Z @2816 NONAME ?VideoHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@PAUvideohdr_tag@@@Z @2817 NONAME ?vidinChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @6080 NONAME ?vidoutChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @6081 NONAME ?vsprintf@PString@@QAEAAV1@ABV1@PAD@Z @4721 NONAME ?vsprintf@PString@@QAEAAV1@PBDPAD@Z @2564 NONAME ?Wait@PSemaphore@@UAEHABVPTimeInterval@@@Z @2565 NONAME ?Wait@PSemaphore@@UAEXXZ @2566 NONAME ?WaitCondition@PCondMutex@@UAEXXZ @2567 NONAME ?WaitForAllRecordBuffersFull@PSoundChannel@@UAEHXZ @2818 NONAME ?WaitForAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @2819 NONAME ?WaitForPlayCompletion@PSoundChannel@@UAEHXZ @2820 NONAME ?WaitForPlayCompletion@PSoundChannelWin32@@UAEHXZ @2821 NONAME ?WaitForRecordBufferFull@PSoundChannel@@UAEHXZ @2822 NONAME ?WaitForRecordBufferFull@PSoundChannelWin32@@UAEHXZ @2823 NONAME ?WaitForTermination@PPipeChannel@@QAEHABVPTimeInterval@@@Z @2572 NONAME ?WaitForTermination@PPipeChannel@@QAEHXZ @2573 NONAME ?WaitForTermination@PThread@@QBEHABVPTimeInterval@@@Z @2574 NONAME ?WaitForTermination@PThread@@QBEXXZ @2575 NONAME ?WillBlock@PSemaphore@@UBEHXZ @2576 NONAME ?WndProc@PServiceProcess@@AAEJPAUHWND__@@IIJ@Z @2577 NONAME ?WndProc@PVideoOutputDevice_Window@@QAEJIIJ@Z @6550 NONAME ?Write@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @6551 NONAME ?Write@PChannel@@UAEHPBXH@Z @2578 NONAME ?Write@PConsoleChannel@@UAEHPBXH@Z @2579 NONAME ?Write@PEthSocket@@UAEHPBXH@Z @2580 NONAME ?Write@PFile@@UAEHPBXH@Z @2581 NONAME ?Write@PIndirectChannel@@UAEHPBXH@Z @2582 NONAME ?Write@PMultiMediaFile@@QAEHPBXH@Z @2583 NONAME ?Write@PPipeChannel@@UAEHPBXH@Z @2584 NONAME ?Write@PSerialChannel@@UAEHPBXH@Z @2585 NONAME ?Write@PSocket@@UAEHPBXH@Z @2586 NONAME ?Write@PSoundChannel@@UAEHPBXH@Z @2587 NONAME ?Write@PSoundChannelWin32@@UAEHPBXH@Z @2824 NONAME ?Write@PStructuredFile@@EAEHPBXH@Z @2588 NONAME ?Write@PStructuredFile@@QAEHPBX@Z @2589 NONAME ?Write@PTCPSocket@@UAEHPBXH@Z @2590 NONAME ?Write@PUDPSocket@@UAEHPBXH@Z @2591 NONAME ?Write@PVideoChannel@@UAEHPBXH@Z @2592 NONAME ?WriteAsync@PChannel@@UAEHPBXH@Z @2593 NONAME ?WriteAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2594 NONAME ?WriteChar@PChannel@@QAEHH@Z @2595 NONAME ?WriteComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2596 NONAME ?WriteLine@PTextFile@@QAEHABVPString@@@Z @2597 NONAME ?WriteOutOfBand@PTCPSocket@@UAEHPBXH@Z @2598 NONAME ?WriteString@PChannel@@QAEHABVPString@@@Z @2599 NONAME ?WriteTo@PIPDatagramSocket@@UAEHPBXHABVAddress@PIPSocket@@G@Z @2600 NONAME ?WriteTo@PIPXSocket@@UAEHPBXHABVAddress@1@G@Z @2601 NONAME ?Yield@PThread@@SAXXZ @2602 NONAME ?YUV420PtoRGB@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @6552 NONAME ?Zero@P_fd_set@@QAEXXZ @2604 NONAME ?_Allocate@std@@YAPADHPAD@Z @5343 NONAME ?_Allocate@std@@YAPAPAVPPluginModuleManager@@HPAPAV2@@Z @5344 NONAME ?_Allocate@std@@YAPAVPString@@HPAV2@@Z @5345 NONAME ?_Buynode@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEPAU_Node@12@PAU312@D@Z @5756 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @5533 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6082 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @5757 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @5758 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6083 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6084 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6085 NONAME ?_Charalloc@?$allocator@PAVPFactoryBase@@@std@@QAEPADI@Z @5759 NONAME ?_Charalloc@?$allocator@PAVPProcessStartup@@@std@@QAEPADI@Z @5348 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAEPADI@Z @6086 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAEPADI@Z @5760 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAEPADI@Z @5761 NONAME ?_Color@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAADPAU_Node@12@@Z @5762 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAADPAU_Node@12@@Z @5538 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @6087 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @5763 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @5764 NONAME ?_Construct@std@@YAXPAPAVPPluginModuleManager@@ABQAV2@@Z @5354 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@1@ABU21@@Z @5765 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@1@ABU21@@Z @4913 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@ABU21@@Z @6088 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@ABU21@@Z @5766 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@1@ABU21@@Z @6089 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@1@ABU21@@Z @6090 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@1@ABU21@@Z @6091 NONAME ?_Construct@std@@YAXPAVPString@@ABV2@@Z @4915 NONAME ?_Consval@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@ABU32@@Z @5767 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@ABU32@@Z @5356 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@ABU32@@Z @5768 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@0@Z @6553 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@0@Z @6554 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@0@Z @6555 NONAME ?_Dec@iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEXXZ @5769 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEXXZ @5544 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEXXZ @6092 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEXXZ @5770 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEXXZ @6093 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEXXZ @6094 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEXXZ @6095 NONAME ?_Destroy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXPAPAVPPluginModuleManager@@0@Z @5359 NONAME ?_Destroy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXPAVPString@@0@Z @4918 NONAME ?_Destroy@std@@YAXPAPAVPPluginModuleManager@@@Z @5360 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@1@@Z @5361 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@@Z @6096 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@1@@Z @5771 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@@Z @5772 NONAME ?_Destroy@std@@YAXPAVPString@@@Z @5364 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5365 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @6097 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@@Z @5773 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @5774 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@1@0AAI@Z @6556 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@1@0AAI@Z @6557 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@1@0AAI@Z @6558 NONAME ?_Erase@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @5775 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @4919 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6098 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5776 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5777 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6099 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6100 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6101 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @5370 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6102 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5778 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5779 NONAME ?_Inc@iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEXXZ @5780 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEXXZ @5548 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEXXZ @6103 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAEXXZ @5781 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEXXZ @5782 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEXXZ @6104 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEXXZ @6105 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEXXZ @6106 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXXZ @4925 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXXZ @6107 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXXZ @5783 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXXZ @5784 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXXZ @6108 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXXZ @6109 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXXZ @6110 NONAME ?_Insert@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @5785 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @4928 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @6111 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @5786 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @6112 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @6113 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @6114 NONAME ?_Isnil@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAADPAU_Node@12@@Z @5787 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAADPAU_Node@12@@Z @5553 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @6115 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @5788 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @5789 NONAME ?_Key@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PAU_Node@12@@Z @5790 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @5378 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @6116 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @5791 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @5792 NONAME ?_Lbound@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IBEPAU_Node@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @5793 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @6117 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @5794 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @5795 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @6559 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @6560 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @6561 NONAME ?_Left@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAPAU_Node@12@PAU312@@Z @5796 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5383 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6118 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5797 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5798 NONAME ?_Lmost@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEAAPAU_Node@12@XZ @5799 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEAAPAU_Node@12@XZ @5386 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6119 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @5800 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @5801 NONAME ?_Lrotate@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @5802 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @4930 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6120 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5803 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5804 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6121 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6122 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6123 NONAME ?_main@PProcess@@UAEHPAX@Z @2605 NONAME ?_main@PServiceProcess@@UAEHPAX@Z @2606 NONAME ?_Max@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAPAU_Node@12@PAU312@@Z @5805 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAPAU_Node@12@PAU312@@Z @5391 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6124 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @5806 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @5807 NONAME ?_Min@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAPAU_Node@12@PAU312@@Z @5808 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAPAU_Node@12@PAU312@@Z @5394 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6125 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @5809 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @5810 NONAME ?_Mynode@iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEPAU_Node@23@XZ @5811 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEPAU_Node@23@XZ @5564 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @6126 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @5812 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @5813 NONAME ?_Parent@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAPAU_Node@12@PAU312@@Z @5814 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5404 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6127 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5815 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5816 NONAME ?_Right@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAPAU_Node@12@PAU312@@Z @5817 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5407 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6128 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5818 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @5819 NONAME ?_Rmost@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEAAPAU_Node@12@XZ @5820 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEAAPAU_Node@12@XZ @5410 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6129 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @5821 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @5822 NONAME ?_Root@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEAAPAU_Node@12@XZ @5823 NONAME ?_Root@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IBEAAPAU_Node@12@XZ @5824 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEAAPAU_Node@12@XZ @5413 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6130 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @6131 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @5825 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @5826 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @5827 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @5828 NONAME ?_Rrotate@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @5829 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @4938 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6132 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5830 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @5831 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6133 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6134 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6135 NONAME ?_Ucopy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEPAPAVPPluginModuleManager@@PBQAV3@0PAPAV3@@Z @5420 NONAME ?_Ucopy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@PBV3@0PAV3@@Z @5421 NONAME ?_Ufill@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXPAPAVPPluginModuleManager@@IABQAV3@@Z @5422 NONAME ?_Ufill@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXPAVPString@@IABV3@@Z @5423 NONAME ?_Value@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@PAU_Node@12@@Z @5832 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@PAU_Node@12@@Z @5424 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@PAU_Node@12@@Z @6136 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@PAU_Node@12@@Z @5833 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@PAU_Node@12@@Z @5834 NONAME ?__setfill@@YAAAVios@@AAV1@H@Z @2607 NONAME ?__setprecision@@YAAAVios@@AAV1@H@Z @2608 NONAME ?__setw@@YAAAVios@@AAV1@H@Z @2609 NONAME _PTimeGetChar@4 @2610 NONAME _PTimeGetDateOrder@0 @2611 NONAME _PTimeIsDayName@12 @2612 NONAME _PTimeIsMonthName@12 @2613 NONAME _PTimeParse@12 @2614 NONAME _PTimeUngetChar@8 @2615 NONAME pwlib_v1_10_2/include/ptlib/msos/ptlib.ignore0100644000176200056700000000321110247317323021432 0ustar releasepostincrEXPORTS _regcomp @3549 NONAME ;_regcomp _regerror @3550 NONAME ;_regerror _regexec @3551 NONAME ;_regexec _regfree @3552 NONAME ;_regfree _WspiapiClone@8 @3907 NONAME ;_WspiapiClone@8 _WspiapiFreeAddrInfo@4 @3908 NONAME ;_WspiapiFreeAddrInfo@4 _WspiapiGetAddrInfo@16 @3909 NONAME ;_WspiapiGetAddrInfo@16 _WspiapiGetNameInfo@28 @3910 NONAME ;_WspiapiGetNameInfo@28 _WspiapiLegacyFreeAddrInfo@4 @3911 NONAME ;_WspiapiLegacyFreeAddrInfo@4 _WspiapiLegacyGetAddrInfo@16 @3912 NONAME ;_WspiapiLegacyGetAddrInfo@16 _WspiapiLegacyGetNameInfo@28 @3913 NONAME ;_WspiapiLegacyGetNameInfo@28 _WspiapiLoad@4 @3914 NONAME ;_WspiapiLoad@4 _WspiapiLookupNode@24 @3915 NONAME ;_WspiapiLookupNode@24 _WspiapiNewAddrInfo@16 @3916 NONAME ;_WspiapiNewAddrInfo@16 _WspiapiParseV4Address@8 @3917 NONAME ;_WspiapiParseV4Address@8 _WspiapiQueryDNS@24 @3918 NONAME ;_WspiapiQueryDNS@24 _WspiapiStrdup@4 @3919 NONAME ;_WspiapiStrdup@4 ___dummy _CLSID_Registrar @15861 NONAME _CLSID_StdGlobalInterfaceTable @15862 NONAME _IID_IAxWinAmbientDispatch @15863 NONAME _IID_IAxWinAmbientDispatchEx @15864 NONAME _IID_IAxWinHostWindow @15865 NONAME _IID_IAxWinHostWindowLic @15866 NONAME _IID_IDocHostUIHandlerDispatch @15867 NONAME _IID_IInternalConnection @15868 NONAME _IID_IRegistrar @15869 NONAME _LIBID_ATLLib @15870 NONAME __GUID_12e3cca9_7518_44c5_a5e7_ba5a79cb929e @15871 NONAME __GUID_2d3d3845_39af_4850_bbf9_40b49780011d @15872 NONAME __GUID_6c44df74_72b9_4992_a1ec_ef996e0422d4 @15873 NONAME ___pobjMapEntryFirst @15874 NONAME ___pobjMapEntryLast @15875 NONAME pwlib_v1_10_2/include/ptlib/msos/ptlib_2003.dtf0100644000176200056700000217267110357202643021413 0ustar releasepostincrLIBRARY ptlib EXPORTS ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6439 NONAME ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6440 NONAME ??$?0U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @5866 NONAME ??$?0U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @5867 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @6765 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @6766 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6441 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6442 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6443 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6444 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @6767 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @6768 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @6769 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @6770 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @6771 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @6772 NONAME ??$?0VPString@@PAVPProcessStartup@@@?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU?$pair@VPString@@PAVPProcessStartup@@@1@@Z @5872 NONAME ??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @4512 NONAME ??$?5GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @4513 NONAME ??$?6DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABU?$_Fillobj@D@0@@Z @4514 NONAME ??$?6DU?$char_traits@D@std@@H@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABU?$_Smanip@H@0@@Z @4515 NONAME ??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @4516 NONAME ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @4517 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z @4518 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z @4519 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z @4520 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z @4521 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z @4522 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z @4523 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z @4524 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z @4525 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z @4526 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z @4527 NONAME ??$copy@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00@Z @6399 NONAME ??$copy_backward@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00@Z @5873 NONAME ??$copy_backward@PAVPString@@PAV1@@std@@YAPAVPString@@PAV1@00@Z @5874 NONAME ??$fill@PAPAVPPluginModuleManager@@PAV1@@std@@YAXPAPAVPPluginModuleManager@@0ABQAV1@@Z @5875 NONAME ??$fill@PAVPString@@V1@@std@@YAXPAVPString@@0ABV1@@Z @5876 NONAME ??$fill_n@PAPAVPPluginModuleManager@@IPAV1@@std@@YAXPAPAVPPluginModuleManager@@IABQAV1@@Z @5877 NONAME ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @4528 NONAME ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@D@Z @4529 NONAME ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @4530 NONAME ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z @4531 NONAME ??$PAssertCast@$$CBVPSafePtrBase@@@@YAPBVPSafePtrBase@@PBV0@PBDH@Z @6741 NONAME ??$PAssertCast@VPSafeObject@@@@YAPAVPSafeObject@@PAV0@PBDH@Z @6742 NONAME ??$PLoadPluginDirectory@VPPluginManager@@@@YAXAAVPPluginManager@@ABVPDirectory@@PBD@Z @6438 NONAME ??$p_signed2string@H@@YAPADHHPAD@Z @4532 NONAME ??$p_signed2string@J@@YAPADJJPAD@Z @4533 NONAME ??$p_signed2string@_J@@YAPAD_J0PAD@Z @4534 NONAME ??$p_unsigned2string@H@@YAPADHHPAD@Z @4535 NONAME ??$p_unsigned2string@I@@YAPADIIPAD@Z @4536 NONAME ??$p_unsigned2string@J@@YAPADJJPAD@Z @4537 NONAME ??$p_unsigned2string@K@@YAPADKKPAD@Z @4538 NONAME ??$p_unsigned2string@_J@@YAPAD_J0PAD@Z @4539 NONAME ??$p_unsigned2string@_K@@YAPAD_K0PAD@Z @4540 NONAME ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z @4541 NONAME ??$swap@D@std@@YAXAAD0@Z @5705 NONAME ??$use_facet@V?$ctype@D@std@@@std@@YAABV?$ctype@D@0@ABVlocale@0@@Z @4542 NONAME ??$use_facet@V?$ctype@G@std@@@std@@YAABV?$ctype@G@0@ABVlocale@0@@Z @4543 NONAME ??$_Allocate@PAVPPluginModuleManager@@@std@@YAPAPAVPPluginModuleManager@@IPAPAV1@@Z @5878 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@IPAU120@@Z @6445 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@IPAU120@@Z @5879 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6773 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6446 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6447 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6774 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6775 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6776 NONAME ??$_Allocate@VPString@@@std@@YAPAVPString@@IPAV1@@Z @5882 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@ABQAU120@@Z @6448 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@ABQAU120@@Z @5883 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6777 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6449 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6450 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6778 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6779 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6780 NONAME ??$_Construct@VPString@@V1@@std@@YAXPAVPString@@ABV1@@Z @5886 NONAME ??$_Copy_backward_opt@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00U_Scalar_ptr_iterator_tag@0@@Z @5887 NONAME ??$_Copy_backward_opt@PAVPString@@PAV1@@std@@YAPAVPString@@PAV1@00U_Nonscalar_ptr_iterator_tag@0@@Z @5888 NONAME ??$_Copy_opt@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00U_Scalar_ptr_iterator_tag@0@@Z @6400 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@@Z @6451 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@@Z @5889 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6781 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6452 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6453 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6782 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6783 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6784 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@@Z @6454 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@@Z @5892 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6785 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6455 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6456 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6786 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6787 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6788 NONAME ??$_Destroy@VPString@@@std@@YAXPAVPString@@@Z @5895 NONAME ??$_Destroy_range@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAXPAPAVPPluginModuleManager@@0AAV?$allocator@PAVPPluginModuleManager@@@0@@Z @5896 NONAME ??$_Destroy_range@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAXPAPAVPPluginModuleManager@@0AAV?$allocator@PAVPPluginModuleManager@@@0@U_Scalar_ptr_iterator_tag@0@@Z @5897 NONAME ??$_Destroy_range@VPString@@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@0AAV?$allocator@VPString@@@0@@Z @5898 NONAME ??$_Destroy_range@VPString@@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@0AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @5899 NONAME ??$_Distance2@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAIUbidirectional_iterator_tag@0@@Z @15861 NONAME ??$_Distance2@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAIUbidirectional_iterator_tag@0@@Z @15862 NONAME ??$_Distance2@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAIUbidirectional_iterator_tag@0@@Z @15863 NONAME ??$_Distance@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAI@Z @15864 NONAME ??$_Distance@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAI@Z @15865 NONAME ??$_Distance@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAI@Z @15866 NONAME ??$_Iter_cat@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YA?AUbidirectional_iterator_tag@0@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @15867 NONAME ??$_Iter_cat@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YA?AUbidirectional_iterator_tag@0@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @15868 NONAME ??$_Iter_cat@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YA?AUbidirectional_iterator_tag@0@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @15869 NONAME ??$_Ptr_cat@PAVPString@@PAV1@@std@@YA?AU_Nonscalar_ptr_iterator_tag@0@AAPAVPString@@0@Z @5900 NONAME ??$_Ptr_cat@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@PAVPString@@@std@@YA?AU_Nonscalar_ptr_iterator_tag@0@AAVconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@0@AAPAVPString@@@Z @5901 NONAME ??$_Ptr_cat@VPPluginModuleManager@@@std@@YA?AU_Scalar_ptr_iterator_tag@0@PAPAVPPluginModuleManager@@0@Z @5902 NONAME ??$_Ucopy@PAPAVPPluginModuleManager@@@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEPAPAVPPluginModuleManager@@PAPAV2@00@Z @5903 NONAME ??$_Ucopy@PAVPString@@@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@PAV2@00@Z @5904 NONAME ??$_Ucopy@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@Vconst_iterator@01@0PAV2@@Z @5905 NONAME ??$_Uninitialized_copy@PAPAVPPluginModuleManager@@PAPAV1@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00AAV?$allocator@PAVPPluginModuleManager@@@0@@Z @5906 NONAME ??$_Uninitialized_copy@PAVPString@@PAV1@V?$allocator@VPString@@@std@@@std@@YAPAVPString@@PAV1@00AAV?$allocator@VPString@@@0@@Z @5907 NONAME ??$_Uninitialized_copy@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@PAVPString@@V?$allocator@VPString@@@3@@std@@YAPAVPString@@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@0@0PAV1@AAV?$allocator@VPString@@@0@@Z @5908 NONAME ??$_Uninitialized_fill_n@PAPAVPPluginModuleManager@@IPAV1@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAXPAPAVPPluginModuleManager@@IABQAV1@AAV?$allocator@PAVPPluginModuleManager@@@0@@Z @5909 NONAME ??$_Uninitialized_fill_n@PAVPString@@IV1@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@IABV1@AAV?$allocator@VPString@@@0@@Z @5910 NONAME ??$_Uninit_copy@PAVPPluginModuleManager@@PAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00AAV?$allocator@PAVPPluginModuleManager@@@0@U_Scalar_ptr_iterator_tag@0@@Z @5911 NONAME ??$_Uninit_copy@PAVPString@@PAV1@V?$allocator@VPString@@@std@@@std@@YAPAVPString@@PAV1@00AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @5912 NONAME ??$_Uninit_copy@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@PAVPString@@V?$allocator@VPString@@@3@@std@@YAPAVPString@@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@0@0PAV1@AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @5913 NONAME ??$_Uninit_fill_n@PAVPPluginModuleManager@@IPAV1@@std@@YAXPAPAVPPluginModuleManager@@IABQAV1@AAV?$allocator@PAVPPluginModuleManager@@@0@U_Scalar_ptr_iterator_tag@0@@Z @5914 NONAME ??$_Uninit_fill_n@PAVPString@@IV1@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@IABV1@AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @5915 NONAME ??0?$allocator@PAVPPluginModuleManager@@@std@@QAE@ABV01@@Z @5916 NONAME ??0?$allocator@PAVPPluginModuleManager@@@std@@QAE@XZ @5917 NONAME ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@std@@QAE@ABV01@@Z @6457 NONAME ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@std@@QAE@XZ @6458 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@std@@QAE@ABV01@@Z @5918 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@std@@QAE@XZ @5919 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6789 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@std@@QAE@XZ @6790 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6459 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@std@@QAE@XZ @6460 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6461 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@std@@QAE@XZ @6462 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6791 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@std@@QAE@XZ @6792 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6793 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@std@@QAE@XZ @6794 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6795 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@std@@QAE@XZ @6796 NONAME ??0?$allocator@VPString@@@std@@QAE@ABV01@@Z @5924 NONAME ??0?$allocator@VPString@@@std@@QAE@XZ @5925 NONAME ??0?$fpos@H@std@@QAE@J@Z @4544 NONAME ??0?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@@std@@QAE@XZ @6463 NONAME ??0?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@@std@@QAE@XZ @5926 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@@std@@QAE@XZ @6797 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@@std@@QAE@XZ @6464 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@@std@@QAE@XZ @6465 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAE@ABV01@@Z @15870 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAE@XZ @6798 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAE@ABV01@@Z @15871 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @6799 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAE@ABV01@@Z @15872 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @6800 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABU01@@Z @6466 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@ABQAVPFactoryBase@@@Z @6467 NONAME ??0?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU01@@Z @5930 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@ABU01@@Z @6801 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@Z @6802 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABU01@@Z @6468 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@Z @6469 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@ABU01@@Z @6803 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@Z @6804 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@ABU01@@Z @6805 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@Z @6806 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@ABU01@@Z @6807 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@Z @6808 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@1@AB_N@Z @6470 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@1@AB_N@Z @5933 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @6809 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @6471 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@1@0@Z @15873 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @6810 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@0@Z @15874 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @6811 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@0@Z @15875 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @6812 NONAME ??0?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@ABVPString@@ABQAVPProcessStartup@@@Z @5935 NONAME ??0?$PArray@VPString@@@@IAE@HPBV0@@Z @4545 NONAME ??0?$PArray@VPString@@@@QAE@ABV0@@Z @1 NONAME ??0?$PArray@VPString@@@@QAE@H@Z @2 NONAME ??0?$PArray@VPWaveBuffer@@@@IAE@HPBV0@@Z @4546 NONAME ??0?$PArray@VPWaveBuffer@@@@QAE@H@Z @4547 NONAME ??0?$PArray@VPWin32PacketBuffer@@@@IAE@HPBV0@@Z @4548 NONAME ??0?$PArray@VPWin32PacketBuffer@@@@QAE@H@Z @4549 NONAME ??0?$PBaseArray@D@@QAE@ABV0@@Z @3 NONAME ??0?$PBaseArray@D@@QAE@H@Z @4 NONAME ??0?$PBaseArray@D@@QAE@PBDHH@Z @4550 NONAME ??0?$PBaseArray@E@@QAE@ABV0@@Z @4551 NONAME ??0?$PBaseArray@E@@QAE@H@Z @5 NONAME ??0?$PBaseArray@E@@QAE@PBEHH@Z @4552 NONAME ??0?$PBaseArray@F@@QAE@H@Z @6 NONAME ??0?$PBaseArray@F@@QAE@PBFHH@Z @4553 NONAME ??0?$PBaseArray@G@@QAE@ABV0@@Z @4554 NONAME ??0?$PBaseArray@G@@QAE@H@Z @7 NONAME ??0?$PBaseArray@G@@QAE@PBGHH@Z @4555 NONAME ??0?$PBaseArray@H@@QAE@ABV0@@Z @2967 NONAME ??0?$PBaseArray@H@@QAE@H@Z @8 NONAME ??0?$PBaseArray@H@@QAE@PBHHH@Z @4556 NONAME ??0?$PBaseArray@I@@QAE@H@Z @9 NONAME ??0?$PBaseArray@I@@QAE@PBIHH@Z @4557 NONAME ??0?$PBaseArray@J@@QAE@H@Z @10 NONAME ??0?$PBaseArray@J@@QAE@PBJHH@Z @4558 NONAME ??0?$PBaseArray@K@@QAE@H@Z @4559 NONAME ??0?$PBaseArray@K@@QAE@PBKHH@Z @4560 NONAME ??0?$PBaseArray@PAVElement@PHashTable@@@@QAE@H@Z @4561 NONAME ??0?$PBaseArray@PAVElement@PHashTable@@@@QAE@PBQAVElement@PHashTable@@HH@Z @4562 NONAME ??0?$PBaseArray@PAVPObject@@@@QAE@H@Z @11 NONAME ??0?$PBaseArray@PAVPObject@@@@QAE@PBQAVPObject@@HH@Z @4563 NONAME ??0?$PDevicePluginAdapter@VPSoundChannel@@@@QAE@XZ @6813 NONAME ??0?$PDevicePluginAdapter@VPVideoInputDevice@@@@QAE@XZ @6814 NONAME ??0?$PDevicePluginAdapter@VPVideoOutputDevice@@@@QAE@XZ @6815 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@IAE@HPBV0@@Z @4564 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@QAE@XZ @12 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@IAE@HPBV0@@Z @4565 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@QAE@XZ @13 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@IAE@HPBV0@@Z @4566 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@QAE@XZ @4567 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@IAE@HPBV0@@Z @5637 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@QAE@XZ @5638 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@IAE@HPBV0@@Z @4568 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@QAE@XZ @4569 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@IAE@HPBV0@@Z @5557 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@ABV0@@Z @5558 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@XZ @5559 NONAME ??0?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@XZ @6816 NONAME ??0?$PFactory@VPPluginModuleManager@@VPString@@@@IAE@XZ @6472 NONAME ??0?$PFactory@VPProcessStartup@@VPString@@@@IAE@XZ @6473 NONAME ??0?$PFactory@VPSoundChannel@@VPString@@@@IAE@XZ @6817 NONAME ??0?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@XZ @6818 NONAME ??0?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@XZ @6819 NONAME ??0?$PList@VInterfaceEntry@PIPSocket@@@@IAE@HPBV0@@Z @7342 NONAME ??0?$PList@VInterfaceEntry@PIPSocket@@@@QAE@XZ @7343 NONAME ??0?$PList@VPDynaLink@@@@IAE@HPBV0@@Z @4570 NONAME ??0?$PList@VPDynaLink@@@@QAE@XZ @4571 NONAME ??0?$PList@VPNotifier@@@@IAE@HPBV0@@Z @4572 NONAME ??0?$PList@VPNotifier@@@@QAE@XZ @4573 NONAME ??0?$PList@VPPluginService@@@@IAE@HPBV0@@Z @4574 NONAME ??0?$PList@VPPluginService@@@@QAE@XZ @4575 NONAME ??0?$PList@VPSafeObject@@@@IAE@HPBV0@@Z @6748 NONAME ??0?$PList@VPSafeObject@@@@QAE@XZ @6749 NONAME ??0?$PList@VPSocket@@@@IAE@HPBV0@@Z @4576 NONAME ??0?$PList@VPSocket@@@@QAE@XZ @4577 NONAME ??0?$PList@VPString@@@@IAE@HPBV0@@Z @4578 NONAME ??0?$PList@VPString@@@@QAE@ABV0@@Z @4579 NONAME ??0?$PList@VPString@@@@QAE@XZ @14 NONAME ??0?$PList@VPThread@@@@IAE@HPBV0@@Z @4580 NONAME ??0?$PList@VPThread@@@@QAE@XZ @4581 NONAME ??0?$PList@VPTimer@@@@IAE@HPBV0@@Z @4582 NONAME ??0?$PList@VPTimer@@@@QAE@XZ @4583 NONAME ??0?$POrdinalDictionary@VPString@@@@IAE@HPBV0@@Z @4584 NONAME ??0?$POrdinalDictionary@VPString@@@@QAE@XZ @4585 NONAME ??0?$PScalarArray@F@@QAE@H@Z @4586 NONAME ??0?$PScalarArray@G@@QAE@ABV0@@Z @4587 NONAME ??0?$PScalarArray@G@@QAE@H@Z @4588 NONAME ??0?$PScalarArray@H@@QAE@ABV0@@Z @15 NONAME ??0?$PScalarArray@H@@QAE@H@Z @4589 NONAME ??0?$PScalarArray@I@@QAE@H@Z @4590 NONAME ??0?$PScalarArray@J@@QAE@H@Z @4591 NONAME ??0?$PScalarArray@K@@QAE@H@Z @16 NONAME ??0?$PSet@VPString@@@@IAE@HPBV0@@Z @4592 NONAME ??0?$PSet@VPString@@@@QAE@H@Z @4593 NONAME ??0?$PSortedList@VPString@@@@IAE@HPBV0@@Z @4594 NONAME ??0?$PSortedList@VPString@@@@QAE@XZ @4595 NONAME ??0?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@QAE@XZ @15918 NONAME ??0?$PStringDictionary@VPOrdinalKey@@@@IAE@HPBV0@@Z @4596 NONAME ??0?$PStringDictionary@VPOrdinalKey@@@@QAE@XZ @4597 NONAME ??0?$PStringDictionary@VPString@@@@IAE@HPBV0@@Z @4598 NONAME ??0?$PStringDictionary@VPString@@@@QAE@ABV0@@Z @4599 NONAME ??0?$PStringDictionary@VPString@@@@QAE@XZ @3008 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@QAE@XZ @15919 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@QAE@XZ @15920 NONAME ??0?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@QAE@XZ @15921 NONAME ??0?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@XZ @5936 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@ABV01@@Z @5937 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @5938 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @6820 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @6821 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @6822 NONAME ??0?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @6474 NONAME ??0?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @6475 NONAME ??0?$_Fillobj@D@std@@QAE@D@Z @4600 NONAME ??0?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@QAE@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@@Z @6476 NONAME ??0?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @5939 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6823 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6477 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6478 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6824 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6825 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6826 NONAME ??0?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@ABV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6479 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @5942 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @6827 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6480 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6481 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @6828 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABV01@@Z @15876 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @6829 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABV01@@Z @15877 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @6830 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABV01@@Z @15878 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6482 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @5945 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @6831 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6483 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6484 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @6832 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @6833 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @6834 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6485 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @5948 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @6835 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6486 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6487 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @6836 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @6837 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @6838 NONAME ??0?$_Tree_val@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6488 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @5951 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @6839 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6489 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6490 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @6840 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @6841 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @6842 NONAME ??0?$_Vector_val@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAE@V?$allocator@PAVPPluginModuleManager@@@1@@Z @5954 NONAME ??0?$_Vector_val@VPString@@V?$allocator@VPString@@@std@@@std@@IAE@V?$allocator@VPString@@@1@@Z @5955 NONAME ??0Address@PEthSocket@@QAE@ABT01@@Z @17 NONAME ??0Address@PEthSocket@@QAE@ABVPString@@@Z @18 NONAME ??0Address@PEthSocket@@QAE@PBE@Z @19 NONAME ??0Address@PEthSocket@@QAE@XZ @20 NONAME ??0Address@PIPSocket@@QAE@ABUin6_addr@@@Z @2918 NONAME ??0Address@PIPSocket@@QAE@ABUin_addr@@@Z @21 NONAME ??0Address@PIPSocket@@QAE@ABV01@@Z @22 NONAME ??0Address@PIPSocket@@QAE@ABVPString@@@Z @23 NONAME ??0Address@PIPSocket@@QAE@EEEE@Z @24 NONAME ??0Address@PIPSocket@@QAE@HHPAUsockaddr@@@Z @2919 NONAME ??0Address@PIPSocket@@QAE@HPBE@Z @25 NONAME ??0Address@PIPSocket@@QAE@K@Z @26 NONAME ??0Address@PIPSocket@@QAE@XZ @27 NONAME ??0Address@PIPXSocket@@QAE@ABV01@@Z @28 NONAME ??0Address@PIPXSocket@@QAE@ABVPString@@@Z @29 NONAME ??0Address@PIPXSocket@@QAE@KPBD@Z @30 NONAME ??0Address@PIPXSocket@@QAE@XZ @31 NONAME ??0Block@PTrace@@QAE@PBDH0@Z @32 NONAME ??0Buffer@PDebugStream@@QAE@XZ @33 NONAME ??0Buffer@PStringStream@@QAE@AAV1@H@Z @34 NONAME ??0Buffer@PStringStream@@QAE@ABV01@@Z @5417 NONAME ??0Buffer@PSystemLog@@QAE@XZ @35 NONAME ??0CMCDLL@PMail@@QAE@XZ @36 NONAME ??0CMC_message_reference_ptr@@QAE@ABVPString@@@Z @37 NONAME ??0const_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@PAPAVPPluginModuleManager@@@Z @5956 NONAME ??0const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QAE@PAUSlice@PChannel@@@Z @15922 NONAME ??0const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QAE@XZ @15923 NONAME ??0const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@PAVPString@@@Z @5957 NONAME ??0const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @5958 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6491 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6492 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @5959 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6843 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6844 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6493 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6494 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6495 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6496 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6845 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6846 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6847 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6848 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6849 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6850 NONAME ??0DeleteObjectsTimeout_PNotifier@PSafeCollection@@QAE@PAV1@@Z @4601 NONAME ??0Element@PAbstractList@@QAE@PAVPObject@@@Z @38 NONAME ??0FactoryMap@PFactoryBase@@QAE@XZ @6497 NONAME ??0HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@QAE@PAV1@@Z @15924 NONAME ??0HandleDisplay_PNotifier@PVideoOutputDevice_Window@@QAE@PAV1@@Z @15925 NONAME ??0HouseKeepingThread@PProcess@@QAE@XZ @40 NONAME ??0Info@PAbstractList@@QAE@XZ @4602 NONAME ??0Info@PAbstractSortedList@@QAE@XZ @7363 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABV01@@Z @15926 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABVPString@@ABVAddress@1@100@Z @7374 NONAME ??0iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@PAPAVPPluginModuleManager@@@Z @5964 NONAME ??0iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@PAVPString@@@Z @5965 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6498 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6499 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @5966 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6851 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6852 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6500 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6501 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6502 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6853 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6854 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6855 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6856 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6857 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6858 NONAME ??0length_error@std@@QAE@ABV01@@Z @5740 NONAME ??0length_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @5741 NONAME ??0logic_error@std@@QAE@ABV01@@Z @5742 NONAME ??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @5743 NONAME ??0MAPIDLL@PMail@@QAE@XZ @43 NONAME ??0Nest@PReadWriteMutex@@QAE@XZ @4603 NONAME ??0NT_ServiceManager@@QAE@XZ @4604 NONAME ??0ostrstream@std@@QAE@XZ @4605 NONAME ??0out_of_range@std@@QAE@ABV01@@Z @5744 NONAME ??0out_of_range@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @5745 NONAME ??0PAbstractArray@@QAE@ABV0@@Z @44 NONAME ??0PAbstractArray@@QAE@HH@Z @45 NONAME ??0PAbstractArray@@QAE@HPBXHH@Z @46 NONAME ??0PAbstractDictionary@@IAE@HPBV0@@Z @4606 NONAME ??0PAbstractDictionary@@QAE@ABV0@@Z @47 NONAME ??0PAbstractDictionary@@QAE@XZ @48 NONAME ??0PAbstractList@@IAE@HPBV0@@Z @4607 NONAME ??0PAbstractList@@QAE@ABV0@@Z @49 NONAME ??0PAbstractList@@QAE@XZ @50 NONAME ??0PAbstractSet@@IAE@HPBV0@@Z @4608 NONAME ??0PAbstractSet@@QAE@XZ @4609 NONAME ??0PAbstractSortedList@@IAE@HPBV0@@Z @4610 NONAME ??0PAbstractSortedList@@QAE@XZ @51 NONAME ??0PArgList@@QAE@ABV0@@Z @4611 NONAME ??0PArgList@@QAE@ABVPString@@0H@Z @52 NONAME ??0PArgList@@QAE@ABVPString@@PBDH@Z @53 NONAME ??0PArgList@@QAE@HPAPADABVPString@@H@Z @54 NONAME ??0PArgList@@QAE@HPAPADPBDH@Z @55 NONAME ??0PArgList@@QAE@PBD0H@Z @56 NONAME ??0PArrayObjects@@IAE@HPBV0@@Z @4612 NONAME ??0PArrayObjects@@QAE@ABV0@@Z @57 NONAME ??0PArrayObjects@@QAE@H@Z @58 NONAME ??0PAtomicInteger@@QAE@J@Z @5532 NONAME ??0PBitArray@@QAE@ABV0@@Z @4613 NONAME ??0PBitArray@@QAE@H@Z @59 NONAME ??0PBitArray@@QAE@PBXHH@Z @60 NONAME ??0PBYTEArray@@QAE@ABV0@@Z @4614 NONAME ??0PBYTEArray@@QAE@H@Z @61 NONAME ??0PBYTEArray@@QAE@PBEHH@Z @4615 NONAME ??0PCapStatus@@QAE@PAUHWND__@@@Z @62 NONAME ??0PCaselessString@@IAE@HPBV0@@Z @5418 NONAME ??0PCaselessString@@QAE@ABV0@@Z @3009 NONAME ??0PCaselessString@@QAE@ABVPString@@@Z @63 NONAME ??0PCaselessString@@QAE@PBD@Z @64 NONAME ??0PCaselessString@@QAE@XZ @4616 NONAME ??0PChannel@@IAE@ABV0@@Z @5419 NONAME ??0PChannel@@QAE@XZ @65 NONAME ??0PChannelStreamBuffer@@IAE@PAVPChannel@@@Z @66 NONAME ??0PChannelStreamBuffer@@QAE@ABV0@@Z @5420 NONAME ??0PCharArray@@QAE@ABV0@@Z @67 NONAME ??0PCharArray@@QAE@H@Z @68 NONAME ??0PCharArray@@QAE@PBDHH@Z @4617 NONAME ??0PCollection@@IAE@HPBV0@@Z @4618 NONAME ??0PCollection@@QAE@ABV0@@Z @69 NONAME ??0PCollection@@QAE@H@Z @70 NONAME ??0PColourConverter@@QAE@ABVPString@@0II@Z @71 NONAME ??0PColourConverterRegistration@@QAE@ABVPString@@0@Z @72 NONAME ??0PCondMutex@@QAE@XZ @4619 NONAME ??0PConfig@@QAE@ABVPFilePath@@ABVPString@@@Z @5421 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@00@Z @5422 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@0@Z @5423 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@@Z @4620 NONAME ??0PConfig@@QAE@W4Source@0@@Z @4621 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@1@Z @5424 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@@Z @5425 NONAME ??0PConfigArgs@@QAE@ABVPArgList@@@Z @73 NONAME ??0PConsoleChannel@@QAE@W4ConsoleType@0@@Z @74 NONAME ??0PConsoleChannel@@QAE@XZ @75 NONAME ??0PContainer@@IAE@HPBV0@@Z @76 NONAME ??0PContainer@@QAE@ABV0@@Z @77 NONAME ??0PContainer@@QAE@H@Z @78 NONAME ??0PCriticalSection@@QAE@XZ @5533 NONAME ??0PDebugStream@@QAE@XZ @79 NONAME ??0PDevicePluginAdapterBase@@QAE@XZ @6859 NONAME ??0PDevicePluginServiceDescriptor@@QAE@XZ @15927 NONAME ??0PDirectory@@QAE@ABV0@@Z @4622 NONAME ??0PDirectory@@QAE@ABVPString@@@Z @4623 NONAME ??0PDirectory@@QAE@PBD@Z @4624 NONAME ??0PDirectory@@QAE@XZ @5426 NONAME ??0PDynaLink@@QAE@ABVPString@@@Z @80 NONAME ??0PDynaLink@@QAE@XZ @81 NONAME ??0PEthSocket@@QAE@HHH@Z @82 NONAME ??0PFactoryBase@@IAE@XZ @6503 NONAME ??0PFile@@QAE@ABVPFilePath@@W4OpenMode@0@H@Z @4625 NONAME ??0PFile@@QAE@W4OpenMode@0@H@Z @4626 NONAME ??0PFile@@QAE@XZ @84 NONAME ??0PFileInfo@@QAE@XZ @4627 NONAME ??0PFilePath@@QAE@ABV0@@Z @5427 NONAME ??0PFilePath@@QAE@ABVPString@@@Z @85 NONAME ??0PFilePath@@QAE@PBD0@Z @86 NONAME ??0PFilePath@@QAE@PBD@Z @87 NONAME ??0PFilePath@@QAE@XZ @88 NONAME ??0PHashTable@@IAE@HPBV0@@Z @4628 NONAME ??0PHashTable@@QAE@ABV0@@Z @4629 NONAME ??0PHashTable@@QAE@XZ @89 NONAME ??0PHostByAddr@@QAE@XZ @90 NONAME ??0PHostByName@@QAE@XZ @91 NONAME ??0PICMPDLL@@QAE@XZ @92 NONAME ??0PICMPSocket@@QAE@XZ @93 NONAME ??0PImageDLL@@QAE@XZ @94 NONAME ??0PIndirectChannel@@QAE@XZ @95 NONAME ??0PingInfo@PICMPSocket@@QAE@G@Z @96 NONAME ??0PInstantiateMe@@QAE@XZ @7361 NONAME ??0PIntCondMutex@@QAE@HHW4Operation@0@@Z @97 NONAME ??0PIPCacheData@@QAE@PAUaddrinfo@@PBD@Z @2920 NONAME ??0PIPCacheData@@QAE@PAUhostent@@PBD@Z @98 NONAME ??0PIPCacheKey@@QAE@ABV0@@Z @4630 NONAME ??0PIPCacheKey@@QAE@ABVAddress@PIPSocket@@@Z @4631 NONAME ??0PIPDatagramSocket@@IAE@XZ @99 NONAME ??0PIPSocket@@IAE@XZ @100 NONAME ??0PIPXSocket@@QAE@G@Z @101 NONAME ??0PluginLoaderStartup@@QAE@XZ @5970 NONAME ??0PMail@@QAE@ABVPString@@00@Z @102 NONAME ??0PMail@@QAE@ABVPString@@0@Z @103 NONAME ??0PMail@@QAE@XZ @104 NONAME ??0PMultiMediaFile@@QAE@XZ @105 NONAME ??0PNotifier@@QAE@ABV0@@Z @4632 NONAME ??0PNotifier@@QAE@PAVPNotifierFunction@@@Z @4633 NONAME ??0PNotifierFunction@@QAE@PAX@Z @4634 NONAME ??0PNotifyIconData@@QAE@PAUHWND__@@IPBD@Z @108 NONAME ??0PObject@@IAE@XZ @4635 NONAME ??0PObject@@QAE@ABV0@@Z @4636 NONAME ??0POrdinalKey@@QAE@H@Z @4637 NONAME ??0POrdinalToString@@IAE@HPBV0@@Z @4638 NONAME ??0POrdinalToString@@QAE@HPBUInitialiser@0@@Z @109 NONAME ??0POrdinalToString@@QAE@XZ @110 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@0@HH@Z @111 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@W4OpenMode@0@HH@Z @112 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringToString@@W4OpenMode@0@HH@Z @113 NONAME ??0PPipeChannel@@QAE@ABVPString@@W4OpenMode@0@HH@Z @114 NONAME ??0PPipeChannel@@QAE@XZ @115 NONAME ??0PPluginManager@@QAE@XZ @2675 NONAME ??0PPluginModuleManager@@QAE@PBDPAVPPluginManager@@@Z @5561 NONAME ??0PPluginService@@QAE@ABVPString@@0PAVPPluginServiceDescriptor@@@Z @4639 NONAME ??0PPluginServiceDescriptor@@QAE@XZ @15928 NONAME ??0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z @2676 NONAME ??0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z @2825 NONAME ??0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z @2677 NONAME ??0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z @2826 NONAME ??0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z @15929 NONAME ??0PPointer@@QAE@PAX@Z @5639 NONAME ??0PProcess@@QAE@PBD0GGW4CodeStatus@0@G@Z @116 NONAME ??0PProcessStartup@@QAE@XZ @5971 NONAME ??0PQoS@@QAE@H@Z @2645 NONAME ??0PQoS@@QAE@KKHKK@Z @2646 NONAME ??0PQoS@@QAE@XZ @2647 NONAME ??0PRASDLL@@QAE@XZ @117 NONAME ??0PReadWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3029 NONAME ??0PReadWriteMutex@@QAE@XZ @118 NONAME ??0PRegularExpression@@QAE@ABV0@@Z @2961 NONAME ??0PRegularExpression@@QAE@ABVPString@@H@Z @119 NONAME ??0PRegularExpression@@QAE@PBDH@Z @120 NONAME ??0PRegularExpression@@QAE@XZ @121 NONAME ??0PRemoteConnection@@QAE@ABVPString@@@Z @122 NONAME ??0PRemoteConnection@@QAE@XZ @123 NONAME ??0PSafeCollection@@QAE@PAVPCollection@@@Z @124 NONAME ??0PSafeLockReadOnly@@QAE@ABVPSafeObject@@@Z @7306 NONAME ??0PSafeLockReadWrite@@QAE@ABVPSafeObject@@@Z @7307 NONAME ??0PSafeObject@@QAE@XZ @125 NONAME ??0PSafePtrBase@@IAE@ABV0@@Z @128 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@H@Z @6743 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@PAVPSafeObject@@@Z @6744 NONAME ??0PSafePtrBase@@IAE@PAVPSafeObject@@W4PSafetyMode@@@Z @129 NONAME ??0PSemaphore@@IAE@PAX@Z @130 NONAME ??0PSemaphore@@QAE@ABV0@@Z @131 NONAME ??0PSemaphore@@QAE@II@Z @132 NONAME ??0PSerialChannel@@QAE@AAVPConfig@@@Z @133 NONAME ??0PSerialChannel@@QAE@ABVPString@@KEW4Parity@0@EW4FlowControl@0@2@Z @134 NONAME ??0PSerialChannel@@QAE@XZ @135 NONAME ??0PServiceProcess@@QAE@PBD0GGW4CodeStatus@PProcess@@G@Z @136 NONAME ??0PSimpleThread@@QAE@ABVPNotifier@@HW4AutoDeleteFlag@PThread@@W4Priority@3@ABVPString@@H@Z @137 NONAME ??0PSmartObject@@QAE@XZ @4641 NONAME ??0PSmartPointer@@QAE@ABV0@@Z @138 NONAME ??0PSmartPointer@@QAE@PAVPSmartObject@@@Z @4642 NONAME ??0PSmartPtrInspector@@QAE@ABVPNotifier@@@Z @5640 NONAME ??0Psockaddr@@QAE@ABVAddress@PIPSocket@@G@Z @2921 NONAME ??0Psockaddr@@QAE@XZ @4643 NONAME ??0PSocket@@IAE@XZ @139 NONAME ??0PSortedStringList@@IAE@HPBV0@@Z @4644 NONAME ??0PSortedStringList@@QAE@ABVPString@@@Z @140 NONAME ??0PSortedStringList@@QAE@ABVPStringArray@@@Z @141 NONAME ??0PSortedStringList@@QAE@ABVPStringList@@@Z @142 NONAME ??0PSortedStringList@@QAE@HPBQBDH@Z @143 NONAME ??0PSound@@QAE@ABVPFilePath@@@Z @144 NONAME ??0PSound@@QAE@IIIHPBE@Z @145 NONAME ??0PSoundChannel@@QAE@ABVPString@@W4Directions@0@III@Z @146 NONAME ??0PSoundChannel@@QAE@XZ @147 NONAME ??0PSoundChannelWin32@@QAE@ABVPString@@W4Directions@PSoundChannel@@III@Z @2678 NONAME ??0PSoundChannelWin32@@QAE@XZ @2679 NONAME ??0PSPXSocket@@QAE@G@Z @148 NONAME ??0PStandardColourConverter@@IAE@ABVPString@@0II@Z @4646 NONAME ??0PString@@IAE@HPBV0@@Z @5428 NONAME ??0PString@@QAA@W4ConversionType@0@PBDZZ @149 NONAME ??0PString@@QAE@ABV0@@Z @150 NONAME ??0PString@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @6403 NONAME ??0PString@@QAE@ABV?$PScalarArray@G@@@Z @151 NONAME ??0PString@@QAE@D@Z @4647 NONAME ??0PString@@QAE@F@Z @152 NONAME ??0PString@@QAE@G@Z @153 NONAME ??0PString@@QAE@H@Z @154 NONAME ??0PString@@QAE@I@Z @155 NONAME ??0PString@@QAE@J@Z @156 NONAME ??0PString@@QAE@K@Z @157 NONAME ??0PString@@QAE@PBD@Z @158 NONAME ??0PString@@QAE@PBDH@Z @159 NONAME ??0PString@@QAE@PBG@Z @160 NONAME ??0PString@@QAE@PBGH@Z @161 NONAME ??0PString@@QAE@W4ConversionType@0@JI@Z @162 NONAME ??0PString@@QAE@W4ConversionType@0@NI@Z @163 NONAME ??0PString@@QAE@XZ @164 NONAME ??0PString@@QAE@_J@Z @165 NONAME ??0PString@@QAE@_K@Z @166 NONAME ??0PStringArray@@IAE@HPBV0@@Z @4648 NONAME ??0PStringArray@@QAE@ABV0@@Z @4649 NONAME ??0PStringArray@@QAE@ABVPSortedStringList@@@Z @168 NONAME ??0PStringArray@@QAE@ABVPString@@@Z @169 NONAME ??0PStringArray@@QAE@ABVPStringList@@@Z @170 NONAME ??0PStringArray@@QAE@H@Z @4650 NONAME ??0PStringArray@@QAE@HPBQBDH@Z @171 NONAME ??0PStringList@@IAE@HPBV0@@Z @4651 NONAME ??0PStringList@@QAE@ABV0@@Z @4652 NONAME ??0PStringList@@QAE@ABVPSortedStringList@@@Z @172 NONAME ??0PStringList@@QAE@ABVPString@@@Z @173 NONAME ??0PStringList@@QAE@ABVPStringArray@@@Z @174 NONAME ??0PStringList@@QAE@HPBQBDH@Z @175 NONAME ??0PStringList@@QAE@XZ @176 NONAME ??0PStringSet@@IAE@HPBV0@@Z @4653 NONAME ??0PStringSet@@QAE@ABVPString@@@Z @177 NONAME ??0PStringSet@@QAE@H@Z @178 NONAME ??0PStringSet@@QAE@HPBQBDH@Z @179 NONAME ??0PStringStream@@QAE@ABVPString@@@Z @180 NONAME ??0PStringStream@@QAE@H@Z @181 NONAME ??0PStringStream@@QAE@PBD@Z @182 NONAME ??0PStringStream@@QAE@XZ @183 NONAME ??0PStringToOrdinal@@IAE@HPBV0@@Z @4654 NONAME ??0PStringToOrdinal@@QAE@HPBUInitialiser@0@H@Z @184 NONAME ??0PStringToOrdinal@@QAE@XZ @185 NONAME ??0PStringToString@@IAE@HPBV0@@Z @4655 NONAME ??0PStringToString@@QAE@ABV0@@Z @4656 NONAME ??0PStringToString@@QAE@HPBUInitialiser@0@HH@Z @186 NONAME ??0PStringToString@@QAE@XZ @187 NONAME ??0PStructuredFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @188 NONAME ??0PStructuredFile@@QAE@W4OpenMode@PFile@@H@Z @189 NONAME ??0PStructuredFile@@QAE@XZ @190 NONAME ??0PSync@@QAE@XZ @16253 NONAME ??0PSyncPoint@@QAE@ABV0@@Z @191 NONAME ??0PSyncPoint@@QAE@XZ @192 NONAME ??0PSynonymColour@@QAE@ABVPString@@0II@Z @4657 NONAME ??0PSynonymColourRegistration@@QAE@PBD0@Z @193 NONAME ??0PSystemLog@@QAE@W4Level@0@@Z @4658 NONAME ??0PTCPSocket@@QAE@AAV0@@Z @194 NONAME ??0PTCPSocket@@QAE@AAVPSocket@@@Z @195 NONAME ??0PTCPSocket@@QAE@ABVPString@@0@Z @196 NONAME ??0PTCPSocket@@QAE@ABVPString@@@Z @197 NONAME ??0PTCPSocket@@QAE@ABVPString@@G@Z @198 NONAME ??0PTCPSocket@@QAE@G@Z @199 NONAME ??0PTextFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @4659 NONAME ??0PTextFile@@QAE@W4OpenMode@PFile@@H@Z @5429 NONAME ??0PTextFile@@QAE@XZ @5430 NONAME ??0PThread@@AAE@XZ @4660 NONAME ??0PThread@@QAE@HW4AutoDeleteFlag@0@W4Priority@0@ABVPString@@@Z @200 NONAME ??0PTime@@QAE@ABV0@@Z @4661 NONAME ??0PTime@@QAE@ABVPString@@@Z @201 NONAME ??0PTime@@QAE@HHHHHHH@Z @202 NONAME ??0PTime@@QAE@JJ@Z @4662 NONAME ??0PTime@@QAE@XZ @203 NONAME ??0PTimedMutex@@QAE@ABV0@@Z @16254 NONAME ??0PTimedMutex@@QAE@XZ @16255 NONAME ??0PTimeInterval@@QAE@ABV0@@Z @4663 NONAME ??0PTimeInterval@@QAE@ABVPString@@@Z @204 NONAME ??0PTimeInterval@@QAE@JJJJH@Z @205 NONAME ??0PTimeInterval@@QAE@_J@Z @4664 NONAME ??0PTimer@@QAE@ABVPTimeInterval@@@Z @206 NONAME ??0PTimer@@QAE@JHHHH@Z @207 NONAME ??0PTimerList@@QAE@XZ @208 NONAME ??0PUDPSocket@@QAE@ABVPString@@0@Z @209 NONAME ??0PUDPSocket@@QAE@ABVPString@@G@Z @211 NONAME ??0PUDPSocket@@QAE@ABVPString@@PAVPQoS@@@Z @2648 NONAME ??0PUDPSocket@@QAE@G@Z @212 NONAME ??0PUDPSocket@@QAE@PAVPQoS@@G@Z @2649 NONAME ??0PVideoChannel@@QAE@ABVPString@@W4Directions@0@@Z @213 NONAME ??0PVideoChannel@@QAE@XZ @214 NONAME ??0PVideoDevice@@IAE@XZ @215 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@@Z @216 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@G@Z @217 NONAME ??0PVideoInputDevice@@QAE@XZ @4665 NONAME ??0PVideoInputDevice_FakeVideo@@QAE@XZ @2827 NONAME ??0PVideoInputDevice_VideoForWindows@@QAE@XZ @2680 NONAME ??0PVideoOutputDevice@@QAE@XZ @219 NONAME ??0PVideoOutputDeviceRGB@@QAE@XZ @15930 NONAME ??0PVideoOutputDevice_NULLOutput@@QAE@XZ @2828 NONAME ??0PVideoOutputDevice_Window@@QAE@XZ @15931 NONAME ??0PVideoOutputDevice_Window_PluginServiceDescriptor@@QAE@XZ @15932 NONAME ??0PWaitAndSignal@@QAE@ABVPSync@@H@Z @16256 NONAME ??0PWaveBuffer@@AAE@H@Z @223 NONAME ??0PWaveFormat@@QAE@ABV0@@Z @224 NONAME ??0PWaveFormat@@QAE@XZ @225 NONAME ??0PWin32AsnAny@@QAE@XZ @226 NONAME ??0PWin32AsnOid@@QAE@ABV0@@Z @4670 NONAME ??0PWin32AsnOid@@QAE@PBD@Z @227 NONAME ??0PWin32AsnOid@@QAE@XZ @228 NONAME ??0PWin32OidBuffer@@QAE@IIPBE@Z @229 NONAME ??0PWin32Overlapped@@QAE@XZ @230 NONAME ??0PWin32PacketBuffer@@QAE@H@Z @231 NONAME ??0PWin32PacketDriver@@IAE@XZ @232 NONAME ??0PWin32PacketSYS@@QAE@XZ @233 NONAME ??0PWin32PacketVxD@@QAE@XZ @234 NONAME ??0PWin32SnmpLibrary@@QAE@XZ @235 NONAME ??0PWinQoS@@QAE@AAVPQoS@@PAUsockaddr@@PADAAK@Z @2922 NONAME ??0PWinSock@@QAE@XZ @236 NONAME ??0PWriteWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3030 NONAME ??0P_BGR24_RGB24@@QAE@ABVPString@@0II@Z @15933 NONAME ??0P_BGR24_RGB24_Registration@@QAE@XZ @15934 NONAME ??0P_BGR24_RGB32@@QAE@ABVPString@@0II@Z @15935 NONAME ??0P_BGR24_RGB32_Registration@@QAE@XZ @15936 NONAME ??0P_BGR24_YUV420P@@QAE@ABVPString@@0II@Z @4671 NONAME ??0P_BGR24_YUV420P_Registration@@QAE@XZ @2829 NONAME ??0P_BGR32_RGB24@@QAE@ABVPString@@0II@Z @15937 NONAME ??0P_BGR32_RGB24_Registration@@QAE@XZ @15938 NONAME ??0P_BGR32_RGB32@@QAE@ABVPString@@0II@Z @15939 NONAME ??0P_BGR32_RGB32_Registration@@QAE@XZ @15940 NONAME ??0P_BGR32_YUV420P@@QAE@ABVPString@@0II@Z @4672 NONAME ??0P_BGR32_YUV420P_Registration@@QAE@XZ @2830 NONAME ??0P_fd_set@@QAE@I@Z @237 NONAME ??0P_fd_set@@QAE@XZ @238 NONAME ??0P_Grey_YUV420P@@QAE@ABVPString@@0II@Z @4674 NONAME ??0P_Grey_YUV420P_Registration@@QAE@XZ @240 NONAME ??0P_RGB24_BGR24@@QAE@ABVPString@@0II@Z @15941 NONAME ??0P_RGB24_BGR24_Registration@@QAE@XZ @15942 NONAME ??0P_RGB24_BGR32@@QAE@ABVPString@@0II@Z @15943 NONAME ??0P_RGB24_BGR32_Registration@@QAE@XZ @15944 NONAME ??0P_RGB24_RGB32@@QAE@ABVPString@@0II@Z @4676 NONAME ??0P_RGB24_RGB32_Registration@@QAE@XZ @242 NONAME ??0P_RGB24_YUV420P@@QAE@ABVPString@@0II@Z @4677 NONAME ??0P_RGB24_YUV420P_Registration@@QAE@XZ @243 NONAME ??0P_RGB32_BGR24@@QAE@ABVPString@@0II@Z @15945 NONAME ??0P_RGB32_BGR24_Registration@@QAE@XZ @15946 NONAME ??0P_RGB32_BGR32@@QAE@ABVPString@@0II@Z @15947 NONAME ??0P_RGB32_BGR32_Registration@@QAE@XZ @15948 NONAME ??0P_RGB32_RGB24@@QAE@ABVPString@@0II@Z @4679 NONAME ??0P_RGB32_RGB24_Registration@@QAE@XZ @245 NONAME ??0P_RGB32_YUV420P@@QAE@ABVPString@@0II@Z @4680 NONAME ??0P_RGB32_YUV420P_Registration@@QAE@XZ @246 NONAME ??0P_SBGGR8_RGB24@@QAE@ABVPString@@0II@Z @7287 NONAME ??0P_SBGGR8_RGB24_Registration@@QAE@XZ @7288 NONAME ??0P_SBGGR8_YUV420P@@QAE@ABVPString@@0II@Z @7317 NONAME ??0P_SBGGR8_YUV420P_Registration@@QAE@XZ @7318 NONAME ??0P_timeval@@QAE@ABVPTimeInterval@@@Z @4681 NONAME ??0P_timeval@@QAE@XZ @247 NONAME ??0P_UYV444_YUV420P@@QAE@ABVPString@@0II@Z @4682 NONAME ??0P_UYV444_YUV420P_Registration@@QAE@XZ @248 NONAME ??0P_UYVY422_YUV420P@@QAE@ABVPString@@0II@Z @4683 NONAME ??0P_UYVY422_YUV420P_Registration@@QAE@XZ @249 NONAME ??0P_YUV411P_YUV420P@@QAE@ABVPString@@0II@Z @4684 NONAME ??0P_YUV411P_YUV420P_Registration@@QAE@XZ @250 NONAME ??0P_YUV420P_BGR24@@QAE@ABVPString@@0II@Z @4685 NONAME ??0P_YUV420P_BGR24_Registration@@QAE@XZ @252 NONAME ??0P_YUV420P_BGR32@@QAE@ABVPString@@0II@Z @4687 NONAME ??0P_YUV420P_BGR32_Registration@@QAE@XZ @2831 NONAME ??0P_YUV420P_RGB24@@QAE@ABVPString@@0II@Z @4688 NONAME ??0P_YUV420P_RGB24_Registration@@QAE@XZ @254 NONAME ??0P_YUV420P_RGB32@@QAE@ABVPString@@0II@Z @4690 NONAME ??0P_YUV420P_RGB32_Registration@@QAE@XZ @256 NONAME ??0P_YUV420P_YUV411P@@QAE@ABVPString@@0II@Z @4692 NONAME ??0P_YUV420P_YUV411P_Registration@@QAE@XZ @257 NONAME ??0P_YUV422_YUV420P@@QAE@ABVPString@@0II@Z @4693 NONAME ??0P_YUV422_YUV420P_Registration@@QAE@XZ @258 NONAME ??0P_YUV422_YUV422@@QAE@ABVPString@@0II@Z @4694 NONAME ??0P_YUV422_YUV422_Registration@@QAE@XZ @259 NONAME ??0Reference@PContainer@@QAE@ABV01@@Z @5535 NONAME ??0Reference@PContainer@@QAE@H@Z @4695 NONAME ??0RegistryKey@@QAE@ABVPString@@W4OpenMode@0@@Z @260 NONAME ??0RouteEntry@PIPSocket@@QAE@ABVAddress@1@@Z @4696 NONAME ??0SecurityID@@QAE@PAU_SID_IDENTIFIER_AUTHORITY@@EKKKKKKKK@Z @261 NONAME ??0SecurityID@@QAE@PBD0PADPAKPAW4_SID_NAME_USE@@@Z @262 NONAME ??0SelectList@PSocket@@QAE@XZ @4697 NONAME ??0sentry@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@AAV12@_N@Z @4698 NONAME ??0sentry@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@AAV12@_N@Z @4699 NONAME ??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z @4700 NONAME ??0sentry@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@AAV12@@Z @4701 NONAME ??0ServiceManager@@QAE@XZ @4702 NONAME ??0strstreambuf@std@@QAE@H@Z @4703 NONAME ??0Table@PHashTable@@QAE@H@Z @4704 NONAME ??0Table@PHashTable@@QAE@PBQAVElement@1@HH@Z @4705 NONAME ??0Win95_ServiceManager@@QAE@XZ @4706 NONAME ??0WinSNMPLoader@@QAE@XZ @6404 NONAME ??0Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@QAE@ABVPString@@_N@Z @6860 NONAME ??0Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@QAE@ABVPString@@_N@Z @6861 NONAME ??0Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@QAE@ABVPString@@_N@Z @6862 NONAME ??0WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@_N@Z @6863 NONAME ??0WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAE@_N@Z @6504 NONAME ??0WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@IAE@_N@Z @6864 NONAME ??0WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@_N@Z @6865 NONAME ??0WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@_N@Z @6866 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@D@Z @6505 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@D@Z @5972 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@D@Z @6867 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@D@Z @6506 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@D@Z @6868 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@D@Z @6869 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@D@Z @6870 NONAME ??0_Sentry_base@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z @4707 NONAME ??0_Sentry_base@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@AAV12@@Z @4708 NONAME ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z @4709 NONAME ??0_Sentry_base@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@AAV12@@Z @4710 NONAME ??1?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@@std@@QAE@XZ @6507 NONAME ??1?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@@std@@QAE@XZ @5974 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@@std@@QAE@XZ @6871 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@@std@@QAE@XZ @6508 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@@std@@QAE@XZ @6509 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAE@XZ @6872 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @6873 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @6874 NONAME ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@XZ @6510 NONAME ??1?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@XZ @5977 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@XZ @6875 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAE@XZ @6511 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@XZ @6512 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@XZ @6876 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@XZ @6877 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@XZ @6878 NONAME ??1?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@XZ @5980 NONAME ??1?$PArray@VPString@@@@UAE@XZ @263 NONAME ??1?$PArray@VPWaveBuffer@@@@UAE@XZ @264 NONAME ??1?$PArray@VPWin32PacketBuffer@@@@UAE@XZ @265 NONAME ??1?$PBaseArray@D@@UAE@XZ @266 NONAME ??1?$PBaseArray@E@@UAE@XZ @267 NONAME ??1?$PBaseArray@F@@UAE@XZ @268 NONAME ??1?$PBaseArray@G@@UAE@XZ @269 NONAME ??1?$PBaseArray@H@@UAE@XZ @270 NONAME ??1?$PBaseArray@I@@UAE@XZ @271 NONAME ??1?$PBaseArray@J@@UAE@XZ @272 NONAME ??1?$PBaseArray@K@@UAE@XZ @273 NONAME ??1?$PBaseArray@PAVElement@PHashTable@@@@UAE@XZ @274 NONAME ??1?$PBaseArray@PAVPObject@@@@UAE@XZ @275 NONAME ??1?$PDevicePluginAdapter@VPSoundChannel@@@@UAE@XZ @6879 NONAME ??1?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAE@XZ @6880 NONAME ??1?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAE@XZ @6881 NONAME ??1?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAE@XZ @276 NONAME ??1?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAE@XZ @277 NONAME ??1?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAE@XZ @278 NONAME ??1?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAE@XZ @5641 NONAME ??1?$PDictionary@VPOrdinalKey@@VPThread@@@@UAE@XZ @279 NONAME ??1?$PDictionary@VPString@@VPDynaLink@@@@UAE@XZ @5562 NONAME ??1?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @6882 NONAME ??1?$PFactory@VPPluginModuleManager@@VPString@@@@MAE@XZ @6513 NONAME ??1?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @6514 NONAME ??1?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @6883 NONAME ??1?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @6884 NONAME ??1?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @6885 NONAME ??1?$PList@VInterfaceEntry@PIPSocket@@@@UAE@XZ @7344 NONAME ??1?$PList@VPDynaLink@@@@UAE@XZ @3033 NONAME ??1?$PList@VPNotifier@@@@UAE@XZ @3034 NONAME ??1?$PList@VPPluginService@@@@UAE@XZ @2682 NONAME ??1?$PList@VPSafeObject@@@@UAE@XZ @6750 NONAME ??1?$PList@VPSocket@@@@UAE@XZ @280 NONAME ??1?$PList@VPString@@@@UAE@XZ @281 NONAME ??1?$PList@VPThread@@@@UAE@XZ @282 NONAME ??1?$PList@VPTimer@@@@UAE@XZ @283 NONAME ??1?$POrdinalDictionary@VPString@@@@UAE@XZ @284 NONAME ??1?$PScalarArray@F@@UAE@XZ @285 NONAME ??1?$PScalarArray@G@@UAE@XZ @286 NONAME ??1?$PScalarArray@H@@UAE@XZ @287 NONAME ??1?$PScalarArray@I@@UAE@XZ @288 NONAME ??1?$PScalarArray@J@@UAE@XZ @289 NONAME ??1?$PScalarArray@K@@UAE@XZ @290 NONAME ??1?$PSet@VPString@@@@UAE@XZ @291 NONAME ??1?$PSortedList@VPString@@@@UAE@XZ @292 NONAME ??1?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UAE@XZ @15949 NONAME ??1?$PStringDictionary@VPOrdinalKey@@@@UAE@XZ @293 NONAME ??1?$PStringDictionary@VPString@@@@UAE@XZ @294 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UAE@XZ @15950 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UAE@XZ @15951 NONAME ??1?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UAE@XZ @15952 NONAME ??1?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@XZ @5981 NONAME ??1?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @5982 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @6886 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @6887 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @6888 NONAME ??1?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @6515 NONAME ??1?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @6516 NONAME ??1?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6517 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@XZ @5983 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6889 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6518 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6519 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6890 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6891 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6892 NONAME ??1Address@PIPSocket@@UAE@XZ @295 NONAME ??1Block@PTrace@@QAE@XZ @296 NONAME ??1Buffer@PDebugStream@@UAE@XZ @297 NONAME ??1Buffer@PStringStream@@UAE@XZ @298 NONAME ??1Buffer@PSystemLog@@UAE@XZ @299 NONAME ??1CMCDLL@PMail@@UAE@XZ @300 NONAME ??1CMC_message_reference_ptr@@QAE@XZ @301 NONAME ??1DeleteObjectsTimeout_PNotifier@PSafeCollection@@UAE@XZ @302 NONAME ??1FactoryMap@PFactoryBase@@QAE@XZ @6520 NONAME ??1HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UAE@XZ @15953 NONAME ??1HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UAE@XZ @15954 NONAME ??1HouseKeepingThread@PProcess@@UAE@XZ @303 NONAME ??1InterfaceEntry@PIPSocket@@UAE@XZ @304 NONAME ??1length_error@std@@UAE@XZ @5751 NONAME ??1logic_error@std@@UAE@XZ @5752 NONAME ??1MAPIDLL@PMail@@UAE@XZ @305 NONAME ??1Nest@PReadWriteMutex@@UAE@XZ @306 NONAME ??1NT_ServiceManager@@QAE@XZ @307 NONAME ??1out_of_range@std@@UAE@XZ @5753 NONAME ??1PAbstractArray@@UAE@XZ @308 NONAME ??1PAbstractDictionary@@UAE@XZ @309 NONAME ??1PAbstractList@@UAE@XZ @310 NONAME ??1PAbstractSet@@UAE@XZ @311 NONAME ??1PAbstractSortedList@@UAE@XZ @312 NONAME ??1PArgList@@UAE@XZ @313 NONAME ??1PArrayObjects@@UAE@XZ @314 NONAME ??1PBitArray@@UAE@XZ @315 NONAME ??1PBYTEArray@@UAE@XZ @316 NONAME ??1PCaselessString@@UAE@XZ @317 NONAME ??1PChannel@@UAE@XZ @318 NONAME ??1PChannelStreamBuffer@@UAE@XZ @319 NONAME ??1PCharArray@@UAE@XZ @320 NONAME ??1PCollection@@UAE@XZ @321 NONAME ??1PColourConverter@@UAE@XZ @322 NONAME ??1PColourConverterRegistration@@UAE@XZ @323 NONAME ??1PCondMutex@@UAE@XZ @4711 NONAME ??1PConfig@@UAE@XZ @324 NONAME ??1PConfigArgs@@UAE@XZ @325 NONAME ??1PConsoleChannel@@UAE@XZ @326 NONAME ??1PContainer@@UAE@XZ @327 NONAME ??1PCriticalSection@@UAE@XZ @5536 NONAME ??1PDebugStream@@UAE@XZ @328 NONAME ??1PDevicePluginAdapterBase@@UAE@XZ @6893 NONAME ??1PDevicePluginServiceDescriptor@@UAE@XZ @15955 NONAME ??1PDirectory@@UAE@XZ @329 NONAME ??1PDynaLink@@UAE@XZ @330 NONAME ??1PEthSocket@@UAE@XZ @331 NONAME ??1PFactoryBase@@UAE@XZ @6521 NONAME ??1PFile@@UAE@XZ @333 NONAME ??1PFileInfo@@UAE@XZ @334 NONAME ??1PFilePath@@UAE@XZ @335 NONAME ??1PHashTable@@UAE@XZ @336 NONAME ??1PHostByAddr@@UAE@XZ @337 NONAME ??1PHostByName@@UAE@XZ @338 NONAME ??1PICMPDLL@@UAE@XZ @339 NONAME ??1PICMPSocket@@UAE@XZ @340 NONAME ??1PImageDLL@@UAE@XZ @341 NONAME ??1PIndirectChannel@@UAE@XZ @342 NONAME ??1PingInfo@PICMPSocket@@QAE@XZ @343 NONAME ??1PIntCondMutex@@UAE@XZ @344 NONAME ??1PIPCacheData@@UAE@XZ @345 NONAME ??1PIPCacheKey@@UAE@XZ @346 NONAME ??1PIPDatagramSocket@@UAE@XZ @347 NONAME ??1PIPSocket@@UAE@XZ @348 NONAME ??1PIPXSocket@@UAE@XZ @349 NONAME ??1PluginLoaderStartup@@UAE@XZ @5986 NONAME ??1PMail@@UAE@XZ @350 NONAME ??1PMultiMediaFile@@QAE@XZ @351 NONAME ??1PNotifier@@UAE@XZ @353 NONAME ??1PNotifierFunction@@UAE@XZ @354 NONAME ??1PObject@@UAE@XZ @355 NONAME ??1POrdinalKey@@UAE@XZ @356 NONAME ??1POrdinalToString@@UAE@XZ @357 NONAME ??1PPipeChannel@@UAE@XZ @358 NONAME ??1PPluginManager@@UAE@XZ @2684 NONAME ??1PPluginModuleManager@@UAE@XZ @5564 NONAME ??1PPluginService@@UAE@XZ @2685 NONAME ??1PPluginServiceDescriptor@@UAE@XZ @15956 NONAME ??1PPointer@@UAE@XZ @5642 NONAME ??1PProcess@@UAE@XZ @359 NONAME ??1PProcessStartup@@UAE@XZ @5987 NONAME ??1PQoS@@UAE@XZ @2651 NONAME ??1PRASDLL@@UAE@XZ @360 NONAME ??1PReadWaitAndSignal@@QAE@XZ @3031 NONAME ??1PReadWriteMutex@@UAE@XZ @361 NONAME ??1PRegularExpression@@UAE@XZ @362 NONAME ??1PRemoteConnection@@UAE@XZ @363 NONAME ??1PSafeCollection@@UAE@XZ @364 NONAME ??1PSafeLockReadOnly@@QAE@XZ @7308 NONAME ??1PSafeLockReadWrite@@QAE@XZ @7309 NONAME ??1PSafeObject@@UAE@XZ @365 NONAME ??1PSafePtrBase@@UAE@XZ @366 NONAME ??1PSemaphore@@UAE@XZ @367 NONAME ??1PSerialChannel@@UAE@XZ @368 NONAME ??1PServiceProcess@@UAE@XZ @369 NONAME ??1PSimpleThread@@UAE@XZ @370 NONAME ??1PSmartObject@@UAE@XZ @371 NONAME ??1PSmartPointer@@UAE@XZ @372 NONAME ??1PSmartPtrInspector@@UAE@XZ @5643 NONAME ??1PSocket@@UAE@XZ @373 NONAME ??1PSortedStringList@@UAE@XZ @374 NONAME ??1PSound@@UAE@XZ @375 NONAME ??1PSoundChannel@@UAE@XZ @376 NONAME ??1PSoundChannelWin32@@UAE@XZ @2686 NONAME ??1PSPXSocket@@UAE@XZ @377 NONAME ??1PStandardColourConverter@@UAE@XZ @4712 NONAME ??1PString@@UAE@XZ @378 NONAME ??1PStringArray@@UAE@XZ @379 NONAME ??1PStringList@@UAE@XZ @380 NONAME ??1PStringSet@@UAE@XZ @381 NONAME ??1PStringStream@@UAE@XZ @382 NONAME ??1PStringToOrdinal@@UAE@XZ @383 NONAME ??1PStringToString@@UAE@XZ @384 NONAME ??1PStructuredFile@@UAE@XZ @385 NONAME ??1PSync@@UAE@XZ @16257 NONAME ??1PSyncPoint@@UAE@XZ @386 NONAME ??1PSynonymColour@@UAE@XZ @387 NONAME ??1PSynonymColourRegistration@@UAE@XZ @388 NONAME ??1PSystemLog@@UAE@XZ @389 NONAME ??1PTCPSocket@@UAE@XZ @390 NONAME ??1PTextFile@@UAE@XZ @391 NONAME ??1PThread@@UAE@XZ @392 NONAME ??1PTime@@UAE@XZ @393 NONAME ??1PTimedMutex@@UAE@XZ @16258 NONAME ??1PTimeInterval@@UAE@XZ @394 NONAME ??1PTimer@@UAE@XZ @395 NONAME ??1PTimerList@@UAE@XZ @396 NONAME ??1PUDPSocket@@UAE@XZ @397 NONAME ??1PVideoChannel@@UAE@XZ @398 NONAME ??1PVideoDevice@@UAE@XZ @399 NONAME ??1PVideoDeviceBitmap@@UAE@XZ @400 NONAME ??1PVideoInputDevice@@UAE@XZ @401 NONAME ??1PVideoInputDevice_FakeVideo@@UAE@XZ @2832 NONAME ??1PVideoInputDevice_VideoForWindows@@UAE@XZ @2687 NONAME ??1PVideoOutputDevice@@UAE@XZ @403 NONAME ??1PVideoOutputDeviceRGB@@UAE@XZ @15957 NONAME ??1PVideoOutputDevice_NULLOutput@@UAE@XZ @2833 NONAME ??1PVideoOutputDevice_Window@@UAE@XZ @15958 NONAME ??1PVideoOutputDevice_Window_PluginServiceDescriptor@@UAE@XZ @15959 NONAME ??1PWaitAndSignal@@QAE@XZ @407 NONAME ??1PWaveBuffer@@EAE@XZ @408 NONAME ??1PWaveFormat@@UAE@XZ @409 NONAME ??1PWin32AsnAny@@QAE@XZ @410 NONAME ??1PWin32AsnOid@@QAE@XZ @411 NONAME ??1PWin32OidBuffer@@QAE@XZ @412 NONAME ??1PWin32Overlapped@@QAE@XZ @413 NONAME ??1PWin32PacketBuffer@@UAE@XZ @414 NONAME ??1PWin32PacketDriver@@UAE@XZ @415 NONAME ??1PWin32PacketSYS@@UAE@XZ @416 NONAME ??1PWin32PacketVxD@@UAE@XZ @417 NONAME ??1PWin32SnmpLibrary@@UAE@XZ @418 NONAME ??1PWinQoS@@UAE@XZ @2923 NONAME ??1PWinSock@@UAE@XZ @419 NONAME ??1PWriteWaitAndSignal@@QAE@XZ @3032 NONAME ??1P_BGR24_RGB24@@UAE@XZ @15960 NONAME ??1P_BGR24_RGB24_Registration@@UAE@XZ @15961 NONAME ??1P_BGR24_RGB32@@UAE@XZ @15962 NONAME ??1P_BGR24_RGB32_Registration@@UAE@XZ @15963 NONAME ??1P_BGR24_YUV420P@@UAE@XZ @2834 NONAME ??1P_BGR24_YUV420P_Registration@@UAE@XZ @2835 NONAME ??1P_BGR32_RGB24@@UAE@XZ @15964 NONAME ??1P_BGR32_RGB24_Registration@@UAE@XZ @15965 NONAME ??1P_BGR32_RGB32@@UAE@XZ @15966 NONAME ??1P_BGR32_RGB32_Registration@@UAE@XZ @15967 NONAME ??1P_BGR32_YUV420P@@UAE@XZ @2836 NONAME ??1P_BGR32_YUV420P_Registration@@UAE@XZ @2837 NONAME ??1P_fd_set@@QAE@XZ @420 NONAME ??1P_Grey_YUV420P@@UAE@XZ @423 NONAME ??1P_Grey_YUV420P_Registration@@UAE@XZ @424 NONAME ??1P_RGB24_BGR24@@UAE@XZ @15968 NONAME ??1P_RGB24_BGR24_Registration@@UAE@XZ @15969 NONAME ??1P_RGB24_BGR32@@UAE@XZ @15970 NONAME ??1P_RGB24_BGR32_Registration@@UAE@XZ @15971 NONAME ??1P_RGB24_RGB32@@UAE@XZ @427 NONAME ??1P_RGB24_RGB32_Registration@@UAE@XZ @428 NONAME ??1P_RGB24_YUV420P@@UAE@XZ @429 NONAME ??1P_RGB24_YUV420P_Registration@@UAE@XZ @430 NONAME ??1P_RGB32_BGR24@@UAE@XZ @15972 NONAME ??1P_RGB32_BGR24_Registration@@UAE@XZ @15973 NONAME ??1P_RGB32_BGR32@@UAE@XZ @15974 NONAME ??1P_RGB32_BGR32_Registration@@UAE@XZ @15975 NONAME ??1P_RGB32_RGB24@@UAE@XZ @433 NONAME ??1P_RGB32_RGB24_Registration@@UAE@XZ @434 NONAME ??1P_RGB32_YUV420P@@UAE@XZ @435 NONAME ??1P_RGB32_YUV420P_Registration@@UAE@XZ @436 NONAME ??1P_SBGGR8_RGB24@@UAE@XZ @7289 NONAME ??1P_SBGGR8_RGB24_Registration@@UAE@XZ @7290 NONAME ??1P_SBGGR8_YUV420P@@UAE@XZ @7319 NONAME ??1P_SBGGR8_YUV420P_Registration@@UAE@XZ @7320 NONAME ??1P_UYV444_YUV420P@@UAE@XZ @437 NONAME ??1P_UYV444_YUV420P_Registration@@UAE@XZ @438 NONAME ??1P_UYVY422_YUV420P@@UAE@XZ @439 NONAME ??1P_UYVY422_YUV420P_Registration@@UAE@XZ @440 NONAME ??1P_YUV411P_YUV420P@@UAE@XZ @441 NONAME ??1P_YUV411P_YUV420P_Registration@@UAE@XZ @442 NONAME ??1P_YUV420P_BGR24@@UAE@XZ @443 NONAME ??1P_YUV420P_BGR24_Registration@@UAE@XZ @446 NONAME ??1P_YUV420P_BGR32@@UAE@XZ @2838 NONAME ??1P_YUV420P_BGR32_Registration@@UAE@XZ @2839 NONAME ??1P_YUV420P_RGB24@@UAE@XZ @447 NONAME ??1P_YUV420P_RGB24_Registration@@UAE@XZ @450 NONAME ??1P_YUV420P_RGB32@@UAE@XZ @451 NONAME ??1P_YUV420P_RGB32_Registration@@UAE@XZ @454 NONAME ??1P_YUV420P_YUV411P@@UAE@XZ @455 NONAME ??1P_YUV420P_YUV411P_Registration@@UAE@XZ @456 NONAME ??1P_YUV422_YUV420P@@UAE@XZ @457 NONAME ??1P_YUV422_YUV420P_Registration@@UAE@XZ @458 NONAME ??1P_YUV422_YUV422@@UAE@XZ @459 NONAME ??1P_YUV422_YUV422_Registration@@UAE@XZ @460 NONAME ??1RegistryKey@@QAE@XZ @461 NONAME ??1RouteEntry@PIPSocket@@UAE@XZ @462 NONAME ??1SecurityID@@QAE@XZ @463 NONAME ??1SelectList@PSocket@@UAE@XZ @464 NONAME ??1sentry@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@XZ @4713 NONAME ??1sentry@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@XZ @4714 NONAME ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@XZ @4715 NONAME ??1sentry@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@XZ @4716 NONAME ??1Table@PHashTable@@UAE@XZ @465 NONAME ??1WinSNMPLoader@@UAE@XZ @6405 NONAME ??1Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@UAE@XZ @6894 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@UAE@XZ @6895 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@UAE@XZ @6896 NONAME ??1WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @6897 NONAME ??1WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @6522 NONAME ??1WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @6898 NONAME ??1WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @6899 NONAME ??1WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @6900 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6523 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@XZ @5988 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6901 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6524 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6525 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6902 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6903 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6904 NONAME ??1_Sentry_base@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@XZ @4717 NONAME ??1_Sentry_base@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@XZ @4718 NONAME ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@XZ @4719 NONAME ??1_Sentry_base@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@XZ @4720 NONAME ??2@YAPAXIPAX@Z @5755 NONAME ??3@YAXPAX0@Z @5991 NONAME ??4?$PArray@VPString@@@@QAEAAV0@ABV0@@Z @4721 NONAME ??4?$PBaseArray@D@@QAEAAV0@ABV0@@Z @516 NONAME ??4?$PBaseArray@E@@QAEAAV0@ABV0@@Z @517 NONAME ??4?$PBaseArray@F@@QAEAAV0@ABV0@@Z @518 NONAME ??4?$PBaseArray@G@@QAEAAV0@ABV0@@Z @519 NONAME ??4?$PBaseArray@H@@QAEAAV0@ABV0@@Z @520 NONAME ??4?$PBaseArray@I@@QAEAAV0@ABV0@@Z @4722 NONAME ??4?$PBaseArray@J@@QAEAAV0@ABV0@@Z @521 NONAME ??4?$PBaseArray@K@@QAEAAV0@ABV0@@Z @4723 NONAME ??4?$PList@VPString@@@@QAEAAV0@ABV0@@Z @4724 NONAME ??4?$POrdinalDictionary@VPString@@@@QAEAAV0@ABV0@@Z @4725 NONAME ??4?$PScalarArray@F@@QAEAAV0@ABV0@@Z @4726 NONAME ??4?$PScalarArray@G@@QAEAAV0@ABV0@@Z @4727 NONAME ??4?$PScalarArray@H@@QAEAAV0@ABV0@@Z @4728 NONAME ??4?$PScalarArray@I@@QAEAAV0@ABV0@@Z @522 NONAME ??4?$PScalarArray@J@@QAEAAV0@ABV0@@Z @4729 NONAME ??4?$PScalarArray@K@@QAEAAV0@ABV0@@Z @523 NONAME ??4?$PSet@VPString@@@@QAEAAV0@ABV0@@Z @4730 NONAME ??4?$PStringDictionary@VPOrdinalKey@@@@QAEAAV0@ABV0@@Z @4731 NONAME ??4?$PStringDictionary@VPString@@@@QAEAAV0@ABV0@@Z @4732 NONAME ??4Address@PEthSocket@@QAEAAT01@ABT01@@Z @524 NONAME ??4Address@PEthSocket@@QAEAAT01@ABVPString@@@Z @525 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin6_addr@@@Z @2924 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin_addr@@@Z @526 NONAME ??4Address@PIPSocket@@QAEAAV01@ABV01@@Z @527 NONAME ??4Address@PIPSocket@@QAEAAV01@ABVPString@@@Z @528 NONAME ??4Address@PIPSocket@@QAEAAV01@K@Z @529 NONAME ??4Address@PIPXSocket@@QAEAAV01@ABV01@@Z @530 NONAME ??4Buffer@PStringStream@@QAEAAV01@ABV01@@Z @5431 NONAME ??4PAbstractArray@@QAEAAV0@ABV0@@Z @4733 NONAME ??4PAbstractDictionary@@QAEAAV0@ABV0@@Z @4734 NONAME ??4PAbstractList@@QAEAAV0@ABV0@@Z @4735 NONAME ??4PAbstractSet@@QAEAAV0@ABV0@@Z @4736 NONAME ??4PArrayObjects@@QAEAAV0@ABV0@@Z @4737 NONAME ??4PBYTEArray@@QAEAAV0@ABV0@@Z @4738 NONAME ??4PCaselessString@@QAEAAV0@ABVPString@@@Z @4739 NONAME ??4PCaselessString@@QAEAAV0@D@Z @5432 NONAME ??4PCaselessString@@QAEAAV0@PBD@Z @4740 NONAME ??4PChannel@@IAEAAV0@ABV0@@Z @5433 NONAME ??4PChannelStreamBuffer@@QAEAAV0@ABV0@@Z @5434 NONAME ??4PCharArray@@QAEAAV0@ABV0@@Z @4741 NONAME ??4PContainer@@QAEAAV0@ABV0@@Z @5435 NONAME ??4PDirectory@@QAEAAV0@ABVPString@@@Z @5436 NONAME ??4PDirectory@@QAEAAV0@PBD@Z @5437 NONAME ??4PFilePath@@QAEAAV0@ABV0@@Z @4742 NONAME ??4PFilePath@@QAEAAV0@ABVPString@@@Z @4743 NONAME ??4PFilePath@@QAEAAV0@PBD@Z @5438 NONAME ??4PHashTable@@QAEAAV0@ABV0@@Z @4744 NONAME ??4PIntCondMutex@@QAEAAV0@H@Z @531 NONAME ??4PNotifier@@QAEAAV0@ABV0@@Z @4745 NONAME ??4PObject@@QAEAAV0@ABV0@@Z @4746 NONAME ??4POrdinalKey@@QAEAAV0@H@Z @5439 NONAME ??4POrdinalToString@@QAEAAV0@ABV0@@Z @532 NONAME ??4PQoS@@QAEAAV0@ABV0@@Z @4747 NONAME ??4PRegularExpression@@QAEAAV0@ABV0@@Z @2962 NONAME ??4PSmartPointer@@QAEAAV0@ABV0@@Z @533 NONAME ??4PSound@@QAEAAV0@ABVPBYTEArray@@@Z @534 NONAME ??4PString@@QAEAAV0@ABV0@@Z @4748 NONAME ??4PString@@QAEAAV0@D@Z @535 NONAME ??4PString@@QAEAAV0@F@Z @536 NONAME ??4PString@@QAEAAV0@G@Z @537 NONAME ??4PString@@QAEAAV0@H@Z @538 NONAME ??4PString@@QAEAAV0@I@Z @539 NONAME ??4PString@@QAEAAV0@J@Z @540 NONAME ??4PString@@QAEAAV0@K@Z @541 NONAME ??4PString@@QAEAAV0@PBD@Z @542 NONAME ??4PString@@QAEAAV0@_J@Z @543 NONAME ??4PString@@QAEAAV0@_K@Z @544 NONAME ??4PStringArray@@QAEAAV0@ABV0@@Z @545 NONAME ??4PStringList@@QAEAAV0@ABV0@@Z @4749 NONAME ??4PStringSet@@QAEAAV0@ABV0@@Z @546 NONAME ??4PStringStream@@QAEAAV0@ABV0@@Z @5440 NONAME ??4PStringStream@@QAEAAV0@ABVPString@@@Z @5441 NONAME ??4PStringStream@@QAEAAV0@D@Z @5442 NONAME ??4PStringStream@@QAEAAV0@PBD@Z @5443 NONAME ??4PStringToOrdinal@@QAEAAV0@ABV0@@Z @547 NONAME ??4PStringToString@@QAEAAV0@ABV0@@Z @548 NONAME ??4PTime@@QAEAAV0@ABV0@@Z @4750 NONAME ??4PTimeInterval@@QAEAAV0@ABV0@@Z @549 NONAME ??4PTimer@@QAEAAV0@ABVPTimeInterval@@@Z @550 NONAME ??4PTimer@@QAEAAV0@K@Z @551 NONAME ??4PWaveBuffer@@AAEAAV0@ABVPSound@@@Z @552 NONAME ??4PWaveFormat@@QAEAAV0@ABV0@@Z @553 NONAME ??4PWin32AsnOid@@QAEAAV0@ABUAsnObjectIdentifier@@@Z @554 NONAME ??4P_fd_set@@QAEAAV0@I@Z @555 NONAME ??4P_timeval@@QAEAAV0@ABVPTimeInterval@@@Z @556 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAVAddress@PIPSocket@@@Z @4751 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAVPObject@@@Z @4752 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AA_J@Z @4753 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AA_K@Z @4754 NONAME ??5PArgList@@QAEAAV0@H@Z @5444 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVAddress@PIPSocket@@@Z @4755 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVPObject@@@Z @4756 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVPString@@@Z @8898 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@W4VideoFormat@PVideoDevice@@@Z @4757 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@_J@Z @4758 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@_K@Z @4759 NONAME ??6PArgList@@QAEAAV0@H@Z @5445 NONAME ??7PString@@QBE_NXZ @5594 NONAME ??8Address@PEthSocket@@QBE_NABT01@@Z @5595 NONAME ??8Address@PEthSocket@@QBE_NPBE@Z @5596 NONAME ??8Address@PIPSocket@@QBE_NAAUin6_addr@@@Z @5597 NONAME ??8Address@PIPSocket@@QBE_NAAUin_addr@@@Z @5598 NONAME ??8Address@PIPSocket@@QBE_NABV01@@Z @5599 NONAME ??8Address@PIPSocket@@QBE_NH@Z @5600 NONAME ??8Address@PIPSocket@@QBE_NK@Z @5601 NONAME ??8const_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBE_NABV012@@Z @6406 NONAME ??8const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE_NABV012@@Z @15976 NONAME ??8const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE_NABV012@@Z @5992 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBE_NABV012@@Z @6526 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBE_NABV012@@Z @5993 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6905 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6527 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6528 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6906 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6907 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6908 NONAME ??8PObject@@QBE_NABV0@@Z @5602 NONAME ??8PString@@QBE_NABVPObject@@@Z @5603 NONAME ??8PString@@QBE_NPBD@Z @5604 NONAME ??8PTimeInterval@@QBE_NABV0@@Z @5605 NONAME ??8PTimeInterval@@QBE_NJ@Z @5606 NONAME ??9Address@PEthSocket@@QBE_NPBE@Z @5607 NONAME ??9Address@PIPSocket@@QBE_NH@Z @5608 NONAME ??9const_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBE_NABV012@@Z @6407 NONAME ??9const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE_NABV012@@Z @15977 NONAME ??9const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE_NABV012@@Z @5996 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBE_NABV012@@Z @6529 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBE_NABV012@@Z @5997 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6909 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6530 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6531 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6910 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6911 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6912 NONAME ??9PObject@@QBE_NABV0@@Z @5609 NONAME ??9PString@@QBE_NABVPObject@@@Z @5610 NONAME ??9PString@@QBE_NPBD@Z @5611 NONAME ??9PTimeInterval@@QBE_NABV0@@Z @5612 NONAME ??9PTimeInterval@@QBE_NJ@Z @5613 NONAME ??A?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@@std@@QAEAAPAVPFactoryBase@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @6532 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@ABVPString@@@Z @6913 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@ABVPString@@@Z @6533 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@ABVPString@@@Z @6914 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@ABVPString@@@Z @6915 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@ABVPString@@@Z @6916 NONAME ??A?$PArray@VPWaveBuffer@@@@QBEAAVPWaveBuffer@@H@Z @4776 NONAME ??A?$PArray@VPWin32PacketBuffer@@@@QBEAAVPWin32PacketBuffer@@H@Z @4777 NONAME ??A?$PBaseArray@D@@QAEAADH@Z @4778 NONAME ??A?$PBaseArray@D@@QBEDH@Z @4779 NONAME ??A?$PBaseArray@E@@QAEAAEH@Z @4780 NONAME ??A?$PBaseArray@F@@QAEAAFH@Z @4781 NONAME ??A?$PBaseArray@G@@QAEAAGH@Z @568 NONAME ??A?$PBaseArray@H@@QAEAAHH@Z @569 NONAME ??A?$PBaseArray@H@@QBEHH@Z @4782 NONAME ??A?$PBaseArray@I@@QAEAAIH@Z @570 NONAME ??A?$PBaseArray@J@@QAEAAJH@Z @4783 NONAME ??A?$PBaseArray@K@@QAEAAKH@Z @571 NONAME ??A?$PBaseArray@PAVElement@PHashTable@@@@QAEAAPAVElement@PHashTable@@H@Z @4784 NONAME ??A?$PBaseArray@PAVElement@PHashTable@@@@QBEPAVElement@PHashTable@@H@Z @4785 NONAME ??A?$PBaseArray@PAVPObject@@@@QAEAAPAVPObject@@H@Z @4786 NONAME ??A?$PList@VInterfaceEntry@PIPSocket@@@@QBEAAVInterfaceEntry@PIPSocket@@H@Z @7345 NONAME ??A?$PList@VPDynaLink@@@@QBEAAVPDynaLink@@H@Z @4787 NONAME ??A?$PList@VPNotifier@@@@QBEAAVPNotifier@@H@Z @4788 NONAME ??A?$PList@VPPluginService@@@@QBEAAVPPluginService@@H@Z @4789 NONAME ??A?$PList@VPSafeObject@@@@QBEAAVPSafeObject@@H@Z @6751 NONAME ??A?$PList@VPSocket@@@@QBEAAVPSocket@@H@Z @4790 NONAME ??A?$PList@VPString@@@@QBEAAVPString@@H@Z @4791 NONAME ??A?$PList@VPThread@@@@QBEAAVPThread@@H@Z @4792 NONAME ??A?$PList@VRouteEntry@PIPSocket@@@@QBEAAVRouteEntry@PIPSocket@@H@Z @4793 NONAME ??A?$PSortedList@VPString@@@@QBEAAVPString@@H@Z @4794 NONAME ??A?$PStringDictionary@VPString@@@@QBEABVPString@@ABV1@@Z @15978 NONAME ??AAddress@PIPSocket@@QBEEH@Z @572 NONAME ??APArgList@@QBE?AVPString@@H@Z @573 NONAME ??APStringArray@@QAEAAVPString@@H@Z @574 NONAME ??APStringArray@@QBE?AVPString@@H@Z @7316 NONAME ??APWin32AsnOid@@QAEAAIH@Z @4796 NONAME ??B?$fpos@H@std@@QBEJXZ @4797 NONAME ??B?$PBaseArray@D@@QBEPBDXZ @4798 NONAME ??B?$PBaseArray@E@@QBEPBEXZ @4799 NONAME ??B?$PBaseArray@F@@QBEPBFXZ @4800 NONAME ??B?$PBaseArray@G@@QBEPBGXZ @4801 NONAME ??B?$PBaseArray@H@@QBEPBHXZ @4802 NONAME ??B?$PBaseArray@I@@QBEPBIXZ @4803 NONAME ??B?$PBaseArray@J@@QBEPBJXZ @4804 NONAME ??B?$PBaseArray@K@@QBEPBKXZ @4805 NONAME ??B?$PBaseArray@PAVElement@PHashTable@@@@QBEPBQAVElement@PHashTable@@XZ @4806 NONAME ??B?$PBaseArray@PAVPObject@@@@QBEPBQAVPObject@@XZ @4807 NONAME ??BAddress@PEthSocket@@QBE?AVPString@@XZ @575 NONAME ??BAddress@PIPSocket@@QBE?AUin6_addr@@XZ @2926 NONAME ??BAddress@PIPSocket@@QBE?AUin_addr@@XZ @576 NONAME ??BAddress@PIPSocket@@QBE?AVPString@@XZ @577 NONAME ??BAddress@PIPSocket@@QBEKXZ @578 NONAME ??BAddress@PIPXSocket@@QBE?AVPString@@XZ @579 NONAME ??BCMC_message_reference_ptr@@QAEPAUCMC_counted_string@@XZ @4808 NONAME ??BPAtomicInteger@@QBEJXZ @5540 NONAME ??BPOrdinalKey@@QBEHXZ @4809 NONAME ??BPsockaddr@@QBEPAUsockaddr@@XZ @4810 NONAME ??BPString@@QBEPBEXZ @5446 NONAME ??BPWaveFormat@@QBEPAUtWAVEFORMATEX@@XZ @4811 NONAME ??BPWin32OidBuffer@@QAEKXZ @4812 NONAME ??BPWin32OidBuffer@@QAEPAXXZ @4813 NONAME ??BP_fd_set@@QBEPAUfd_set@@XZ @4814 NONAME ??BP_timeval@@QAEPAUtimeval@@XZ @4815 NONAME ??BSecurityID@@QBEPAXXZ @4816 NONAME ??Bsentry@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_NXZ @4817 NONAME ??Bsentry@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_NXZ @4818 NONAME ??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QBE_NXZ @4819 NONAME ??Bsentry@?$basic_ostream@GU?$char_traits@G@std@@@std@@QBE_NXZ @4820 NONAME ??Cconst_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBEPBUSlice@PChannel@@XZ @15979 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEPBU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6534 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @6917 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @6535 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6536 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @6918 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @6919 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @6920 NONAME ??Citerator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @6003 NONAME ??CPsockaddr@@QBEPAUsockaddr@@XZ @4821 NONAME ??CPVideoDeviceBitmap@@QBEPAUtagBITMAPINFO@@XZ @4822 NONAME ??CPWaveFormat@@QBEPAUtWAVEFORMATEX@@XZ @4823 NONAME ??Dconst_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEABQAVPPluginModuleManager@@XZ @6408 NONAME ??Dconst_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBEABUSlice@PChannel@@XZ @15980 NONAME ??Dconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEABVPString@@XZ @6004 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6537 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @6005 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @6921 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @6538 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6539 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @6922 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @6923 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @6924 NONAME ??Diterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEAAPAVPPluginModuleManager@@XZ @6409 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6540 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @6008 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @6925 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6541 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @6926 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @6927 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @6928 NONAME ??DPTimeInterval@@QBE?AV0@H@Z @5447 NONAME ??Econst_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QAEAAV012@XZ @15981 NONAME ??Econst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEAAV012@XZ @6010 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6542 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6011 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6929 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6543 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6544 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6930 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6931 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6932 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AV012@H@Z @6545 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6546 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AV012@H@Z @6014 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6015 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6933 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6934 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6547 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6548 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6549 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6550 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6935 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6936 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6937 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6938 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6939 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6940 NONAME ??EPAtomicInteger@@QAEJXZ @5541 NONAME ??EPIntCondMutex@@QAEAAV0@XZ @580 NONAME ??EPOrdinalKey@@QAEHH@Z @5448 NONAME ??EPOrdinalKey@@QAEHXZ @5449 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6551 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6020 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6941 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6552 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6942 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6943 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6944 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6553 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6022 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6945 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6554 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6946 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6947 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6948 NONAME ??FPAtomicInteger@@QAEJXZ @5542 NONAME ??FPIntCondMutex@@QAEAAV0@XZ @581 NONAME ??FPOrdinalKey@@QAEHH@Z @5450 NONAME ??FPOrdinalKey@@QAEHXZ @5451 NONAME ??Gconst_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEHABV012@@Z @6024 NONAME ??Gconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEHABV012@@Z @6025 NONAME ??Giterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEHABVconst_iterator@12@@Z @6026 NONAME ??Giterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEHABVconst_iterator@12@@Z @6027 NONAME ??GPTime@@QBE?AV0@ABVPTimeInterval@@@Z @582 NONAME ??GPTime@@QBE?AVPTimeInterval@@ABV0@@Z @583 NONAME ??GPTimeInterval@@QBE?AV0@ABV0@@Z @584 NONAME ??GPTimeInterval@@QBE?AV0@XZ @5452 NONAME ??H@YA?AVPString@@DABV0@@Z @585 NONAME ??H@YA?AVPString@@PBDABV0@@Z @586 NONAME ??Hiterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBE?AV012@H@Z @6028 NONAME ??Hiterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE?AV012@H@Z @6029 NONAME ??HPString@@QBE?AV0@ABV0@@Z @587 NONAME ??HPString@@QBE?AV0@D@Z @588 NONAME ??HPString@@QBE?AV0@PBD@Z @589 NONAME ??HPStringArray@@QAE?AV0@ABV0@@Z @5453 NONAME ??HPStringArray@@QAE?AV0@ABVPString@@@Z @5454 NONAME ??HPStringList@@QAE?AV0@ABV0@@Z @5455 NONAME ??HPStringList@@QAE?AV0@ABVPString@@@Z @5456 NONAME ??HPTime@@QBE?AV0@ABVPTimeInterval@@@Z @590 NONAME ??HPTimeInterval@@QBE?AV0@ABV0@@Z @5457 NONAME ??I@YA?AVPString@@DABV0@@Z @5458 NONAME ??I@YA?AVPString@@PBDABV0@@Z @591 NONAME ??IPString@@QBE?AV0@ABV0@@Z @592 NONAME ??IPString@@QBE?AV0@D@Z @593 NONAME ??IPString@@QBE?AV0@PBD@Z @594 NONAME ??KPTimeInterval@@QBE?AV0@H@Z @5459 NONAME ??MPObject@@QBE_NABV0@@Z @5614 NONAME ??MPString@@QBE_NABVPObject@@@Z @5615 NONAME ??MPString@@QBE_NPBD@Z @5616 NONAME ??MPTimeInterval@@QBE_NABV0@@Z @5617 NONAME ??MPTimeInterval@@QBE_NJ@Z @5618 NONAME ??NPObject@@QBE_NABV0@@Z @5619 NONAME ??NPString@@QBE_NABVPObject@@@Z @5620 NONAME ??NPString@@QBE_NPBD@Z @5621 NONAME ??NPTimeInterval@@QBE_NABV0@@Z @5622 NONAME ??NPTimeInterval@@QBE_NJ@Z @5623 NONAME ??OPObject@@QBE_NABV0@@Z @5624 NONAME ??OPString@@QBE_NABVPObject@@@Z @5625 NONAME ??OPString@@QBE_NPBD@Z @5626 NONAME ??OPTimeInterval@@QBE_NABV0@@Z @5627 NONAME ??OPTimeInterval@@QBE_NJ@Z @5628 NONAME ??PPObject@@QBE_NABV0@@Z @5629 NONAME ??PPString@@QBE_NABVPObject@@@Z @5630 NONAME ??PPString@@QBE_NPBD@Z @5631 NONAME ??PPTimeInterval@@QBE_NABV0@@Z @5632 NONAME ??PPTimeInterval@@QBE_NJ@Z @5633 NONAME ??R?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@QBE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z @6555 NONAME ??R?$less@VPString@@@std@@QBE_NABVPString@@0@Z @6030 NONAME ??RPNotifier@@UBEXAAVPObject@@H@Z @595 NONAME ??RPString@@QBE?AV0@HH@Z @596 NONAME ??XAddress@PIPSocket@@QBE_NABV01@@Z @7360 NONAME ??XPString@@QBE_NABV0@@Z @5634 NONAME ??XPString@@QBE_NPBD@Z @5635 NONAME ??XPTimeInterval@@QAEAAV0@H@Z @5474 NONAME ??XPWin32AsnOid@@QAE_NABV0@@Z @4831 NONAME ??Yiterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEAAV012@H@Z @6031 NONAME ??Yiterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEAAV012@H@Z @6032 NONAME ??YPFilePath@@QAEAAV0@ABVPString@@@Z @598 NONAME ??YPFilePath@@QAEAAV0@PBD@Z @4832 NONAME ??YPIntCondMutex@@QAEAAV0@H@Z @599 NONAME ??YPOrdinalKey@@QAEAAV0@H@Z @5475 NONAME ??YPString@@QAEAAV0@ABV0@@Z @4833 NONAME ??YPString@@QAEAAV0@D@Z @600 NONAME ??YPString@@QAEAAV0@PBD@Z @601 NONAME ??YPStringArray@@QAEAAV0@ABV0@@Z @602 NONAME ??YPStringArray@@QAEAAV0@ABVPString@@@Z @5476 NONAME ??YPStringList@@QAEAAV0@ABV0@@Z @603 NONAME ??YPStringList@@QAEAAV0@ABVPString@@@Z @4834 NONAME ??YPStringSet@@QAEAAV0@ABVPString@@@Z @5477 NONAME ??YPTime@@QAEAAV0@ABVPTimeInterval@@@Z @604 NONAME ??YPTimeInterval@@QAEAAV0@ABV0@@Z @4835 NONAME ??YP_fd_set@@QAEAAV0@I@Z @605 NONAME ??YSelectList@PSocket@@QAEXAAV1@@Z @5696 NONAME ??ZPIntCondMutex@@QAEAAV0@H@Z @606 NONAME ??ZPOrdinalKey@@QAEAAV0@H@Z @5478 NONAME ??ZPStringSet@@QAEAAV0@ABVPString@@@Z @5479 NONAME ??ZPTime@@QAEAAV0@ABVPTimeInterval@@@Z @607 NONAME ??ZPTimeInterval@@QAEAAV0@ABV0@@Z @4836 NONAME ??ZP_fd_set@@QAEAAV0@I@Z @608 NONAME ??_0PTimeInterval@@QAEAAV0@H@Z @5480 NONAME ??_4PString@@QAEAAV0@ABV0@@Z @5481 NONAME ??_4PString@@QAEAAV0@D@Z @609 NONAME ??_4PString@@QAEAAV0@PBD@Z @610 NONAME ??_7?$PArray@VPString@@@@6B@ @611 NONAME ??_7?$PArray@VPWaveBuffer@@@@6B@ @612 NONAME ??_7?$PArray@VPWin32PacketBuffer@@@@6B@ @613 NONAME ??_7?$PBaseArray@D@@6B@ @614 NONAME ??_7?$PBaseArray@E@@6B@ @615 NONAME ??_7?$PBaseArray@F@@6B@ @616 NONAME ??_7?$PBaseArray@G@@6B@ @617 NONAME ??_7?$PBaseArray@H@@6B@ @618 NONAME ??_7?$PBaseArray@I@@6B@ @619 NONAME ??_7?$PBaseArray@J@@6B@ @620 NONAME ??_7?$PBaseArray@K@@6B@ @621 NONAME ??_7?$PBaseArray@PAVElement@PHashTable@@@@6B@ @4837 NONAME ??_7?$PBaseArray@PAVPObject@@@@6B@ @622 NONAME ??_7?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @6949 NONAME ??_7?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @6950 NONAME ??_7?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @6951 NONAME ??_7?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @623 NONAME ??_7?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @624 NONAME ??_7?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @625 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @5644 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @626 NONAME ??_7?$PDictionary@VPString@@VPDynaLink@@@@6B@ @5565 NONAME ??_7?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6952 NONAME ??_7?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @6556 NONAME ??_7?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6557 NONAME ??_7?$PFactory@VPSoundChannel@@VPString@@@@6B@ @6953 NONAME ??_7?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @6954 NONAME ??_7?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6955 NONAME ??_7?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @7346 NONAME ??_7?$PList@VPDynaLink@@@@6B@ @3035 NONAME ??_7?$PList@VPNotifier@@@@6B@ @3036 NONAME ??_7?$PList@VPPluginService@@@@6B@ @2689 NONAME ??_7?$PList@VPSafeObject@@@@6B@ @6752 NONAME ??_7?$PList@VPSocket@@@@6B@ @627 NONAME ??_7?$PList@VPString@@@@6B@ @628 NONAME ??_7?$PList@VPThread@@@@6B@ @629 NONAME ??_7?$PList@VPTimer@@@@6B@ @630 NONAME ??_7?$POrdinalDictionary@VPString@@@@6B@ @4838 NONAME ??_7?$PScalarArray@F@@6B@ @631 NONAME ??_7?$PScalarArray@G@@6B@ @632 NONAME ??_7?$PScalarArray@H@@6B@ @633 NONAME ??_7?$PScalarArray@I@@6B@ @634 NONAME ??_7?$PScalarArray@J@@6B@ @635 NONAME ??_7?$PScalarArray@K@@6B@ @636 NONAME ??_7?$PSet@VPString@@@@6B@ @637 NONAME ??_7?$PSortedList@VPString@@@@6B@ @4839 NONAME ??_7?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @15982 NONAME ??_7?$PStringDictionary@VPOrdinalKey@@@@6B@ @4840 NONAME ??_7?$PStringDictionary@VPString@@@@6B@ @3010 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @15983 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @15984 NONAME ??_7?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @15985 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6956 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6957 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6958 NONAME ??_7?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6558 NONAME ??_7?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6559 NONAME ??_7Address@PIPSocket@@6B@ @638 NONAME ??_7Buffer@PDebugStream@@6B@ @639 NONAME ??_7Buffer@PStringStream@@6B@ @640 NONAME ??_7Buffer@PSystemLog@@6B@ @641 NONAME ??_7CMCDLL@PMail@@6B@ @642 NONAME ??_7DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @643 NONAME ??_7HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @15986 NONAME ??_7HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @15987 NONAME ??_7HouseKeepingThread@PProcess@@6B@ @644 NONAME ??_7InterfaceEntry@PIPSocket@@6B@ @645 NONAME ??_7length_error@std@@6B@ @5773 NONAME ??_7logic_error@std@@6B@ @5774 NONAME ??_7MAPIDLL@PMail@@6B@ @646 NONAME ??_7Nest@PReadWriteMutex@@6B@ @647 NONAME ??_7NT_ServiceManager@@6B@ @648 NONAME ??_7ostrstream@std@@6B@ @4841 NONAME ??_7out_of_range@std@@6B@ @5775 NONAME ??_7PAbstractArray@@6B@ @649 NONAME ??_7PAbstractDictionary@@6B@ @650 NONAME ??_7PAbstractList@@6B@ @651 NONAME ??_7PAbstractSet@@6B@ @652 NONAME ??_7PAbstractSortedList@@6B@ @653 NONAME ??_7PArgList@@6B@ @654 NONAME ??_7PArrayObjects@@6B@ @655 NONAME ??_7PBitArray@@6B@ @656 NONAME ??_7PBYTEArray@@6B@ @657 NONAME ??_7PCaselessString@@6B@ @658 NONAME ??_7PChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4842 NONAME ??_7PChannel@@6BPObject@@@ @660 NONAME ??_7PChannelStreamBuffer@@6B@ @661 NONAME ??_7PCharArray@@6B@ @662 NONAME ??_7PCollection@@6B@ @663 NONAME ??_7PColourConverter@@6B@ @664 NONAME ??_7PColourConverterRegistration@@6B@ @665 NONAME ??_7PCondMutex@@6B@ @4843 NONAME ??_7PConfig@@6B@ @666 NONAME ??_7PConfigArgs@@6B@ @667 NONAME ??_7PConsoleChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4844 NONAME ??_7PConsoleChannel@@6BPObject@@@ @669 NONAME ??_7PContainer@@6B@ @670 NONAME ??_7PCriticalSection@@6B@ @5543 NONAME ??_7PDebugStream@@6B@ @671 NONAME ??_7PDevicePluginAdapterBase@@6B@ @6959 NONAME ??_7PDevicePluginServiceDescriptor@@6B@ @15988 NONAME ??_7PDirectory@@6B@ @672 NONAME ??_7PDynaLink@@6B@ @673 NONAME ??_7PEthSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4845 NONAME ??_7PEthSocket@@6BPObject@@@ @675 NONAME ??_7PFactoryBase@@6B@ @6560 NONAME ??_7PFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4846 NONAME ??_7PFile@@6BPObject@@@ @678 NONAME ??_7PFileInfo@@6B@ @679 NONAME ??_7PFilePath@@6B@ @680 NONAME ??_7PHashTable@@6B@ @681 NONAME ??_7PHostByAddr@@6B@ @682 NONAME ??_7PHostByName@@6B@ @683 NONAME ??_7PICMPDLL@@6B@ @684 NONAME ??_7PICMPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4847 NONAME ??_7PICMPSocket@@6BPObject@@@ @686 NONAME ??_7PImageDLL@@6B@ @687 NONAME ??_7PIndirectChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4848 NONAME ??_7PIndirectChannel@@6BPObject@@@ @689 NONAME ??_7PIntCondMutex@@6B@ @690 NONAME ??_7PIPCacheData@@6B@ @691 NONAME ??_7PIPCacheKey@@6B@ @692 NONAME ??_7PIPDatagramSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4849 NONAME ??_7PIPDatagramSocket@@6BPObject@@@ @694 NONAME ??_7PIPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4850 NONAME ??_7PIPSocket@@6BPObject@@@ @696 NONAME ??_7PIPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4851 NONAME ??_7PIPXSocket@@6BPObject@@@ @698 NONAME ??_7PluginLoaderStartup@@6B@ @6033 NONAME ??_7PMail@@6B@ @699 NONAME ??_7PNotifier@@6B@ @701 NONAME ??_7PNotifierFunction@@6B@ @702 NONAME ??_7PObject@@6B@ @703 NONAME ??_7POrdinalKey@@6B@ @704 NONAME ??_7POrdinalToString@@6B@ @705 NONAME ??_7PPipeChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4852 NONAME ??_7PPipeChannel@@6BPObject@@@ @707 NONAME ??_7PPluginManager@@6B@ @2691 NONAME ??_7PPluginModuleManager@@6B@ @5567 NONAME ??_7PPluginService@@6B@ @2692 NONAME ??_7PPluginServiceDescriptor@@6B@ @15989 NONAME ??_7PPointer@@6B@ @5645 NONAME ??_7PProcess@@6B@ @708 NONAME ??_7PProcessStartup@@6B@ @6034 NONAME ??_7PQoS@@6B@ @2653 NONAME ??_7PRASDLL@@6B@ @709 NONAME ??_7PReadWriteMutex@@6B@ @710 NONAME ??_7PRegularExpression@@6B@ @711 NONAME ??_7PRemoteConnection@@6B@ @712 NONAME ??_7PSafeCollection@@6B@ @713 NONAME ??_7PSafeObject@@6B@ @714 NONAME ??_7PSafePtrBase@@6B@ @715 NONAME ??_7PSemaphore@@6B@ @716 NONAME ??_7PSerialChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4853 NONAME ??_7PSerialChannel@@6BPObject@@@ @718 NONAME ??_7PServiceProcess@@6B@ @719 NONAME ??_7PSimpleThread@@6B@ @720 NONAME ??_7PSmartObject@@6B@ @4854 NONAME ??_7PSmartPointer@@6B@ @721 NONAME ??_7PSmartPtrInspector@@6B@ @5646 NONAME ??_7PSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4855 NONAME ??_7PSocket@@6BPObject@@@ @723 NONAME ??_7PSortedStringList@@6B@ @724 NONAME ??_7PSound@@6B@ @725 NONAME ??_7PSoundChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4856 NONAME ??_7PSoundChannel@@6BPObject@@@ @727 NONAME ??_7PSoundChannelWin32@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4857 NONAME ??_7PSoundChannelWin32@@6BPObject@@@ @2694 NONAME ??_7PSPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4858 NONAME ??_7PSPXSocket@@6BPObject@@@ @729 NONAME ??_7PStandardColourConverter@@6B@ @4859 NONAME ??_7PString@@6B@ @730 NONAME ??_7PStringArray@@6B@ @731 NONAME ??_7PStringList@@6B@ @732 NONAME ??_7PStringSet@@6B@ @733 NONAME ??_7PStringStream@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4860 NONAME ??_7PStringStream@@6BPString@@@ @735 NONAME ??_7PStringToOrdinal@@6B@ @736 NONAME ??_7PStringToString@@6B@ @737 NONAME ??_7PStructuredFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4861 NONAME ??_7PStructuredFile@@6BPObject@@@ @739 NONAME ??_7PSync@@6B@ @16259 NONAME ??_7PSyncPoint@@6B@ @740 NONAME ??_7PSynonymColour@@6B@ @741 NONAME ??_7PSynonymColourRegistration@@6B@ @742 NONAME ??_7PSystemLog@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4862 NONAME ??_7PSystemLog@@6BPObject@@@ @744 NONAME ??_7PTCPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4863 NONAME ??_7PTCPSocket@@6BPObject@@@ @746 NONAME ??_7PTextFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4864 NONAME ??_7PTextFile@@6BPObject@@@ @748 NONAME ??_7PThread@@6B@ @749 NONAME ??_7PTime@@6B@ @750 NONAME ??_7PTimedMutex@@6B@ @16260 NONAME ??_7PTimeInterval@@6B@ @751 NONAME ??_7PTimer@@6B@ @752 NONAME ??_7PTimerList@@6B@ @753 NONAME ??_7PUDPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4865 NONAME ??_7PUDPSocket@@6BPObject@@@ @755 NONAME ??_7PVideoChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4866 NONAME ??_7PVideoChannel@@6BPObject@@@ @757 NONAME ??_7PVideoDevice@@6B@ @758 NONAME ??_7PVideoDeviceBitmap@@6B@ @759 NONAME ??_7PVideoInputDevice@@6B@ @760 NONAME ??_7PVideoInputDevice_FakeVideo@@6B@ @2840 NONAME ??_7PVideoInputDevice_VideoForWindows@@6B@ @2695 NONAME ??_7PVideoOutputDevice@@6B@ @762 NONAME ??_7PVideoOutputDeviceRGB@@6B@ @15990 NONAME ??_7PVideoOutputDevice_NULLOutput@@6B@ @2841 NONAME ??_7PVideoOutputDevice_Window@@6B@ @15991 NONAME ??_7PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @15992 NONAME ??_7PWaveBuffer@@6B@ @766 NONAME ??_7PWaveFormat@@6B@ @767 NONAME ??_7PWin32PacketBuffer@@6B@ @768 NONAME ??_7PWin32PacketDriver@@6B@ @769 NONAME ??_7PWin32PacketSYS@@6B@ @770 NONAME ??_7PWin32PacketVxD@@6B@ @771 NONAME ??_7PWin32SnmpLibrary@@6B@ @772 NONAME ??_7PWinQoS@@6B@ @2927 NONAME ??_7PWinSock@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4867 NONAME ??_7PWinSock@@6BPObject@@@ @774 NONAME ??_7P_BGR24_RGB24@@6B@ @15993 NONAME ??_7P_BGR24_RGB24_Registration@@6B@ @15994 NONAME ??_7P_BGR24_RGB32@@6B@ @15995 NONAME ??_7P_BGR24_RGB32_Registration@@6B@ @15996 NONAME ??_7P_BGR24_YUV420P@@6B@ @2842 NONAME ??_7P_BGR24_YUV420P_Registration@@6B@ @2843 NONAME ??_7P_BGR32_RGB24@@6B@ @15997 NONAME ??_7P_BGR32_RGB24_Registration@@6B@ @15998 NONAME ??_7P_BGR32_RGB32@@6B@ @15999 NONAME ??_7P_BGR32_RGB32_Registration@@6B@ @16000 NONAME ??_7P_BGR32_YUV420P@@6B@ @2844 NONAME ??_7P_BGR32_YUV420P_Registration@@6B@ @2845 NONAME ??_7P_Grey_YUV420P@@6B@ @777 NONAME ??_7P_Grey_YUV420P_Registration@@6B@ @778 NONAME ??_7P_RGB24_BGR24@@6B@ @16001 NONAME ??_7P_RGB24_BGR24_Registration@@6B@ @16002 NONAME ??_7P_RGB24_BGR32@@6B@ @16003 NONAME ??_7P_RGB24_BGR32_Registration@@6B@ @16004 NONAME ??_7P_RGB24_RGB32@@6B@ @781 NONAME ??_7P_RGB24_RGB32_Registration@@6B@ @782 NONAME ??_7P_RGB24_YUV420P@@6B@ @783 NONAME ??_7P_RGB24_YUV420P_Registration@@6B@ @784 NONAME ??_7P_RGB32_BGR24@@6B@ @16005 NONAME ??_7P_RGB32_BGR24_Registration@@6B@ @16006 NONAME ??_7P_RGB32_BGR32@@6B@ @16007 NONAME ??_7P_RGB32_BGR32_Registration@@6B@ @16008 NONAME ??_7P_RGB32_RGB24@@6B@ @787 NONAME ??_7P_RGB32_RGB24_Registration@@6B@ @788 NONAME ??_7P_RGB32_YUV420P@@6B@ @789 NONAME ??_7P_RGB32_YUV420P_Registration@@6B@ @790 NONAME ??_7P_SBGGR8_RGB24@@6B@ @7291 NONAME ??_7P_SBGGR8_RGB24_Registration@@6B@ @7292 NONAME ??_7P_SBGGR8_YUV420P@@6B@ @7321 NONAME ??_7P_SBGGR8_YUV420P_Registration@@6B@ @7322 NONAME ??_7P_UYV444_YUV420P@@6B@ @791 NONAME ??_7P_UYV444_YUV420P_Registration@@6B@ @792 NONAME ??_7P_UYVY422_YUV420P@@6B@ @793 NONAME ??_7P_UYVY422_YUV420P_Registration@@6B@ @794 NONAME ??_7P_YUV411P_YUV420P@@6B@ @795 NONAME ??_7P_YUV411P_YUV420P_Registration@@6B@ @796 NONAME ??_7P_YUV420P_BGR24@@6B@ @797 NONAME ??_7P_YUV420P_BGR24_Registration@@6B@ @800 NONAME ??_7P_YUV420P_BGR32@@6B@ @2846 NONAME ??_7P_YUV420P_BGR32_Registration@@6B@ @2847 NONAME ??_7P_YUV420P_RGB24@@6B@ @801 NONAME ??_7P_YUV420P_RGB24_Registration@@6B@ @804 NONAME ??_7P_YUV420P_RGB32@@6B@ @805 NONAME ??_7P_YUV420P_RGB32_Registration@@6B@ @808 NONAME ??_7P_YUV420P_YUV411P@@6B@ @809 NONAME ??_7P_YUV420P_YUV411P_Registration@@6B@ @810 NONAME ??_7P_YUV422_YUV420P@@6B@ @811 NONAME ??_7P_YUV422_YUV420P_Registration@@6B@ @812 NONAME ??_7P_YUV422_YUV422@@6B@ @813 NONAME ??_7P_YUV422_YUV422_Registration@@6B@ @814 NONAME ??_7RouteEntry@PIPSocket@@6B@ @815 NONAME ??_7SelectList@PSocket@@6B@ @816 NONAME ??_7ServiceManager@@6B@ @4868 NONAME ??_7strstreambuf@std@@6B@ @4869 NONAME ??_7Table@PHashTable@@6B@ @817 NONAME ??_7Win95_ServiceManager@@6B@ @818 NONAME ??_7WinSNMPLoader@@6B@ @6410 NONAME ??_7Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @6960 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @6961 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6962 NONAME ??_7WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6963 NONAME ??_7WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6561 NONAME ??_7WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @6964 NONAME ??_7WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @6965 NONAME ??_7WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6966 NONAME ??_8ostrstream@std@@7B@ @4870 NONAME ??_8PChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4871 NONAME ??_8PChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4872 NONAME ??_8PConsoleChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4873 NONAME ??_8PConsoleChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4874 NONAME ??_8PDebugStream@@7B@ @823 NONAME ??_8PEthSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4875 NONAME ??_8PEthSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4876 NONAME ??_8PFile@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4877 NONAME ??_8PFile@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4878 NONAME ??_8PICMPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4879 NONAME ??_8PICMPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4880 NONAME ??_8PIndirectChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4881 NONAME ??_8PIndirectChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4882 NONAME ??_8PIPDatagramSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4883 NONAME ??_8PIPDatagramSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4884 NONAME ??_8PIPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4885 NONAME ??_8PIPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4886 NONAME ??_8PIPXSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4887 NONAME ??_8PIPXSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4888 NONAME ??_8PPipeChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4889 NONAME ??_8PPipeChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4890 NONAME ??_8PSerialChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4891 NONAME ??_8PSerialChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4892 NONAME ??_8PSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4893 NONAME ??_8PSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4894 NONAME ??_8PSoundChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4895 NONAME ??_8PSoundChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4896 NONAME ??_8PSoundChannelWin32@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4897 NONAME ??_8PSoundChannelWin32@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4898 NONAME ??_8PSPXSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4899 NONAME ??_8PSPXSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4900 NONAME ??_8PStringStream@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4901 NONAME ??_8PStringStream@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4902 NONAME ??_8PStructuredFile@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4903 NONAME ??_8PStructuredFile@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4904 NONAME ??_8PSystemLog@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4905 NONAME ??_8PSystemLog@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4906 NONAME ??_8PTCPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4907 NONAME ??_8PTCPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4908 NONAME ??_8PTextFile@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4909 NONAME ??_8PTextFile@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4910 NONAME ??_8PUDPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4911 NONAME ??_8PUDPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4912 NONAME ??_8PVideoChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4913 NONAME ??_8PVideoChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4914 NONAME ??_8PWinSock@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @4915 NONAME ??_8PWinSock@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @4916 NONAME ??_B?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@51 @6967 NONAME ??_B?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@51 @6968 NONAME ??_B?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@51 @6969 NONAME ??_B?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@51 @6970 NONAME ??_B?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@51 @16009 NONAME ??_Dostrstream@std@@QAEXXZ @4917 NONAME ??_DPChannel@@QAEXXZ @4918 NONAME ??_DPConsoleChannel@@QAEXXZ @4919 NONAME ??_DPDebugStream@@QAEXXZ @4920 NONAME ??_DPEthSocket@@QAEXXZ @4921 NONAME ??_DPFile@@QAEXXZ @864 NONAME ??_DPICMPSocket@@QAEXXZ @4922 NONAME ??_DPIndirectChannel@@QAEXXZ @4923 NONAME ??_DPIPDatagramSocket@@QAEXXZ @4924 NONAME ??_DPIPSocket@@QAEXXZ @4925 NONAME ??_DPIPXSocket@@QAEXXZ @4926 NONAME ??_DPPipeChannel@@QAEXXZ @4927 NONAME ??_DPSerialChannel@@QAEXXZ @4928 NONAME ??_DPSocket@@QAEXXZ @4929 NONAME ??_DPSoundChannel@@QAEXXZ @865 NONAME ??_DPSoundChannelWin32@@QAEXXZ @4930 NONAME ??_DPSPXSocket@@QAEXXZ @4931 NONAME ??_DPStringStream@@QAEXXZ @866 NONAME ??_DPStructuredFile@@QAEXXZ @4932 NONAME ??_DPSystemLog@@QAEXXZ @4933 NONAME ??_DPTCPSocket@@QAEXXZ @4934 NONAME ??_DPTextFile@@QAEXXZ @4935 NONAME ??_DPUDPSocket@@QAEXXZ @4936 NONAME ??_DPVideoChannel@@QAEXXZ @4937 NONAME ??_DPWinSock@@QAEXXZ @4938 NONAME ??_R0?AV?$basic_ios@DU?$char_traits@D@std@@@std@@@8 @4939 NONAME ??_R0?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@@8 @4940 NONAME ??_R0?AV?$basic_istream@DU?$char_traits@D@std@@@std@@@8 @4941 NONAME ??_R0?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@@8 @4942 NONAME ??_R0?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@@8 @4943 NONAME ??_R0?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@@8 @4944 NONAME ??_R0?AV?$PArray@VPString@@@@@8 @3050 NONAME ??_R0?AV?$PArray@VPWaveBuffer@@@@@8 @3051 NONAME ??_R0?AV?$PArray@VPWin32PacketBuffer@@@@@8 @3052 NONAME ??_R0?AV?$PBaseArray@D@@@8 @3053 NONAME ??_R0?AV?$PBaseArray@E@@@8 @3054 NONAME ??_R0?AV?$PBaseArray@F@@@8 @3055 NONAME ??_R0?AV?$PBaseArray@G@@@8 @3056 NONAME ??_R0?AV?$PBaseArray@H@@@8 @3057 NONAME ??_R0?AV?$PBaseArray@I@@@8 @3058 NONAME ??_R0?AV?$PBaseArray@J@@@8 @3059 NONAME ??_R0?AV?$PBaseArray@K@@@8 @3060 NONAME ??_R0?AV?$PBaseArray@PAVElement@PHashTable@@@@@8 @3061 NONAME ??_R0?AV?$PBaseArray@PAVPObject@@@@@8 @3062 NONAME ??_R0?AV?$PDevicePluginAdapter@VPSoundChannel@@@@@8 @6971 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoInputDevice@@@@@8 @6972 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@8 @6973 NONAME ??_R0?AV?$PDictionary@VPCaselessString@@VPIPCacheData@@@@@8 @3063 NONAME ??_R0?AV?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@@8 @3064 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@@8 @3065 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPPointer@@@@@8 @5647 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPThread@@@@@8 @3066 NONAME ??_R0?AV?$PDictionary@VPString@@VPDynaLink@@@@@8 @5568 NONAME ??_R0?AV?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6974 NONAME ??_R0?AV?$PFactory@VPPluginModuleManager@@VPString@@@@@8 @6562 NONAME ??_R0?AV?$PFactory@VPProcessStartup@@VPString@@@@@8 @6563 NONAME ??_R0?AV?$PFactory@VPSoundChannel@@VPString@@@@@8 @6975 NONAME ??_R0?AV?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @6976 NONAME ??_R0?AV?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @6977 NONAME ??_R0?AV?$PList@VInterfaceEntry@PIPSocket@@@@@8 @7347 NONAME ??_R0?AV?$PList@VPDynaLink@@@@@8 @3067 NONAME ??_R0?AV?$PList@VPNotifier@@@@@8 @3068 NONAME ??_R0?AV?$PList@VPPluginService@@@@@8 @3069 NONAME ??_R0?AV?$PList@VPSafeObject@@@@@8 @6753 NONAME ??_R0?AV?$PList@VPSocket@@@@@8 @3070 NONAME ??_R0?AV?$PList@VPString@@@@@8 @3071 NONAME ??_R0?AV?$PList@VPThread@@@@@8 @3072 NONAME ??_R0?AV?$PList@VPTimer@@@@@8 @3073 NONAME ??_R0?AV?$POrdinalDictionary@VPString@@@@@8 @3074 NONAME ??_R0?AV?$PScalarArray@F@@@8 @3075 NONAME ??_R0?AV?$PScalarArray@G@@@8 @3076 NONAME ??_R0?AV?$PScalarArray@H@@@8 @3077 NONAME ??_R0?AV?$PScalarArray@I@@@8 @3078 NONAME ??_R0?AV?$PScalarArray@J@@@8 @3079 NONAME ??_R0?AV?$PScalarArray@K@@@8 @3080 NONAME ??_R0?AV?$PSet@VPString@@@@@8 @3081 NONAME ??_R0?AV?$PSortedList@VPString@@@@@8 @3082 NONAME ??_R0?AV?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@@8 @16010 NONAME ??_R0?AV?$PStringDictionary@VPOrdinalKey@@@@@8 @3083 NONAME ??_R0?AV?$PStringDictionary@VPString@@@@@8 @3084 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@@8 @16011 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@@8 @16012 NONAME ??_R0?AV?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@@8 @16013 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6978 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6979 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6980 NONAME ??_R0?AV?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6564 NONAME ??_R0?AV?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6565 NONAME ??_R0?AV?$_Iosb@H@std@@@8 @4945 NONAME ??_R0?AVAddress@PIPSocket@@@8 @3085 NONAME ??_R0?AVbad_cast@@@8 @4946 NONAME ??_R0?AVBuffer@PDebugStream@@@8 @3086 NONAME ??_R0?AVBuffer@PStringStream@@@8 @3087 NONAME ??_R0?AVBuffer@PSystemLog@@@8 @3088 NONAME ??_R0?AVCMCDLL@PMail@@@8 @3089 NONAME ??_R0?AVDeleteObjectsTimeout_PNotifier@PSafeCollection@@@8 @3090 NONAME ??_R0?AVexception@@@8 @4947 NONAME ??_R0?AVHandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@@8 @16014 NONAME ??_R0?AVHandleDisplay_PNotifier@PVideoOutputDevice_Window@@@8 @16015 NONAME ??_R0?AVHouseKeepingThread@PProcess@@@8 @3091 NONAME ??_R0?AVInterfaceEntry@PIPSocket@@@8 @3092 NONAME ??_R0?AVios_base@std@@@8 @4948 NONAME ??_R0?AVlength_error@std@@@8 @5776 NONAME ??_R0?AVlogic_error@std@@@8 @5777 NONAME ??_R0?AVMAPIDLL@PMail@@@8 @3096 NONAME ??_R0?AVNest@PReadWriteMutex@@@8 @3097 NONAME ??_R0?AVNT_ServiceManager@@@8 @3098 NONAME ??_R0?AVostrstream@std@@@8 @4949 NONAME ??_R0?AVout_of_range@std@@@8 @5778 NONAME ??_R0?AVPAbstractArray@@@8 @3101 NONAME ??_R0?AVPAbstractDictionary@@@8 @3102 NONAME ??_R0?AVPAbstractList@@@8 @3103 NONAME ??_R0?AVPAbstractSet@@@8 @3104 NONAME ??_R0?AVPAbstractSortedList@@@8 @3105 NONAME ??_R0?AVPArgList@@@8 @3106 NONAME ??_R0?AVPArrayObjects@@@8 @3107 NONAME ??_R0?AVPBitArray@@@8 @3108 NONAME ??_R0?AVPBYTEArray@@@8 @3109 NONAME ??_R0?AVPCaselessString@@@8 @3110 NONAME ??_R0?AVPChannel@@@8 @3111 NONAME ??_R0?AVPChannelStreamBuffer@@@8 @3112 NONAME ??_R0?AVPCharArray@@@8 @3113 NONAME ??_R0?AVPCollection@@@8 @3114 NONAME ??_R0?AVPColourConverter@@@8 @3115 NONAME ??_R0?AVPColourConverterRegistration@@@8 @3116 NONAME ??_R0?AVPCondMutex@@@8 @3117 NONAME ??_R0?AVPConfig@@@8 @3118 NONAME ??_R0?AVPConfigArgs@@@8 @3119 NONAME ??_R0?AVPConsoleChannel@@@8 @3120 NONAME ??_R0?AVPContainer@@@8 @3121 NONAME ??_R0?AVPCriticalSection@@@8 @5544 NONAME ??_R0?AVPDebugStream@@@8 @3122 NONAME ??_R0?AVPDevicePluginAdapterBase@@@8 @6981 NONAME ??_R0?AVPDevicePluginServiceDescriptor@@@8 @16016 NONAME ??_R0?AVPDirectory@@@8 @3123 NONAME ??_R0?AVPDynaLink@@@8 @3124 NONAME ??_R0?AVPEthSocket@@@8 @3125 NONAME ??_R0?AVPFactoryBase@@@8 @6566 NONAME ??_R0?AVPFile@@@8 @3126 NONAME ??_R0?AVPFileInfo@@@8 @3127 NONAME ??_R0?AVPFilePath@@@8 @3128 NONAME ??_R0?AVPHashTable@@@8 @3129 NONAME ??_R0?AVPHostByAddr@@@8 @3130 NONAME ??_R0?AVPHostByName@@@8 @3131 NONAME ??_R0?AVPICMPDLL@@@8 @3132 NONAME ??_R0?AVPICMPSocket@@@8 @3133 NONAME ??_R0?AVPImageDLL@@@8 @3134 NONAME ??_R0?AVPIndirectChannel@@@8 @3135 NONAME ??_R0?AVPIntCondMutex@@@8 @3136 NONAME ??_R0?AVPIPCacheData@@@8 @3137 NONAME ??_R0?AVPIPCacheKey@@@8 @3138 NONAME ??_R0?AVPIPDatagramSocket@@@8 @3139 NONAME ??_R0?AVPIPSocket@@@8 @3140 NONAME ??_R0?AVPIPXSocket@@@8 @3141 NONAME ??_R0?AVPluginLoaderStartup@@@8 @6035 NONAME ??_R0?AVPMail@@@8 @3142 NONAME ??_R0?AVPNotifier@@@8 @3144 NONAME ??_R0?AVPNotifierFunction@@@8 @3145 NONAME ??_R0?AVPObject@@@8 @3146 NONAME ??_R0?AVPOrdinalKey@@@8 @3147 NONAME ??_R0?AVPOrdinalToString@@@8 @3148 NONAME ??_R0?AVPPipeChannel@@@8 @3149 NONAME ??_R0?AVPPluginManager@@@8 @3150 NONAME ??_R0?AVPPluginModuleManager@@@8 @5570 NONAME ??_R0?AVPPluginService@@@8 @3151 NONAME ??_R0?AVPPluginServiceDescriptor@@@8 @16017 NONAME ??_R0?AVPPointer@@@8 @5648 NONAME ??_R0?AVPProcess@@@8 @3152 NONAME ??_R0?AVPProcessStartup@@@8 @6036 NONAME ??_R0?AVPQoS@@@8 @3153 NONAME ??_R0?AVPRASDLL@@@8 @3154 NONAME ??_R0?AVPReadWriteMutex@@@8 @3155 NONAME ??_R0?AVPRegularExpression@@@8 @3156 NONAME ??_R0?AVPRemoteConnection@@@8 @3157 NONAME ??_R0?AVPSafeCollection@@@8 @3158 NONAME ??_R0?AVPSafeObject@@@8 @3159 NONAME ??_R0?AVPSafePtrBase@@@8 @3160 NONAME ??_R0?AVPSemaphore@@@8 @3161 NONAME ??_R0?AVPSerialChannel@@@8 @3162 NONAME ??_R0?AVPServiceProcess@@@8 @3163 NONAME ??_R0?AVPSimpleThread@@@8 @3164 NONAME ??_R0?AVPSmartNotifierFunction@@@8 @5649 NONAME ??_R0?AVPSmartObject@@@8 @3165 NONAME ??_R0?AVPSmartPointer@@@8 @3166 NONAME ??_R0?AVPSmartPtrInspector@@@8 @5650 NONAME ??_R0?AVPSocket@@@8 @3167 NONAME ??_R0?AVPSortedStringList@@@8 @3168 NONAME ??_R0?AVPSound@@@8 @3169 NONAME ??_R0?AVPSoundChannel@@@8 @3170 NONAME ??_R0?AVPSoundChannelWin32@@@8 @3171 NONAME ??_R0?AVPSPXSocket@@@8 @3172 NONAME ??_R0?AVPStandardColourConverter@@@8 @3173 NONAME ??_R0?AVPString@@@8 @3174 NONAME ??_R0?AVPStringArray@@@8 @3175 NONAME ??_R0?AVPStringList@@@8 @3176 NONAME ??_R0?AVPStringSet@@@8 @3177 NONAME ??_R0?AVPStringStream@@@8 @3178 NONAME ??_R0?AVPStringToOrdinal@@@8 @3179 NONAME ??_R0?AVPStringToString@@@8 @3180 NONAME ??_R0?AVPStructuredFile@@@8 @3181 NONAME ??_R0?AVPSync@@@8 @16261 NONAME ??_R0?AVPSyncPoint@@@8 @3182 NONAME ??_R0?AVPSynonymColour@@@8 @3183 NONAME ??_R0?AVPSynonymColourRegistration@@@8 @3184 NONAME ??_R0?AVPSystemLog@@@8 @3185 NONAME ??_R0?AVPTCPSocket@@@8 @3186 NONAME ??_R0?AVPTextFile@@@8 @3187 NONAME ??_R0?AVPThread@@@8 @3188 NONAME ??_R0?AVPTime@@@8 @3189 NONAME ??_R0?AVPTimedMutex@@@8 @16262 NONAME ??_R0?AVPTimeInterval@@@8 @3190 NONAME ??_R0?AVPTimer@@@8 @3191 NONAME ??_R0?AVPTimerList@@@8 @3192 NONAME ??_R0?AVPUDPSocket@@@8 @3193 NONAME ??_R0?AVPVideoChannel@@@8 @3194 NONAME ??_R0?AVPVideoDevice@@@8 @3195 NONAME ??_R0?AVPVideoDeviceBitmap@@@8 @3196 NONAME ??_R0?AVPVideoInputDevice@@@8 @3197 NONAME ??_R0?AVPVideoInputDevice_FakeVideo@@@8 @3198 NONAME ??_R0?AVPVideoInputDevice_VideoForWindows@@@8 @3199 NONAME ??_R0?AVPVideoOutputDevice@@@8 @3201 NONAME ??_R0?AVPVideoOutputDeviceRGB@@@8 @16018 NONAME ??_R0?AVPVideoOutputDevice_NULLOutput@@@8 @3202 NONAME ??_R0?AVPVideoOutputDevice_Window@@@8 @16019 NONAME ??_R0?AVPVideoOutputDevice_Window_PluginServiceDescriptor@@@8 @16020 NONAME ??_R0?AVPWaveBuffer@@@8 @3203 NONAME ??_R0?AVPWaveFormat@@@8 @3204 NONAME ??_R0?AVPWin32PacketBuffer@@@8 @3205 NONAME ??_R0?AVPWin32PacketDriver@@@8 @3206 NONAME ??_R0?AVPWin32PacketSYS@@@8 @3207 NONAME ??_R0?AVPWin32PacketVxD@@@8 @3208 NONAME ??_R0?AVPWin32SnmpLibrary@@@8 @3209 NONAME ??_R0?AVPWinQoS@@@8 @3210 NONAME ??_R0?AVPWinSock@@@8 @3211 NONAME ??_R0?AVP_BGR24_RGB24@@@8 @16021 NONAME ??_R0?AVP_BGR24_RGB24_Registration@@@8 @16022 NONAME ??_R0?AVP_BGR24_RGB32@@@8 @16023 NONAME ??_R0?AVP_BGR24_RGB32_Registration@@@8 @16024 NONAME ??_R0?AVP_BGR24_YUV420P@@@8 @3212 NONAME ??_R0?AVP_BGR24_YUV420P_Registration@@@8 @3213 NONAME ??_R0?AVP_BGR32_RGB24@@@8 @16025 NONAME ??_R0?AVP_BGR32_RGB24_Registration@@@8 @16026 NONAME ??_R0?AVP_BGR32_RGB32@@@8 @16027 NONAME ??_R0?AVP_BGR32_RGB32_Registration@@@8 @16028 NONAME ??_R0?AVP_BGR32_YUV420P@@@8 @3214 NONAME ??_R0?AVP_BGR32_YUV420P_Registration@@@8 @3215 NONAME ??_R0?AVP_Grey_YUV420P@@@8 @3218 NONAME ??_R0?AVP_Grey_YUV420P_Registration@@@8 @3219 NONAME ??_R0?AVP_RGB24_BGR24@@@8 @16029 NONAME ??_R0?AVP_RGB24_BGR24_Registration@@@8 @16030 NONAME ??_R0?AVP_RGB24_BGR32@@@8 @16031 NONAME ??_R0?AVP_RGB24_BGR32_Registration@@@8 @16032 NONAME ??_R0?AVP_RGB24_RGB32@@@8 @3222 NONAME ??_R0?AVP_RGB24_RGB32_Registration@@@8 @3223 NONAME ??_R0?AVP_RGB24_YUV420P@@@8 @3224 NONAME ??_R0?AVP_RGB24_YUV420P_Registration@@@8 @3225 NONAME ??_R0?AVP_RGB32_BGR24@@@8 @16033 NONAME ??_R0?AVP_RGB32_BGR24_Registration@@@8 @16034 NONAME ??_R0?AVP_RGB32_BGR32@@@8 @16035 NONAME ??_R0?AVP_RGB32_BGR32_Registration@@@8 @16036 NONAME ??_R0?AVP_RGB32_RGB24@@@8 @3228 NONAME ??_R0?AVP_RGB32_RGB24_Registration@@@8 @3229 NONAME ??_R0?AVP_RGB32_YUV420P@@@8 @3230 NONAME ??_R0?AVP_RGB32_YUV420P_Registration@@@8 @3231 NONAME ??_R0?AVP_SBGGR8_RGB24@@@8 @7293 NONAME ??_R0?AVP_SBGGR8_RGB24_Registration@@@8 @7294 NONAME ??_R0?AVP_SBGGR8_YUV420P@@@8 @7323 NONAME ??_R0?AVP_SBGGR8_YUV420P_Registration@@@8 @7324 NONAME ??_R0?AVP_UYV444_YUV420P@@@8 @3232 NONAME ??_R0?AVP_UYV444_YUV420P_Registration@@@8 @3233 NONAME ??_R0?AVP_UYVY422_YUV420P@@@8 @3234 NONAME ??_R0?AVP_UYVY422_YUV420P_Registration@@@8 @3235 NONAME ??_R0?AVP_YUV411P_YUV420P@@@8 @3236 NONAME ??_R0?AVP_YUV411P_YUV420P_Registration@@@8 @3237 NONAME ??_R0?AVP_YUV420P_BGR24@@@8 @3238 NONAME ??_R0?AVP_YUV420P_BGR24_Registration@@@8 @3241 NONAME ??_R0?AVP_YUV420P_BGR32@@@8 @3242 NONAME ??_R0?AVP_YUV420P_BGR32_Registration@@@8 @3243 NONAME ??_R0?AVP_YUV420P_RGB24@@@8 @3244 NONAME ??_R0?AVP_YUV420P_RGB24_Registration@@@8 @3247 NONAME ??_R0?AVP_YUV420P_RGB32@@@8 @3248 NONAME ??_R0?AVP_YUV420P_RGB32_Registration@@@8 @3251 NONAME ??_R0?AVP_YUV420P_YUV411P@@@8 @3252 NONAME ??_R0?AVP_YUV420P_YUV411P_Registration@@@8 @3253 NONAME ??_R0?AVP_YUV422_YUV420P@@@8 @3254 NONAME ??_R0?AVP_YUV422_YUV420P_Registration@@@8 @3255 NONAME ??_R0?AVP_YUV422_YUV422@@@8 @3256 NONAME ??_R0?AVP_YUV422_YUV422_Registration@@@8 @3257 NONAME ??_R0?AVRouteEntry@PIPSocket@@@8 @3258 NONAME ??_R0?AVSelectList@PSocket@@@8 @3259 NONAME ??_R0?AVServiceManager@@@8 @3260 NONAME ??_R0?AVstrstreambuf@std@@@8 @4950 NONAME ??_R0?AVTable@PHashTable@@@8 @3262 NONAME ??_R0?AVWin95_ServiceManager@@@8 @3263 NONAME ??_R0?AVWinSNMPLoader@@@8 @6411 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@@8 @6982 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@@8 @6983 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@@8 @6984 NONAME ??_R0?AVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6985 NONAME ??_R0?AVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6567 NONAME ??_R0?AVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@8 @6986 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @6987 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @6988 NONAME ??_R1333A@?$_Iosb@H@std@@8 @4951 NONAME ??_R13?0A@A@?$basic_iostream@DU?$char_traits@D@std@@@std@@8 @4952 NONAME ??_R13?0A@A@?$basic_istream@DU?$char_traits@D@std@@@std@@8 @4953 NONAME ??_R13A@3A@?$_Iosb@H@std@@8 @4954 NONAME ??_R13BE@3A@?$_Iosb@H@std@@8 @4955 NONAME ??_R1A@33A@ios_base@std@@8 @4956 NONAME ??_R1A@33BA@?$basic_ios@DU?$char_traits@D@std@@@std@@8 @4957 NONAME ??_R1A@?0A@8?$PBaseArray@E@@8 @3267 NONAME ??_R1A@?0A@8?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3268 NONAME ??_R1A@?0A@8?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3269 NONAME ??_R1A@?0A@8?$PList@VPTimer@@@@8 @3270 NONAME ??_R1A@?0A@8PAbstractArray@@8 @3271 NONAME ??_R1A@?0A@8PAbstractDictionary@@8 @3272 NONAME ??_R1A@?0A@8PAbstractList@@8 @3273 NONAME ??_R1A@?0A@8PBYTEArray@@8 @3274 NONAME ??_R1A@?0A@8PCollection@@8 @3275 NONAME ??_R1A@?0A@8PContainer@@8 @3276 NONAME ??_R1A@?0A@8PFactoryBase@@8 @6568 NONAME ??_R1A@?0A@8PHashTable@@8 @3277 NONAME ??_R1A@?0A@8PObject@@8 @3278 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6989 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6569 NONAME ??_R1A@?0A@A@?$basic_ofstream@DU?$char_traits@D@std@@@std@@8 @4958 NONAME ??_R1A@?0A@A@?$basic_ostream@DU?$char_traits@D@std@@@std@@8 @4959 NONAME ??_R1A@?0A@A@?$basic_streambuf@DU?$char_traits@D@std@@@std@@8 @4960 NONAME ??_R1A@?0A@A@?$PArray@VPString@@@@8 @3279 NONAME ??_R1A@?0A@A@?$PArray@VPWaveBuffer@@@@8 @3280 NONAME ??_R1A@?0A@A@?$PArray@VPWin32PacketBuffer@@@@8 @3281 NONAME ??_R1A@?0A@A@?$PBaseArray@D@@8 @3282 NONAME ??_R1A@?0A@A@?$PBaseArray@E@@8 @3283 NONAME ??_R1A@?0A@A@?$PBaseArray@F@@8 @3284 NONAME ??_R1A@?0A@A@?$PBaseArray@G@@8 @3285 NONAME ??_R1A@?0A@A@?$PBaseArray@H@@8 @3286 NONAME ??_R1A@?0A@A@?$PBaseArray@I@@8 @3287 NONAME ??_R1A@?0A@A@?$PBaseArray@J@@8 @3288 NONAME ??_R1A@?0A@A@?$PBaseArray@K@@8 @3289 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVElement@PHashTable@@@@8 @3290 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVPObject@@@@8 @3291 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPSoundChannel@@@@8 @6990 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @6991 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @6992 NONAME ??_R1A@?0A@A@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3292 NONAME ??_R1A@?0A@A@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3293 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @3294 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5651 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @3295 NONAME ??_R1A@?0A@A@?$PDictionary@VPString@@VPDynaLink@@@@8 @5571 NONAME ??_R1A@?0A@A@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6993 NONAME ??_R1A@?0A@A@?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6570 NONAME ??_R1A@?0A@A@?$PFactory@VPProcessStartup@@VPString@@@@8 @6571 NONAME ??_R1A@?0A@A@?$PFactory@VPSoundChannel@@VPString@@@@8 @6994 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @6995 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @6996 NONAME ??_R1A@?0A@A@?$PList@VInterfaceEntry@PIPSocket@@@@8 @7348 NONAME ??_R1A@?0A@A@?$PList@VPDynaLink@@@@8 @3296 NONAME ??_R1A@?0A@A@?$PList@VPNotifier@@@@8 @3297 NONAME ??_R1A@?0A@A@?$PList@VPPluginService@@@@8 @3298 NONAME ??_R1A@?0A@A@?$PList@VPSafeObject@@@@8 @6754 NONAME ??_R1A@?0A@A@?$PList@VPSocket@@@@8 @3299 NONAME ??_R1A@?0A@A@?$PList@VPString@@@@8 @3300 NONAME ??_R1A@?0A@A@?$PList@VPThread@@@@8 @3301 NONAME ??_R1A@?0A@A@?$PList@VPTimer@@@@8 @3302 NONAME ??_R1A@?0A@A@?$POrdinalDictionary@VPString@@@@8 @3303 NONAME ??_R1A@?0A@A@?$PScalarArray@F@@8 @3304 NONAME ??_R1A@?0A@A@?$PScalarArray@G@@8 @3305 NONAME ??_R1A@?0A@A@?$PScalarArray@H@@8 @3306 NONAME ??_R1A@?0A@A@?$PScalarArray@I@@8 @3307 NONAME ??_R1A@?0A@A@?$PScalarArray@J@@8 @3308 NONAME ??_R1A@?0A@A@?$PScalarArray@K@@8 @3309 NONAME ??_R1A@?0A@A@?$PSet@VPString@@@@8 @3310 NONAME ??_R1A@?0A@A@?$PSortedList@VPString@@@@8 @3311 NONAME ??_R1A@?0A@A@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @16037 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPOrdinalKey@@@@8 @3312 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPString@@@@8 @3313 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @16038 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @16039 NONAME ??_R1A@?0A@A@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @16040 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6997 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6998 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6999 NONAME ??_R1A@?0A@A@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6572 NONAME ??_R1A@?0A@A@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6573 NONAME ??_R1A@?0A@A@Address@PIPSocket@@8 @3314 NONAME ??_R1A@?0A@A@Buffer@PDebugStream@@8 @3315 NONAME ??_R1A@?0A@A@Buffer@PStringStream@@8 @3316 NONAME ??_R1A@?0A@A@Buffer@PSystemLog@@8 @3317 NONAME ??_R1A@?0A@A@CMCDLL@PMail@@8 @3318 NONAME ??_R1A@?0A@A@DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @3319 NONAME ??_R1A@?0A@A@exception@@8 @5779 NONAME ??_R1A@?0A@A@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @16041 NONAME ??_R1A@?0A@A@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @16042 NONAME ??_R1A@?0A@A@HouseKeepingThread@PProcess@@8 @3320 NONAME ??_R1A@?0A@A@InterfaceEntry@PIPSocket@@8 @3321 NONAME ??_R1A@?0A@A@length_error@std@@8 @5780 NONAME ??_R1A@?0A@A@logic_error@std@@8 @5781 NONAME ??_R1A@?0A@A@MAPIDLL@PMail@@8 @3322 NONAME ??_R1A@?0A@A@Nest@PReadWriteMutex@@8 @3323 NONAME ??_R1A@?0A@A@NT_ServiceManager@@8 @3324 NONAME ??_R1A@?0A@A@ostrstream@std@@8 @4961 NONAME ??_R1A@?0A@A@out_of_range@std@@8 @5782 NONAME ??_R1A@?0A@A@PAbstractArray@@8 @3327 NONAME ??_R1A@?0A@A@PAbstractDictionary@@8 @3328 NONAME ??_R1A@?0A@A@PAbstractList@@8 @3329 NONAME ??_R1A@?0A@A@PAbstractSet@@8 @3330 NONAME ??_R1A@?0A@A@PAbstractSortedList@@8 @3331 NONAME ??_R1A@?0A@A@PArgList@@8 @3332 NONAME ??_R1A@?0A@A@PArrayObjects@@8 @3333 NONAME ??_R1A@?0A@A@PBitArray@@8 @3334 NONAME ??_R1A@?0A@A@PBYTEArray@@8 @3335 NONAME ??_R1A@?0A@A@PCaselessString@@8 @3336 NONAME ??_R1A@?0A@A@PChannel@@8 @3337 NONAME ??_R1A@?0A@A@PChannelStreamBuffer@@8 @3338 NONAME ??_R1A@?0A@A@PCharArray@@8 @3339 NONAME ??_R1A@?0A@A@PCollection@@8 @3340 NONAME ??_R1A@?0A@A@PColourConverter@@8 @3341 NONAME ??_R1A@?0A@A@PColourConverterRegistration@@8 @3342 NONAME ??_R1A@?0A@A@PCondMutex@@8 @3343 NONAME ??_R1A@?0A@A@PConfig@@8 @3344 NONAME ??_R1A@?0A@A@PConfigArgs@@8 @3345 NONAME ??_R1A@?0A@A@PConsoleChannel@@8 @3346 NONAME ??_R1A@?0A@A@PContainer@@8 @3347 NONAME ??_R1A@?0A@A@PCriticalSection@@8 @5545 NONAME ??_R1A@?0A@A@PDebugStream@@8 @3348 NONAME ??_R1A@?0A@A@PDevicePluginAdapterBase@@8 @7000 NONAME ??_R1A@?0A@A@PDevicePluginServiceDescriptor@@8 @16043 NONAME ??_R1A@?0A@A@PDirectory@@8 @3349 NONAME ??_R1A@?0A@A@PDynaLink@@8 @3350 NONAME ??_R1A@?0A@A@PEthSocket@@8 @3351 NONAME ??_R1A@?0A@A@PFactoryBase@@8 @6574 NONAME ??_R1A@?0A@A@PFile@@8 @3352 NONAME ??_R1A@?0A@A@PFileInfo@@8 @3353 NONAME ??_R1A@?0A@A@PFilePath@@8 @3354 NONAME ??_R1A@?0A@A@PHashTable@@8 @3355 NONAME ??_R1A@?0A@A@PHostByAddr@@8 @3356 NONAME ??_R1A@?0A@A@PHostByName@@8 @3357 NONAME ??_R1A@?0A@A@PICMPDLL@@8 @3358 NONAME ??_R1A@?0A@A@PICMPSocket@@8 @3359 NONAME ??_R1A@?0A@A@PImageDLL@@8 @3360 NONAME ??_R1A@?0A@A@PIndirectChannel@@8 @3361 NONAME ??_R1A@?0A@A@PIntCondMutex@@8 @3362 NONAME ??_R1A@?0A@A@PIPCacheData@@8 @3363 NONAME ??_R1A@?0A@A@PIPCacheKey@@8 @3364 NONAME ??_R1A@?0A@A@PIPDatagramSocket@@8 @3365 NONAME ??_R1A@?0A@A@PIPSocket@@8 @3366 NONAME ??_R1A@?0A@A@PIPXSocket@@8 @3367 NONAME ??_R1A@?0A@A@PluginLoaderStartup@@8 @6037 NONAME ??_R1A@?0A@A@PMail@@8 @3368 NONAME ??_R1A@?0A@A@PNotifier@@8 @3370 NONAME ??_R1A@?0A@A@PNotifierFunction@@8 @3371 NONAME ??_R1A@?0A@A@PObject@@8 @3372 NONAME ??_R1A@?0A@A@POrdinalKey@@8 @3373 NONAME ??_R1A@?0A@A@POrdinalToString@@8 @3374 NONAME ??_R1A@?0A@A@PPipeChannel@@8 @3375 NONAME ??_R1A@?0A@A@PPluginManager@@8 @3376 NONAME ??_R1A@?0A@A@PPluginModuleManager@@8 @5573 NONAME ??_R1A@?0A@A@PPluginService@@8 @3377 NONAME ??_R1A@?0A@A@PPluginServiceDescriptor@@8 @16044 NONAME ??_R1A@?0A@A@PPointer@@8 @5652 NONAME ??_R1A@?0A@A@PProcess@@8 @3378 NONAME ??_R1A@?0A@A@PProcessStartup@@8 @6038 NONAME ??_R1A@?0A@A@PQoS@@8 @3379 NONAME ??_R1A@?0A@A@PRASDLL@@8 @3380 NONAME ??_R1A@?0A@A@PReadWriteMutex@@8 @3381 NONAME ??_R1A@?0A@A@PRegularExpression@@8 @3382 NONAME ??_R1A@?0A@A@PRemoteConnection@@8 @3383 NONAME ??_R1A@?0A@A@PSafeCollection@@8 @3384 NONAME ??_R1A@?0A@A@PSafeObject@@8 @3385 NONAME ??_R1A@?0A@A@PSafePtrBase@@8 @3386 NONAME ??_R1A@?0A@A@PSemaphore@@8 @3387 NONAME ??_R1A@?0A@A@PSerialChannel@@8 @3388 NONAME ??_R1A@?0A@A@PServiceProcess@@8 @3389 NONAME ??_R1A@?0A@A@PSimpleThread@@8 @3390 NONAME ??_R1A@?0A@A@PSmartObject@@8 @3391 NONAME ??_R1A@?0A@A@PSmartPointer@@8 @3392 NONAME ??_R1A@?0A@A@PSmartPtrInspector@@8 @5653 NONAME ??_R1A@?0A@A@PSocket@@8 @3393 NONAME ??_R1A@?0A@A@PSortedStringList@@8 @3394 NONAME ??_R1A@?0A@A@PSound@@8 @3395 NONAME ??_R1A@?0A@A@PSoundChannel@@8 @3396 NONAME ??_R1A@?0A@A@PSoundChannelWin32@@8 @3397 NONAME ??_R1A@?0A@A@PSPXSocket@@8 @3398 NONAME ??_R1A@?0A@A@PStandardColourConverter@@8 @3399 NONAME ??_R1A@?0A@A@PString@@8 @3400 NONAME ??_R1A@?0A@A@PStringArray@@8 @3401 NONAME ??_R1A@?0A@A@PStringList@@8 @3402 NONAME ??_R1A@?0A@A@PStringSet@@8 @3403 NONAME ??_R1A@?0A@A@PStringStream@@8 @3404 NONAME ??_R1A@?0A@A@PStringToOrdinal@@8 @3405 NONAME ??_R1A@?0A@A@PStringToString@@8 @3406 NONAME ??_R1A@?0A@A@PStructuredFile@@8 @3407 NONAME ??_R1A@?0A@A@PSync@@8 @16263 NONAME ??_R1A@?0A@A@PSyncPoint@@8 @3408 NONAME ??_R1A@?0A@A@PSynonymColour@@8 @3409 NONAME ??_R1A@?0A@A@PSynonymColourRegistration@@8 @3410 NONAME ??_R1A@?0A@A@PSystemLog@@8 @3411 NONAME ??_R1A@?0A@A@PTCPSocket@@8 @3412 NONAME ??_R1A@?0A@A@PTextFile@@8 @3413 NONAME ??_R1A@?0A@A@PThread@@8 @3414 NONAME ??_R1A@?0A@A@PTime@@8 @3415 NONAME ??_R1A@?0A@A@PTimedMutex@@8 @16264 NONAME ??_R1A@?0A@A@PTimeInterval@@8 @3416 NONAME ??_R1A@?0A@A@PTimer@@8 @3417 NONAME ??_R1A@?0A@A@PTimerList@@8 @3418 NONAME ??_R1A@?0A@A@PUDPSocket@@8 @3419 NONAME ??_R1A@?0A@A@PVideoChannel@@8 @3420 NONAME ??_R1A@?0A@A@PVideoDevice@@8 @3421 NONAME ??_R1A@?0A@A@PVideoDeviceBitmap@@8 @3422 NONAME ??_R1A@?0A@A@PVideoInputDevice@@8 @3423 NONAME ??_R1A@?0A@A@PVideoInputDevice_FakeVideo@@8 @3424 NONAME ??_R1A@?0A@A@PVideoInputDevice_VideoForWindows@@8 @3425 NONAME ??_R1A@?0A@A@PVideoOutputDevice@@8 @3427 NONAME ??_R1A@?0A@A@PVideoOutputDeviceRGB@@8 @16045 NONAME ??_R1A@?0A@A@PVideoOutputDevice_NULLOutput@@8 @3428 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window@@8 @16046 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @16047 NONAME ??_R1A@?0A@A@PWaveBuffer@@8 @3429 NONAME ??_R1A@?0A@A@PWaveFormat@@8 @3430 NONAME ??_R1A@?0A@A@PWin32PacketBuffer@@8 @3431 NONAME ??_R1A@?0A@A@PWin32PacketDriver@@8 @3432 NONAME ??_R1A@?0A@A@PWin32PacketSYS@@8 @3433 NONAME ??_R1A@?0A@A@PWin32PacketVxD@@8 @3434 NONAME ??_R1A@?0A@A@PWin32SnmpLibrary@@8 @3435 NONAME ??_R1A@?0A@A@PWinQoS@@8 @3436 NONAME ??_R1A@?0A@A@PWinSock@@8 @3437 NONAME ??_R1A@?0A@A@P_BGR24_RGB24@@8 @16048 NONAME ??_R1A@?0A@A@P_BGR24_RGB24_Registration@@8 @16049 NONAME ??_R1A@?0A@A@P_BGR24_RGB32@@8 @16050 NONAME ??_R1A@?0A@A@P_BGR24_RGB32_Registration@@8 @16051 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P@@8 @3438 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P_Registration@@8 @3439 NONAME ??_R1A@?0A@A@P_BGR32_RGB24@@8 @16052 NONAME ??_R1A@?0A@A@P_BGR32_RGB24_Registration@@8 @16053 NONAME ??_R1A@?0A@A@P_BGR32_RGB32@@8 @16054 NONAME ??_R1A@?0A@A@P_BGR32_RGB32_Registration@@8 @16055 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P@@8 @3440 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P_Registration@@8 @3441 NONAME ??_R1A@?0A@A@P_Grey_YUV420P@@8 @3444 NONAME ??_R1A@?0A@A@P_Grey_YUV420P_Registration@@8 @3445 NONAME ??_R1A@?0A@A@P_RGB24_BGR24@@8 @16056 NONAME ??_R1A@?0A@A@P_RGB24_BGR24_Registration@@8 @16057 NONAME ??_R1A@?0A@A@P_RGB24_BGR32@@8 @16058 NONAME ??_R1A@?0A@A@P_RGB24_BGR32_Registration@@8 @16059 NONAME ??_R1A@?0A@A@P_RGB24_RGB32@@8 @3448 NONAME ??_R1A@?0A@A@P_RGB24_RGB32_Registration@@8 @3449 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P@@8 @3450 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P_Registration@@8 @3451 NONAME ??_R1A@?0A@A@P_RGB32_BGR24@@8 @16060 NONAME ??_R1A@?0A@A@P_RGB32_BGR24_Registration@@8 @16061 NONAME ??_R1A@?0A@A@P_RGB32_BGR32@@8 @16062 NONAME ??_R1A@?0A@A@P_RGB32_BGR32_Registration@@8 @16063 NONAME ??_R1A@?0A@A@P_RGB32_RGB24@@8 @3454 NONAME ??_R1A@?0A@A@P_RGB32_RGB24_Registration@@8 @3455 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P@@8 @3456 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P_Registration@@8 @3457 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24@@8 @7295 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24_Registration@@8 @7296 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P@@8 @7325 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P_Registration@@8 @7326 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P@@8 @3458 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P_Registration@@8 @3459 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P@@8 @3460 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P_Registration@@8 @3461 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P@@8 @3462 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P_Registration@@8 @3463 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24@@8 @3464 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24_Registration@@8 @3467 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32@@8 @3468 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32_Registration@@8 @3469 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24@@8 @3470 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24_Registration@@8 @3473 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32@@8 @3474 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32_Registration@@8 @3477 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P@@8 @3478 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P_Registration@@8 @3479 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P@@8 @3480 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P_Registration@@8 @3481 NONAME ??_R1A@?0A@A@P_YUV422_YUV422@@8 @3482 NONAME ??_R1A@?0A@A@P_YUV422_YUV422_Registration@@8 @3483 NONAME ??_R1A@?0A@A@RouteEntry@PIPSocket@@8 @3484 NONAME ??_R1A@?0A@A@SelectList@PSocket@@8 @3485 NONAME ??_R1A@?0A@A@ServiceManager@@8 @3486 NONAME ??_R1A@?0A@A@strstreambuf@std@@8 @4962 NONAME ??_R1A@?0A@A@Table@PHashTable@@8 @3488 NONAME ??_R1A@?0A@A@Win95_ServiceManager@@8 @3489 NONAME ??_R1A@?0A@A@WinSNMPLoader@@8 @6412 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7001 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7002 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7003 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7004 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6575 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7005 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7006 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7007 NONAME ??_R1A@A@3A@ios_base@std@@8 @4963 NONAME ??_R1A@A@3BA@?$basic_ios@DU?$char_traits@D@std@@@std@@8 @4964 NONAME ??_R1A@BE@3A@ios_base@std@@8 @4965 NONAME ??_R1A@BE@3BA@?$basic_ios@DU?$char_traits@D@std@@@std@@8 @4966 NONAME ??_R1BE@?0A@A@?$basic_iostream@DU?$char_traits@D@std@@@std@@8 @4967 NONAME ??_R1BE@?0A@A@?$basic_istream@DU?$char_traits@D@std@@@std@@8 @4968 NONAME ??_R1BM@?0A@A@?$basic_ostream@DU?$char_traits@D@std@@@std@@8 @4969 NONAME ??_R1M@?0A@A@?$basic_ostream@DU?$char_traits@D@std@@@std@@8 @4970 NONAME ??_R2?$basic_ofstream@DU?$char_traits@D@std@@@std@@8 @4971 NONAME ??_R2?$PArray@VPString@@@@8 @3496 NONAME ??_R2?$PArray@VPWaveBuffer@@@@8 @3497 NONAME ??_R2?$PArray@VPWin32PacketBuffer@@@@8 @3498 NONAME ??_R2?$PBaseArray@D@@8 @3499 NONAME ??_R2?$PBaseArray@E@@8 @3500 NONAME ??_R2?$PBaseArray@F@@8 @3501 NONAME ??_R2?$PBaseArray@G@@8 @3502 NONAME ??_R2?$PBaseArray@H@@8 @3503 NONAME ??_R2?$PBaseArray@I@@8 @3504 NONAME ??_R2?$PBaseArray@J@@8 @3505 NONAME ??_R2?$PBaseArray@K@@8 @3506 NONAME ??_R2?$PBaseArray@PAVElement@PHashTable@@@@8 @4972 NONAME ??_R2?$PBaseArray@PAVPObject@@@@8 @3507 NONAME ??_R2?$PDevicePluginAdapter@VPSoundChannel@@@@8 @7008 NONAME ??_R2?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @7009 NONAME ??_R2?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @7010 NONAME ??_R2?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3508 NONAME ??_R2?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3509 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @3510 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5654 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @3511 NONAME ??_R2?$PDictionary@VPString@@VPDynaLink@@@@8 @5574 NONAME ??_R2?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7011 NONAME ??_R2?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6576 NONAME ??_R2?$PFactory@VPProcessStartup@@VPString@@@@8 @6577 NONAME ??_R2?$PFactory@VPSoundChannel@@VPString@@@@8 @7012 NONAME ??_R2?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7013 NONAME ??_R2?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7014 NONAME ??_R2?$PList@VInterfaceEntry@PIPSocket@@@@8 @7349 NONAME ??_R2?$PList@VPDynaLink@@@@8 @3512 NONAME ??_R2?$PList@VPNotifier@@@@8 @3513 NONAME ??_R2?$PList@VPPluginService@@@@8 @3514 NONAME ??_R2?$PList@VPSafeObject@@@@8 @6755 NONAME ??_R2?$PList@VPSocket@@@@8 @3515 NONAME ??_R2?$PList@VPString@@@@8 @3516 NONAME ??_R2?$PList@VPThread@@@@8 @3517 NONAME ??_R2?$PList@VPTimer@@@@8 @3518 NONAME ??_R2?$POrdinalDictionary@VPString@@@@8 @4973 NONAME ??_R2?$PScalarArray@F@@8 @3519 NONAME ??_R2?$PScalarArray@G@@8 @3520 NONAME ??_R2?$PScalarArray@H@@8 @3521 NONAME ??_R2?$PScalarArray@I@@8 @3522 NONAME ??_R2?$PScalarArray@J@@8 @3523 NONAME ??_R2?$PScalarArray@K@@8 @3524 NONAME ??_R2?$PSet@VPString@@@@8 @3525 NONAME ??_R2?$PSortedList@VPString@@@@8 @4974 NONAME ??_R2?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @16064 NONAME ??_R2?$PStringDictionary@VPOrdinalKey@@@@8 @4975 NONAME ??_R2?$PStringDictionary@VPString@@@@8 @3526 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @16065 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @16066 NONAME ??_R2?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @16067 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7015 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7016 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7017 NONAME ??_R2?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6578 NONAME ??_R2?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6579 NONAME ??_R2Address@PIPSocket@@8 @3527 NONAME ??_R2Buffer@PDebugStream@@8 @3528 NONAME ??_R2Buffer@PStringStream@@8 @3529 NONAME ??_R2Buffer@PSystemLog@@8 @3530 NONAME ??_R2CMCDLL@PMail@@8 @3531 NONAME ??_R2DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @3532 NONAME ??_R2HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @16068 NONAME ??_R2HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @16069 NONAME ??_R2HouseKeepingThread@PProcess@@8 @3533 NONAME ??_R2InterfaceEntry@PIPSocket@@8 @3534 NONAME ??_R2length_error@std@@8 @5783 NONAME ??_R2logic_error@std@@8 @5784 NONAME ??_R2MAPIDLL@PMail@@8 @3535 NONAME ??_R2Nest@PReadWriteMutex@@8 @3536 NONAME ??_R2NT_ServiceManager@@8 @3537 NONAME ??_R2ostrstream@std@@8 @4976 NONAME ??_R2out_of_range@std@@8 @5785 NONAME ??_R2PAbstractArray@@8 @3539 NONAME ??_R2PAbstractDictionary@@8 @3540 NONAME ??_R2PAbstractList@@8 @3541 NONAME ??_R2PAbstractSet@@8 @3542 NONAME ??_R2PAbstractSortedList@@8 @3543 NONAME ??_R2PArgList@@8 @3544 NONAME ??_R2PArrayObjects@@8 @3545 NONAME ??_R2PBitArray@@8 @3546 NONAME ??_R2PBYTEArray@@8 @3547 NONAME ??_R2PCaselessString@@8 @3548 NONAME ??_R2PChannel@@8 @3549 NONAME ??_R2PChannelStreamBuffer@@8 @3550 NONAME ??_R2PCharArray@@8 @3551 NONAME ??_R2PCollection@@8 @3552 NONAME ??_R2PColourConverter@@8 @3553 NONAME ??_R2PColourConverterRegistration@@8 @3554 NONAME ??_R2PCondMutex@@8 @4977 NONAME ??_R2PConfig@@8 @3555 NONAME ??_R2PConfigArgs@@8 @3556 NONAME ??_R2PConsoleChannel@@8 @3557 NONAME ??_R2PContainer@@8 @3558 NONAME ??_R2PCriticalSection@@8 @5546 NONAME ??_R2PDebugStream@@8 @3559 NONAME ??_R2PDevicePluginAdapterBase@@8 @7018 NONAME ??_R2PDevicePluginServiceDescriptor@@8 @16070 NONAME ??_R2PDirectory@@8 @3560 NONAME ??_R2PDynaLink@@8 @3561 NONAME ??_R2PEthSocket@@8 @3562 NONAME ??_R2PFactoryBase@@8 @6580 NONAME ??_R2PFile@@8 @3563 NONAME ??_R2PFileInfo@@8 @3564 NONAME ??_R2PFilePath@@8 @3565 NONAME ??_R2PHashTable@@8 @3566 NONAME ??_R2PHostByAddr@@8 @3567 NONAME ??_R2PHostByName@@8 @3568 NONAME ??_R2PICMPDLL@@8 @3569 NONAME ??_R2PICMPSocket@@8 @3570 NONAME ??_R2PImageDLL@@8 @3571 NONAME ??_R2PIndirectChannel@@8 @3572 NONAME ??_R2PIntCondMutex@@8 @3573 NONAME ??_R2PIPCacheData@@8 @3574 NONAME ??_R2PIPCacheKey@@8 @3575 NONAME ??_R2PIPDatagramSocket@@8 @3576 NONAME ??_R2PIPSocket@@8 @3577 NONAME ??_R2PIPXSocket@@8 @3578 NONAME ??_R2PluginLoaderStartup@@8 @6039 NONAME ??_R2PMail@@8 @3579 NONAME ??_R2PNotifier@@8 @3581 NONAME ??_R2PNotifierFunction@@8 @3582 NONAME ??_R2PObject@@8 @3583 NONAME ??_R2POrdinalKey@@8 @3584 NONAME ??_R2POrdinalToString@@8 @3585 NONAME ??_R2PPipeChannel@@8 @3586 NONAME ??_R2PPluginManager@@8 @3587 NONAME ??_R2PPluginModuleManager@@8 @5576 NONAME ??_R2PPluginService@@8 @3588 NONAME ??_R2PPluginServiceDescriptor@@8 @16071 NONAME ??_R2PPointer@@8 @5655 NONAME ??_R2PProcess@@8 @3589 NONAME ??_R2PProcessStartup@@8 @6040 NONAME ??_R2PQoS@@8 @3590 NONAME ??_R2PRASDLL@@8 @3591 NONAME ??_R2PReadWriteMutex@@8 @3592 NONAME ??_R2PRegularExpression@@8 @3593 NONAME ??_R2PRemoteConnection@@8 @3594 NONAME ??_R2PSafeCollection@@8 @3595 NONAME ??_R2PSafeObject@@8 @3596 NONAME ??_R2PSafePtrBase@@8 @3597 NONAME ??_R2PSemaphore@@8 @3598 NONAME ??_R2PSerialChannel@@8 @3599 NONAME ??_R2PServiceProcess@@8 @3600 NONAME ??_R2PSimpleThread@@8 @3601 NONAME ??_R2PSmartObject@@8 @4978 NONAME ??_R2PSmartPointer@@8 @3602 NONAME ??_R2PSmartPtrInspector@@8 @5656 NONAME ??_R2PSocket@@8 @3603 NONAME ??_R2PSortedStringList@@8 @3604 NONAME ??_R2PSound@@8 @3605 NONAME ??_R2PSoundChannel@@8 @3606 NONAME ??_R2PSoundChannelWin32@@8 @3607 NONAME ??_R2PSPXSocket@@8 @3608 NONAME ??_R2PStandardColourConverter@@8 @4979 NONAME ??_R2PString@@8 @3609 NONAME ??_R2PStringArray@@8 @3610 NONAME ??_R2PStringList@@8 @3611 NONAME ??_R2PStringSet@@8 @3612 NONAME ??_R2PStringStream@@8 @3613 NONAME ??_R2PStringToOrdinal@@8 @3614 NONAME ??_R2PStringToString@@8 @3615 NONAME ??_R2PStructuredFile@@8 @3616 NONAME ??_R2PSync@@8 @16265 NONAME ??_R2PSyncPoint@@8 @3617 NONAME ??_R2PSynonymColour@@8 @3618 NONAME ??_R2PSynonymColourRegistration@@8 @3619 NONAME ??_R2PSystemLog@@8 @3620 NONAME ??_R2PTCPSocket@@8 @3621 NONAME ??_R2PTextFile@@8 @3622 NONAME ??_R2PThread@@8 @3623 NONAME ??_R2PTime@@8 @3624 NONAME ??_R2PTimedMutex@@8 @16266 NONAME ??_R2PTimeInterval@@8 @3625 NONAME ??_R2PTimer@@8 @3626 NONAME ??_R2PTimerList@@8 @3627 NONAME ??_R2PUDPSocket@@8 @3628 NONAME ??_R2PVideoChannel@@8 @3629 NONAME ??_R2PVideoDevice@@8 @3630 NONAME ??_R2PVideoDeviceBitmap@@8 @3631 NONAME ??_R2PVideoInputDevice@@8 @3632 NONAME ??_R2PVideoInputDevice_FakeVideo@@8 @3633 NONAME ??_R2PVideoInputDevice_VideoForWindows@@8 @3634 NONAME ??_R2PVideoOutputDevice@@8 @3636 NONAME ??_R2PVideoOutputDeviceRGB@@8 @16072 NONAME ??_R2PVideoOutputDevice_NULLOutput@@8 @3637 NONAME ??_R2PVideoOutputDevice_Window@@8 @16073 NONAME ??_R2PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @16074 NONAME ??_R2PWaveBuffer@@8 @3638 NONAME ??_R2PWaveFormat@@8 @3639 NONAME ??_R2PWin32PacketBuffer@@8 @3640 NONAME ??_R2PWin32PacketDriver@@8 @3641 NONAME ??_R2PWin32PacketSYS@@8 @3642 NONAME ??_R2PWin32PacketVxD@@8 @3643 NONAME ??_R2PWin32SnmpLibrary@@8 @3644 NONAME ??_R2PWinQoS@@8 @3645 NONAME ??_R2PWinSock@@8 @3646 NONAME ??_R2P_BGR24_RGB24@@8 @16075 NONAME ??_R2P_BGR24_RGB24_Registration@@8 @16076 NONAME ??_R2P_BGR24_RGB32@@8 @16077 NONAME ??_R2P_BGR24_RGB32_Registration@@8 @16078 NONAME ??_R2P_BGR24_YUV420P@@8 @3647 NONAME ??_R2P_BGR24_YUV420P_Registration@@8 @3648 NONAME ??_R2P_BGR32_RGB24@@8 @16079 NONAME ??_R2P_BGR32_RGB24_Registration@@8 @16080 NONAME ??_R2P_BGR32_RGB32@@8 @16081 NONAME ??_R2P_BGR32_RGB32_Registration@@8 @16082 NONAME ??_R2P_BGR32_YUV420P@@8 @3649 NONAME ??_R2P_BGR32_YUV420P_Registration@@8 @3650 NONAME ??_R2P_Grey_YUV420P@@8 @3653 NONAME ??_R2P_Grey_YUV420P_Registration@@8 @3654 NONAME ??_R2P_RGB24_BGR24@@8 @16083 NONAME ??_R2P_RGB24_BGR24_Registration@@8 @16084 NONAME ??_R2P_RGB24_BGR32@@8 @16085 NONAME ??_R2P_RGB24_BGR32_Registration@@8 @16086 NONAME ??_R2P_RGB24_RGB32@@8 @3657 NONAME ??_R2P_RGB24_RGB32_Registration@@8 @3658 NONAME ??_R2P_RGB24_YUV420P@@8 @3659 NONAME ??_R2P_RGB24_YUV420P_Registration@@8 @3660 NONAME ??_R2P_RGB32_BGR24@@8 @16087 NONAME ??_R2P_RGB32_BGR24_Registration@@8 @16088 NONAME ??_R2P_RGB32_BGR32@@8 @16089 NONAME ??_R2P_RGB32_BGR32_Registration@@8 @16090 NONAME ??_R2P_RGB32_RGB24@@8 @3663 NONAME ??_R2P_RGB32_RGB24_Registration@@8 @3664 NONAME ??_R2P_RGB32_YUV420P@@8 @3665 NONAME ??_R2P_RGB32_YUV420P_Registration@@8 @3666 NONAME ??_R2P_SBGGR8_RGB24@@8 @7297 NONAME ??_R2P_SBGGR8_RGB24_Registration@@8 @7298 NONAME ??_R2P_SBGGR8_YUV420P@@8 @7327 NONAME ??_R2P_SBGGR8_YUV420P_Registration@@8 @7328 NONAME ??_R2P_UYV444_YUV420P@@8 @3667 NONAME ??_R2P_UYV444_YUV420P_Registration@@8 @3668 NONAME ??_R2P_UYVY422_YUV420P@@8 @3669 NONAME ??_R2P_UYVY422_YUV420P_Registration@@8 @3670 NONAME ??_R2P_YUV411P_YUV420P@@8 @3671 NONAME ??_R2P_YUV411P_YUV420P_Registration@@8 @3672 NONAME ??_R2P_YUV420P_BGR24@@8 @3673 NONAME ??_R2P_YUV420P_BGR24_Registration@@8 @3676 NONAME ??_R2P_YUV420P_BGR32@@8 @3677 NONAME ??_R2P_YUV420P_BGR32_Registration@@8 @3678 NONAME ??_R2P_YUV420P_RGB24@@8 @3679 NONAME ??_R2P_YUV420P_RGB24_Registration@@8 @3682 NONAME ??_R2P_YUV420P_RGB32@@8 @3683 NONAME ??_R2P_YUV420P_RGB32_Registration@@8 @3686 NONAME ??_R2P_YUV420P_YUV411P@@8 @3687 NONAME ??_R2P_YUV420P_YUV411P_Registration@@8 @3688 NONAME ??_R2P_YUV422_YUV420P@@8 @3689 NONAME ??_R2P_YUV422_YUV420P_Registration@@8 @3690 NONAME ??_R2P_YUV422_YUV422@@8 @3691 NONAME ??_R2P_YUV422_YUV422_Registration@@8 @3692 NONAME ??_R2RouteEntry@PIPSocket@@8 @3693 NONAME ??_R2SelectList@PSocket@@8 @3694 NONAME ??_R2ServiceManager@@8 @4980 NONAME ??_R2strstreambuf@std@@8 @4981 NONAME ??_R2Table@PHashTable@@8 @3695 NONAME ??_R2Win95_ServiceManager@@8 @3696 NONAME ??_R2WinSNMPLoader@@8 @6413 NONAME ??_R2Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7019 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7020 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7021 NONAME ??_R2WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7022 NONAME ??_R2WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6581 NONAME ??_R2WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7023 NONAME ??_R2WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7024 NONAME ??_R2WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7025 NONAME ??_R3?$basic_ofstream@DU?$char_traits@D@std@@@std@@8 @4982 NONAME ??_R3?$PArray@VPString@@@@8 @3697 NONAME ??_R3?$PArray@VPWaveBuffer@@@@8 @3698 NONAME ??_R3?$PArray@VPWin32PacketBuffer@@@@8 @3699 NONAME ??_R3?$PBaseArray@D@@8 @3700 NONAME ??_R3?$PBaseArray@E@@8 @3701 NONAME ??_R3?$PBaseArray@F@@8 @3702 NONAME ??_R3?$PBaseArray@G@@8 @3703 NONAME ??_R3?$PBaseArray@H@@8 @3704 NONAME ??_R3?$PBaseArray@I@@8 @3705 NONAME ??_R3?$PBaseArray@J@@8 @3706 NONAME ??_R3?$PBaseArray@K@@8 @3707 NONAME ??_R3?$PBaseArray@PAVElement@PHashTable@@@@8 @4983 NONAME ??_R3?$PBaseArray@PAVPObject@@@@8 @3708 NONAME ??_R3?$PDevicePluginAdapter@VPSoundChannel@@@@8 @7026 NONAME ??_R3?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @7027 NONAME ??_R3?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @7028 NONAME ??_R3?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @3709 NONAME ??_R3?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @3710 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @3711 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5657 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @3712 NONAME ??_R3?$PDictionary@VPString@@VPDynaLink@@@@8 @5577 NONAME ??_R3?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7029 NONAME ??_R3?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6582 NONAME ??_R3?$PFactory@VPProcessStartup@@VPString@@@@8 @6583 NONAME ??_R3?$PFactory@VPSoundChannel@@VPString@@@@8 @7030 NONAME ??_R3?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7031 NONAME ??_R3?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7032 NONAME ??_R3?$PList@VInterfaceEntry@PIPSocket@@@@8 @7350 NONAME ??_R3?$PList@VPDynaLink@@@@8 @3713 NONAME ??_R3?$PList@VPNotifier@@@@8 @3714 NONAME ??_R3?$PList@VPPluginService@@@@8 @3715 NONAME ??_R3?$PList@VPSafeObject@@@@8 @6756 NONAME ??_R3?$PList@VPSocket@@@@8 @3716 NONAME ??_R3?$PList@VPString@@@@8 @3717 NONAME ??_R3?$PList@VPThread@@@@8 @3718 NONAME ??_R3?$PList@VPTimer@@@@8 @3719 NONAME ??_R3?$POrdinalDictionary@VPString@@@@8 @4984 NONAME ??_R3?$PScalarArray@F@@8 @3720 NONAME ??_R3?$PScalarArray@G@@8 @3721 NONAME ??_R3?$PScalarArray@H@@8 @3722 NONAME ??_R3?$PScalarArray@I@@8 @3723 NONAME ??_R3?$PScalarArray@J@@8 @3724 NONAME ??_R3?$PScalarArray@K@@8 @3725 NONAME ??_R3?$PSet@VPString@@@@8 @3726 NONAME ??_R3?$PSortedList@VPString@@@@8 @4985 NONAME ??_R3?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @16091 NONAME ??_R3?$PStringDictionary@VPOrdinalKey@@@@8 @4986 NONAME ??_R3?$PStringDictionary@VPString@@@@8 @3727 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @16092 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @16093 NONAME ??_R3?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @16094 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7033 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7034 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7035 NONAME ??_R3?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6584 NONAME ??_R3?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6585 NONAME ??_R3Address@PIPSocket@@8 @3728 NONAME ??_R3Buffer@PDebugStream@@8 @3729 NONAME ??_R3Buffer@PStringStream@@8 @3730 NONAME ??_R3Buffer@PSystemLog@@8 @3731 NONAME ??_R3CMCDLL@PMail@@8 @3732 NONAME ??_R3DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @3733 NONAME ??_R3HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @16095 NONAME ??_R3HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @16096 NONAME ??_R3HouseKeepingThread@PProcess@@8 @3734 NONAME ??_R3InterfaceEntry@PIPSocket@@8 @3735 NONAME ??_R3length_error@std@@8 @5786 NONAME ??_R3logic_error@std@@8 @5787 NONAME ??_R3MAPIDLL@PMail@@8 @3736 NONAME ??_R3Nest@PReadWriteMutex@@8 @3737 NONAME ??_R3NT_ServiceManager@@8 @3738 NONAME ??_R3ostrstream@std@@8 @4987 NONAME ??_R3out_of_range@std@@8 @5788 NONAME ??_R3PAbstractArray@@8 @3740 NONAME ??_R3PAbstractDictionary@@8 @3741 NONAME ??_R3PAbstractList@@8 @3742 NONAME ??_R3PAbstractSet@@8 @3743 NONAME ??_R3PAbstractSortedList@@8 @3744 NONAME ??_R3PArgList@@8 @3745 NONAME ??_R3PArrayObjects@@8 @3746 NONAME ??_R3PBitArray@@8 @3747 NONAME ??_R3PBYTEArray@@8 @3748 NONAME ??_R3PCaselessString@@8 @3749 NONAME ??_R3PChannel@@8 @3750 NONAME ??_R3PChannelStreamBuffer@@8 @3751 NONAME ??_R3PCharArray@@8 @3752 NONAME ??_R3PCollection@@8 @3753 NONAME ??_R3PColourConverter@@8 @3754 NONAME ??_R3PColourConverterRegistration@@8 @3755 NONAME ??_R3PCondMutex@@8 @4988 NONAME ??_R3PConfig@@8 @3756 NONAME ??_R3PConfigArgs@@8 @3757 NONAME ??_R3PConsoleChannel@@8 @3758 NONAME ??_R3PContainer@@8 @3759 NONAME ??_R3PCriticalSection@@8 @5547 NONAME ??_R3PDebugStream@@8 @3760 NONAME ??_R3PDevicePluginAdapterBase@@8 @7036 NONAME ??_R3PDevicePluginServiceDescriptor@@8 @16097 NONAME ??_R3PDirectory@@8 @3761 NONAME ??_R3PDynaLink@@8 @3762 NONAME ??_R3PEthSocket@@8 @3763 NONAME ??_R3PFactoryBase@@8 @6586 NONAME ??_R3PFile@@8 @3764 NONAME ??_R3PFileInfo@@8 @3765 NONAME ??_R3PFilePath@@8 @3766 NONAME ??_R3PHashTable@@8 @3767 NONAME ??_R3PHostByAddr@@8 @3768 NONAME ??_R3PHostByName@@8 @3769 NONAME ??_R3PICMPDLL@@8 @3770 NONAME ??_R3PICMPSocket@@8 @3771 NONAME ??_R3PImageDLL@@8 @3772 NONAME ??_R3PIndirectChannel@@8 @3773 NONAME ??_R3PIntCondMutex@@8 @3774 NONAME ??_R3PIPCacheData@@8 @3775 NONAME ??_R3PIPCacheKey@@8 @3776 NONAME ??_R3PIPDatagramSocket@@8 @3777 NONAME ??_R3PIPSocket@@8 @3778 NONAME ??_R3PIPXSocket@@8 @3779 NONAME ??_R3PluginLoaderStartup@@8 @6041 NONAME ??_R3PMail@@8 @3780 NONAME ??_R3PNotifier@@8 @3782 NONAME ??_R3PNotifierFunction@@8 @3783 NONAME ??_R3PObject@@8 @3784 NONAME ??_R3POrdinalKey@@8 @3785 NONAME ??_R3POrdinalToString@@8 @3786 NONAME ??_R3PPipeChannel@@8 @3787 NONAME ??_R3PPluginManager@@8 @3788 NONAME ??_R3PPluginModuleManager@@8 @5579 NONAME ??_R3PPluginService@@8 @3789 NONAME ??_R3PPluginServiceDescriptor@@8 @16098 NONAME ??_R3PPointer@@8 @5658 NONAME ??_R3PProcess@@8 @3790 NONAME ??_R3PProcessStartup@@8 @6042 NONAME ??_R3PQoS@@8 @3791 NONAME ??_R3PRASDLL@@8 @3792 NONAME ??_R3PReadWriteMutex@@8 @3793 NONAME ??_R3PRegularExpression@@8 @3794 NONAME ??_R3PRemoteConnection@@8 @3795 NONAME ??_R3PSafeCollection@@8 @3796 NONAME ??_R3PSafeObject@@8 @3797 NONAME ??_R3PSafePtrBase@@8 @3798 NONAME ??_R3PSemaphore@@8 @3799 NONAME ??_R3PSerialChannel@@8 @3800 NONAME ??_R3PServiceProcess@@8 @3801 NONAME ??_R3PSimpleThread@@8 @3802 NONAME ??_R3PSmartObject@@8 @4989 NONAME ??_R3PSmartPointer@@8 @3803 NONAME ??_R3PSmartPtrInspector@@8 @5659 NONAME ??_R3PSocket@@8 @3804 NONAME ??_R3PSortedStringList@@8 @3805 NONAME ??_R3PSound@@8 @3806 NONAME ??_R3PSoundChannel@@8 @3807 NONAME ??_R3PSoundChannelWin32@@8 @3808 NONAME ??_R3PSPXSocket@@8 @3809 NONAME ??_R3PStandardColourConverter@@8 @4990 NONAME ??_R3PString@@8 @3810 NONAME ??_R3PStringArray@@8 @3811 NONAME ??_R3PStringList@@8 @3812 NONAME ??_R3PStringSet@@8 @3813 NONAME ??_R3PStringStream@@8 @3814 NONAME ??_R3PStringToOrdinal@@8 @3815 NONAME ??_R3PStringToString@@8 @3816 NONAME ??_R3PStructuredFile@@8 @3817 NONAME ??_R3PSync@@8 @16267 NONAME ??_R3PSyncPoint@@8 @3818 NONAME ??_R3PSynonymColour@@8 @3819 NONAME ??_R3PSynonymColourRegistration@@8 @3820 NONAME ??_R3PSystemLog@@8 @3821 NONAME ??_R3PTCPSocket@@8 @3822 NONAME ??_R3PTextFile@@8 @3823 NONAME ??_R3PThread@@8 @3824 NONAME ??_R3PTime@@8 @3825 NONAME ??_R3PTimedMutex@@8 @16268 NONAME ??_R3PTimeInterval@@8 @3826 NONAME ??_R3PTimer@@8 @3827 NONAME ??_R3PTimerList@@8 @3828 NONAME ??_R3PUDPSocket@@8 @3829 NONAME ??_R3PVideoChannel@@8 @3830 NONAME ??_R3PVideoDevice@@8 @3831 NONAME ??_R3PVideoDeviceBitmap@@8 @3832 NONAME ??_R3PVideoInputDevice@@8 @3833 NONAME ??_R3PVideoInputDevice_FakeVideo@@8 @3834 NONAME ??_R3PVideoInputDevice_VideoForWindows@@8 @3835 NONAME ??_R3PVideoOutputDevice@@8 @3837 NONAME ??_R3PVideoOutputDeviceRGB@@8 @16099 NONAME ??_R3PVideoOutputDevice_NULLOutput@@8 @3838 NONAME ??_R3PVideoOutputDevice_Window@@8 @16100 NONAME ??_R3PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @16101 NONAME ??_R3PWaveBuffer@@8 @3839 NONAME ??_R3PWaveFormat@@8 @3840 NONAME ??_R3PWin32PacketBuffer@@8 @3841 NONAME ??_R3PWin32PacketDriver@@8 @3842 NONAME ??_R3PWin32PacketSYS@@8 @3843 NONAME ??_R3PWin32PacketVxD@@8 @3844 NONAME ??_R3PWin32SnmpLibrary@@8 @3845 NONAME ??_R3PWinQoS@@8 @3846 NONAME ??_R3PWinSock@@8 @3847 NONAME ??_R3P_BGR24_RGB24@@8 @16102 NONAME ??_R3P_BGR24_RGB24_Registration@@8 @16103 NONAME ??_R3P_BGR24_RGB32@@8 @16104 NONAME ??_R3P_BGR24_RGB32_Registration@@8 @16105 NONAME ??_R3P_BGR24_YUV420P@@8 @3848 NONAME ??_R3P_BGR24_YUV420P_Registration@@8 @3849 NONAME ??_R3P_BGR32_RGB24@@8 @16106 NONAME ??_R3P_BGR32_RGB24_Registration@@8 @16107 NONAME ??_R3P_BGR32_RGB32@@8 @16108 NONAME ??_R3P_BGR32_RGB32_Registration@@8 @16109 NONAME ??_R3P_BGR32_YUV420P@@8 @3850 NONAME ??_R3P_BGR32_YUV420P_Registration@@8 @3851 NONAME ??_R3P_Grey_YUV420P@@8 @3854 NONAME ??_R3P_Grey_YUV420P_Registration@@8 @3855 NONAME ??_R3P_RGB24_BGR24@@8 @16110 NONAME ??_R3P_RGB24_BGR24_Registration@@8 @16111 NONAME ??_R3P_RGB24_BGR32@@8 @16112 NONAME ??_R3P_RGB24_BGR32_Registration@@8 @16113 NONAME ??_R3P_RGB24_RGB32@@8 @3858 NONAME ??_R3P_RGB24_RGB32_Registration@@8 @3859 NONAME ??_R3P_RGB24_YUV420P@@8 @3860 NONAME ??_R3P_RGB24_YUV420P_Registration@@8 @3861 NONAME ??_R3P_RGB32_BGR24@@8 @16114 NONAME ??_R3P_RGB32_BGR24_Registration@@8 @16115 NONAME ??_R3P_RGB32_BGR32@@8 @16116 NONAME ??_R3P_RGB32_BGR32_Registration@@8 @16117 NONAME ??_R3P_RGB32_RGB24@@8 @3864 NONAME ??_R3P_RGB32_RGB24_Registration@@8 @3865 NONAME ??_R3P_RGB32_YUV420P@@8 @3866 NONAME ??_R3P_RGB32_YUV420P_Registration@@8 @3867 NONAME ??_R3P_SBGGR8_RGB24@@8 @7299 NONAME ??_R3P_SBGGR8_RGB24_Registration@@8 @7300 NONAME ??_R3P_SBGGR8_YUV420P@@8 @7329 NONAME ??_R3P_SBGGR8_YUV420P_Registration@@8 @7330 NONAME ??_R3P_UYV444_YUV420P@@8 @3868 NONAME ??_R3P_UYV444_YUV420P_Registration@@8 @3869 NONAME ??_R3P_UYVY422_YUV420P@@8 @3870 NONAME ??_R3P_UYVY422_YUV420P_Registration@@8 @3871 NONAME ??_R3P_YUV411P_YUV420P@@8 @3872 NONAME ??_R3P_YUV411P_YUV420P_Registration@@8 @3873 NONAME ??_R3P_YUV420P_BGR24@@8 @3874 NONAME ??_R3P_YUV420P_BGR24_Registration@@8 @3877 NONAME ??_R3P_YUV420P_BGR32@@8 @3878 NONAME ??_R3P_YUV420P_BGR32_Registration@@8 @3879 NONAME ??_R3P_YUV420P_RGB24@@8 @3880 NONAME ??_R3P_YUV420P_RGB24_Registration@@8 @3883 NONAME ??_R3P_YUV420P_RGB32@@8 @3884 NONAME ??_R3P_YUV420P_RGB32_Registration@@8 @3887 NONAME ??_R3P_YUV420P_YUV411P@@8 @3888 NONAME ??_R3P_YUV420P_YUV411P_Registration@@8 @3889 NONAME ??_R3P_YUV422_YUV420P@@8 @3890 NONAME ??_R3P_YUV422_YUV420P_Registration@@8 @3891 NONAME ??_R3P_YUV422_YUV422@@8 @3892 NONAME ??_R3P_YUV422_YUV422_Registration@@8 @3893 NONAME ??_R3RouteEntry@PIPSocket@@8 @3894 NONAME ??_R3SelectList@PSocket@@8 @3895 NONAME ??_R3ServiceManager@@8 @4991 NONAME ??_R3strstreambuf@std@@8 @4992 NONAME ??_R3Table@PHashTable@@8 @3896 NONAME ??_R3Win95_ServiceManager@@8 @3897 NONAME ??_R3WinSNMPLoader@@8 @6414 NONAME ??_R3Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7037 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7038 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7039 NONAME ??_R3WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7040 NONAME ??_R3WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6587 NONAME ??_R3WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7041 NONAME ??_R3WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7042 NONAME ??_R3WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7043 NONAME ??_R4?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ @4993 NONAME ??_R4?$PArray@VPString@@@@6B@ @3898 NONAME ??_R4?$PArray@VPWaveBuffer@@@@6B@ @3899 NONAME ??_R4?$PArray@VPWin32PacketBuffer@@@@6B@ @3900 NONAME ??_R4?$PBaseArray@D@@6B@ @3901 NONAME ??_R4?$PBaseArray@E@@6B@ @3902 NONAME ??_R4?$PBaseArray@F@@6B@ @3903 NONAME ??_R4?$PBaseArray@G@@6B@ @3904 NONAME ??_R4?$PBaseArray@H@@6B@ @3905 NONAME ??_R4?$PBaseArray@I@@6B@ @3906 NONAME ??_R4?$PBaseArray@J@@6B@ @3907 NONAME ??_R4?$PBaseArray@K@@6B@ @3908 NONAME ??_R4?$PBaseArray@PAVElement@PHashTable@@@@6B@ @4994 NONAME ??_R4?$PBaseArray@PAVPObject@@@@6B@ @3909 NONAME ??_R4?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @7044 NONAME ??_R4?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @7045 NONAME ??_R4?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @7046 NONAME ??_R4?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @3910 NONAME ??_R4?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @3911 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @3912 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @5660 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @3913 NONAME ??_R4?$PDictionary@VPString@@VPDynaLink@@@@6B@ @5580 NONAME ??_R4?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7047 NONAME ??_R4?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @6588 NONAME ??_R4?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6589 NONAME ??_R4?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7048 NONAME ??_R4?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7049 NONAME ??_R4?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7050 NONAME ??_R4?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @7351 NONAME ??_R4?$PList@VPDynaLink@@@@6B@ @3914 NONAME ??_R4?$PList@VPNotifier@@@@6B@ @3915 NONAME ??_R4?$PList@VPPluginService@@@@6B@ @3916 NONAME ??_R4?$PList@VPSafeObject@@@@6B@ @6757 NONAME ??_R4?$PList@VPSocket@@@@6B@ @3917 NONAME ??_R4?$PList@VPString@@@@6B@ @3918 NONAME ??_R4?$PList@VPThread@@@@6B@ @3919 NONAME ??_R4?$PList@VPTimer@@@@6B@ @3920 NONAME ??_R4?$POrdinalDictionary@VPString@@@@6B@ @4995 NONAME ??_R4?$PScalarArray@F@@6B@ @3921 NONAME ??_R4?$PScalarArray@G@@6B@ @3922 NONAME ??_R4?$PScalarArray@H@@6B@ @3923 NONAME ??_R4?$PScalarArray@I@@6B@ @3924 NONAME ??_R4?$PScalarArray@J@@6B@ @3925 NONAME ??_R4?$PScalarArray@K@@6B@ @3926 NONAME ??_R4?$PSet@VPString@@@@6B@ @3927 NONAME ??_R4?$PSortedList@VPString@@@@6B@ @4996 NONAME ??_R4?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @16118 NONAME ??_R4?$PStringDictionary@VPOrdinalKey@@@@6B@ @4997 NONAME ??_R4?$PStringDictionary@VPString@@@@6B@ @3928 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @16119 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @16120 NONAME ??_R4?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @16121 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7051 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7052 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7053 NONAME ??_R4?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6590 NONAME ??_R4?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6591 NONAME ??_R4Address@PIPSocket@@6B@ @3929 NONAME ??_R4Buffer@PDebugStream@@6B@ @3930 NONAME ??_R4Buffer@PStringStream@@6B@ @3931 NONAME ??_R4Buffer@PSystemLog@@6B@ @3932 NONAME ??_R4CMCDLL@PMail@@6B@ @3933 NONAME ??_R4DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @3934 NONAME ??_R4HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @16122 NONAME ??_R4HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @16123 NONAME ??_R4HouseKeepingThread@PProcess@@6B@ @3935 NONAME ??_R4InterfaceEntry@PIPSocket@@6B@ @3936 NONAME ??_R4length_error@std@@6B@ @5789 NONAME ??_R4logic_error@std@@6B@ @5790 NONAME ??_R4MAPIDLL@PMail@@6B@ @3937 NONAME ??_R4Nest@PReadWriteMutex@@6B@ @3938 NONAME ??_R4NT_ServiceManager@@6B@ @3939 NONAME ??_R4ostrstream@std@@6B@ @4998 NONAME ??_R4out_of_range@std@@6B@ @5791 NONAME ??_R4PAbstractArray@@6B@ @3941 NONAME ??_R4PAbstractDictionary@@6B@ @3942 NONAME ??_R4PAbstractList@@6B@ @3943 NONAME ??_R4PAbstractSet@@6B@ @3944 NONAME ??_R4PAbstractSortedList@@6B@ @3945 NONAME ??_R4PArgList@@6B@ @3946 NONAME ??_R4PArrayObjects@@6B@ @3947 NONAME ??_R4PBitArray@@6B@ @3948 NONAME ??_R4PBYTEArray@@6B@ @3949 NONAME ??_R4PCaselessString@@6B@ @3950 NONAME ??_R4PChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @4999 NONAME ??_R4PChannel@@6BPObject@@@ @3952 NONAME ??_R4PChannelStreamBuffer@@6B@ @3953 NONAME ??_R4PCharArray@@6B@ @3954 NONAME ??_R4PCollection@@6B@ @3955 NONAME ??_R4PColourConverter@@6B@ @3956 NONAME ??_R4PColourConverterRegistration@@6B@ @3957 NONAME ??_R4PCondMutex@@6B@ @5000 NONAME ??_R4PConfig@@6B@ @3958 NONAME ??_R4PConfigArgs@@6B@ @3959 NONAME ??_R4PConsoleChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5001 NONAME ??_R4PConsoleChannel@@6BPObject@@@ @3961 NONAME ??_R4PContainer@@6B@ @3962 NONAME ??_R4PCriticalSection@@6B@ @5548 NONAME ??_R4PDebugStream@@6B@ @3963 NONAME ??_R4PDevicePluginAdapterBase@@6B@ @7054 NONAME ??_R4PDevicePluginServiceDescriptor@@6B@ @16124 NONAME ??_R4PDirectory@@6B@ @3964 NONAME ??_R4PDynaLink@@6B@ @3965 NONAME ??_R4PEthSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5002 NONAME ??_R4PEthSocket@@6BPObject@@@ @3967 NONAME ??_R4PFactoryBase@@6B@ @6592 NONAME ??_R4PFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5003 NONAME ??_R4PFile@@6BPObject@@@ @3969 NONAME ??_R4PFileInfo@@6B@ @3970 NONAME ??_R4PFilePath@@6B@ @3971 NONAME ??_R4PHashTable@@6B@ @3972 NONAME ??_R4PHostByAddr@@6B@ @3973 NONAME ??_R4PHostByName@@6B@ @3974 NONAME ??_R4PICMPDLL@@6B@ @3975 NONAME ??_R4PICMPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5004 NONAME ??_R4PICMPSocket@@6BPObject@@@ @3977 NONAME ??_R4PImageDLL@@6B@ @3978 NONAME ??_R4PIndirectChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5005 NONAME ??_R4PIndirectChannel@@6BPObject@@@ @3980 NONAME ??_R4PIntCondMutex@@6B@ @3981 NONAME ??_R4PIPCacheData@@6B@ @3982 NONAME ??_R4PIPCacheKey@@6B@ @3983 NONAME ??_R4PIPDatagramSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5006 NONAME ??_R4PIPDatagramSocket@@6BPObject@@@ @3985 NONAME ??_R4PIPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5007 NONAME ??_R4PIPSocket@@6BPObject@@@ @3987 NONAME ??_R4PIPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5008 NONAME ??_R4PIPXSocket@@6BPObject@@@ @3989 NONAME ??_R4PluginLoaderStartup@@6B@ @6043 NONAME ??_R4PMail@@6B@ @3990 NONAME ??_R4PNotifier@@6B@ @3992 NONAME ??_R4PNotifierFunction@@6B@ @3993 NONAME ??_R4PObject@@6B@ @3994 NONAME ??_R4POrdinalKey@@6B@ @3995 NONAME ??_R4POrdinalToString@@6B@ @3996 NONAME ??_R4PPipeChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5009 NONAME ??_R4PPipeChannel@@6BPObject@@@ @3998 NONAME ??_R4PPluginManager@@6B@ @3999 NONAME ??_R4PPluginModuleManager@@6B@ @5582 NONAME ??_R4PPluginService@@6B@ @4000 NONAME ??_R4PPluginServiceDescriptor@@6B@ @16125 NONAME ??_R4PPointer@@6B@ @5661 NONAME ??_R4PProcess@@6B@ @4001 NONAME ??_R4PProcessStartup@@6B@ @6044 NONAME ??_R4PQoS@@6B@ @4002 NONAME ??_R4PRASDLL@@6B@ @4003 NONAME ??_R4PReadWriteMutex@@6B@ @4004 NONAME ??_R4PRegularExpression@@6B@ @4005 NONAME ??_R4PRemoteConnection@@6B@ @4006 NONAME ??_R4PSafeCollection@@6B@ @4007 NONAME ??_R4PSafeObject@@6B@ @4008 NONAME ??_R4PSafePtrBase@@6B@ @4009 NONAME ??_R4PSemaphore@@6B@ @4010 NONAME ??_R4PSerialChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5010 NONAME ??_R4PSerialChannel@@6BPObject@@@ @4012 NONAME ??_R4PServiceProcess@@6B@ @4013 NONAME ??_R4PSimpleThread@@6B@ @4014 NONAME ??_R4PSmartObject@@6B@ @5011 NONAME ??_R4PSmartPointer@@6B@ @4015 NONAME ??_R4PSmartPtrInspector@@6B@ @5662 NONAME ??_R4PSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5012 NONAME ??_R4PSocket@@6BPObject@@@ @4017 NONAME ??_R4PSortedStringList@@6B@ @4018 NONAME ??_R4PSound@@6B@ @4019 NONAME ??_R4PSoundChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5013 NONAME ??_R4PSoundChannel@@6BPObject@@@ @4021 NONAME ??_R4PSoundChannelWin32@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5014 NONAME ??_R4PSoundChannelWin32@@6BPObject@@@ @4023 NONAME ??_R4PSPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5015 NONAME ??_R4PSPXSocket@@6BPObject@@@ @4025 NONAME ??_R4PStandardColourConverter@@6B@ @5016 NONAME ??_R4PString@@6B@ @4026 NONAME ??_R4PStringArray@@6B@ @4027 NONAME ??_R4PStringList@@6B@ @4028 NONAME ??_R4PStringSet@@6B@ @4029 NONAME ??_R4PStringStream@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5017 NONAME ??_R4PStringStream@@6BPString@@@ @4031 NONAME ??_R4PStringToOrdinal@@6B@ @4032 NONAME ??_R4PStringToString@@6B@ @4033 NONAME ??_R4PStructuredFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5018 NONAME ??_R4PStructuredFile@@6BPObject@@@ @4035 NONAME ??_R4PSync@@6B@ @16269 NONAME ??_R4PSyncPoint@@6B@ @4036 NONAME ??_R4PSynonymColour@@6B@ @4037 NONAME ??_R4PSynonymColourRegistration@@6B@ @4038 NONAME ??_R4PSystemLog@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5019 NONAME ??_R4PSystemLog@@6BPObject@@@ @4040 NONAME ??_R4PTCPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5020 NONAME ??_R4PTCPSocket@@6BPObject@@@ @4042 NONAME ??_R4PTextFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5021 NONAME ??_R4PTextFile@@6BPObject@@@ @4044 NONAME ??_R4PThread@@6B@ @4045 NONAME ??_R4PTime@@6B@ @4046 NONAME ??_R4PTimedMutex@@6B@ @16270 NONAME ??_R4PTimeInterval@@6B@ @4047 NONAME ??_R4PTimer@@6B@ @4048 NONAME ??_R4PTimerList@@6B@ @4049 NONAME ??_R4PUDPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5022 NONAME ??_R4PUDPSocket@@6BPObject@@@ @4051 NONAME ??_R4PVideoChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5023 NONAME ??_R4PVideoChannel@@6BPObject@@@ @4053 NONAME ??_R4PVideoDevice@@6B@ @4054 NONAME ??_R4PVideoDeviceBitmap@@6B@ @4055 NONAME ??_R4PVideoInputDevice@@6B@ @4056 NONAME ??_R4PVideoInputDevice_FakeVideo@@6B@ @4057 NONAME ??_R4PVideoInputDevice_VideoForWindows@@6B@ @4058 NONAME ??_R4PVideoOutputDevice@@6B@ @4060 NONAME ??_R4PVideoOutputDeviceRGB@@6B@ @16126 NONAME ??_R4PVideoOutputDevice_NULLOutput@@6B@ @4061 NONAME ??_R4PVideoOutputDevice_Window@@6B@ @16127 NONAME ??_R4PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @16128 NONAME ??_R4PWaveBuffer@@6B@ @4062 NONAME ??_R4PWaveFormat@@6B@ @4063 NONAME ??_R4PWin32PacketBuffer@@6B@ @4064 NONAME ??_R4PWin32PacketDriver@@6B@ @4065 NONAME ??_R4PWin32PacketSYS@@6B@ @4066 NONAME ??_R4PWin32PacketVxD@@6B@ @4067 NONAME ??_R4PWin32SnmpLibrary@@6B@ @4068 NONAME ??_R4PWinQoS@@6B@ @4069 NONAME ??_R4PWinSock@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5024 NONAME ??_R4PWinSock@@6BPObject@@@ @4071 NONAME ??_R4P_BGR24_RGB24@@6B@ @16129 NONAME ??_R4P_BGR24_RGB24_Registration@@6B@ @16130 NONAME ??_R4P_BGR24_RGB32@@6B@ @16131 NONAME ??_R4P_BGR24_RGB32_Registration@@6B@ @16132 NONAME ??_R4P_BGR24_YUV420P@@6B@ @4072 NONAME ??_R4P_BGR24_YUV420P_Registration@@6B@ @4073 NONAME ??_R4P_BGR32_RGB24@@6B@ @16133 NONAME ??_R4P_BGR32_RGB24_Registration@@6B@ @16134 NONAME ??_R4P_BGR32_RGB32@@6B@ @16135 NONAME ??_R4P_BGR32_RGB32_Registration@@6B@ @16136 NONAME ??_R4P_BGR32_YUV420P@@6B@ @4074 NONAME ??_R4P_BGR32_YUV420P_Registration@@6B@ @4075 NONAME ??_R4P_Grey_YUV420P@@6B@ @4078 NONAME ??_R4P_Grey_YUV420P_Registration@@6B@ @4079 NONAME ??_R4P_RGB24_BGR24@@6B@ @16137 NONAME ??_R4P_RGB24_BGR24_Registration@@6B@ @16138 NONAME ??_R4P_RGB24_BGR32@@6B@ @16139 NONAME ??_R4P_RGB24_BGR32_Registration@@6B@ @16140 NONAME ??_R4P_RGB24_RGB32@@6B@ @4082 NONAME ??_R4P_RGB24_RGB32_Registration@@6B@ @4083 NONAME ??_R4P_RGB24_YUV420P@@6B@ @4084 NONAME ??_R4P_RGB24_YUV420P_Registration@@6B@ @4085 NONAME ??_R4P_RGB32_BGR24@@6B@ @16141 NONAME ??_R4P_RGB32_BGR24_Registration@@6B@ @16142 NONAME ??_R4P_RGB32_BGR32@@6B@ @16143 NONAME ??_R4P_RGB32_BGR32_Registration@@6B@ @16144 NONAME ??_R4P_RGB32_RGB24@@6B@ @4088 NONAME ??_R4P_RGB32_RGB24_Registration@@6B@ @4089 NONAME ??_R4P_RGB32_YUV420P@@6B@ @4090 NONAME ??_R4P_RGB32_YUV420P_Registration@@6B@ @4091 NONAME ??_R4P_SBGGR8_RGB24@@6B@ @7301 NONAME ??_R4P_SBGGR8_RGB24_Registration@@6B@ @7302 NONAME ??_R4P_SBGGR8_YUV420P@@6B@ @7331 NONAME ??_R4P_SBGGR8_YUV420P_Registration@@6B@ @7332 NONAME ??_R4P_UYV444_YUV420P@@6B@ @4092 NONAME ??_R4P_UYV444_YUV420P_Registration@@6B@ @4093 NONAME ??_R4P_UYVY422_YUV420P@@6B@ @4094 NONAME ??_R4P_UYVY422_YUV420P_Registration@@6B@ @4095 NONAME ??_R4P_YUV411P_YUV420P@@6B@ @4096 NONAME ??_R4P_YUV411P_YUV420P_Registration@@6B@ @4097 NONAME ??_R4P_YUV420P_BGR24@@6B@ @4098 NONAME ??_R4P_YUV420P_BGR24_Registration@@6B@ @4101 NONAME ??_R4P_YUV420P_BGR32@@6B@ @4102 NONAME ??_R4P_YUV420P_BGR32_Registration@@6B@ @4103 NONAME ??_R4P_YUV420P_RGB24@@6B@ @4104 NONAME ??_R4P_YUV420P_RGB24_Registration@@6B@ @4107 NONAME ??_R4P_YUV420P_RGB32@@6B@ @4108 NONAME ??_R4P_YUV420P_RGB32_Registration@@6B@ @4111 NONAME ??_R4P_YUV420P_YUV411P@@6B@ @4112 NONAME ??_R4P_YUV420P_YUV411P_Registration@@6B@ @4113 NONAME ??_R4P_YUV422_YUV420P@@6B@ @4114 NONAME ??_R4P_YUV422_YUV420P_Registration@@6B@ @4115 NONAME ??_R4P_YUV422_YUV422@@6B@ @4116 NONAME ??_R4P_YUV422_YUV422_Registration@@6B@ @4117 NONAME ??_R4RouteEntry@PIPSocket@@6B@ @4118 NONAME ??_R4SelectList@PSocket@@6B@ @4119 NONAME ??_R4ServiceManager@@6B@ @5025 NONAME ??_R4strstreambuf@std@@6B@ @5026 NONAME ??_R4Table@PHashTable@@6B@ @4120 NONAME ??_R4Win95_ServiceManager@@6B@ @4121 NONAME ??_R4WinSNMPLoader@@6B@ @6415 NONAME ??_R4Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @7055 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @7056 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7057 NONAME ??_R4WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7058 NONAME ??_R4WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6593 NONAME ??_R4WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7059 NONAME ??_R4WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7060 NONAME ??_R4WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7061 NONAME ??_S?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ @5027 NONAME ??_U@YAPAXI@Z @6416 NONAME ??_V@YAXPAX@Z @6417 NONAME ?Abort@PSoundChannel@@UAEHXZ @2698 NONAME ?Abort@PSoundChannelWin32@@UAEHXZ @2699 NONAME ?AbortCommandString@PChannel@@QAEXXZ @5482 NONAME ?AbstractContains@PHashTable@@IBEHABVPObject@@@Z @5028 NONAME ?AbstractGetAt@PAbstractDictionary@@UBEPAVPObject@@ABV2@@Z @871 NONAME ?AbstractGetDataAt@PHashTable@@MBEAAVPObject@@H@Z @872 NONAME ?AbstractGetKeyAt@PHashTable@@MBEABVPObject@@H@Z @873 NONAME ?AbstractSetAt@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @874 NONAME ?Accept@PSocket@@UAEHAAV1@@Z @875 NONAME ?Accept@PSPXSocket@@UAEHAAVPSocket@@@Z @876 NONAME ?Accept@PTCPSocket@@UAEHAAVPSocket@@@Z @877 NONAME ?Access@PFile@@QAEHW4OpenMode@1@@Z @5483 NONAME ?Access@PFile@@SAHABVPFilePath@@W4OpenMode@1@@Z @878 NONAME ?Acknowledge@PSyncPointAck@@QAEXXZ @879 NONAME ?Add@PNotifyIconData@@QAEXXZ @5029 NONAME ?AddEntry@PIPCacheData@@QAEXPAUaddrinfo@@@Z @2928 NONAME ?AddNotifier@PPluginManager@@QAEXABVPNotifier@@H@Z @3037 NONAME ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5030 NONAME ?all@?$_Locbase@H@std@@2HB @5031 NONAME ?allocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEPAPAVPPluginModuleManager@@I@Z @6045 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@I@Z @6594 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@I@Z @6046 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7062 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6595 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6596 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7063 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7064 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7065 NONAME ?allocate@?$allocator@VPString@@@std@@QAEPAVPString@@I@Z @6049 NONAME ?AllowDeleteObjects@PCollection@@QAEXH@Z @5032 NONAME ?app@?$_Iosb@H@std@@2W4_Openmode@12@B @5033 NONAME ?Append@PAbstractDictionary@@EAEHPAVPObject@@@Z @880 NONAME ?Append@PAbstractList@@UAEHPAVPObject@@@Z @881 NONAME ?Append@PAbstractSet@@UAEHPAVPObject@@@Z @882 NONAME ?Append@PAbstractSortedList@@UAEHPAVPObject@@@Z @883 NONAME ?Append@PArrayObjects@@UAEHPAVPObject@@@Z @884 NONAME ?AppendElement@Table@PHashTable@@QAEHPAVPObject@@0@Z @885 NONAME ?AppendString@PSortedStringList@@QAEHABVPString@@@Z @5034 NONAME ?AppendString@PStringArray@@QAEHABVPString@@@Z @5035 NONAME ?AppendString@PStringList@@QAEHABVPString@@@Z @5036 NONAME ?ApplyFormat@PVideoDeviceBitmap@@QAEHPAUHWND__@@ABUFormatTableEntry@@@Z @16252 NONAME ?ApplyQoS@PUDPSocket@@MAEHXZ @2655 NONAME ?AreAllRecordBuffersFull@PSoundChannel@@UAEHXZ @2700 NONAME ?AreAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @2701 NONAME ?Ascend@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @888 NONAME ?AsInt64@PString@@QBE_JI@Z @889 NONAME ?AsInteger@PString@@QBEJI@Z @890 NONAME ?AsNumeric@PIPSocket@@SAIVAddress@1@@Z @16146 NONAME ?AsReal@PString@@QBENXZ @891 NONAME ?Assign@PSafePtrBase@@QAEXABV1@@Z @7338 NONAME ?Assign@PSafePtrBase@@QAEXABVPSafeCollection@@@Z @7339 NONAME ?Assign@PSafePtrBase@@QAEXH@Z @7340 NONAME ?Assign@PSafePtrBase@@QAEXPAVPSafeObject@@@Z @7341 NONAME ?AssignContents@PAbstractArray@@MAEXABVPContainer@@@Z @896 NONAME ?AssignContents@PAbstractList@@MAEXABVPContainer@@@Z @897 NONAME ?AssignContents@PAbstractSet@@MAEXABVPContainer@@@Z @898 NONAME ?AssignContents@PAbstractSortedList@@MAEXABVPContainer@@@Z @899 NONAME ?AssignContents@PArrayObjects@@MAEXABVPContainer@@@Z @900 NONAME ?AssignContents@PContainer@@MAEXABV1@@Z @901 NONAME ?AssignContents@PDirectory@@MAEXABVPContainer@@@Z @902 NONAME ?AssignContents@PFilePath@@MAEXABVPContainer@@@Z @903 NONAME ?AssignContents@PHashTable@@MAEXABVPContainer@@@Z @904 NONAME ?AssignContents@PStringStream@@MAEXABVPContainer@@@Z @905 NONAME ?AsString@Address@PIPSocket@@QBE?AVPString@@XZ @906 NONAME ?AsString@PTime@@QBE?AVPString@@ABV2@H@Z @907 NONAME ?AsString@PTime@@QBE?AVPString@@PBDH@Z @908 NONAME ?AsString@PTime@@QBE?AVPString@@W4TimeFormat@1@H@Z @909 NONAME ?AsString@PTimeInterval@@QBE?AVPString@@HW4Formats@1@H@Z @910 NONAME ?AsUCS2@PString@@QBE?AV?$PScalarArray@G@@XZ @911 NONAME ?AsUnsigned64@PString@@QBE_KI@Z @912 NONAME ?AsUnsigned@PString@@QBEKI@Z @913 NONAME ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B @5037 NONAME ?Attach@?$PBaseArray@D@@QAEXPBDH@Z @5038 NONAME ?Attach@?$PBaseArray@E@@QAEXPBEH@Z @5039 NONAME ?Attach@?$PBaseArray@F@@QAEXPBFH@Z @5040 NONAME ?Attach@?$PBaseArray@G@@QAEXPBGH@Z @5041 NONAME ?Attach@?$PBaseArray@H@@QAEXPBHH@Z @5042 NONAME ?Attach@?$PBaseArray@I@@QAEXPBIH@Z @5043 NONAME ?Attach@?$PBaseArray@J@@QAEXPBJH@Z @5044 NONAME ?Attach@?$PBaseArray@K@@QAEXPBKH@Z @5045 NONAME ?Attach@PAbstractArray@@QAEXPBXH@Z @914 NONAME ?Attach@PBitArray@@QAEXPBXH@Z @915 NONAME ?AttachVideoPlayer@PVideoChannel@@UAEXPAVPVideoOutputDevice@@H@Z @916 NONAME ?AttachVideoReader@PVideoChannel@@UAEXPAVPVideoInputDevice@@H@Z @917 NONAME ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5046 NONAME ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5047 NONAME ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B @5048 NONAME ?begin@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@XZ @6050 NONAME ?begin@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE?AVconst_iterator@12@XZ @16147 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE?AViterator@12@XZ @6051 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE?AVconst_iterator@12@XZ @6052 NONAME ?begin@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@XZ @6597 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@XZ @6053 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7066 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6598 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6599 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7067 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7068 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7069 NONAME ?Begin@PTrace@@SAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@IPBDH@Z @5049 NONAME ?BeginRead@PWin32PacketSYS@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @919 NONAME ?BeginRead@PWin32PacketVxD@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @920 NONAME ?BeginWrite@PWin32PacketSYS@@UAEHPBXKAAVPWin32Overlapped@@@Z @921 NONAME ?BeginWrite@PWin32PacketVxD@@UAEHPBXKAAVPWin32Overlapped@@@Z @922 NONAME ?bestEffortDSCP@PQoS@@2DA @2656 NONAME ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B @5050 NONAME ?BindInterface@PWin32PacketSYS@@UAEHABVPString@@@Z @923 NONAME ?BindInterface@PWin32PacketVxD@@UAEHABVPString@@@Z @924 NONAME ?bInitialized@?1??WspiapiLoad@@9@4@4HA @2929 NONAME ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5051 NONAME ?Byte1@Address@PIPSocket@@QBEEXZ @925 NONAME ?Byte2@Address@PIPSocket@@QBEEXZ @926 NONAME ?Byte3@Address@PIPSocket@@QBEEXZ @927 NONAME ?Byte4@Address@PIPSocket@@QBEEXZ @928 NONAME ?CalculateFrameBytes@PVideoDevice@@SAIIIABVPString@@@Z @929 NONAME ?Call@DeleteObjectsTimeout_PNotifier@PSafeCollection@@UBEXAAVPObject@@H@Z @930 NONAME ?Call@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UBEXAAVPObject@@H@Z @16148 NONAME ?Call@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UBEXAAVPObject@@H@Z @16149 NONAME ?CallNotifier@PPluginManager@@IAEXAAVPDynaLink@@H@Z @3038 NONAME ?CanCaptureVideo@PVideoInputDevice@@UBEHXZ @931 NONAME ?CanCaptureVideo@PVideoOutputDevice@@UBEHXZ @932 NONAME ?CanReadAndWrite@PPipeChannel@@SAHXZ @933 NONAME ?CanTrace@PTrace@@SAHI@Z @934 NONAME ?capacity@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @6056 NONAME ?capacity@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @6057 NONAME ?Change@PDirectory@@QBEHXZ @5484 NONAME ?Change@PDirectory@@SAHABVPString@@@Z @935 NONAME ?CharToString@PConfigArgs@@IBE?AVPString@@D@Z @936 NONAME ?Class@?$PArray@VPString@@@@SAPBDXZ @5052 NONAME ?Class@?$PArray@VPWaveBuffer@@@@SAPBDXZ @5053 NONAME ?Class@?$PArray@VPWin32PacketBuffer@@@@SAPBDXZ @5054 NONAME ?Class@?$PBaseArray@D@@SAPBDXZ @5055 NONAME ?Class@?$PBaseArray@E@@SAPBDXZ @5056 NONAME ?Class@?$PBaseArray@F@@SAPBDXZ @5057 NONAME ?Class@?$PBaseArray@G@@SAPBDXZ @5058 NONAME ?Class@?$PBaseArray@H@@SAPBDXZ @5059 NONAME ?Class@?$PBaseArray@I@@SAPBDXZ @5060 NONAME ?Class@?$PBaseArray@J@@SAPBDXZ @5061 NONAME ?Class@?$PBaseArray@K@@SAPBDXZ @5062 NONAME ?Class@?$PBaseArray@PAVElement@PHashTable@@@@SAPBDXZ @5063 NONAME ?Class@?$PBaseArray@PAVPObject@@@@SAPBDXZ @5064 NONAME ?Class@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@SAPBDXZ @5065 NONAME ?Class@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@SAPBDXZ @5066 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@SAPBDXZ @5067 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPPointer@@@@SAPBDXZ @5663 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPThread@@@@SAPBDXZ @5068 NONAME ?Class@?$PDictionary@VPString@@VPDynaLink@@@@SAPBDXZ @5584 NONAME ?Class@?$PList@VInterfaceEntry@PIPSocket@@@@SAPBDXZ @7352 NONAME ?Class@?$PList@VPDynaLink@@@@SAPBDXZ @5069 NONAME ?Class@?$PList@VPNotifier@@@@SAPBDXZ @5070 NONAME ?Class@?$PList@VPPluginService@@@@SAPBDXZ @5071 NONAME ?Class@?$PList@VPSafeObject@@@@SAPBDXZ @6758 NONAME ?Class@?$PList@VPSocket@@@@SAPBDXZ @5072 NONAME ?Class@?$PList@VPString@@@@SAPBDXZ @5073 NONAME ?Class@?$PList@VPThread@@@@SAPBDXZ @5074 NONAME ?Class@?$PList@VPTimer@@@@SAPBDXZ @5075 NONAME ?Class@?$POrdinalDictionary@VPString@@@@SAPBDXZ @5076 NONAME ?Class@?$PSet@VPString@@@@SAPBDXZ @5077 NONAME ?Class@?$PSortedList@VPString@@@@SAPBDXZ @5078 NONAME ?Class@?$PStringDictionary@VPOrdinalKey@@@@SAPBDXZ @5079 NONAME ?Class@?$PStringDictionary@VPString@@@@SAPBDXZ @5080 NONAME ?Class@CMCDLL@PMail@@SAPBDXZ @5081 NONAME ?Class@HouseKeepingThread@PProcess@@SAPBDXZ @5082 NONAME ?Class@InterfaceEntry@PIPSocket@@SAPBDXZ @5083 NONAME ?Class@MAPIDLL@PMail@@SAPBDXZ @5084 NONAME ?Class@Nest@PReadWriteMutex@@SAPBDXZ @5085 NONAME ?Class@PAbstractArray@@SAPBDXZ @5086 NONAME ?Class@PAbstractDictionary@@SAPBDXZ @5087 NONAME ?Class@PAbstractList@@SAPBDXZ @5088 NONAME ?Class@PAbstractSet@@SAPBDXZ @5089 NONAME ?Class@PAbstractSortedList@@SAPBDXZ @5090 NONAME ?Class@PArgList@@SAPBDXZ @5091 NONAME ?Class@PArrayObjects@@SAPBDXZ @5092 NONAME ?Class@PBitArray@@SAPBDXZ @5093 NONAME ?Class@PBYTEArray@@SAPBDXZ @5094 NONAME ?Class@PCaselessString@@SAPBDXZ @5095 NONAME ?Class@PChannel@@SAPBDXZ @5096 NONAME ?Class@PCharArray@@SAPBDXZ @5097 NONAME ?Class@PCollection@@SAPBDXZ @5098 NONAME ?Class@PColourConverter@@SAPBDXZ @5099 NONAME ?Class@PColourConverterRegistration@@SAPBDXZ @5100 NONAME ?Class@PCondMutex@@SAPBDXZ @5101 NONAME ?Class@PConfig@@SAPBDXZ @5102 NONAME ?Class@PConfigArgs@@SAPBDXZ @5103 NONAME ?Class@PConsoleChannel@@SAPBDXZ @5104 NONAME ?Class@PContainer@@SAPBDXZ @5105 NONAME ?Class@PCriticalSection@@SAPBDXZ @5549 NONAME ?Class@PDirectory@@SAPBDXZ @5106 NONAME ?Class@PDynaLink@@SAPBDXZ @5107 NONAME ?Class@PEthSocket@@SAPBDXZ @5108 NONAME ?Class@PFile@@SAPBDXZ @5109 NONAME ?Class@PFileInfo@@SAPBDXZ @5110 NONAME ?Class@PFilePath@@SAPBDXZ @5111 NONAME ?Class@PHashTable@@SAPBDXZ @5112 NONAME ?Class@PICMPDLL@@SAPBDXZ @5113 NONAME ?Class@PICMPSocket@@SAPBDXZ @5114 NONAME ?Class@PImageDLL@@SAPBDXZ @5115 NONAME ?Class@PIndirectChannel@@SAPBDXZ @5116 NONAME ?Class@PIntCondMutex@@SAPBDXZ @5117 NONAME ?Class@PIPCacheData@@SAPBDXZ @5118 NONAME ?Class@PIPCacheKey@@SAPBDXZ @5119 NONAME ?Class@PIPDatagramSocket@@SAPBDXZ @5120 NONAME ?Class@PIPSocket@@SAPBDXZ @5121 NONAME ?Class@PIPXSocket@@SAPBDXZ @5122 NONAME ?Class@PluginLoaderStartup@@SAPBDXZ @6058 NONAME ?Class@PMail@@SAPBDXZ @5123 NONAME ?Class@PNotifier@@SAPBDXZ @5125 NONAME ?Class@PNotifierFunction@@SAPBDXZ @5126 NONAME ?Class@PObject@@SAPBDXZ @5127 NONAME ?Class@POrdinalKey@@SAPBDXZ @5128 NONAME ?Class@POrdinalToString@@SAPBDXZ @5129 NONAME ?Class@PPipeChannel@@SAPBDXZ @5130 NONAME ?Class@PPluginManager@@SAPBDXZ @5131 NONAME ?Class@PPointer@@SAPBDXZ @5664 NONAME ?Class@PProcess@@SAPBDXZ @5132 NONAME ?Class@PProcessStartup@@SAPBDXZ @6059 NONAME ?Class@PQoS@@SAPBDXZ @5133 NONAME ?Class@PRASDLL@@SAPBDXZ @5134 NONAME ?Class@PReadWriteMutex@@SAPBDXZ @5135 NONAME ?Class@PRegularExpression@@SAPBDXZ @5136 NONAME ?Class@PRemoteConnection@@SAPBDXZ @5137 NONAME ?Class@PSafeCollection@@SAPBDXZ @5138 NONAME ?Class@PSafeObject@@SAPBDXZ @5139 NONAME ?Class@PSafePtrBase@@SAPBDXZ @5140 NONAME ?Class@PSemaphore@@SAPBDXZ @5141 NONAME ?Class@PSerialChannel@@SAPBDXZ @5142 NONAME ?Class@PServiceProcess@@SAPBDXZ @5143 NONAME ?Class@PSimpleThread@@SAPBDXZ @5144 NONAME ?Class@PSmartObject@@SAPBDXZ @5145 NONAME ?Class@PSmartPointer@@SAPBDXZ @5146 NONAME ?Class@PSmartPtrInspector@@SAPBDXZ @5665 NONAME ?Class@PSocket@@SAPBDXZ @5147 NONAME ?Class@PSortedStringList@@SAPBDXZ @5148 NONAME ?Class@PSound@@SAPBDXZ @5149 NONAME ?Class@PSoundChannel@@SAPBDXZ @5150 NONAME ?Class@PSPXSocket@@SAPBDXZ @5151 NONAME ?Class@PStandardColourConverter@@SAPBDXZ @5152 NONAME ?Class@PString@@SAPBDXZ @5153 NONAME ?Class@PStringArray@@SAPBDXZ @5154 NONAME ?Class@PStringList@@SAPBDXZ @5155 NONAME ?Class@PStringSet@@SAPBDXZ @5156 NONAME ?Class@PStringStream@@SAPBDXZ @5157 NONAME ?Class@PStringToOrdinal@@SAPBDXZ @5158 NONAME ?Class@PStringToString@@SAPBDXZ @5159 NONAME ?Class@PStructuredFile@@SAPBDXZ @5160 NONAME ?Class@PSyncPoint@@SAPBDXZ @5161 NONAME ?Class@PSystemLog@@SAPBDXZ @5162 NONAME ?Class@PTCPSocket@@SAPBDXZ @5163 NONAME ?Class@PTextFile@@SAPBDXZ @5164 NONAME ?Class@PThread@@SAPBDXZ @5165 NONAME ?Class@PTime@@SAPBDXZ @5166 NONAME ?Class@PTimedMutex@@SAPBDXZ @16271 NONAME ?Class@PTimeInterval@@SAPBDXZ @5167 NONAME ?Class@PTimer@@SAPBDXZ @5168 NONAME ?Class@PTimerList@@SAPBDXZ @5169 NONAME ?Class@PUDPSocket@@SAPBDXZ @5170 NONAME ?Class@PVideoChannel@@SAPBDXZ @5171 NONAME ?Class@PVideoDevice@@SAPBDXZ @5172 NONAME ?Class@PVideoInputDevice@@SAPBDXZ @5173 NONAME ?Class@PVideoInputDevice_FakeVideo@@SAPBDXZ @5174 NONAME ?Class@PVideoInputDevice_VideoForWindows@@SAPBDXZ @5175 NONAME ?Class@PVideoOutputDevice@@SAPBDXZ @5177 NONAME ?Class@PVideoOutputDeviceRGB@@SAPBDXZ @16150 NONAME ?Class@PVideoOutputDevice_NULLOutput@@SAPBDXZ @5178 NONAME ?Class@PVideoOutputDevice_Window@@SAPBDXZ @16151 NONAME ?Class@PWaveBuffer@@SAPBDXZ @5179 NONAME ?Class@PWaveFormat@@SAPBDXZ @5180 NONAME ?Class@PWin32PacketBuffer@@SAPBDXZ @5181 NONAME ?Class@PWin32SnmpLibrary@@SAPBDXZ @5182 NONAME ?Class@PWinQoS@@SAPBDXZ @5183 NONAME ?Class@PWinSock@@SAPBDXZ @5184 NONAME ?Class@RouteEntry@PIPSocket@@SAPBDXZ @5185 NONAME ?Class@SelectList@PSocket@@SAPBDXZ @5186 NONAME ?Class@Table@PHashTable@@SAPBDXZ @5187 NONAME ?Class@WinSNMPLoader@@SAPBDXZ @6418 NONAME ?Cleanup@PNotifierList@@AAEXXZ @5666 NONAME ?clear@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEXXZ @6600 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEXXZ @6060 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7070 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6601 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6602 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7071 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7072 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7073 NONAME ?ClearBreak@PSerialChannel@@QAEXXZ @937 NONAME ?ClearDTR@PSerialChannel@@QAEXXZ @938 NONAME ?ClearNameCache@PIPSocket@@SAXXZ @939 NONAME ?ClearOptions@PTrace@@SAXI@Z @940 NONAME ?ClearRTS@PSerialChannel@@QAEXXZ @941 NONAME ?Clone@?$PArray@VPString@@@@UBEPAVPObject@@XZ @942 NONAME ?Clone@?$PArray@VPWaveBuffer@@@@UBEPAVPObject@@XZ @943 NONAME ?Clone@?$PArray@VPWin32PacketBuffer@@@@UBEPAVPObject@@XZ @944 NONAME ?Clone@?$PBaseArray@D@@UBEPAVPObject@@XZ @945 NONAME ?Clone@?$PBaseArray@E@@UBEPAVPObject@@XZ @946 NONAME ?Clone@?$PBaseArray@F@@UBEPAVPObject@@XZ @947 NONAME ?Clone@?$PBaseArray@G@@UBEPAVPObject@@XZ @948 NONAME ?Clone@?$PBaseArray@H@@UBEPAVPObject@@XZ @949 NONAME ?Clone@?$PBaseArray@I@@UBEPAVPObject@@XZ @950 NONAME ?Clone@?$PBaseArray@J@@UBEPAVPObject@@XZ @951 NONAME ?Clone@?$PBaseArray@K@@UBEPAVPObject@@XZ @952 NONAME ?Clone@?$PBaseArray@PAVElement@PHashTable@@@@UBEPAVPObject@@XZ @5188 NONAME ?Clone@?$PBaseArray@PAVPObject@@@@UBEPAVPObject@@XZ @953 NONAME ?Clone@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPObject@@XZ @954 NONAME ?Clone@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPObject@@XZ @955 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVPObject@@XZ @956 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPObject@@XZ @5667 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPObject@@XZ @957 NONAME ?Clone@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPObject@@XZ @5585 NONAME ?Clone@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPAVPObject@@XZ @7353 NONAME ?Clone@?$PList@VPDynaLink@@@@UBEPAVPObject@@XZ @3039 NONAME ?Clone@?$PList@VPNotifier@@@@UBEPAVPObject@@XZ @3040 NONAME ?Clone@?$PList@VPPluginService@@@@UBEPAVPObject@@XZ @2703 NONAME ?Clone@?$PList@VPSafeObject@@@@UBEPAVPObject@@XZ @6759 NONAME ?Clone@?$PList@VPSocket@@@@UBEPAVPObject@@XZ @958 NONAME ?Clone@?$PList@VPString@@@@UBEPAVPObject@@XZ @959 NONAME ?Clone@?$PList@VPThread@@@@UBEPAVPObject@@XZ @960 NONAME ?Clone@?$PList@VPTimer@@@@UBEPAVPObject@@XZ @961 NONAME ?Clone@?$POrdinalDictionary@VPString@@@@UBEPAVPObject@@XZ @5189 NONAME ?Clone@?$PSet@VPString@@@@UBEPAVPObject@@XZ @962 NONAME ?Clone@?$PSortedList@VPString@@@@UBEPAVPObject@@XZ @5190 NONAME ?Clone@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPObject@@XZ @5191 NONAME ?Clone@?$PStringDictionary@VPString@@@@UBEPAVPObject@@XZ @3011 NONAME ?Clone@PBitArray@@UBEPAVPObject@@XZ @963 NONAME ?Clone@PBYTEArray@@UBEPAVPObject@@XZ @964 NONAME ?Clone@PCaselessString@@UBEPAVPObject@@XZ @965 NONAME ?Clone@PCharArray@@UBEPAVPObject@@XZ @966 NONAME ?Clone@PIPCacheKey@@UBEPAVPObject@@XZ @967 NONAME ?Clone@PObject@@UBEPAV1@XZ @968 NONAME ?Clone@POrdinalKey@@UBEPAVPObject@@XZ @969 NONAME ?Clone@POrdinalToString@@UBEPAVPObject@@XZ @970 NONAME ?Clone@PSortedStringList@@UBEPAVPObject@@XZ @971 NONAME ?Clone@PString@@UBEPAVPObject@@XZ @972 NONAME ?Clone@PStringArray@@UBEPAVPObject@@XZ @973 NONAME ?Clone@PStringList@@UBEPAVPObject@@XZ @974 NONAME ?Clone@PStringSet@@UBEPAVPObject@@XZ @975 NONAME ?Clone@PStringToOrdinal@@UBEPAVPObject@@XZ @976 NONAME ?Clone@PStringToString@@UBEPAVPObject@@XZ @977 NONAME ?Clone@PTCPSocket@@UBEPAVPObject@@XZ @978 NONAME ?Clone@PTime@@UBEPAVPObject@@XZ @979 NONAME ?Clone@PTimeInterval@@UBEPAVPObject@@XZ @980 NONAME ?Clone@Table@PHashTable@@UBEPAVPObject@@XZ @981 NONAME ?CloneContents@PAbstractArray@@IAEXPBV1@@Z @982 NONAME ?CloneContents@PAbstractList@@IAEXPBV1@@Z @983 NONAME ?CloneContents@PAbstractSet@@IAEXPBV1@@Z @984 NONAME ?CloneContents@PAbstractSortedList@@IAEXPBV1@@Z @985 NONAME ?CloneContents@PArrayObjects@@IAEXPBV1@@Z @986 NONAME ?CloneContents@PContainer@@IAEXPBV1@@Z @5485 NONAME ?CloneContents@PDirectory@@IAEXPBV1@@Z @987 NONAME ?CloneContents@PHashTable@@IAEXPBV1@@Z @988 NONAME ?Close@PChannel@@UAEHXZ @989 NONAME ?Close@PConsoleChannel@@UAEHXZ @990 NONAME ?Close@PDirectory@@UAEXXZ @7280 NONAME ?Close@PDynaLink@@UAEXXZ @992 NONAME ?Close@PEthSocket@@UAEHXZ @993 NONAME ?Close@PFile@@UAEHXZ @995 NONAME ?Close@PICMPSocket@@UAEHXZ @996 NONAME ?Close@PIndirectChannel@@UAEHXZ @997 NONAME ?Close@PMultiMediaFile@@QAEHI@Z @998 NONAME ?Close@PPipeChannel@@UAEHXZ @999 NONAME ?Close@PRemoteConnection@@QAEXXZ @1000 NONAME ?Close@PSerialChannel@@UAEHXZ @1001 NONAME ?Close@PSocket@@UAEHXZ @1002 NONAME ?Close@PSoundChannelWin32@@UAEHXZ @2704 NONAME ?Close@PVideoChannel@@UAEHXZ @1004 NONAME ?Close@PVideoDevice@@UAEHXZ @1005 NONAME ?Close@PVideoInputDevice@@UAEHXZ @1006 NONAME ?Close@PVideoInputDevice_FakeVideo@@UAEHXZ @2848 NONAME ?Close@PVideoInputDevice_VideoForWindows@@UAEHXZ @2705 NONAME ?Close@PVideoOutputDevice@@UAEHXZ @2706 NONAME ?Close@PVideoOutputDevice_NULLOutput@@UAEHXZ @2849 NONAME ?Close@PVideoOutputDevice_Window@@UAEHXZ @16152 NONAME ?Close@PWin32PacketDriver@@QAEXXZ @1008 NONAME ?CloseVideoPlayer@PVideoChannel@@UAEXXZ @1009 NONAME ?CloseVideoReader@PVideoChannel@@UAEXXZ @1010 NONAME ?collate@?$_Locbase@H@std@@2HB @5192 NONAME ?Compare@Address@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1011 NONAME ?Compare@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1012 NONAME ?Compare@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1013 NONAME ?Compare@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1014 NONAME ?Compare@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1015 NONAME ?Compare@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1016 NONAME ?Compare@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1017 NONAME ?Compare@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1018 NONAME ?Compare@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1019 NONAME ?Compare@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1020 NONAME ?Compare@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1021 NONAME ?Compare@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1022 NONAME ?Compare@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1023 NONAME ?Compare@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1024 NONAME ?Compare@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1025 NONAME ?Compare@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1026 NONAME ?Compare@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1027 NONAME ?Compare@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1028 NONAME ?Compare@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1029 NONAME ?CompareObjectMemoryDirect@?$PArray@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1030 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWaveBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1031 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWin32PacketBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1032 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@D@@UBE?AW4Comparison@PObject@@ABV3@@Z @1033 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@E@@UBE?AW4Comparison@PObject@@ABV3@@Z @1034 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@F@@UBE?AW4Comparison@PObject@@ABV3@@Z @1035 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@G@@UBE?AW4Comparison@PObject@@ABV3@@Z @1036 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@H@@UBE?AW4Comparison@PObject@@ABV3@@Z @1037 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@I@@UBE?AW4Comparison@PObject@@ABV3@@Z @1038 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@J@@UBE?AW4Comparison@PObject@@ABV3@@Z @1039 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@K@@UBE?AW4Comparison@PObject@@ABV3@@Z @1040 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVElement@PHashTable@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5193 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVPObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1041 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1042 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1043 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1044 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5668 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1045 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPString@@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5586 NONAME ?CompareObjectMemoryDirect@?$PList@VInterfaceEntry@PIPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @7354 NONAME ?CompareObjectMemoryDirect@?$PList@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3041 NONAME ?CompareObjectMemoryDirect@?$PList@VPNotifier@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3042 NONAME ?CompareObjectMemoryDirect@?$PList@VPPluginService@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @2708 NONAME ?CompareObjectMemoryDirect@?$PList@VPSafeObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @6760 NONAME ?CompareObjectMemoryDirect@?$PList@VPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1046 NONAME ?CompareObjectMemoryDirect@?$PList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1047 NONAME ?CompareObjectMemoryDirect@?$PList@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1048 NONAME ?CompareObjectMemoryDirect@?$PList@VPTimer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1049 NONAME ?CompareObjectMemoryDirect@?$POrdinalDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5194 NONAME ?CompareObjectMemoryDirect@?$PSet@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1050 NONAME ?CompareObjectMemoryDirect@?$PSortedList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5195 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPOrdinalKey@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5196 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3012 NONAME ?CompareObjectMemoryDirect@CMCDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1051 NONAME ?CompareObjectMemoryDirect@HouseKeepingThread@PProcess@@UBE?AW4Comparison@PObject@@ABV4@@Z @1052 NONAME ?CompareObjectMemoryDirect@InterfaceEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1053 NONAME ?CompareObjectMemoryDirect@MAPIDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1054 NONAME ?CompareObjectMemoryDirect@Nest@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV4@@Z @1055 NONAME ?CompareObjectMemoryDirect@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1056 NONAME ?CompareObjectMemoryDirect@PAbstractDictionary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1057 NONAME ?CompareObjectMemoryDirect@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1058 NONAME ?CompareObjectMemoryDirect@PAbstractSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1059 NONAME ?CompareObjectMemoryDirect@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1060 NONAME ?CompareObjectMemoryDirect@PArgList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1061 NONAME ?CompareObjectMemoryDirect@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1062 NONAME ?CompareObjectMemoryDirect@PBitArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1063 NONAME ?CompareObjectMemoryDirect@PBYTEArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1064 NONAME ?CompareObjectMemoryDirect@PCaselessString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1065 NONAME ?CompareObjectMemoryDirect@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1066 NONAME ?CompareObjectMemoryDirect@PCharArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1067 NONAME ?CompareObjectMemoryDirect@PCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1068 NONAME ?CompareObjectMemoryDirect@PColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1069 NONAME ?CompareObjectMemoryDirect@PColourConverterRegistration@@UBE?AW4Comparison@PObject@@ABV3@@Z @1070 NONAME ?CompareObjectMemoryDirect@PCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @5197 NONAME ?CompareObjectMemoryDirect@PConfig@@UBE?AW4Comparison@PObject@@ABV3@@Z @1071 NONAME ?CompareObjectMemoryDirect@PConfigArgs@@UBE?AW4Comparison@PObject@@ABV3@@Z @1072 NONAME ?CompareObjectMemoryDirect@PConsoleChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1073 NONAME ?CompareObjectMemoryDirect@PContainer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1074 NONAME ?CompareObjectMemoryDirect@PCriticalSection@@UBE?AW4Comparison@PObject@@ABV3@@Z @5550 NONAME ?CompareObjectMemoryDirect@PDirectory@@UBE?AW4Comparison@PObject@@ABV3@@Z @1075 NONAME ?CompareObjectMemoryDirect@PDynaLink@@UBE?AW4Comparison@PObject@@ABV3@@Z @1076 NONAME ?CompareObjectMemoryDirect@PEthSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1077 NONAME ?CompareObjectMemoryDirect@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1079 NONAME ?CompareObjectMemoryDirect@PFileInfo@@UBE?AW4Comparison@PObject@@ABV3@@Z @1080 NONAME ?CompareObjectMemoryDirect@PFilePath@@UBE?AW4Comparison@PObject@@ABV3@@Z @1081 NONAME ?CompareObjectMemoryDirect@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1082 NONAME ?CompareObjectMemoryDirect@PICMPDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1083 NONAME ?CompareObjectMemoryDirect@PICMPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1084 NONAME ?CompareObjectMemoryDirect@PImageDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1085 NONAME ?CompareObjectMemoryDirect@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1086 NONAME ?CompareObjectMemoryDirect@PIntCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1087 NONAME ?CompareObjectMemoryDirect@PIPCacheData@@UBE?AW4Comparison@PObject@@ABV3@@Z @1088 NONAME ?CompareObjectMemoryDirect@PIPCacheKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1089 NONAME ?CompareObjectMemoryDirect@PIPDatagramSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1090 NONAME ?CompareObjectMemoryDirect@PIPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1091 NONAME ?CompareObjectMemoryDirect@PIPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1092 NONAME ?CompareObjectMemoryDirect@PluginLoaderStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @6063 NONAME ?CompareObjectMemoryDirect@PMail@@UBE?AW4Comparison@PObject@@ABV3@@Z @1093 NONAME ?CompareObjectMemoryDirect@PNotifier@@UBE?AW4Comparison@PObject@@ABV3@@Z @1095 NONAME ?CompareObjectMemoryDirect@PNotifierFunction@@UBE?AW4Comparison@PObject@@ABV3@@Z @1096 NONAME ?CompareObjectMemoryDirect@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1097 NONAME ?CompareObjectMemoryDirect@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1098 NONAME ?CompareObjectMemoryDirect@POrdinalToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1099 NONAME ?CompareObjectMemoryDirect@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1100 NONAME ?CompareObjectMemoryDirect@PPluginManager@@UBE?AW4Comparison@PObject@@ABV3@@Z @2709 NONAME ?CompareObjectMemoryDirect@PPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @5669 NONAME ?CompareObjectMemoryDirect@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1101 NONAME ?CompareObjectMemoryDirect@PProcessStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @6064 NONAME ?CompareObjectMemoryDirect@PQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @2657 NONAME ?CompareObjectMemoryDirect@PRASDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1102 NONAME ?CompareObjectMemoryDirect@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1103 NONAME ?CompareObjectMemoryDirect@PRegularExpression@@UBE?AW4Comparison@PObject@@ABV3@@Z @1104 NONAME ?CompareObjectMemoryDirect@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1105 NONAME ?CompareObjectMemoryDirect@PSafeCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1106 NONAME ?CompareObjectMemoryDirect@PSafeObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @1107 NONAME ?CompareObjectMemoryDirect@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1108 NONAME ?CompareObjectMemoryDirect@PSemaphore@@UBE?AW4Comparison@PObject@@ABV3@@Z @1109 NONAME ?CompareObjectMemoryDirect@PSerialChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1110 NONAME ?CompareObjectMemoryDirect@PServiceProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1111 NONAME ?CompareObjectMemoryDirect@PSimpleThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1112 NONAME ?CompareObjectMemoryDirect@PSmartObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @5198 NONAME ?CompareObjectMemoryDirect@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1113 NONAME ?CompareObjectMemoryDirect@PSmartPtrInspector@@UBE?AW4Comparison@PObject@@ABV3@@Z @5670 NONAME ?CompareObjectMemoryDirect@PSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1114 NONAME ?CompareObjectMemoryDirect@PSortedStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1115 NONAME ?CompareObjectMemoryDirect@PSound@@UBE?AW4Comparison@PObject@@ABV3@@Z @1116 NONAME ?CompareObjectMemoryDirect@PSoundChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1117 NONAME ?CompareObjectMemoryDirect@PSPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1118 NONAME ?CompareObjectMemoryDirect@PStandardColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1119 NONAME ?CompareObjectMemoryDirect@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1120 NONAME ?CompareObjectMemoryDirect@PStringArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1121 NONAME ?CompareObjectMemoryDirect@PStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1122 NONAME ?CompareObjectMemoryDirect@PStringSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1123 NONAME ?CompareObjectMemoryDirect@PStringStream@@UBE?AW4Comparison@PObject@@ABV3@@Z @1124 NONAME ?CompareObjectMemoryDirect@PStringToOrdinal@@UBE?AW4Comparison@PObject@@ABV3@@Z @1125 NONAME ?CompareObjectMemoryDirect@PStringToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1126 NONAME ?CompareObjectMemoryDirect@PStructuredFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1127 NONAME ?CompareObjectMemoryDirect@PSyncPoint@@UBE?AW4Comparison@PObject@@ABV3@@Z @1128 NONAME ?CompareObjectMemoryDirect@PSystemLog@@UBE?AW4Comparison@PObject@@ABV3@@Z @1129 NONAME ?CompareObjectMemoryDirect@PTCPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1130 NONAME ?CompareObjectMemoryDirect@PTextFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1131 NONAME ?CompareObjectMemoryDirect@PThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1132 NONAME ?CompareObjectMemoryDirect@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1133 NONAME ?CompareObjectMemoryDirect@PTimedMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @16272 NONAME ?CompareObjectMemoryDirect@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1134 NONAME ?CompareObjectMemoryDirect@PTimer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1135 NONAME ?CompareObjectMemoryDirect@PTimerList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1136 NONAME ?CompareObjectMemoryDirect@PUDPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1137 NONAME ?CompareObjectMemoryDirect@PVideoChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1138 NONAME ?CompareObjectMemoryDirect@PVideoDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1139 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1140 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_FakeVideo@@UBE?AW4Comparison@PObject@@ABV3@@Z @2850 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_VideoForWindows@@UBE?AW4Comparison@PObject@@ABV3@@Z @2710 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1142 NONAME ?CompareObjectMemoryDirect@PVideoOutputDeviceRGB@@UBE?AW4Comparison@PObject@@ABV3@@Z @16153 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_NULLOutput@@UBE?AW4Comparison@PObject@@ABV3@@Z @2851 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_Window@@UBE?AW4Comparison@PObject@@ABV3@@Z @16154 NONAME ?CompareObjectMemoryDirect@PWaveBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1146 NONAME ?CompareObjectMemoryDirect@PWaveFormat@@UBE?AW4Comparison@PObject@@ABV3@@Z @1147 NONAME ?CompareObjectMemoryDirect@PWin32PacketBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1148 NONAME ?CompareObjectMemoryDirect@PWin32SnmpLibrary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1149 NONAME ?CompareObjectMemoryDirect@PWinQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @2930 NONAME ?CompareObjectMemoryDirect@PWinSock@@UBE?AW4Comparison@PObject@@ABV3@@Z @1150 NONAME ?CompareObjectMemoryDirect@RouteEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1151 NONAME ?CompareObjectMemoryDirect@SelectList@PSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1152 NONAME ?CompareObjectMemoryDirect@Table@PHashTable@@UBE?AW4Comparison@PObject@@ABV4@@Z @1153 NONAME ?CompareObjectMemoryDirect@WinSNMPLoader@@UBE?AW4Comparison@PObject@@ABV3@@Z @6419 NONAME ?Compile@PRegularExpression@@QAEHABVPString@@H@Z @1154 NONAME ?Compile@PRegularExpression@@QAEHPBDH@Z @1155 NONAME ?CompleteIO@PWin32PacketDriver@@QAEHAAKAAVPWin32Overlapped@@@Z @1156 NONAME ?Concatenate@PAbstractArray@@QAEHABV1@@Z @1157 NONAME ?Concatenate@PBitArray@@QAEHABV1@@Z @1158 NONAME ?Condition@PIntCondMutex@@UAEHXZ @1159 NONAME ?Connect@PEthSocket@@UAEHABVPString@@@Z @1160 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@0@Z @1161 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@@Z @1162 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@G0@Z @1163 NONAME ?Connect@PIPSocket@@UAEHABVPString@@@Z @1164 NONAME ?Connect@PIPSocket@@UAEHGABVAddress@1@@Z @1165 NONAME ?Connect@PIPXSocket@@UAEHABVAddress@1@@Z @1166 NONAME ?Connect@PIPXSocket@@UAEHABVPString@@@Z @1167 NONAME ?Connect@PSocket@@UAEHABVPString@@@Z @1168 NONAME ?Connect@PUDPSocket@@UAEHABVPString@@@Z @1169 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@ABQAU342@@Z @6603 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@ABQAU342@@Z @6065 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7074 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @6604 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @6605 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7075 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7076 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7077 NONAME ?construct@?$allocator@VPString@@@std@@QAEXPAVPString@@ABV3@@Z @6068 NONAME ?Construct@PChannel@@AAEXXZ @1170 NONAME ?Construct@PConfig@@AAEXABVPFilePath@@@Z @1171 NONAME ?Construct@PConfig@@AAEXW4Source@1@ABVPString@@1@Z @1172 NONAME ?Construct@PDirectory@@IAEXXZ @1173 NONAME ?Construct@PMail@@IAEXXZ @1174 NONAME ?Construct@PProcess@@AAEXXZ @1175 NONAME ?Construct@PRemoteConnection@@AAEXXZ @1176 NONAME ?Construct@PSerialChannel@@AAEXXZ @1177 NONAME ?Construct@PSoundChannelWin32@@QAEXXZ @2711 NONAME ?Construct@PTimer@@AAEXXZ @1179 NONAME ?Construct@P_fd_set@@AAEXXZ @1180 NONAME ?Contains@?$PDictionary@VPOrdinalKey@@VPPointer@@@@QBEHABVPOrdinalKey@@@Z @5671 NONAME ?Contains@?$PStringDictionary@VPString@@@@QBEHABVPString@@@Z @16155 NONAME ?Control@NT_ServiceManager@@AAEHPAVPServiceProcess@@K@Z @1181 NONAME ?ControlEntry@PServiceProcess@@AAEXK@Z @1182 NONAME ?controlledLoadDSCP@PQoS@@2DA @2659 NONAME ?Convert@PSynonymColour@@UAEHPBEPAEPAH@Z @1183 NONAME ?Convert@P_BGR24_RGB24@@UAEHPBEPAEPAH@Z @16156 NONAME ?Convert@P_BGR24_RGB32@@UAEHPBEPAEPAH@Z @16157 NONAME ?Convert@P_BGR24_YUV420P@@UAEHPBEPAEPAH@Z @2852 NONAME ?Convert@P_BGR32_RGB24@@UAEHPBEPAEPAH@Z @16158 NONAME ?Convert@P_BGR32_RGB32@@UAEHPBEPAEPAH@Z @16159 NONAME ?Convert@P_BGR32_YUV420P@@UAEHPBEPAEPAH@Z @2853 NONAME ?Convert@P_Grey_YUV420P@@UAEHPBEPAEPAH@Z @1185 NONAME ?Convert@P_RGB24_BGR24@@UAEHPBEPAEPAH@Z @16160 NONAME ?Convert@P_RGB24_BGR32@@UAEHPBEPAEPAH@Z @16161 NONAME ?Convert@P_RGB24_RGB32@@UAEHPBEPAEPAH@Z @1187 NONAME ?Convert@P_RGB24_YUV420P@@UAEHPBEPAEPAH@Z @1188 NONAME ?Convert@P_RGB32_BGR24@@UAEHPBEPAEPAH@Z @16162 NONAME ?Convert@P_RGB32_BGR32@@UAEHPBEPAEPAH@Z @16163 NONAME ?Convert@P_RGB32_RGB24@@UAEHPBEPAEPAH@Z @1190 NONAME ?Convert@P_RGB32_YUV420P@@UAEHPBEPAEPAH@Z @1191 NONAME ?Convert@P_SBGGR8_RGB24@@UAEHPBEPAEPAH@Z @7303 NONAME ?Convert@P_SBGGR8_YUV420P@@UAEHPBEPAEPAH@Z @7333 NONAME ?Convert@P_UYV444_YUV420P@@UAEHPBEPAEPAH@Z @1192 NONAME ?Convert@P_UYVY422_YUV420P@@UAEHPBEPAEPAH@Z @1193 NONAME ?Convert@P_YUV411P_YUV420P@@UAEHPBEPAEPAH@Z @1194 NONAME ?Convert@P_YUV420P_BGR24@@UAEHPBEPAEPAH@Z @1195 NONAME ?Convert@P_YUV420P_BGR32@@UAEHPBEPAEPAH@Z @2854 NONAME ?Convert@P_YUV420P_RGB24@@UAEHPBEPAEPAH@Z @1197 NONAME ?Convert@P_YUV420P_RGB32@@UAEHPBEPAEPAH@Z @1199 NONAME ?Convert@P_YUV420P_YUV411P@@UAEHPBEPAEPAH@Z @1201 NONAME ?Convert@P_YUV422_YUV420P@@UAEHPBEPAEPAH@Z @1202 NONAME ?Convert@P_YUV422_YUV422@@UAEHPBEPAEPAH@Z @1203 NONAME ?ConvertInPlace@PColourConverter@@UAEHPAEPAHH@Z @1204 NONAME ?ConvertOSError@PChannel@@MAEHHW4ErrorGroup@1@@Z @1205 NONAME ?ConvertOSError@PChannel@@SAHHAAW4Errors@1@AAH@Z @1206 NONAME ?ConvertOSError@PSocket@@KAHHAAW4Errors@PChannel@@AAH@Z @1207 NONAME ?ConvertOSError@PSocket@@MAEHHW4ErrorGroup@PChannel@@@Z @1208 NONAME ?Copy@PFile@@QAEHABVPFilePath@@H@Z @5486 NONAME ?Copy@PFile@@SAHABVPFilePath@@0H@Z @1209 NONAME ?CopyContents@PAbstractArray@@IAEXABV1@@Z @1210 NONAME ?CopyContents@PAbstractList@@IAEXABV1@@Z @1211 NONAME ?CopyContents@PAbstractSet@@IAEXABV1@@Z @1212 NONAME ?CopyContents@PAbstractSortedList@@IAEXABV1@@Z @1213 NONAME ?CopyContents@PArrayObjects@@IAEXABV1@@Z @1214 NONAME ?CopyContents@PContainer@@IAEXABV1@@Z @5487 NONAME ?CopyContents@PDirectory@@IAEXABV1@@Z @1215 NONAME ?CopyContents@PHashTable@@IAEXABV1@@Z @1216 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7078 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7079 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7080 NONAME ?Create@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7081 NONAME ?Create@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7082 NONAME ?Create@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1217 NONAME ?Create@PColourConverter@@SAPAV1@ABVPString@@0II@Z @1218 NONAME ?Create@PDirectory@@QBEHH@Z @5488 NONAME ?Create@PDirectory@@SAHABVPString@@H@Z @5489 NONAME ?Create@PSynonymColourRegistration@@UBEPAVPColourConverter@@II@Z @1219 NONAME ?Create@PThread@@SAPAV1@ABVPNotifier@@HW4AutoDeleteFlag@1@W4Priority@1@ABVPString@@H@Z @1220 NONAME ?Create@PWin32PacketDriver@@SAPAV1@XZ @1221 NONAME ?Create@P_BGR24_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @16164 NONAME ?Create@P_BGR24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @16165 NONAME ?Create@P_BGR24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @2855 NONAME ?Create@P_BGR32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @16166 NONAME ?Create@P_BGR32_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @16167 NONAME ?Create@P_BGR32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @2856 NONAME ?Create@P_Grey_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1223 NONAME ?Create@P_RGB24_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @16168 NONAME ?Create@P_RGB24_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @16169 NONAME ?Create@P_RGB24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1225 NONAME ?Create@P_RGB24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1226 NONAME ?Create@P_RGB32_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @16170 NONAME ?Create@P_RGB32_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @16171 NONAME ?Create@P_RGB32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1228 NONAME ?Create@P_RGB32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1229 NONAME ?Create@P_SBGGR8_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @7304 NONAME ?Create@P_SBGGR8_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @7334 NONAME ?Create@P_UYV444_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1230 NONAME ?Create@P_UYVY422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1231 NONAME ?Create@P_YUV411P_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1232 NONAME ?Create@P_YUV420P_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @1234 NONAME ?Create@P_YUV420P_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @2857 NONAME ?Create@P_YUV420P_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1236 NONAME ?Create@P_YUV420P_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1238 NONAME ?Create@P_YUV420P_YUV411P_Registration@@UBEPAVPColourConverter@@II@Z @1239 NONAME ?Create@P_YUV422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1240 NONAME ?Create@P_YUV422_YUV422_Registration@@UBEPAVPColourConverter@@II@Z @1241 NONAME ?Create@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1242 NONAME ?Create@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @7083 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @7084 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @7085 NONAME ?Create@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7086 NONAME ?Create@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7087 NONAME ?Create@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @7088 NONAME ?Create@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @7089 NONAME ?Create@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @7090 NONAME ?CreateChannel@PSoundChannel@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @2712 NONAME ?CreateChannelByName@PSoundChannel@@SAPAV1@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @16172 NONAME ?CreateChunk@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @1243 NONAME ?CreateControlWindow@PServiceProcess@@AAEHH@Z @1244 NONAME ?CreateDevice@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @2713 NONAME ?CreateDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @2858 NONAME ?CreateDeviceByName@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3013 NONAME ?CreateDeviceByName@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @16173 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPSoundChannel@@@@UAEXABVPString@@@Z @7091 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAEXABVPString@@@Z @7092 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAEXABVPString@@@Z @7093 NONAME ?CreateFullPath@PDirectory@@SA?AVPString@@ABV2@H@Z @1245 NONAME ?CreateInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7094 NONAME ?CreateInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@SAPAVPPluginModuleManager@@ABVPString@@@Z @6609 NONAME ?CreateInstance@?$PFactory@VPProcessStartup@@VPString@@@@SAPAVPProcessStartup@@ABVPString@@@Z @6610 NONAME ?CreateInstance@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBEPAVPObject@@H@Z @16174 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBEPAVPObject@@H@Z @16175 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBEPAVPObject@@H@Z @16176 NONAME ?CreateInstance@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBEPAVPObject@@H@Z @16177 NONAME ?CreateInstance@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBEPAVPObject@@H@Z @16178 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7095 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @7096 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @7097 NONAME ?CreateInstance_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7098 NONAME ?CreateInstance_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @6613 NONAME ?CreateInstance_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @6614 NONAME ?CreateOpenedChannel@PSoundChannel@@SAPAV1@ABVPString@@0W4Directions@1@IIIPAVPPluginManager@@@Z @16179 NONAME ?CreateOpenedDevice@PVideoInputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @2715 NONAME ?CreateOpenedDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @2859 NONAME ?CreatePluginsDevice@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @16180 NONAME ?CreatePluginsDeviceByName@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @16181 NONAME ?CreateWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@ABVPWaveFormat@@K@Z @1246 NONAME ?ctype@?$_Locbase@H@std@@2HB @5199 NONAME ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B @5200 NONAME ?Current@PProcess@@SAAAV1@XZ @1247 NONAME ?Current@PServiceProcess@@SAAAV1@XZ @1248 NONAME ?Current@PThread@@SAPAV1@XZ @1249 NONAME ?Current@PWin32SnmpLibrary@@SAAAV1@XZ @1250 NONAME ?Current@WinSNMPLoader@@QAEAAVPWin32SnmpLibrary@@XZ @6422 NONAME ?deallocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAPAVPPluginModuleManager@@I@Z @6072 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@I@Z @6615 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@I@Z @6073 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7099 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6616 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6617 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7100 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7101 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7102 NONAME ?deallocate@?$allocator@VPString@@@std@@QAEXPAVPString@@I@Z @6076 NONAME ?DebugOutput@PServiceProcess@@AAEXPBD@Z @1251 NONAME ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5201 NONAME ?dec@std@@YAAAVios_base@1@AAV21@@Z @5202 NONAME ?Delete@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1252 NONAME ?Delete@PNotifyIconData@@QAEXXZ @5203 NONAME ?Delete@PString@@QAEXHH@Z @1253 NONAME ?Delete@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1254 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@0@Z @2968 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@@Z @2969 NONAME ?DeleteKey@RegistryKey@@QAEHABVPString@@@Z @1256 NONAME ?DeleteMessage@PMail@@QAEHABVPString@@@Z @1257 NONAME ?DeleteObject@PSafeCollection@@UBEXPAVPObject@@@Z @6739 NONAME ?DeleteObjectsTimeout@PSafeCollection@@MAEXAAVPTimer@@H@Z @1258 NONAME ?DeleteObjectsToBeRemoved@PSafeCollection@@UAEHXZ @6740 NONAME ?DeleteSection@PConfig@@UAEXABVPString@@@Z @2970 NONAME ?DeleteSection@PConfig@@UAEXXZ @2971 NONAME ?DeleteSubTrees@PAbstractSortedList@@IAEXPAUElement@1@H@Z @3018 NONAME ?DeleteValue@RegistryKey@@QAEHABVPString@@@Z @1262 NONAME ?Descend@PMultiMediaFile@@QAEHIAAU_MMCKINFO@@PAU2@@Z @1263 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6618 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6077 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7103 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6619 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6620 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7104 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7105 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7106 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6621 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6080 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7107 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6622 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6623 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7108 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7109 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7110 NONAME ?destroy@?$allocator@VPString@@@std@@QAEXPAVPString@@@Z @6083 NONAME ?DestroyContents@PAbstractArray@@MAEXXZ @1264 NONAME ?DestroyContents@PAbstractList@@MAEXXZ @1265 NONAME ?DestroyContents@PAbstractSet@@MAEXXZ @1266 NONAME ?DestroyContents@PAbstractSortedList@@MAEXXZ @1267 NONAME ?DestroyContents@PArrayObjects@@MAEXXZ @1268 NONAME ?DestroyContents@PDirectory@@MAEXXZ @1269 NONAME ?DestroyContents@PHashTable@@MAEXXZ @1270 NONAME ?DestroyContents@Table@PHashTable@@UAEXXZ @1271 NONAME ?Destruct@PContainer@@IAEXXZ @1272 NONAME ?Destruct@PDirectory@@IAEXXZ @7281 NONAME ?disableGQoS@PUDPSocket@@1HA @16273 NONAME ?DisallowDeleteObjects@PCollection@@QAEXXZ @5204 NONAME ?DisplayRawData@PVideoChannel@@QAEHPAX@Z @1273 NONAME ?Draw@PVideoOutputDevice_Window@@IAEXPAUHDC__@@@Z @16183 NONAME ?Empty@PString@@SA?AV1@XZ @3014 NONAME ?EnableAccess@PVideoChannel@@QAEXXZ @1275 NONAME ?EnableGQoS@PUDPSocket@@SAXXZ @16274 NONAME ?end@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@XZ @6084 NONAME ?end@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE?AVconst_iterator@12@XZ @16185 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE?AViterator@12@XZ @6085 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE?AVconst_iterator@12@XZ @6086 NONAME ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B @5205 NONAME ?end@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@XZ @6624 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@XZ @6087 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7111 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6625 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6626 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7112 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7113 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7114 NONAME ?End@PTrace@@SAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV23@@Z @5206 NONAME ?EndFrame@PVideoOutputDevice_NULLOutput@@UAEHXZ @2860 NONAME ?EndNest@PReadWriteMutex@@IAEXXZ @1279 NONAME ?EndRead@PReadWriteMutex@@QAEXXZ @1280 NONAME ?EndWrite@PReadWriteMutex@@QAEXXZ @1281 NONAME ?EnterSafetyMode@PSafePtrBase@@IAEHW4EnterSafetyModeOption@1@@Z @1282 NONAME ?EnumInterfaces@PEthSocket@@QAEHHAAVPString@@@Z @1283 NONAME ?EnumInterfaces@PWin32PacketSYS@@UAEHHAAVPString@@@Z @1284 NONAME ?EnumInterfaces@PWin32PacketVxD@@UAEHHAAVPString@@@Z @1285 NONAME ?EnumIpAddress@PEthSocket@@QAEHHAAVAddress@PIPSocket@@0@Z @1286 NONAME ?EnumIpAddress@PWin32PacketSYS@@UAEHHAAVAddress@PIPSocket@@0@Z @1287 NONAME ?EnumIpAddress@PWin32PacketVxD@@UAEHHAAVAddress@PIPSocket@@0@Z @1288 NONAME ?EnumKey@RegistryKey@@QAEHHAAVPString@@@Z @1289 NONAME ?EnumValue@RegistryKey@@QAEHHAAVPString@@@Z @1290 NONAME ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5207 NONAME ?equal_range@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@2@ABVPString@@@Z @15879 NONAME ?equal_range@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@2@ABVPString@@@Z @15880 NONAME ?equal_range@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@2@ABVPString@@@Z @15881 NONAME ?erase@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@V312@@Z @6423 NONAME ?erase@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6627 NONAME ?erase@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6628 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6090 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6091 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7115 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7116 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6629 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6630 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6631 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6632 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7117 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7118 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEIABVPString@@@Z @15882 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7119 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7120 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEIABVPString@@@Z @15883 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7121 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7122 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEIABVPString@@@Z @15884 NONAME ?ErrorHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@HPBD@Z @2716 NONAME ?EscapeString@PRegularExpression@@SA?AVPString@@ABV2@@Z @1292 NONAME ?Exclude@PStringSet@@QAEXABVPString@@@Z @5490 NONAME ?Execute@PPipeChannel@@QAEHXZ @1293 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAH1H@Z @1294 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAHH@Z @1295 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@1H@Z @1296 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@H@Z @1297 NONAME ?Execute@PRegularExpression@@QBEHPBDAAH1H@Z @1298 NONAME ?Execute@PRegularExpression@@QBEHPBDAAHH@Z @1299 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@1H@Z @1300 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@H@Z @1301 NONAME ?Exists@PDirectory@@QBEHXZ @5491 NONAME ?Exists@PDirectory@@SAHABVPString@@@Z @5208 NONAME ?Exists@PFile@@QBEHXZ @5492 NONAME ?Exists@PFile@@SAHABVPFilePath@@@Z @5209 NONAME ?ExitSafetyMode@PSafePtrBase@@IAEXW4ExitSafetyModeOption@1@@Z @1302 NONAME ?factory@?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@A @7123 NONAME ?factory@?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@A @7124 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7125 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7126 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7127 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7128 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @7129 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @7130 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @16186 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @16187 NONAME ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5210 NONAME ?FillRect@PVideoInputDevice_FakeVideo@@QAEXPAEHHHHHHH@Z @16188 NONAME ?Filtered@PDirectory@@IAEHXZ @1304 NONAME ?find@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6633 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7131 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6634 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6635 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7132 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7133 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7134 NONAME ?Find@PString@@QBEHABV1@H@Z @5211 NONAME ?Find@PString@@QBEHDH@Z @1305 NONAME ?Find@PString@@QBEHPBDH@Z @1306 NONAME ?FindLast@PString@@QBEHABV1@H@Z @5493 NONAME ?FindLast@PString@@QBEHDH@Z @1307 NONAME ?FindLast@PString@@QBEHPBDH@Z @1308 NONAME ?FindLetter@PVideoInputDevice_FakeVideo@@QAEPAUOneVFakeLetterData@@D@Z @2862 NONAME ?FindOneOf@PString@@QBEHABV1@H@Z @5212 NONAME ?FindOneOf@PString@@QBEHPBDH@Z @1310 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@AAH1HH@Z @1311 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@H@Z @1312 NONAME ?Fire@PNotifierList@@QAEHAAVPObject@@H@Z @5672 NONAME ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5213 NONAME ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5214 NONAME ?FrameComplete@PVideoOutputDevice_Window@@UAEHXZ @16189 NONAME ?FromString@Address@PIPSocket@@QAEHABVPString@@@Z @1313 NONAME ?GetAddress@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @7355 NONAME ?GetAddress@PEthSocket@@QAEHAATAddress@1@@Z @1314 NONAME ?GetAddress@PRemoteConnection@@QAE?AVPString@@XZ @1315 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@ABVPString@@@Z @2972 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@XZ @2973 NONAME ?GetAny6@Address@PIPSocket@@SAABV12@XZ @2931 NONAME ?GetArguments@PProcess@@QAEAAVPArgList@@XZ @5215 NONAME ?GetAt@?$PBaseArray@D@@QBEDH@Z @1317 NONAME ?GetAt@?$PBaseArray@E@@QBEEH@Z @5216 NONAME ?GetAt@?$PBaseArray@F@@QBEFH@Z @5217 NONAME ?GetAt@?$PBaseArray@G@@QBEGH@Z @5218 NONAME ?GetAt@?$PBaseArray@H@@QBEHH@Z @5219 NONAME ?GetAt@?$PBaseArray@I@@QBEIH@Z @1318 NONAME ?GetAt@?$PBaseArray@J@@QBEJH@Z @5220 NONAME ?GetAt@?$PBaseArray@K@@QBEKH@Z @1319 NONAME ?GetAt@?$PBaseArray@PAVElement@PHashTable@@@@QBEPAVElement@PHashTable@@H@Z @5221 NONAME ?GetAt@?$PBaseArray@PAVPObject@@@@QBEPAVPObject@@H@Z @5222 NONAME ?GetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPCaselessString@@@Z @1320 NONAME ?GetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @1321 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @1322 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPPointer@@ABVPOrdinalKey@@@Z @5673 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPThread@@ABVPOrdinalKey@@@Z @1323 NONAME ?GetAt@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPDynaLink@@ABVPString@@@Z @5587 NONAME ?GetAt@?$POrdinalDictionary@VPString@@@@UBEPAVPOrdinalKey@@ABVPString@@@Z @1324 NONAME ?GetAt@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPString@@ABVPOrdinalKey@@@Z @1325 NONAME ?GetAt@?$PStringDictionary@VPString@@@@UBEPAVPString@@ABV2@@Z @1326 NONAME ?GetAt@PAbstractDictionary@@UBEPAVPObject@@H@Z @1327 NONAME ?GetAt@PAbstractList@@UBEPAVPObject@@H@Z @1328 NONAME ?GetAt@PAbstractSet@@UBEPAVPObject@@H@Z @1329 NONAME ?GetAt@PAbstractSortedList@@UBEPAVPObject@@H@Z @1330 NONAME ?GetAt@PArrayObjects@@UBEPAVPObject@@H@Z @1331 NONAME ?GetAt@PBitArray@@QBEHH@Z @1332 NONAME ?GetAvailableNames@PRemoteConnection@@SA?AVPStringArray@@XZ @1333 NONAME ?GetBaseReadChannel@PChannel@@UBEPAV1@XZ @1334 NONAME ?GetBaseReadChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @1335 NONAME ?GetBaseWriteChannel@PChannel@@UBEPAV1@XZ @1336 NONAME ?GetBaseWriteChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @1337 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@0H@Z @2974 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@H@Z @2975 NONAME ?GetBrightness@PVideoDevice@@UAEHXZ @1339 NONAME ?GetBroadcast@Address@PIPSocket@@SAABV12@XZ @1340 NONAME ?GetBuffers@PSoundChannel@@UAEHAAH0@Z @2717 NONAME ?GetBuffers@PSoundChannelWin32@@UAEHAAH0@Z @2718 NONAME ?GetChannel@PVideoDevice@@UBEHXZ @1342 NONAME ?GetChannels@PSound@@QBEIXZ @5223 NONAME ?GetChannels@PSoundChannel@@UBEIXZ @2719 NONAME ?GetChannels@PSoundChannelWin32@@UBEIXZ @2720 NONAME ?GetClass@?$PArray@VPString@@@@UBEPBDI@Z @4382 NONAME ?GetClass@?$PArray@VPWaveBuffer@@@@UBEPBDI@Z @4383 NONAME ?GetClass@?$PArray@VPWin32PacketBuffer@@@@UBEPBDI@Z @4384 NONAME ?GetClass@?$PBaseArray@D@@UBEPBDI@Z @4385 NONAME ?GetClass@?$PBaseArray@E@@UBEPBDI@Z @4386 NONAME ?GetClass@?$PBaseArray@F@@UBEPBDI@Z @4387 NONAME ?GetClass@?$PBaseArray@G@@UBEPBDI@Z @4388 NONAME ?GetClass@?$PBaseArray@H@@UBEPBDI@Z @4389 NONAME ?GetClass@?$PBaseArray@I@@UBEPBDI@Z @4390 NONAME ?GetClass@?$PBaseArray@J@@UBEPBDI@Z @4391 NONAME ?GetClass@?$PBaseArray@K@@UBEPBDI@Z @4392 NONAME ?GetClass@?$PBaseArray@PAVElement@PHashTable@@@@UBEPBDI@Z @5224 NONAME ?GetClass@?$PBaseArray@PAVPObject@@@@UBEPBDI@Z @4393 NONAME ?GetClass@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPBDI@Z @4394 NONAME ?GetClass@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPBDI@Z @4395 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPBDI@Z @4396 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPBDI@Z @5674 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPBDI@Z @4397 NONAME ?GetClass@?$PDictionary@VPString@@VPDynaLink@@@@UBEPBDI@Z @5588 NONAME ?GetClass@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPBDI@Z @7356 NONAME ?GetClass@?$PList@VPDynaLink@@@@UBEPBDI@Z @4398 NONAME ?GetClass@?$PList@VPNotifier@@@@UBEPBDI@Z @4399 NONAME ?GetClass@?$PList@VPPluginService@@@@UBEPBDI@Z @4400 NONAME ?GetClass@?$PList@VPSafeObject@@@@UBEPBDI@Z @6761 NONAME ?GetClass@?$PList@VPSocket@@@@UBEPBDI@Z @4401 NONAME ?GetClass@?$PList@VPString@@@@UBEPBDI@Z @4402 NONAME ?GetClass@?$PList@VPThread@@@@UBEPBDI@Z @4403 NONAME ?GetClass@?$PList@VPTimer@@@@UBEPBDI@Z @4404 NONAME ?GetClass@?$POrdinalDictionary@VPString@@@@UBEPBDI@Z @5225 NONAME ?GetClass@?$PSet@VPString@@@@UBEPBDI@Z @4405 NONAME ?GetClass@?$PSortedList@VPString@@@@UBEPBDI@Z @5226 NONAME ?GetClass@?$PStringDictionary@VPOrdinalKey@@@@UBEPBDI@Z @5227 NONAME ?GetClass@?$PStringDictionary@VPString@@@@UBEPBDI@Z @4406 NONAME ?GetClass@CMCDLL@PMail@@UBEPBDI@Z @4407 NONAME ?GetClass@HouseKeepingThread@PProcess@@UBEPBDI@Z @4408 NONAME ?GetClass@InterfaceEntry@PIPSocket@@UBEPBDI@Z @4409 NONAME ?GetClass@MAPIDLL@PMail@@UBEPBDI@Z @4410 NONAME ?GetClass@Nest@PReadWriteMutex@@UBEPBDI@Z @4411 NONAME ?GetClass@PAbstractArray@@UBEPBDI@Z @4412 NONAME ?GetClass@PAbstractDictionary@@UBEPBDI@Z @4413 NONAME ?GetClass@PAbstractList@@UBEPBDI@Z @4414 NONAME ?GetClass@PAbstractSet@@UBEPBDI@Z @4415 NONAME ?GetClass@PAbstractSortedList@@UBEPBDI@Z @4416 NONAME ?GetClass@PArgList@@UBEPBDI@Z @4417 NONAME ?GetClass@PArrayObjects@@UBEPBDI@Z @4418 NONAME ?GetClass@PBitArray@@UBEPBDI@Z @4419 NONAME ?GetClass@PBYTEArray@@UBEPBDI@Z @4420 NONAME ?GetClass@PCaselessString@@UBEPBDI@Z @4421 NONAME ?GetClass@PChannel@@UBEPBDI@Z @4422 NONAME ?GetClass@PCharArray@@UBEPBDI@Z @4423 NONAME ?GetClass@PCollection@@UBEPBDI@Z @4424 NONAME ?GetClass@PColourConverter@@UBEPBDI@Z @4425 NONAME ?GetClass@PColourConverterRegistration@@UBEPBDI@Z @4426 NONAME ?GetClass@PCondMutex@@UBEPBDI@Z @5228 NONAME ?GetClass@PConfig@@UBEPBDI@Z @4427 NONAME ?GetClass@PConfigArgs@@UBEPBDI@Z @4428 NONAME ?GetClass@PConsoleChannel@@UBEPBDI@Z @4429 NONAME ?GetClass@PContainer@@UBEPBDI@Z @4430 NONAME ?GetClass@PCriticalSection@@UBEPBDI@Z @5552 NONAME ?GetClass@PDirectory@@UBEPBDI@Z @4431 NONAME ?GetClass@PDynaLink@@UBEPBDI@Z @4432 NONAME ?GetClass@PEthSocket@@UBEPBDI@Z @4433 NONAME ?GetClass@PFile@@UBEPBDI@Z @4434 NONAME ?GetClass@PFileInfo@@UBEPBDI@Z @4435 NONAME ?GetClass@PFilePath@@UBEPBDI@Z @4436 NONAME ?GetClass@PHashTable@@UBEPBDI@Z @4437 NONAME ?GetClass@PICMPDLL@@UBEPBDI@Z @4438 NONAME ?GetClass@PICMPSocket@@UBEPBDI@Z @4439 NONAME ?GetClass@PImageDLL@@UBEPBDI@Z @4440 NONAME ?GetClass@PIndirectChannel@@UBEPBDI@Z @4441 NONAME ?GetClass@PIntCondMutex@@UBEPBDI@Z @4442 NONAME ?GetClass@PIPCacheData@@UBEPBDI@Z @4443 NONAME ?GetClass@PIPCacheKey@@UBEPBDI@Z @4444 NONAME ?GetClass@PIPDatagramSocket@@UBEPBDI@Z @4445 NONAME ?GetClass@PIPSocket@@UBEPBDI@Z @4446 NONAME ?GetClass@PIPXSocket@@UBEPBDI@Z @4447 NONAME ?GetClass@PluginLoaderStartup@@UBEPBDI@Z @6098 NONAME ?GetClass@PMail@@UBEPBDI@Z @4448 NONAME ?GetClass@PNotifier@@UBEPBDI@Z @4450 NONAME ?GetClass@PNotifierFunction@@UBEPBDI@Z @4451 NONAME ?GetClass@PObject@@UBEPBDI@Z @4452 NONAME ?GetClass@POrdinalKey@@UBEPBDI@Z @4453 NONAME ?GetClass@POrdinalToString@@UBEPBDI@Z @4454 NONAME ?GetClass@PPipeChannel@@UBEPBDI@Z @4455 NONAME ?GetClass@PPluginManager@@UBEPBDI@Z @4456 NONAME ?GetClass@PPointer@@UBEPBDI@Z @5675 NONAME ?GetClass@PProcess@@UBEPBDI@Z @4457 NONAME ?GetClass@PProcessStartup@@UBEPBDI@Z @6099 NONAME ?GetClass@PQoS@@UBEPBDI@Z @4458 NONAME ?GetClass@PRASDLL@@UBEPBDI@Z @4459 NONAME ?GetClass@PReadWriteMutex@@UBEPBDI@Z @4460 NONAME ?GetClass@PRegularExpression@@UBEPBDI@Z @4461 NONAME ?GetClass@PRemoteConnection@@UBEPBDI@Z @4462 NONAME ?GetClass@PSafeCollection@@UBEPBDI@Z @4463 NONAME ?GetClass@PSafeObject@@UBEPBDI@Z @4464 NONAME ?GetClass@PSafePtrBase@@UBEPBDI@Z @4465 NONAME ?GetClass@PSemaphore@@UBEPBDI@Z @4466 NONAME ?GetClass@PSerialChannel@@UBEPBDI@Z @4467 NONAME ?GetClass@PServiceProcess@@UBEPBDI@Z @4468 NONAME ?GetClass@PSimpleThread@@UBEPBDI@Z @4469 NONAME ?GetClass@PSmartObject@@UBEPBDI@Z @5229 NONAME ?GetClass@PSmartPointer@@UBEPBDI@Z @4470 NONAME ?GetClass@PSmartPtrInspector@@UBEPBDI@Z @5676 NONAME ?GetClass@PSocket@@UBEPBDI@Z @4471 NONAME ?GetClass@PSortedStringList@@UBEPBDI@Z @4472 NONAME ?GetClass@PSound@@UBEPBDI@Z @4473 NONAME ?GetClass@PSoundChannel@@UBEPBDI@Z @4474 NONAME ?GetClass@PSPXSocket@@UBEPBDI@Z @4475 NONAME ?GetClass@PStandardColourConverter@@UBEPBDI@Z @4476 NONAME ?GetClass@PString@@UBEPBDI@Z @4477 NONAME ?GetClass@PStringArray@@UBEPBDI@Z @4478 NONAME ?GetClass@PStringList@@UBEPBDI@Z @4479 NONAME ?GetClass@PStringSet@@UBEPBDI@Z @4480 NONAME ?GetClass@PStringStream@@UBEPBDI@Z @4481 NONAME ?GetClass@PStringToOrdinal@@UBEPBDI@Z @4482 NONAME ?GetClass@PStringToString@@UBEPBDI@Z @4483 NONAME ?GetClass@PStructuredFile@@UBEPBDI@Z @4484 NONAME ?GetClass@PSyncPoint@@UBEPBDI@Z @4485 NONAME ?GetClass@PSystemLog@@UBEPBDI@Z @4486 NONAME ?GetClass@PTCPSocket@@UBEPBDI@Z @4487 NONAME ?GetClass@PTextFile@@UBEPBDI@Z @4488 NONAME ?GetClass@PThread@@UBEPBDI@Z @4489 NONAME ?GetClass@PTime@@UBEPBDI@Z @4490 NONAME ?GetClass@PTimedMutex@@UBEPBDI@Z @16275 NONAME ?GetClass@PTimeInterval@@UBEPBDI@Z @4491 NONAME ?GetClass@PTimer@@UBEPBDI@Z @4492 NONAME ?GetClass@PTimerList@@UBEPBDI@Z @4493 NONAME ?GetClass@PUDPSocket@@UBEPBDI@Z @4494 NONAME ?GetClass@PVideoChannel@@UBEPBDI@Z @4495 NONAME ?GetClass@PVideoDevice@@UBEPBDI@Z @4496 NONAME ?GetClass@PVideoInputDevice@@UBEPBDI@Z @4497 NONAME ?GetClass@PVideoInputDevice_FakeVideo@@UBEPBDI@Z @4498 NONAME ?GetClass@PVideoInputDevice_VideoForWindows@@UBEPBDI@Z @4499 NONAME ?GetClass@PVideoOutputDevice@@UBEPBDI@Z @4501 NONAME ?GetClass@PVideoOutputDeviceRGB@@UBEPBDI@Z @16190 NONAME ?GetClass@PVideoOutputDevice_NULLOutput@@UBEPBDI@Z @4502 NONAME ?GetClass@PVideoOutputDevice_Window@@UBEPBDI@Z @16191 NONAME ?GetClass@PWaveBuffer@@UBEPBDI@Z @4503 NONAME ?GetClass@PWaveFormat@@UBEPBDI@Z @4504 NONAME ?GetClass@PWin32PacketBuffer@@UBEPBDI@Z @4505 NONAME ?GetClass@PWin32SnmpLibrary@@UBEPBDI@Z @4506 NONAME ?GetClass@PWinQoS@@UBEPBDI@Z @4507 NONAME ?GetClass@PWinSock@@UBEPBDI@Z @4508 NONAME ?GetClass@RouteEntry@PIPSocket@@UBEPBDI@Z @4509 NONAME ?GetClass@SelectList@PSocket@@UBEPBDI@Z @4510 NONAME ?GetClass@Table@PHashTable@@UBEPBDI@Z @4511 NONAME ?GetClass@WinSNMPLoader@@UBEPBDI@Z @6424 NONAME ?GetColour@PVideoDevice@@UAEHXZ @1468 NONAME ?GetColourFormat@PVideoDevice@@QBEABVPString@@XZ @1469 NONAME ?GetConfiguration@PRemoteConnection@@QAE?AW4Status@1@AAUConfiguration@1@@Z @1470 NONAME ?GetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@AAUConfiguration@1@@Z @1471 NONAME ?GetConfigurationFile@PProcess@@UAE?AVPString@@XZ @1472 NONAME ?GetContrast@PVideoDevice@@UAEHXZ @1473 NONAME ?GetCount@PArgList@@QBEHXZ @5230 NONAME ?GetCTS@PSerialChannel@@QAEHXZ @1474 NONAME ?GetCurrentThreadId@PThread@@SAKXZ @5231 NONAME ?GetData@PWin32PacketBuffer@@QAEHPAXH@Z @1475 NONAME ?GetDataAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@QBEAAVPThread@@H@Z @5232 NONAME ?GetDataAt@?$PStringDictionary@VPString@@@@QBEAAVPString@@H@Z @5233 NONAME ?GetDataBits@PSerialChannel@@QBEEXZ @1476 NONAME ?GetDateOrder@PTime@@SA?AW4DateOrder@1@XZ @1477 NONAME ?GetDateSeparator@PTime@@SA?AVPString@@XZ @1478 NONAME ?GetDay@PTime@@QBEHXZ @5494 NONAME ?GetDayName@PTime@@SA?AVPString@@W4Weekdays@1@W4NameType@1@@Z @1479 NONAME ?GetDayOfWeek@PTime@@QBE?AW4Weekdays@1@XZ @5495 NONAME ?GetDayOfYear@PTime@@QBEHXZ @5496 NONAME ?GetDays@PTimeInterval@@QBEHXZ @5497 NONAME ?GetDCD@PSerialChannel@@QAEHXZ @1480 NONAME ?GetDefaultDevice@PSoundChannel@@SA?AVPString@@W4Directions@1@@Z @1481 NONAME ?GetDefaultDevice@PSoundChannelWin32@@SA?AVPString@@W4Directions@PSoundChannel@@@Z @2725 NONAME ?GetDefaultDevice@PVideoChannel@@SA?AVPString@@W4Directions@1@@Z @1482 NONAME ?GetDefaultIpAddressFamily@PIPSocket@@SAHXZ @1483 NONAME ?GetDefaultIpAny@PIPSocket@@SA?AVAddress@1@XZ @1484 NONAME ?GetDefaultSection@PConfig@@UBE?AVPString@@XZ @2976 NONAME ?GetDeviceID@PSoundChannelWin32@@AAEHABVPString@@W4Directions@PSoundChannel@@AAI@Z @2726 NONAME ?GetDeviceNames@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBE?AVPStringList@@H@Z @16192 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBE?AVPStringList@@H@Z @16193 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBE?AVPStringList@@H@Z @16194 NONAME ?GetDeviceNames@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBE?AVPStringList@@H@Z @16195 NONAME ?GetDeviceNames@PSoundChannel@@SA?AVPStringList@@W4Directions@1@PAVPPluginManager@@@Z @16196 NONAME ?GetDeviceNames@PSoundChannelWin32@@SA?AVPStringArray@@W4Directions@PSoundChannel@@@Z @2729 NONAME ?GetDeviceNames@PVideoChannel@@SA?AVPStringList@@W4Directions@1@@Z @1488 NONAME ?GetDeviceNames@PVideoDevice@@UBE?AVPStringList@@XZ @2730 NONAME ?GetDeviceNames@PVideoInputDevice_FakeVideo@@UBE?AVPStringList@@XZ @2933 NONAME ?GetDeviceNames@PVideoInputDevice_VideoForWindows@@UBE?AVPStringList@@XZ @2934 NONAME ?GetDeviceNames@PVideoOutputDevice_NULLOutput@@UBE?AVPStringList@@XZ @2935 NONAME ?GetDeviceNames@PVideoOutputDevice_Window@@UBE?AVPStringList@@XZ @16197 NONAME ?GetDeviceNames@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE?AVPStringList@@H@Z @16198 NONAME ?GetDirectory@PFilePath@@QBE?AVPDirectory@@XZ @1492 NONAME ?GetDriverNames@PSoundChannel@@SA?AVPStringList@@PAVPPluginManager@@@Z @2733 NONAME ?GetDriverNames@PVideoInputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @2734 NONAME ?GetDriverNames@PVideoOutputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @2867 NONAME ?GetDriversDeviceNames@PSoundChannel@@SA?AVPStringList@@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @16199 NONAME ?GetDriversDeviceNames@PVideoInputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @2936 NONAME ?GetDriversDeviceNames@PVideoOutputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @2937 NONAME ?GetDSCP@PQoS@@QBEHXZ @5234 NONAME ?GetDSR@PSerialChannel@@QAEHXZ @1493 NONAME ?GetDstColourFormat@PColourConverter@@QAEABVPString@@XZ @5235 NONAME ?GetDstFrameSize@PColourConverter@@QBEHAAI0@Z @1494 NONAME ?GetElementAt@Table@PHashTable@@QAEPAVElement@2@ABVPObject@@@Z @1495 NONAME ?GetElementsIndex@Table@PHashTable@@QBEHPBVPObject@@HH@Z @1496 NONAME ?GetEncoding@PSound@@QBEIXZ @5236 NONAME ?GetEntryName@PDirectory@@UBE?AVPCaselessString@@XZ @7282 NONAME ?GetError@ServiceManager@@QBEKXZ @5237 NONAME ?GetErrorCode@PChannel@@QBE?AW4Errors@1@W4ErrorGroup@1@@Z @5238 NONAME ?GetErrorCode@PMail@@QBEHXZ @1498 NONAME ?GetErrorCode@PRegularExpression@@QBE?AW4ErrorCodes@1@XZ @1499 NONAME ?GetErrorNumber@PChannel@@QBEHW4ErrorGroup@1@@Z @5239 NONAME ?GetErrorText@PChannel@@SA?AVPString@@W4Errors@1@H@Z @1500 NONAME ?GetErrorText@PChannel@@UBE?AVPString@@W4ErrorGroup@1@@Z @1501 NONAME ?GetErrorText@PIndirectChannel@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @1502 NONAME ?GetErrorText@PMail@@QBE?AVPString@@XZ @1503 NONAME ?GetErrorText@PRegularExpression@@QBE?AVPString@@XZ @1504 NONAME ?GetErrorText@PSoundChannelWin32@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @2735 NONAME ?GetEvent@PWin32PacketBuffer@@QBEPAXXZ @5240 NONAME ?GetExtension@PDynaLink@@SA?AVPString@@XZ @1506 NONAME ?GetFactories@PFactoryBase@@SAAAVFactoryMap@1@XZ @6736 NONAME ?GetFactoriesMutex@PFactoryBase@@SAAAVPCriticalSection@@XZ @16276 NONAME ?GetFile@PProcess@@QBEABVPFilePath@@XZ @5241 NONAME ?GetFileName@PFilePath@@QBE?AVPCaselessString@@XZ @1507 NONAME ?GetFilePath@PFile@@QBEABVPFilePath@@XZ @5498 NONAME ?GetFilter@PEthSocket@@QAEHAAIAAG@Z @1508 NONAME ?GetFormatInfoData@PSound@@QBEPBXXZ @5242 NONAME ?GetFormatInfoSize@PSound@@QBEHXZ @5243 NONAME ?GetFrame@PVideoInputDevice@@UAEHAAVPBYTEArray@@@Z @16200 NONAME ?GetFrameData@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @2869 NONAME ?GetFrameData@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @2737 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @2870 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @2738 NONAME ?GetFrameHeight@PVideoDevice@@UBEIXZ @1514 NONAME ?GetFrameRate@PVideoDevice@@UBEIXZ @1515 NONAME ?GetFrameSize@PVideoDevice@@UAEHAAI0@Z @1516 NONAME ?GetFrameSizeLimits@PVideoDevice@@UAEHAAI000@Z @1518 NONAME ?GetFrameSizeLimits@PVideoInputDevice_FakeVideo@@UAEHAAI000@Z @2871 NONAME ?GetFrameWidth@PVideoDevice@@UBEIXZ @1519 NONAME ?GetFunction@PDynaLink@@QAEHABVPString@@AAP6AXXZ@Z @1520 NONAME ?GetFunction@PDynaLink@@QAEHHAAP6AXXZ@Z @1521 NONAME ?GetGatewayAddress@PIPSocket@@SAHAAVAddress@1@@Z @1522 NONAME ?GetGatewayInterface@PIPSocket@@SA?AVPString@@XZ @1523 NONAME ?GetGatewayInterfaceAddress@PIPSocket@@SA?AVAddress@1@XZ @16201 NONAME ?GetGrabHeight@PVideoChannel@@UAEHXZ @1524 NONAME ?GetGrabWidth@PVideoChannel@@UAEHXZ @1525 NONAME ?GetGroupName@PProcess@@QBE?AVPString@@XZ @1526 NONAME ?GetHandle@PChannel@@QBEHXZ @5244 NONAME ?GetHandle@PSemaphore@@QBEPAXXZ @5245 NONAME ?GetHandle@PSoundChannel@@UBEHXZ @2739 NONAME ?GetHandle@PThread@@QBEPAXXZ @5246 NONAME ?GetHost@PHostByAddr@@AAEPAVPIPCacheData@@ABVAddress@PIPSocket@@@Z @1527 NONAME ?GetHost@PHostByName@@AAEPAVPIPCacheData@@ABVPString@@@Z @1528 NONAME ?GetHostAddress@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAV23@@Z @1529 NONAME ?GetHostAddress@PHostByName@@QAEHABVPString@@AAVAddress@PIPSocket@@@Z @1530 NONAME ?GetHostAddress@PIPCacheData@@QBEABVAddress@PIPSocket@@XZ @5247 NONAME ?GetHostAddress@PIPSocket@@SAHAAVAddress@1@@Z @1531 NONAME ?GetHostAddress@PIPSocket@@SAHABVPString@@AAVAddress@1@@Z @1532 NONAME ?GetHostAddress@PIPXSocket@@SAHAAVAddress@1@@Z @1533 NONAME ?GetHostAddress@PIPXSocket@@SAHABVPString@@AAVAddress@1@@Z @1534 NONAME ?GetHostAliases@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPStringArray@@@Z @1535 NONAME ?GetHostAliases@PHostByName@@QAEHABVPString@@AAVPStringArray@@@Z @1536 NONAME ?GetHostAliases@PIPCacheData@@QBEABVPStringList@@XZ @5248 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVAddress@1@@Z @1537 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVPString@@@Z @1538 NONAME ?GetHostName@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPString@@@Z @1539 NONAME ?GetHostName@PHostByName@@QAEHABVPString@@AAV2@@Z @1540 NONAME ?GetHostName@PIPCacheData@@QBEABVPString@@XZ @5249 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABV2@@Z @1541 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABVAddress@1@@Z @1542 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@XZ @1543 NONAME ?GetHostName@PIPXSocket@@SA?AVPString@@ABVAddress@1@@Z @1544 NONAME ?GetHour@PTime@@QBEHXZ @5499 NONAME ?GetHours@PTimeInterval@@QBEHXZ @5500 NONAME ?GetHue@PVideoDevice@@UAEHXZ @1545 NONAME ?GetInfo@PDirectory@@UBEHAAVPFileInfo@@@Z @7283 NONAME ?GetInfo@PFile@@QAEHAAVPFileInfo@@@Z @5501 NONAME ?GetInfo@PFile@@SAHABVPFilePath@@AAVPFileInfo@@@Z @1547 NONAME ?GetInitialVal@PSemaphore@@QBEIXZ @5250 NONAME ?GetInputDeviceNames@PVideoInputDevice_FakeVideo@@SA?AVPStringList@@XZ @2872 NONAME ?GetInputDeviceNames@PVideoInputDevice_VideoForWindows@@SA?AVPStringList@@XZ @2740 NONAME ?GetInputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @1550 NONAME ?GetInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@KAAAV1@XZ @7135 NONAME ?GetInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@KAAAV1@XZ @6637 NONAME ?GetInstance@?$PFactory@VPProcessStartup@@VPString@@@@KAAAV1@XZ @6638 NONAME ?GetInstance@?$PFactory@VPSoundChannel@@VPString@@@@KAAAV1@XZ @7136 NONAME ?GetInstance@?$PFactory@VPVideoInputDevice@@VPString@@@@KAAAV1@XZ @7137 NONAME ?GetInstance@?$PFactory@VPVideoOutputDevice@@VPString@@@@KAAAV1@XZ @7138 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@0_J@Z @2977 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@_J@Z @2978 NONAME ?GetInteger@PConfig@@UBEJABVPString@@0J@Z @2979 NONAME ?GetInteger@PConfig@@UBEJABVPString@@J@Z @2980 NONAME ?GetInteger@PWin32AsnAny@@QAEHAAJ@Z @1553 NONAME ?GetInterface@PIPSocket@@SA?AVPString@@VAddress@1@@Z @16202 NONAME ?GetInterfaceAddress@PWin32SnmpLibrary@@QAE?AVAddress@PIPSocket@@H@Z @16203 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@H@Z @1554 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@VAddress@PIPSocket@@@Z @1555 NONAME ?GetInterfaceTable@PIPSocket@@SAHAAV?$PList@VInterfaceEntry@PIPSocket@@@@@Z @1556 NONAME ?GetInterval@PTimeInterval@@QBEKXZ @1557 NONAME ?GetIP@Psockaddr@@QBE?AVAddress@PIPSocket@@XZ @2938 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@0@Z @1558 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@@Z @1559 NONAME ?GetIpAddress@PWin32AsnAny@@QAEHAAVAddress@PIPSocket@@@Z @1560 NONAME ?GetKeyAt@?$PSet@VPString@@@@UBEABVPString@@H@Z @1561 NONAME ?GetKeyAt@?$PStringDictionary@VPString@@@@QBEABVPString@@H@Z @5251 NONAME ?GetKeyList@?$PFactory@VPPluginModuleManager@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6639 NONAME ?GetKeyList@?$PFactory@VPProcessStartup@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6640 NONAME ?GetKeyList_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6641 NONAME ?GetKeyList_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6642 NONAME ?GetKeyMap@?$PFactory@VPSoundChannel@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@XZ @15885 NONAME ?GetKeyMap@?$PFactory@VPVideoInputDevice@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@XZ @15886 NONAME ?GetKeyMap@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@XZ @15887 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@ABVPString@@@Z @2981 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@XZ @2982 NONAME ?GetLastError@PMultiMediaFile@@QBEKXZ @5252 NONAME ?GetLastError@PWin32PacketDriver@@QBEKXZ @1563 NONAME ?GetLastReadCount@PChannel@@UBEHXZ @2963 NONAME ?GetLastReadCount@PSoundChannel@@UBEHXZ @2964 NONAME ?GetLastReceiveAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @1564 NONAME ?GetLastWriteCount@PChannel@@UBEHXZ @2965 NONAME ?GetLastWriteCount@PSoundChannel@@UBEHXZ @2966 NONAME ?GetLength@PFile@@UBEJXZ @1565 NONAME ?GetLength@PString@@QBEHXZ @5253 NONAME ?GetLength@SecurityID@@QBEKXZ @5254 NONAME ?GetLevel@PTrace@@SAIXZ @1566 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@@Z @1567 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @1568 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @1569 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @1570 NONAME ?GetLocalHostName@PIPSocket@@QAE?AVPString@@XZ @1571 NONAME ?GetLogLevel@PServiceProcess@@QBE?AW4Level@PSystemLog@@XZ @5255 NONAME ?GetLoopback6@Address@PIPSocket@@SAABV12@XZ @2939 NONAME ?GetLoopback@Address@PIPSocket@@SAABV12@XZ @1572 NONAME ?GetManufacturer@PProcess@@UBEABVPString@@XZ @1573 NONAME ?GetMaxCountVal@PSemaphore@@QBEIXZ @5256 NONAME ?GetMaxDstFrameBytes@PColourConverter@@QAEHXZ @5257 NONAME ?GetMaxFrameBytes@PVideoInputDevice_FakeVideo@@UAEHXZ @2873 NONAME ?GetMaxFrameBytes@PVideoInputDevice_VideoForWindows@@UAEHXZ @2741 NONAME ?GetMaxFrameBytes@PVideoOutputDeviceRGB@@UAEHXZ @16204 NONAME ?GetMaxFrameBytes@PVideoOutputDevice_NULLOutput@@UAEHXZ @2874 NONAME ?GetMaxFrameBytesConverted@PVideoDevice@@IBEHH@Z @16205 NONAME ?GetMaxHandles@PProcess@@QBEHXZ @5502 NONAME ?GetMaxSrcFrameBytes@PColourConverter@@QAEHXZ @16206 NONAME ?GetMedium@PEthSocket@@QAE?AW4MediumTypes@1@XZ @1578 NONAME ?GetMessageAttachments@PMail@@QAEHABVPString@@AAVPStringArray@@HH@Z @1579 NONAME ?GetMessageBody@PMail@@QAEHABVPString@@AAV2@H@Z @1580 NONAME ?GetMessageHeader@PMail@@QAEHABVPString@@AAUHeader@1@@Z @1581 NONAME ?GetMessageIDs@PMail@@QAE?AVPStringArray@@H@Z @1582 NONAME ?GetMicrosecond@PTime@@QBEJXZ @5503 NONAME ?GetMilliSeconds@PTimeInterval@@QBE_JXZ @5258 NONAME ?GetMinute@PTime@@QBEHXZ @5504 NONAME ?GetMinutes@PTimeInterval@@QBEJXZ @5505 NONAME ?GetMonth@PTime@@QBE?AW4Months@1@XZ @5506 NONAME ?GetMonthName@PTime@@SA?AVPString@@W4Months@1@W4NameType@1@@Z @1583 NONAME ?GetMutex@PWin32SnmpLibrary@@SAAAVPCriticalSection@@XZ @16277 NONAME ?GetName@InterfaceEntry@PIPSocket@@QBEABVPString@@XZ @16207 NONAME ?GetName@PChannel@@UBE?AVPString@@XZ @1584 NONAME ?GetName@PConsoleChannel@@UBE?AVPString@@XZ @1585 NONAME ?GetName@PDynaLink@@UBE?AVPString@@H@Z @1586 NONAME ?GetName@PEthSocket@@UBE?AVPString@@XZ @1587 NONAME ?GetName@PFile@@UBE?AVPString@@XZ @1588 NONAME ?GetName@PIndirectChannel@@UBE?AVPString@@XZ @1589 NONAME ?GetName@PIPSocket@@UBE?AVPString@@XZ @1590 NONAME ?GetName@PIPXSocket@@UBE?AVPString@@XZ @1591 NONAME ?GetName@PPipeChannel@@UBE?AVPString@@XZ @1592 NONAME ?GetName@PProcess@@UBEABVPString@@XZ @1593 NONAME ?GetName@PSerialChannel@@UBE?AVPString@@XZ @1594 NONAME ?GetName@PSoundChannelWin32@@UBE?AVPString@@XZ @2742 NONAME ?GetName@PVideoChannel@@UBE?AVPString@@XZ @1596 NONAME ?GetNameByProtocol@PSocket@@SA?AVPString@@G@Z @1597 NONAME ?GetNest@PReadWriteMutex@@IBEPAVNest@1@XZ @1598 NONAME ?GetNetMask@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @16208 NONAME ?GetNetworkInterface@PIPSocket@@SAHAAVAddress@1@@Z @7357 NONAME ?GetNextOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @5259 NONAME ?GetNextStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @1599 NONAME ?GetNotifiee@PSmartNotifieeRegistrar@@SAPAXI@Z @5677 NONAME ?GetNotifiee@PSmartNotifierFunction@@QBEPAXXZ @5678 NONAME ?GetNotifieeID@PSmartNotifierFunction@@QBEIXZ @5679 NONAME ?GetNotifier@PTimer@@QBEABVPNotifier@@XZ @5507 NONAME ?GetNumChannels@PVideoDevice@@UAEHXZ @1601 NONAME ?GetNumChannels@PVideoInputDevice_FakeVideo@@UAEHXZ @2875 NONAME ?GetObjectA@PSmartPtrInspector@@QBEPAXXZ @5680 NONAME ?GetObjectsIndex@PAbstractDictionary@@UBEHPBVPObject@@@Z @1602 NONAME ?GetObjectsIndex@PAbstractList@@UBEHPBVPObject@@@Z @1603 NONAME ?GetObjectsIndex@PAbstractSet@@UBEHPBVPObject@@@Z @1604 NONAME ?GetObjectsIndex@PAbstractSortedList@@UBEHPBVPObject@@@Z @1605 NONAME ?GetObjectsIndex@PArrayObjects@@UBEHPBVPObject@@@Z @1606 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAJ@Z @1607 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVAddress@PIPSocket@@@Z @1608 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPString@@@Z @1609 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @5260 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@PAXIPAI@Z @1610 NONAME ?GetOption@PSocket@@QAEHHAAHH@Z @1611 NONAME ?GetOption@PSocket@@QAEHHPAXHH@Z @1612 NONAME ?GetOptionCount@PArgList@@UBEHABVPString@@@Z @1613 NONAME ?GetOptionCount@PArgList@@UBEHD@Z @1614 NONAME ?GetOptionCount@PArgList@@UBEHPBD@Z @1615 NONAME ?GetOptionCount@PConfigArgs@@UBEHABVPString@@@Z @1616 NONAME ?GetOptionCount@PConfigArgs@@UBEHD@Z @1617 NONAME ?GetOptionCount@PConfigArgs@@UBEHPBD@Z @1618 NONAME ?GetOptionCountByIndex@PArgList@@ABEHH@Z @1619 NONAME ?GetOptions@PTrace@@SAIXZ @1620 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@ABV2@PBD@Z @1621 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@DPBD@Z @1622 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@PBD0@Z @1623 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@ABV2@PBD@Z @1624 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@DPBD@Z @1625 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@PBD0@Z @1626 NONAME ?GetOptionStringByIndex@PArgList@@ABE?AVPString@@HPBD@Z @1627 NONAME ?GetOSClass@PProcess@@SA?AVPString@@XZ @1628 NONAME ?GetOSConfigDir@PProcess@@SA?AVPDirectory@@XZ @1629 NONAME ?GetOSHardware@PProcess@@SA?AVPString@@XZ @1630 NONAME ?GetOSName@PProcess@@SA?AVPString@@XZ @1631 NONAME ?GetOSVersion@PProcess@@SA?AVPString@@XZ @1632 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_NULLOutput@@SA?AVPStringList@@XZ @2876 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_Window@@SA?AVPStringList@@XZ @16209 NONAME ?GetOutputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @1633 NONAME ?GetPacketType@PIPXSocket@@QAEHXZ @1634 NONAME ?GetParameter@PArgList@@QBE?AVPString@@H@Z @1635 NONAME ?GetParameters@PArgList@@QBE?AVPStringArray@@HH@Z @1636 NONAME ?GetParameters@PVideoDevice@@UAEHPAH0000@Z @1637 NONAME ?GetParent@PDirectory@@QBE?AV1@XZ @1638 NONAME ?GetParity@PSerialChannel@@QBE?AW4Parity@1@XZ @1639 NONAME ?GetPath@PDirectory@@QBE?AVPStringArray@@XZ @1640 NONAME ?GetPath@PFilePath@@QBE?AVPCaselessString@@XZ @1641 NONAME ?GetPeakBandwidth@PQoS@@QBEKXZ @5261 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@@Z @1642 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @1643 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @1644 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @1645 NONAME ?GetPeerHostName@PIPSocket@@QAE?AVPString@@XZ @1646 NONAME ?GetPluginAPIVersion@PPluginServiceDescriptor@@UBEIXZ @16210 NONAME ?GetPluginDirs@PPluginManager@@SA?AVPStringArray@@XZ @5695 NONAME ?GetPluginList@PPluginModuleManager@@UBE?AV?$PDictionary@VPString@@VPDynaLink@@@@XZ @5589 NONAME ?GetPluginManager@PPluginManager@@SAAAV1@XZ @2743 NONAME ?GetPluginsDeviceNames@PPluginManager@@QBE?AVPStringList@@ABVPString@@0H@Z @16211 NONAME ?GetPluginsProviding@PPluginManager@@QBE?AVPStringList@@ABVPString@@@Z @2744 NONAME ?GetPluginTypes@PPluginManager@@QBE?AVPStringList@@XZ @2745 NONAME ?GetPointer@?$PBaseArray@D@@QAEPADH@Z @5262 NONAME ?GetPointer@?$PBaseArray@E@@QAEPAEH@Z @5263 NONAME ?GetPointer@?$PBaseArray@F@@QAEPAFH@Z @5264 NONAME ?GetPointer@?$PBaseArray@G@@QAEPAGH@Z @5265 NONAME ?GetPointer@?$PBaseArray@H@@QAEPAHH@Z @5266 NONAME ?GetPointer@?$PBaseArray@I@@QAEPAIH@Z @5267 NONAME ?GetPointer@?$PBaseArray@J@@QAEPAJH@Z @5268 NONAME ?GetPointer@?$PBaseArray@K@@QAEPAKH@Z @5269 NONAME ?GetPointer@Address@PIPSocket@@QBEPBDXZ @5270 NONAME ?GetPointer@PAbstractArray@@QAEPAXH@Z @1647 NONAME ?GetPointer@PBitArray@@QAEPAEH@Z @1648 NONAME ?GetPointer@PPointer@@QBEPAXXZ @5681 NONAME ?GetPointer@PWaveFormat@@QBEPAXXZ @5271 NONAME ?GetPort@Psockaddr@@QBEGXZ @2940 NONAME ?GetPort@PSocket@@QBEGXZ @1649 NONAME ?GetPortByService@PSocket@@SAGPBDABVPString@@@Z @1650 NONAME ?GetPortByService@PSocket@@UBEGABVPString@@@Z @1651 NONAME ?GetPortNames@PSerialChannel@@SA?AVPStringList@@XZ @1652 NONAME ?GetPosition@PFile@@UBEJXZ @1653 NONAME ?GetPriority@PThread@@UBE?AW4Priority@1@XZ @1654 NONAME ?GetProcessID@PProcess@@QBEKXZ @1655 NONAME ?GetProtocolByName@PSocket@@SAGABVPString@@@Z @1656 NONAME ?GetProtocolName@PEthSocket@@MBEPBDXZ @1657 NONAME ?GetProtocolName@PICMPSocket@@MBEPBDXZ @1658 NONAME ?GetProtocolName@PIPXSocket@@MBEPBDXZ @1659 NONAME ?GetProtocolName@PSPXSocket@@MBEPBDXZ @1660 NONAME ?GetProtocolName@PTCPSocket@@MBEPBDXZ @1661 NONAME ?GetProtocolName@PUDPSocket@@MBEPBDXZ @1662 NONAME ?GetProtocolName@PWinSock@@EBEPBDXZ @1663 NONAME ?GetQoSSpec@PUDPSocket@@UAEAAVPQoS@@XZ @16212 NONAME ?GetQueryOidCommand@PWin32PacketSYS@@UBEIK@Z @1664 NONAME ?GetQueryOidCommand@PWin32PacketVxD@@UBEIK@Z @1665 NONAME ?GetReadChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @5508 NONAME ?GetReadTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @1666 NONAME ?GetReal@PConfig@@UBENABVPString@@0N@Z @2983 NONAME ?GetReal@PConfig@@UBENABVPString@@N@Z @2984 NONAME ?GetRefAt@PAbstractDictionary@@UBEAAVPObject@@ABV2@@Z @1668 NONAME ?GetReferenceAt@PAbstractList@@IBEAAVPObject@@H@Z @1669 NONAME ?GetRenderHeight@PVideoChannel@@QAEHXZ @1670 NONAME ?GetRenderWidth@PVideoChannel@@QAEHXZ @1671 NONAME ?GetResetTime@PTimer@@QBEABVPTimeInterval@@XZ @5509 NONAME ?GetReturnCode@PPipeChannel@@QBEHXZ @1672 NONAME ?GetRing@PSerialChannel@@QAEHXZ @1673 NONAME ?GetRoot@PDirectory@@QBE?AV1@XZ @1674 NONAME ?GetRouteAddress@PIPSocket@@SA?AVAddress@1@V21@@Z @16213 NONAME ?GetRouteTable@PIPSocket@@SAHAAV?$PList@VRouteEntry@PIPSocket@@@@@Z @1675 NONAME ?GetSampleRate@PSound@@QBEIXZ @5272 NONAME ?GetSampleRate@PSoundChannel@@UBEIXZ @2746 NONAME ?GetSampleRate@PSoundChannelWin32@@UBEIXZ @2747 NONAME ?GetSampleSize@PSound@@QBEIXZ @5273 NONAME ?GetSampleSize@PSoundChannel@@UBEIXZ @2748 NONAME ?GetSampleSize@PSoundChannelWin32@@UBEIXZ @2749 NONAME ?GetSecond@PTime@@QBEHXZ @5510 NONAME ?GetSeconds@PTimeInterval@@QBEJXZ @5274 NONAME ?GetSections@PConfig@@UBE?AVPStringList@@XZ @2985 NONAME ?GetSendAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @1679 NONAME ?GetService@PSocket@@QBE?AVPString@@XZ @1680 NONAME ?GetServiceByPort@PSocket@@SA?AVPString@@PBDG@Z @1681 NONAME ?GetServiceByPort@PSocket@@UBE?AVPString@@G@Z @1682 NONAME ?GetServiceDependencies@PServiceProcess@@UBEPBDXZ @1683 NONAME ?GetServiceDescriptor@PPluginManager@@QBEPAVPPluginServiceDescriptor@@ABVPString@@0@Z @16214 NONAME ?GetServiceType@PQoS@@QBEKXZ @5275 NONAME ?GetSize@Address@PIPSocket@@QBEHXZ @1684 NONAME ?GetSize@PArrayObjects@@UBEHXZ @1685 NONAME ?GetSize@PBitArray@@UBEHXZ @1686 NONAME ?GetSize@PContainer@@UBEHXZ @1687 NONAME ?GetSize@PSafeCollection@@QBEHXZ @6746 NONAME ?GetSize@Psockaddr@@QBEHXZ @2941 NONAME ?GetSize@PWaveFormat@@QBEHXZ @5276 NONAME ?GetSpeed@PSerialChannel@@QBEKXZ @1688 NONAME ?GetSrcColourFormat@PColourConverter@@QAEABVPString@@XZ @5277 NONAME ?GetSrcFrameSize@PColourConverter@@QBEHAAI0@Z @1689 NONAME ?GetStartTime@PProcess@@QBE?AVPTime@@XZ @1690 NONAME ?GetStatus@PRemoteConnection@@QBE?AW4Status@1@XZ @1691 NONAME ?GetStopBits@PSerialChannel@@QBEEXZ @1692 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@00@Z @2986 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@0@Z @2987 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@@Z @2988 NONAME ?GetStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @5511 NONAME ?GetStringsIndex@PStringArray@@QBEHABVPString@@@Z @5512 NONAME ?GetStringsIndex@PStringList@@QBEHABVPString@@@Z @5278 NONAME ?GetTarget@PSmartFuncInspector@@QBEPAXXZ @5682 NONAME ?GetTarget@PSmartPtrInspector@@QBEPAXXZ @5683 NONAME ?GetTerminationValue@PProcess@@QBEHXZ @5279 NONAME ?GetThreadId@PThread@@UBEKXZ @1696 NONAME ?GetThreadName@PProcess@@UBE?AVPString@@XZ @1697 NONAME ?GetThreadName@PThread@@UBE?AVPString@@XZ @1698 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0@Z @2989 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0ABV2@@Z @2990 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@@Z @2991 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@ABV2@@Z @2992 NONAME ?GetTimeAM@PTime@@SA?AVPString@@XZ @1701 NONAME ?GetTimeAMPM@PTime@@SAHXZ @1702 NONAME ?GetTimeInSeconds@PTime@@QBEJXZ @5513 NONAME ?GetTimePM@PTime@@SA?AVPString@@XZ @1703 NONAME ?GetTimerList@PProcess@@QAEPAVPTimerList@@XZ @5280 NONAME ?GetTimeSeparator@PTime@@SA?AVPString@@XZ @1704 NONAME ?GetTimestamp@PTime@@QBE_JXZ @5514 NONAME ?GetTimeZone@PTime@@SAHW4TimeZoneType@1@@Z @1705 NONAME ?GetTimeZone@PTime@@SAHXZ @5281 NONAME ?GetTimeZoneString@PTime@@SA?AVPString@@W4TimeZoneType@1@@Z @1706 NONAME ?GetTitle@PFilePath@@QBE?AVPCaselessString@@XZ @1707 NONAME ?GetTokenBucketSize@PQoS@@QBEKXZ @5282 NONAME ?GetTokenRate@PQoS@@QBEKXZ @5283 NONAME ?GetType@PFilePath@@QBE?AVPCaselessString@@XZ @1708 NONAME ?GetUserNameA@PProcess@@QBE?AVPString@@XZ @1709 NONAME ?GetValuesIndex@PAbstractDictionary@@UBEHABVPObject@@@Z @1710 NONAME ?GetValuesIndex@PAbstractList@@UBEHABVPObject@@@Z @1711 NONAME ?GetValuesIndex@PAbstractSet@@UBEHABVPObject@@@Z @1712 NONAME ?GetValuesIndex@PAbstractSortedList@@UBEHABVPObject@@@Z @1713 NONAME ?GetValuesIndex@PArrayObjects@@UBEHABVPObject@@@Z @1714 NONAME ?GetVersion@Address@PIPSocket@@QBEIXZ @5284 NONAME ?GetVersion@PProcess@@UBE?AVPString@@H@Z @1715 NONAME ?GetVFlipState@PColourConverter@@QAEHXZ @5285 NONAME ?GetVFlipState@PVideoDevice@@UAEHXZ @1716 NONAME ?GetVFlipState@PVideoOutputDevice_Window@@UAEHXZ @16215 NONAME ?GetVideoFormat@PVideoDevice@@UBE?AW4VideoFormat@1@XZ @1717 NONAME ?GetVideoPlayer@PVideoChannel@@UAEPAVPVideoOutputDevice@@XZ @1718 NONAME ?GetVideoReader@PVideoChannel@@UAEPAVPVideoInputDevice@@XZ @1719 NONAME ?GetVolume@PDirectory@@QBE?AVPCaselessString@@XZ @1720 NONAME ?GetVolume@PFilePath@@QBE?AVPCaselessString@@XZ @1721 NONAME ?GetVolume@PSoundChannel@@UAEHAAI@Z @2751 NONAME ?GetVolume@PSoundChannelWin32@@UAEHAAI@Z @2752 NONAME ?GetVolumeSpace@PDirectory@@QBEHAA_J0AAK@Z @1723 NONAME ?GetWhiteness@PVideoDevice@@UAEHXZ @1724 NONAME ?GetWriteChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @5515 NONAME ?GetWriteTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @5516 NONAME ?GetYear@PTime@@QBEHXZ @5517 NONAME ?get_allocator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@2@XZ @15888 NONAME ?get_allocator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@2@XZ @15889 NONAME ?get_allocator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@2@XZ @15890 NONAME ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5286 NONAME ?GrabBlankImage@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2877 NONAME ?GrabBouncingBoxes@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2878 NONAME ?GrabMovingBlocksTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2879 NONAME ?GrabMovingLineTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2880 NONAME ?GrabNTSCTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2881 NONAME ?GrabOriginalMovingBlocksFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2882 NONAME ?GrabTextVideoFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @2883 NONAME ?GreytoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @16216 NONAME ?GreytoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAE@Z @16217 NONAME ?GreytoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAE@Z @16218 NONAME ?guaranteedDSCP@PQoS@@2DA @2662 NONAME ?HandleCapture@PVideoInputDevice_VideoForWindows@@MAEXAAVPThread@@H@Z @16219 NONAME ?HandleDisplay@PVideoOutputDevice_Window@@MAEXAAVPThread@@H@Z @16220 NONAME ?HandleError@PVideoInputDevice_VideoForWindows@@IAEJHPBD@Z @2754 NONAME ?HandleVideo@PVideoInputDevice_VideoForWindows@@IAEJPAUvideohdr_tag@@@Z @2755 NONAME ?HasAged@PIPCacheData@@QBEHXZ @1738 NONAME ?HashFunction@PChannel@@UBEHXZ @1739 NONAME ?HashFunction@PIPCacheKey@@UBEHXZ @1740 NONAME ?HashFunction@PObject@@UBEHXZ @1741 NONAME ?HashFunction@POrdinalKey@@UBEHXZ @1742 NONAME ?HashFunction@PRemoteConnection@@UBEHXZ @1743 NONAME ?HashFunction@PString@@UBEHXZ @1744 NONAME ?HasKey@PConfig@@UBEHABVPString@@0@Z @2993 NONAME ?HasKey@PConfig@@UBEHABVPString@@@Z @2994 NONAME ?HasOption@PArgList@@QBEHABVPString@@@Z @5287 NONAME ?HasOption@PArgList@@QBEHD@Z @5518 NONAME ?HasOption@PArgList@@QBEHPBD@Z @5519 NONAME ?HasPlayCompleted@PSoundChannel@@UAEHXZ @2756 NONAME ?HasPlayCompleted@PSoundChannelWin32@@UAEHXZ @2757 NONAME ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5288 NONAME ?hex@std@@YAAAVios_base@1@AAV21@@Z @5289 NONAME ?Host2Net@PSocket@@SAGG@Z @5290 NONAME ?ICMP@@3VPICMPDLL@@A @1747 NONAME ?IllegalArgumentIndex@PArgList@@UBEXH@Z @1748 NONAME ?IN6_IS_ADDR_LINKLOCAL@@YAHPBUin6_addr@@@Z @7369 NONAME ?IN6_IS_ADDR_LOOPBACK@@YAHPBUin6_addr@@@Z @7370 NONAME ?IN6_IS_ADDR_SITELOCAL@@YAHPBUin6_addr@@@Z @7371 NONAME ?IN6_IS_ADDR_V4COMPAT@@YAHPBUin6_addr@@@Z @7372 NONAME ?IN6_IS_ADDR_V4MAPPED@@YAHPBUin6_addr@@@Z @7373 NONAME ?in@?$_Iosb@H@std@@2W4_Openmode@12@B @5291 NONAME ?Include@PStringSet@@QAEXABVPString@@@Z @5292 NONAME ?Init@PWin32SnmpLibrary@@AAEHKPAPAXPAUAsnObjectIdentifier@@@Z @6427 NONAME ?Initialise@PTrace@@SAXIPBDI@Z @1749 NONAME ?InitialiseCapture@PVideoInputDevice_VideoForWindows@@IAEHXZ @2758 NONAME ?InitialiseProcessThread@PThread@@IAEXXZ @1751 NONAME ?InProgress@PWin32PacketBuffer@@QBEHXZ @5293 NONAME ?insert@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@V312@ABQAVPPluginModuleManager@@@Z @6107 NONAME ?insert@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE?AViterator@12@V312@ABVPString@@@Z @6108 NONAME ?insert@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6643 NONAME ?insert@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6644 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @6109 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7139 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7140 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6645 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6646 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7141 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7142 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7143 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7144 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7145 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7146 NONAME ?Insert@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @1752 NONAME ?Insert@PAbstractList@@UAEHABVPObject@@PAV2@@Z @1753 NONAME ?Insert@PAbstractSet@@UAEHABVPObject@@PAV2@@Z @1754 NONAME ?Insert@PAbstractSortedList@@UAEHABVPObject@@PAV2@@Z @1755 NONAME ?Insert@PArrayObjects@@UAEHABVPObject@@PAV2@@Z @1756 NONAME ?InsertAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @1757 NONAME ?InsertAt@PAbstractList@@UAEHHPAVPObject@@@Z @1758 NONAME ?InsertAt@PAbstractSet@@UAEHHPAVPObject@@@Z @1759 NONAME ?InsertAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @1760 NONAME ?InsertAt@PArrayObjects@@UAEHHPAVPObject@@@Z @1761 NONAME ?InsertString@PStringList@@QAEHABVPString@@0@Z @5520 NONAME ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5294 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HD@Z @1762 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HHPBD@Z @1763 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HD@Z @1764 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HHPBD@Z @1765 NONAME ?InternalEndRead@PReadWriteMutex@@IAEXXZ @1766 NONAME ?InternalFromUCS2@PString@@IAEXPBGH@Z @1767 NONAME ?InternalIsDescendant@?$PArray@VPString@@@@UBEHPBD@Z @4252 NONAME ?InternalIsDescendant@?$PArray@VPWaveBuffer@@@@UBEHPBD@Z @4253 NONAME ?InternalIsDescendant@?$PArray@VPWin32PacketBuffer@@@@UBEHPBD@Z @4254 NONAME ?InternalIsDescendant@?$PBaseArray@D@@UBEHPBD@Z @4255 NONAME ?InternalIsDescendant@?$PBaseArray@E@@UBEHPBD@Z @4256 NONAME ?InternalIsDescendant@?$PBaseArray@F@@UBEHPBD@Z @4257 NONAME ?InternalIsDescendant@?$PBaseArray@G@@UBEHPBD@Z @4258 NONAME ?InternalIsDescendant@?$PBaseArray@H@@UBEHPBD@Z @4259 NONAME ?InternalIsDescendant@?$PBaseArray@I@@UBEHPBD@Z @4260 NONAME ?InternalIsDescendant@?$PBaseArray@J@@UBEHPBD@Z @4261 NONAME ?InternalIsDescendant@?$PBaseArray@K@@UBEHPBD@Z @4262 NONAME ?InternalIsDescendant@?$PBaseArray@PAVElement@PHashTable@@@@UBEHPBD@Z @5295 NONAME ?InternalIsDescendant@?$PBaseArray@PAVPObject@@@@UBEHPBD@Z @4263 NONAME ?InternalIsDescendant@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEHPBD@Z @4264 NONAME ?InternalIsDescendant@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEHPBD@Z @4265 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEHPBD@Z @4266 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEHPBD@Z @5684 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEHPBD@Z @4267 NONAME ?InternalIsDescendant@?$PDictionary@VPString@@VPDynaLink@@@@UBEHPBD@Z @5590 NONAME ?InternalIsDescendant@?$PList@VInterfaceEntry@PIPSocket@@@@UBEHPBD@Z @7358 NONAME ?InternalIsDescendant@?$PList@VPDynaLink@@@@UBEHPBD@Z @4268 NONAME ?InternalIsDescendant@?$PList@VPNotifier@@@@UBEHPBD@Z @4269 NONAME ?InternalIsDescendant@?$PList@VPPluginService@@@@UBEHPBD@Z @4270 NONAME ?InternalIsDescendant@?$PList@VPSafeObject@@@@UBEHPBD@Z @6762 NONAME ?InternalIsDescendant@?$PList@VPSocket@@@@UBEHPBD@Z @4271 NONAME ?InternalIsDescendant@?$PList@VPString@@@@UBEHPBD@Z @4272 NONAME ?InternalIsDescendant@?$PList@VPThread@@@@UBEHPBD@Z @4273 NONAME ?InternalIsDescendant@?$PList@VPTimer@@@@UBEHPBD@Z @4274 NONAME ?InternalIsDescendant@?$POrdinalDictionary@VPString@@@@UBEHPBD@Z @5296 NONAME ?InternalIsDescendant@?$PSet@VPString@@@@UBEHPBD@Z @4275 NONAME ?InternalIsDescendant@?$PSortedList@VPString@@@@UBEHPBD@Z @5297 NONAME ?InternalIsDescendant@?$PStringDictionary@VPOrdinalKey@@@@UBEHPBD@Z @5298 NONAME ?InternalIsDescendant@?$PStringDictionary@VPString@@@@UBEHPBD@Z @4276 NONAME ?InternalIsDescendant@CMCDLL@PMail@@UBEHPBD@Z @4277 NONAME ?InternalIsDescendant@HouseKeepingThread@PProcess@@UBEHPBD@Z @4278 NONAME ?InternalIsDescendant@InterfaceEntry@PIPSocket@@UBEHPBD@Z @4279 NONAME ?InternalIsDescendant@MAPIDLL@PMail@@UBEHPBD@Z @4280 NONAME ?InternalIsDescendant@Nest@PReadWriteMutex@@UBEHPBD@Z @4281 NONAME ?InternalIsDescendant@PAbstractArray@@UBEHPBD@Z @4282 NONAME ?InternalIsDescendant@PAbstractDictionary@@UBEHPBD@Z @4283 NONAME ?InternalIsDescendant@PAbstractList@@UBEHPBD@Z @4284 NONAME ?InternalIsDescendant@PAbstractSet@@UBEHPBD@Z @4285 NONAME ?InternalIsDescendant@PAbstractSortedList@@UBEHPBD@Z @4286 NONAME ?InternalIsDescendant@PArgList@@UBEHPBD@Z @4287 NONAME ?InternalIsDescendant@PArrayObjects@@UBEHPBD@Z @4288 NONAME ?InternalIsDescendant@PBitArray@@UBEHPBD@Z @4289 NONAME ?InternalIsDescendant@PBYTEArray@@UBEHPBD@Z @4290 NONAME ?InternalIsDescendant@PCaselessString@@UBEHPBD@Z @4291 NONAME ?InternalIsDescendant@PChannel@@UBEHPBD@Z @4292 NONAME ?InternalIsDescendant@PCharArray@@UBEHPBD@Z @4293 NONAME ?InternalIsDescendant@PCollection@@UBEHPBD@Z @4294 NONAME ?InternalIsDescendant@PColourConverter@@UBEHPBD@Z @4295 NONAME ?InternalIsDescendant@PColourConverterRegistration@@UBEHPBD@Z @4296 NONAME ?InternalIsDescendant@PCondMutex@@UBEHPBD@Z @5299 NONAME ?InternalIsDescendant@PConfig@@UBEHPBD@Z @4297 NONAME ?InternalIsDescendant@PConfigArgs@@UBEHPBD@Z @4298 NONAME ?InternalIsDescendant@PConsoleChannel@@UBEHPBD@Z @4299 NONAME ?InternalIsDescendant@PContainer@@UBEHPBD@Z @4300 NONAME ?InternalIsDescendant@PCriticalSection@@UBEHPBD@Z @5553 NONAME ?InternalIsDescendant@PDirectory@@UBEHPBD@Z @4301 NONAME ?InternalIsDescendant@PDynaLink@@UBEHPBD@Z @4302 NONAME ?InternalIsDescendant@PEthSocket@@UBEHPBD@Z @4303 NONAME ?InternalIsDescendant@PFile@@UBEHPBD@Z @4304 NONAME ?InternalIsDescendant@PFileInfo@@UBEHPBD@Z @4305 NONAME ?InternalIsDescendant@PFilePath@@UBEHPBD@Z @4306 NONAME ?InternalIsDescendant@PHashTable@@UBEHPBD@Z @4307 NONAME ?InternalIsDescendant@PICMPDLL@@UBEHPBD@Z @4308 NONAME ?InternalIsDescendant@PICMPSocket@@UBEHPBD@Z @4309 NONAME ?InternalIsDescendant@PImageDLL@@UBEHPBD@Z @4310 NONAME ?InternalIsDescendant@PIndirectChannel@@UBEHPBD@Z @4311 NONAME ?InternalIsDescendant@PIntCondMutex@@UBEHPBD@Z @4312 NONAME ?InternalIsDescendant@PIPCacheData@@UBEHPBD@Z @4313 NONAME ?InternalIsDescendant@PIPCacheKey@@UBEHPBD@Z @4314 NONAME ?InternalIsDescendant@PIPDatagramSocket@@UBEHPBD@Z @4315 NONAME ?InternalIsDescendant@PIPSocket@@UBEHPBD@Z @4316 NONAME ?InternalIsDescendant@PIPXSocket@@UBEHPBD@Z @4317 NONAME ?InternalIsDescendant@PluginLoaderStartup@@UBEHPBD@Z @6114 NONAME ?InternalIsDescendant@PMail@@UBEHPBD@Z @4318 NONAME ?InternalIsDescendant@PNotifier@@UBEHPBD@Z @4320 NONAME ?InternalIsDescendant@PNotifierFunction@@UBEHPBD@Z @4321 NONAME ?InternalIsDescendant@PObject@@UBEHPBD@Z @4322 NONAME ?InternalIsDescendant@POrdinalKey@@UBEHPBD@Z @4323 NONAME ?InternalIsDescendant@POrdinalToString@@UBEHPBD@Z @4324 NONAME ?InternalIsDescendant@PPipeChannel@@UBEHPBD@Z @4325 NONAME ?InternalIsDescendant@PPluginManager@@UBEHPBD@Z @4326 NONAME ?InternalIsDescendant@PPointer@@UBEHPBD@Z @5685 NONAME ?InternalIsDescendant@PProcess@@UBEHPBD@Z @4327 NONAME ?InternalIsDescendant@PProcessStartup@@UBEHPBD@Z @6115 NONAME ?InternalIsDescendant@PQoS@@UBEHPBD@Z @4328 NONAME ?InternalIsDescendant@PRASDLL@@UBEHPBD@Z @4329 NONAME ?InternalIsDescendant@PReadWriteMutex@@UBEHPBD@Z @4330 NONAME ?InternalIsDescendant@PRegularExpression@@UBEHPBD@Z @4331 NONAME ?InternalIsDescendant@PRemoteConnection@@UBEHPBD@Z @4332 NONAME ?InternalIsDescendant@PSafeCollection@@UBEHPBD@Z @4333 NONAME ?InternalIsDescendant@PSafeObject@@UBEHPBD@Z @4334 NONAME ?InternalIsDescendant@PSafePtrBase@@UBEHPBD@Z @4335 NONAME ?InternalIsDescendant@PSemaphore@@UBEHPBD@Z @4336 NONAME ?InternalIsDescendant@PSerialChannel@@UBEHPBD@Z @4337 NONAME ?InternalIsDescendant@PServiceProcess@@UBEHPBD@Z @4338 NONAME ?InternalIsDescendant@PSimpleThread@@UBEHPBD@Z @4339 NONAME ?InternalIsDescendant@PSmartObject@@UBEHPBD@Z @5300 NONAME ?InternalIsDescendant@PSmartPointer@@UBEHPBD@Z @4340 NONAME ?InternalIsDescendant@PSmartPtrInspector@@UBEHPBD@Z @5686 NONAME ?InternalIsDescendant@PSocket@@UBEHPBD@Z @4341 NONAME ?InternalIsDescendant@PSortedStringList@@UBEHPBD@Z @4342 NONAME ?InternalIsDescendant@PSound@@UBEHPBD@Z @4343 NONAME ?InternalIsDescendant@PSoundChannel@@UBEHPBD@Z @4344 NONAME ?InternalIsDescendant@PSPXSocket@@UBEHPBD@Z @4345 NONAME ?InternalIsDescendant@PStandardColourConverter@@UBEHPBD@Z @4346 NONAME ?InternalIsDescendant@PString@@UBEHPBD@Z @4347 NONAME ?InternalIsDescendant@PStringArray@@UBEHPBD@Z @4348 NONAME ?InternalIsDescendant@PStringList@@UBEHPBD@Z @4349 NONAME ?InternalIsDescendant@PStringSet@@UBEHPBD@Z @4350 NONAME ?InternalIsDescendant@PStringStream@@UBEHPBD@Z @4351 NONAME ?InternalIsDescendant@PStringToOrdinal@@UBEHPBD@Z @4352 NONAME ?InternalIsDescendant@PStringToString@@UBEHPBD@Z @4353 NONAME ?InternalIsDescendant@PStructuredFile@@UBEHPBD@Z @4354 NONAME ?InternalIsDescendant@PSyncPoint@@UBEHPBD@Z @4355 NONAME ?InternalIsDescendant@PSystemLog@@UBEHPBD@Z @4356 NONAME ?InternalIsDescendant@PTCPSocket@@UBEHPBD@Z @4357 NONAME ?InternalIsDescendant@PTextFile@@UBEHPBD@Z @4358 NONAME ?InternalIsDescendant@PThread@@UBEHPBD@Z @4359 NONAME ?InternalIsDescendant@PTime@@UBEHPBD@Z @4360 NONAME ?InternalIsDescendant@PTimedMutex@@UBEHPBD@Z @16278 NONAME ?InternalIsDescendant@PTimeInterval@@UBEHPBD@Z @4361 NONAME ?InternalIsDescendant@PTimer@@UBEHPBD@Z @4362 NONAME ?InternalIsDescendant@PTimerList@@UBEHPBD@Z @4363 NONAME ?InternalIsDescendant@PUDPSocket@@UBEHPBD@Z @4364 NONAME ?InternalIsDescendant@PVideoChannel@@UBEHPBD@Z @4365 NONAME ?InternalIsDescendant@PVideoDevice@@UBEHPBD@Z @4366 NONAME ?InternalIsDescendant@PVideoInputDevice@@UBEHPBD@Z @4367 NONAME ?InternalIsDescendant@PVideoInputDevice_FakeVideo@@UBEHPBD@Z @4368 NONAME ?InternalIsDescendant@PVideoInputDevice_VideoForWindows@@UBEHPBD@Z @4369 NONAME ?InternalIsDescendant@PVideoOutputDevice@@UBEHPBD@Z @4371 NONAME ?InternalIsDescendant@PVideoOutputDeviceRGB@@UBEHPBD@Z @16221 NONAME ?InternalIsDescendant@PVideoOutputDevice_NULLOutput@@UBEHPBD@Z @4372 NONAME ?InternalIsDescendant@PVideoOutputDevice_Window@@UBEHPBD@Z @16222 NONAME ?InternalIsDescendant@PWaveBuffer@@UBEHPBD@Z @4373 NONAME ?InternalIsDescendant@PWaveFormat@@UBEHPBD@Z @4374 NONAME ?InternalIsDescendant@PWin32PacketBuffer@@UBEHPBD@Z @4375 NONAME ?InternalIsDescendant@PWin32SnmpLibrary@@UBEHPBD@Z @4376 NONAME ?InternalIsDescendant@PWinQoS@@UBEHPBD@Z @4377 NONAME ?InternalIsDescendant@PWinSock@@UBEHPBD@Z @4378 NONAME ?InternalIsDescendant@RouteEntry@PIPSocket@@UBEHPBD@Z @4379 NONAME ?InternalIsDescendant@SelectList@PSocket@@UBEHPBD@Z @4380 NONAME ?InternalIsDescendant@Table@PHashTable@@UBEHPBD@Z @4381 NONAME ?InternalIsDescendant@WinSNMPLoader@@UBEHPBD@Z @6430 NONAME ?InternalSetSize@PAbstractArray@@IAEHHH@Z @16223 NONAME ?InternalStartRead@PReadWriteMutex@@IAEXXZ @1768 NONAME ?InternalStringSelect@PSortedStringList@@IBEHPBDHPAUElement@PAbstractSortedList@@@Z @3027 NONAME ?IoControl@PWin32PacketDriver@@QAEHIPBXKPAXKAAK@Z @1770 NONAME ?IsAddressReachable@PIPSocket@@SAHVAddress@1@00@Z @16224 NONAME ?IsAny@Address@PIPSocket@@QBEHXZ @7368 NONAME ?IsBroadcast@Address@PIPSocket@@QBEHXZ @1772 NONAME ?IsCapturing@PVideoInputDevice_FakeVideo@@UAEHXZ @2884 NONAME ?IsCapturing@PVideoInputDevice_VideoForWindows@@UAEHXZ @2759 NONAME ?IsClass@PObject@@QBEHPBD@Z @5301 NONAME ?IsCompleted@PWin32PacketBuffer@@QBEHXZ @5302 NONAME ?IsDaylightSavings@PTime@@SAHXZ @1899 NONAME ?IsEmpty@PContainer@@UBEHXZ @2024 NONAME ?IsEmpty@PString@@UBEHXZ @2025 NONAME ?IsEndOfFile@PFile@@QBEHXZ @2026 NONAME ?IsFuture@PTime@@QBEHXZ @5521 NONAME ?IsGrabberOpen@PVideoChannel@@UAEHXZ @2027 NONAME ?IsGUIProcess@PProcess@@UBEHXZ @2028 NONAME ?IsInitialised@PProcess@@SAHXZ @2029 NONAME ?IsIpAddressFamilyV6Supported@PIPSocket@@SAHXZ @2945 NONAME ?IsLoaded@PDynaLink@@UBEHXZ @2030 NONAME ?IsLocalHost@PIPSocket@@SAHABVPString@@@Z @2031 NONAME ?IsLoggedOn@PMail@@QBEHXZ @2032 NONAME ?IsLoopback@Address@PIPSocket@@QBEHXZ @2033 NONAME ?IsNULL@PSmartPointer@@QBEHXZ @5303 NONAME ?IsOK@PCapStatus@@QAEHXZ @5304 NONAME ?IsOpen@PChannel@@UBEHXZ @2034 NONAME ?IsOpen@PICMPSocket@@UBEHXZ @2036 NONAME ?IsOpen@PIndirectChannel@@UBEHXZ @2037 NONAME ?IsOpen@PPipeChannel@@UBEHXZ @2038 NONAME ?IsOpen@PSoundChannel@@UBEHXZ @2768 NONAME ?IsOpen@PSoundChannelWin32@@UBEHXZ @2769 NONAME ?IsOpen@PVideoChannel@@UBEHXZ @2039 NONAME ?IsOpen@PVideoInputDevice_FakeVideo@@UAEHXZ @2889 NONAME ?IsOpen@PVideoInputDevice_VideoForWindows@@UAEHXZ @2770 NONAME ?IsOpen@PVideoOutputDevice_NULLOutput@@UAEHXZ @2890 NONAME ?IsOpen@PVideoOutputDevice_Window@@UAEHXZ @16225 NONAME ?IsOpen@PWin32PacketDriver@@QBEHXZ @2043 NONAME ?IsPast@PTime@@QBEHXZ @5522 NONAME ?IsPaused@PTimer@@QBEHXZ @5523 NONAME ?IsPresent@P_fd_set@@QBEHI@Z @5305 NONAME ?IsRecordBufferFull@PSoundChannel@@UAEHXZ @2771 NONAME ?IsRecordBufferFull@PSoundChannelWin32@@UAEHXZ @2772 NONAME ?IsRegistered@?$PFactory@VPSoundChannel@@VPString@@@@SA_NABVPString@@@Z @15891 NONAME ?IsRegistered@?$PFactory@VPVideoInputDevice@@VPString@@@@SA_NABVPString@@@Z @15892 NONAME ?IsRegistered@?$PFactory@VPVideoOutputDevice@@VPString@@@@SA_NABVPString@@@Z @15893 NONAME ?IsRegistered_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAE_NABVPString@@@Z @15894 NONAME ?IsRegistered_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAE_NABVPString@@@Z @15895 NONAME ?IsRegistered_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE_NABVPString@@@Z @15896 NONAME ?IsRenderOpen@PVideoChannel@@UAEHXZ @2045 NONAME ?IsRFC1918@Address@PIPSocket@@QBEHXZ @7359 NONAME ?IsRoot@PDirectory@@QBEHXZ @2046 NONAME ?IsRunning@PPipeChannel@@QBEHXZ @2047 NONAME ?IsRunning@PTimer@@QBEHXZ @5306 NONAME ?IsSeparator@PDirectory@@SAHD@Z @5307 NONAME ?IsServiceProcess@PProcess@@UBEHXZ @2048 NONAME ?IsServiceProcess@PServiceProcess@@UBEHXZ @2049 NONAME ?IsSingleton@?$PFactory@VPProcessStartup@@VPString@@@@SAHABVPString@@@Z @6647 NONAME ?IsSingleton_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE_NABVPString@@@Z @6648 NONAME ?IsSubDir@PDirectory@@UBEHXZ @7284 NONAME ?IsSuspended@PThread@@UBEHXZ @2051 NONAME ?IsTerminated@PThread@@UBEHXZ @2052 NONAME ?IsTextFile@PFile@@MBEHXZ @2053 NONAME ?IsTextFile@PTextFile@@MBEHXZ @2054 NONAME ?IsType@PWin32PacketBuffer@@QBEHG@Z @2055 NONAME ?IsUnique@PContainer@@QBEHXZ @5308 NONAME ?IsV4Mapped@Address@PIPSocket@@QBEHXZ @2946 NONAME ?IsValid@Address@PIPSocket@@QBEHXZ @2056 NONAME ?IsValid@Address@PIPXSocket@@QBEHXZ @2057 NONAME ?IsValid@PFilePath@@SAHABVPString@@@Z @2058 NONAME ?IsValid@PFilePath@@SAHD@Z @2059 NONAME ?IsValid@PTime@@QBEHXZ @5524 NONAME ?IsValid@SecurityID@@QBEHXZ @5309 NONAME ?key_comp@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AU?$less@VPString@@@2@XZ @15897 NONAME ?key_comp@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AU?$less@VPString@@@2@XZ @15898 NONAME ?key_comp@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AU?$less@VPString@@@2@XZ @15899 NONAME ?Kill@PPipeChannel@@QAEHH@Z @2060 NONAME ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5310 NONAME ?Left@PString@@QBE?AV1@H@Z @2061 NONAME ?LeftRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3020 NONAME ?LeftTrim@PString@@QBE?AV1@XZ @2063 NONAME ?Lines@PString@@QBE?AVPStringArray@@XZ @2064 NONAME ?Listen@PEthSocket@@UAEHIGW4Reusability@PSocket@@@Z @2065 NONAME ?Listen@PIPSocket@@UAEHABVAddress@1@IGW4Reusability@PSocket@@@Z @2066 NONAME ?Listen@PIPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2067 NONAME ?Listen@PIPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2068 NONAME ?Listen@PSocket@@UAEHIGW4Reusability@1@@Z @2069 NONAME ?Listen@PSPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2070 NONAME ?Listen@PTCPSocket@@UAEHABVAddress@PIPSocket@@IGW4Reusability@PSocket@@@Z @2071 NONAME ?Listen@PTCPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2072 NONAME ?Load@PSound@@QAEHABVPFilePath@@@Z @2073 NONAME ?LoadPlugin@PPluginManager@@QAEHABVPString@@@Z @2773 NONAME ?LoadPluginDirectory@PPluginManager@@QAEXABVPDirectory@@@Z @2774 NONAME ?loadSoundStuff@PWLibStupidWindowsHacks@@3HA @7147 NONAME ?loadVideoStuff@PWLibStupidWindowsHacks@@3HA @7148 NONAME ?Lock@PSafeLockReadOnly@@QAEHXZ @7310 NONAME ?Lock@PSafeLockReadWrite@@QAEHXZ @7311 NONAME ?LockReadOnly@PSafeObject@@QBEHXZ @2074 NONAME ?LockReadWrite@PSafeObject@@QAEHXZ @2075 NONAME ?LogOff@PMail@@UAEHXZ @2076 NONAME ?LogOn@PMail@@QAEHABVPString@@00@Z @2077 NONAME ?LogOn@PMail@@QAEHABVPString@@0@Z @2078 NONAME ?LogOnCommonInterface@PMail@@IAEHPBD00@Z @2079 NONAME ?LookUp@PMail@@QAE?AW4LookUpResult@1@ABVPString@@PAV3@@Z @2080 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6649 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7149 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6650 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6651 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7150 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7151 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7152 NONAME ?Main@HouseKeepingThread@PProcess@@UAEXXZ @2081 NONAME ?Main@PSimpleThread@@UAEXXZ @2082 NONAME ?MainEntry@PServiceProcess@@AAEXKPAPAD@Z @2084 NONAME ?MainFunction@PThread@@CGIPAX@Z @2085 NONAME ?MakeEmpty@PString@@UAEAAV1@XZ @5697 NONAME ?MakeEmpty@PStringStream@@UAEAAVPString@@XZ @5698 NONAME ?MakeMinimumSize@PString@@QAEHXZ @5311 NONAME ?MakeUnique@PAbstractArray@@UAEHXZ @2086 NONAME ?MakeUnique@PAbstractList@@UAEHXZ @2087 NONAME ?MakeUnique@PAbstractSet@@UAEHXZ @2088 NONAME ?MakeUnique@PAbstractSortedList@@UAEHXZ @2089 NONAME ?MakeUnique@PArrayObjects@@UAEHXZ @2090 NONAME ?MakeUnique@PContainer@@UAEHXZ @2091 NONAME ?MakeUnique@PDirectory@@UAEHXZ @2092 NONAME ?MakeUnique@PHashTable@@UAEHXZ @2093 NONAME ?MakeUnique@PString@@UAEHXZ @2094 NONAME ?MarkMessageRead@PMail@@QAEHABVPString@@@Z @2095 NONAME ?max_size@?$allocator@PAVPPluginModuleManager@@@std@@QBEIXZ @6123 NONAME ?max_size@?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@std@@QBEIXZ @6652 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@std@@QBEIXZ @6124 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@std@@QBEIXZ @7153 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@std@@QBEIXZ @6653 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@std@@QBEIXZ @7154 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@std@@QBEIXZ @7155 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@std@@QBEIXZ @7156 NONAME ?max_size@?$allocator@VPString@@@std@@QBEIXZ @6126 NONAME ?max_size@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @6127 NONAME ?max_size@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @6128 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEIXZ @6654 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEIXZ @6129 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7157 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @6655 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7158 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7159 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7160 NONAME ?MemFree@PWin32AsnAny@@QAEXXZ @2096 NONAME ?messages@?$_Locbase@H@std@@2HB @5312 NONAME ?Mid@PString@@QBE?AV1@HH@Z @2097 NONAME ?MissingArgument@PArgList@@UBEXABVPString@@@Z @2098 NONAME ?Modify@PNotifyIconData@@QAEXXZ @5313 NONAME ?ModifyQoSSpec@PUDPSocket@@UAEHPAVPQoS@@@Z @2667 NONAME ?monetary@?$_Locbase@H@std@@2HB @5314 NONAME ?Move@PFile@@SAHABVPFilePath@@0H@Z @2099 NONAME ?Move@PNotifierList@@QAEXAAV1@@Z @5687 NONAME ?Move@PWin32OidBuffer@@QAEXPAEK@Z @2100 NONAME ?Net2Host@PSocket@@SAGG@Z @5315 NONAME ?Next@PDirectory@@QAEHXZ @2101 NONAME ?Next@PSafePtrBase@@IAEXXZ @2102 NONAME ?none@?$_Locbase@H@std@@2HB @5316 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@ABV1@HH@Z @2104 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@PBDHH@Z @2105 NONAME ?numeric@?$_Locbase@H@std@@2HB @5317 NONAME ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5318 NONAME ?OnContinue@PServiceProcess@@UAEXXZ @2106 NONAME ?OnControl@PServiceProcess@@UAEXXZ @2107 NONAME ?OnLoadModule@PPluginModuleManager@@MAEXAAVPDynaLink@@H@Z @5591 NONAME ?OnLoadPlugin@PPluginModuleManager@@UAEXAAVPDynaLink@@H@Z @5636 NONAME ?OnOpen@PIndirectChannel@@MAEHXZ @2108 NONAME ?OnOutOfBand@PTCPSocket@@UAEXPBXH@Z @2109 NONAME ?OnPause@PServiceProcess@@UAEHXZ @2110 NONAME ?OnReadComplete@PChannel@@UAEXPAXH@Z @2111 NONAME ?OnShutdown@PluginLoaderStartup@@UAEXXZ @6431 NONAME ?OnShutdown@PPluginModuleManager@@UAEXXZ @6432 NONAME ?OnShutdown@PProcessStartup@@UAEXXZ @6135 NONAME ?OnShutdown@WinSNMPLoader@@UAEXXZ @6433 NONAME ?OnStartup@PluginLoaderStartup@@UAEXXZ @6136 NONAME ?OnStartup@PProcessStartup@@UAEXXZ @6137 NONAME ?OnStartup@WinSNMPLoader@@UAEXXZ @6434 NONAME ?OnStop@PServiceProcess@@UAEXXZ @2112 NONAME ?OnTimeout@PTimer@@UAEXXZ @2113 NONAME ?OnWait@PCondMutex@@UAEXXZ @2114 NONAME ?OnWriteComplete@PChannel@@UAEXPBXH@Z @2115 NONAME ?Open@NT_ServiceManager@@AAEHPAVPServiceProcess@@@Z @2116 NONAME ?Open@PConsoleChannel@@UAEHW4ConsoleType@1@@Z @2117 NONAME ?Open@PDirectory@@UAEHH@Z @7285 NONAME ?Open@PDynaLink@@UAEHABVPString@@@Z @2119 NONAME ?Open@PFile@@UAEHABVPFilePath@@W4OpenMode@1@H@Z @2121 NONAME ?Open@PFile@@UAEHW4OpenMode@1@H@Z @2122 NONAME ?Open@PIndirectChannel@@QAEHAAVPChannel@@@Z @2123 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@0HH@Z @2124 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2125 NONAME ?Open@PMultiMediaFile@@QAEHABVPFilePath@@KPAU_MMIOINFO@@@Z @2126 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@1@HH@Z @2127 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HH@Z @2128 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringToString@@W4OpenMode@1@HH@Z @2129 NONAME ?Open@PPipeChannel@@QAEHABVPString@@W4OpenMode@1@HH@Z @2130 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@00H@Z @2131 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@H@Z @2132 NONAME ?Open@PRemoteConnection@@QAEHH@Z @2133 NONAME ?Open@PSerialChannel@@UAEHAAVPConfig@@@Z @2134 NONAME ?Open@PSerialChannel@@UAEHABVPString@@KEW4Parity@1@EW4FlowControl@1@2@Z @2135 NONAME ?Open@PSoundChannel@@UAEHABVPString@@W4Directions@1@III@Z @2775 NONAME ?Open@PSoundChannelWin32@@QAEHABVPString@@W4Directions@PSoundChannel@@ABVPWaveFormat@@@Z @2776 NONAME ?Open@PSoundChannelWin32@@UAEHABVPString@@W4Directions@PSoundChannel@@III@Z @2777 NONAME ?Open@PVideoChannel@@QAEHABVPString@@W4Directions@1@@Z @2138 NONAME ?Open@PVideoInputDevice_FakeVideo@@UAEHABVPString@@H@Z @2891 NONAME ?Open@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@H@Z @2778 NONAME ?Open@PVideoOutputDevice_NULLOutput@@UAEHABVPString@@H@Z @2892 NONAME ?Open@PVideoOutputDevice_Window@@UAEHABVPString@@H@Z @16226 NONAME ?OpenDevice@PSoundChannelWin32@@AAEHI@Z @2779 NONAME ?OpenFull@PVideoDevice@@UAEHABUOpenArgs@1@H@Z @2143 NONAME ?OpenManager@NT_ServiceManager@@AAEHXZ @2144 NONAME ?OpenSocket@PEthSocket@@MAEHXZ @2145 NONAME ?OpenSocket@PICMPSocket@@MAEHH@Z @2146 NONAME ?OpenSocket@PICMPSocket@@MAEHXZ @2147 NONAME ?OpenSocket@PIPXSocket@@MAEHXZ @2148 NONAME ?OpenSocket@PSPXSocket@@MAEHXZ @2149 NONAME ?OpenSocket@PTCPSocket@@MAEHH@Z @2150 NONAME ?OpenSocket@PTCPSocket@@MAEHXZ @2151 NONAME ?OpenSocket@PUDPSocket@@MAEHH@Z @2152 NONAME ?OpenSocket@PUDPSocket@@MAEHXZ @2153 NONAME ?OpenSocket@PWinSock@@EAEHXZ @2154 NONAME ?OpenSocketGQOS@PUDPSocket@@MAEHHHH@Z @2668 NONAME ?OpenWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@AAVPWaveFormat@@AAK@Z @2155 NONAME ?OrderSelect@Info@PAbstractSortedList@@QBEPAUElement@2@PAU32@H@Z @7364 NONAME ?os_accept@PSocket@@IAEHAAV1@PAUsockaddr@@PAH@Z @2157 NONAME ?os_close@PSocket@@IAEHXZ @2158 NONAME ?os_connect@PSocket@@IAEHPAUsockaddr@@H@Z @2159 NONAME ?os_gmtime@PTime@@SAPAUtm@@PBJPAU2@@Z @2160 NONAME ?os_localtime@PTime@@SAPAUtm@@PBJPAU2@@Z @2161 NONAME ?os_recvfrom@PSocket@@IAEHPAXHHPAUsockaddr@@PAH@Z @2162 NONAME ?os_sendto@PSocket@@IAEHPBXHHPAUsockaddr@@H@Z @2164 NONAME ?os_socket@PSocket@@IAEHHHH@Z @2165 NONAME ?out@?$_Iosb@H@std@@2W4_Openmode@12@B @5319 NONAME ?Output@PSystemLog@@SAXW4Level@1@PBD@Z @2166 NONAME ?overflow@Buffer@PDebugStream@@UAEHH@Z @2167 NONAME ?overflow@Buffer@PStringStream@@UAEHH@Z @2168 NONAME ?overflow@Buffer@PSystemLog@@UAEHH@Z @2169 NONAME ?overflow@PChannelStreamBuffer@@MAEHH@Z @2170 NONAME ?PABSINDEX@@YAHH@Z @5320 NONAME ?Parse@Frame@PEthSocket@@QAEXAAGAAPAEAAH@Z @2171 NONAME ?Parse@PArgList@@UAEHABVPString@@H@Z @2172 NONAME ?Parse@PArgList@@UAEHPBDH@Z @2173 NONAME ?ParseOption@PArgList@@AAEHHHAAHABV?$PScalarArray@H@@@Z @2174 NONAME ?PAssertFunc@@YAXPBD@Z @2175 NONAME ?PAssertFunc@@YAXPBDH00@Z @2176 NONAME ?PAssertFunc@@YAXPBDH0W4PStandardAssertMessage@@@Z @2177 NONAME ?PAssertFuncInline@@YA_N_NPBDH11@Z @6763 NONAME ?PAssertFuncInline@@YA_N_NPBDH1W4PStandardAssertMessage@@@Z @6764 NONAME ?Pause@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2178 NONAME ?Pause@PTimer@@QAEXXZ @2179 NONAME ?Pause@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2180 NONAME ?PDummyFunctionToMakeSureSymbolsAreInDEFFile@@YAXXZ @2181 NONAME ?pfFreeAddrInfo@?1??WspiapiFreeAddrInfo@@9@4@4P6GXPAUaddrinfo@@@ZA @2947 NONAME ?pfGetAddrInfo@?1??WspiapiGetAddrInfo@@9@16@4P6GHPBD0PBUaddrinfo@@PAPAU2@@ZA @2948 NONAME ?pfGetNameInfo@?1??WspiapiGetNameInfo@@9@28@4P6GHPBUsockaddr@@HPADI1IH@ZA @2949 NONAME ?PGetErrorStream@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ @5321 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@@Z @2183 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@AAVPingInfo@1@@Z @2184 NONAME ?PlatformOpen@PPipeChannel@@AAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HHPBVPStringToString@@@Z @2185 NONAME ?Play@PSound@@QAEHABVPString@@@Z @16227 NONAME ?Play@PSound@@QAEHXZ @2186 NONAME ?PlayFile@PSound@@SAHABVPFilePath@@H@Z @2187 NONAME ?PlayFile@PSoundChannel@@UAEHABVPFilePath@@H@Z @2780 NONAME ?PlayFile@PSoundChannelWin32@@UAEHABVPFilePath@@H@Z @2781 NONAME ?PlaySoundA@PSoundChannel@@UAEHABVPSound@@H@Z @2782 NONAME ?PlaySoundA@PSoundChannelWin32@@UAEHABVPSound@@H@Z @2783 NONAME ?PluginLoaderStartup_PString@PWLibFactoryLoader@@3HA @7367 NONAME ?PPlugin_PSoundChannel_WindowsMultimedia_Registration_Instance@@3VPPlugin_PSoundChannel_WindowsMultimedia_Registration@@A @2785 NONAME ?PPlugin_PVideoInputDevice_FakeVideo_Registration_Instance@@3VPPlugin_PVideoInputDevice_FakeVideo_Registration@@A @2894 NONAME ?PPlugin_PVideoInputDevice_VideoForWindows_Registration_Instance@@3VPPlugin_PVideoInputDevice_VideoForWindows_Registration@@A @2787 NONAME ?PPlugin_PVideoOutputDevice_NULLOutput_Registration_Instance@@3VPPlugin_PVideoOutputDevice_NULLOutput_Registration@@A @2896 NONAME ?PPlugin_PVideoOutputDevice_Window_Registration_Instance@@3VPPlugin_PVideoOutputDevice_Window_Registration@@A @16228 NONAME ?Predecessor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @7365 NONAME ?PreInitialise@PProcess@@SAXHPAPAD0@Z @2191 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEIN__@@@Z @2192 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEOUT__@@AAH@Z @2193 NONAME ?PrepareCommon@PWaveBuffer@@AAEXH@Z @2194 NONAME ?PreShutdown@PProcess@@SAXXZ @6345 NONAME ?Previous@PSafePtrBase@@IAEXXZ @2195 NONAME ?PrintElementOn@?$PBaseArray@D@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5322 NONAME ?PrintElementOn@?$PBaseArray@E@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5323 NONAME ?PrintElementOn@?$PBaseArray@F@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5324 NONAME ?PrintElementOn@?$PBaseArray@G@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5325 NONAME ?PrintElementOn@?$PBaseArray@H@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5326 NONAME ?PrintElementOn@?$PBaseArray@I@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5327 NONAME ?PrintElementOn@?$PBaseArray@J@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5328 NONAME ?PrintElementOn@?$PBaseArray@K@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5329 NONAME ?PrintElementOn@?$PBaseArray@PAVElement@PHashTable@@@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5330 NONAME ?PrintElementOn@?$PBaseArray@PAVPObject@@@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5331 NONAME ?PrintElementOn@PAbstractArray@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5332 NONAME ?PrintOn@InterfaceEntry@PIPSocket@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5333 NONAME ?PrintOn@PAbstractArray@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5334 NONAME ?PrintOn@PAbstractDictionary@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5335 NONAME ?PrintOn@PArgList@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5336 NONAME ?PrintOn@PBYTEArray@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5337 NONAME ?PrintOn@PCharArray@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5338 NONAME ?PrintOn@PCollection@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5339 NONAME ?PrintOn@PIntCondMutex@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5340 NONAME ?PrintOn@PObject@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5341 NONAME ?PrintOn@POrdinalKey@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5342 NONAME ?PrintOn@PString@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5343 NONAME ?PrintOn@PThread@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5344 NONAME ?PrintOn@PTime@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5345 NONAME ?PrintOn@PTimeInterval@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5346 NONAME ?PrintOn@PWaveFormat@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5347 NONAME ?Process@PTimer@@AAEXABVPTimeInterval@@AAV2@@Z @2222 NONAME ?Process@PTimerList@@QAE?AVPTimeInterval@@XZ @2223 NONAME ?ProcessCommand@PServiceProcess@@AAEHPBD@Z @2224 NONAME ?PSetErrorStream@@YAXPAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5348 NONAME ?psprintf@@YA?AVPString@@PBDZZ @2226 NONAME ?PTraceCurrentLevel@@3IA @6346 NONAME ?push_back@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEXABQAVPPluginModuleManager@@@Z @6139 NONAME ?push_back@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEXABVPString@@@Z @6140 NONAME ?PutData@PWin32PacketBuffer@@QAEHPBXH@Z @2227 NONAME ?PVideoOutputDevice_Window_descriptor@@3VPVideoOutputDevice_Window_PluginServiceDescriptor@@A @16229 NONAME ?pvsprintf@@YA?AVPString@@ABV1@PAD@Z @5526 NONAME ?pvsprintf@@YA?AVPString@@PBDPAD@Z @2228 NONAME ?PWaitOnExitConsoleWindow@@YAXXZ @2229 NONAME ?p_argc@PProcess@@0HA @2230 NONAME ?p_argv@PProcess@@0PAPADA @2231 NONAME ?p_envp@PProcess@@0PAPADA @2232 NONAME ?P_IsOldWin95@@YAHXZ @2233 NONAME ?Query@PWin32SnmpLibrary@@AAEHEPAUSnmpVarBindList@@PAJ1@Z @6435 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIAAK@Z @2240 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIIPAE@Z @2241 NONAME ?QueryOid@PWin32SnmpLibrary@@AAEHEAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @2242 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAKH@Z @2243 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAV2@@Z @2244 NONAME ?Ras@@3VPRASDLL@@A @2245 NONAME ?rdbuf@ostrstream@std@@QBEPAVstrstreambuf@2@XZ @5349 NONAME ?Read@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @16230 NONAME ?Read@PChannel@@UAEHPAXH@Z @2246 NONAME ?Read@PConsoleChannel@@UAEHPAXH@Z @2247 NONAME ?Read@PEthSocket@@UAEHPAXH@Z @2248 NONAME ?Read@PFile@@UAEHPAXH@Z @2249 NONAME ?Read@PIndirectChannel@@UAEHPAXH@Z @2250 NONAME ?Read@PMultiMediaFile@@QAEHPAXH@Z @2251 NONAME ?Read@PPipeChannel@@UAEHPAXH@Z @2252 NONAME ?Read@PSerialChannel@@UAEHPAXH@Z @2253 NONAME ?Read@PSocket@@UAEHPAXH@Z @2254 NONAME ?Read@PSoundChannel@@UAEHPAXH@Z @2255 NONAME ?Read@PSoundChannelWin32@@UAEHPAXH@Z @2794 NONAME ?Read@PStructuredFile@@EAEHPAXH@Z @2256 NONAME ?Read@PStructuredFile@@QAEHPAX@Z @2257 NONAME ?Read@PUDPSocket@@UAEHPAXH@Z @2258 NONAME ?Read@PVideoChannel@@UAEHPAXH@Z @2259 NONAME ?ReadAsync@PChannel@@UAEHPAXH@Z @2260 NONAME ?ReadAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2261 NONAME ?ReadBlock@PChannel@@QAEHPAXH@Z @2262 NONAME ?ReadChar@PChannel@@UAEHXZ @2263 NONAME ?ReadCharWithTimeout@PChannel@@IAEHAAVPTimeInterval@@@Z @2264 NONAME ?ReadComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2265 NONAME ?ReadElementFrom@?$PScalarArray@F@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5350 NONAME ?ReadElementFrom@?$PScalarArray@G@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5351 NONAME ?ReadElementFrom@?$PScalarArray@H@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5352 NONAME ?ReadElementFrom@?$PScalarArray@I@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5353 NONAME ?ReadElementFrom@?$PScalarArray@J@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5354 NONAME ?ReadElementFrom@?$PScalarArray@K@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5355 NONAME ?ReadElementFrom@PAbstractArray@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5356 NONAME ?ReadFrom@PAbstractArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5357 NONAME ?ReadFrom@PArgList@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5358 NONAME ?ReadFrom@PBYTEArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5359 NONAME ?ReadFrom@PCharArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5360 NONAME ?ReadFrom@PIPDatagramSocket@@UAEHPAXHAAVAddress@PIPSocket@@AAG@Z @2277 NONAME ?ReadFrom@PIPXSocket@@UAEHPAXHAAVAddress@1@AAG@Z @2278 NONAME ?ReadFrom@PObject@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5361 NONAME ?ReadFrom@POrdinalToString@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5362 NONAME ?ReadFrom@PSortedStringList@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5363 NONAME ?ReadFrom@PString@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5364 NONAME ?ReadFrom@PStringArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5365 NONAME ?ReadFrom@PStringList@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5366 NONAME ?ReadFrom@PStringSet@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5367 NONAME ?ReadFrom@PStringToOrdinal@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5368 NONAME ?ReadFrom@PStringToString@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5369 NONAME ?ReadFrom@PTime@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5370 NONAME ?ReadFrom@PTimeInterval@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5371 NONAME ?ReadFrom@PWaveFormat@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5372 NONAME ?ReadLine@PTextFile@@QAEHAAVPString@@@Z @2291 NONAME ?ReadPacket@PEthSocket@@QAEHAAVPBYTEArray@@AATAddress@1@1AAGAAHAAPAE@Z @2292 NONAME ?ReadStandardError@PPipeChannel@@QAEHAAVPString@@H@Z @2293 NONAME ?ReadString@PChannel@@QAE?AVPString@@H@Z @2294 NONAME ?ReceiveCommandString@PChannel@@IAEHHABVPString@@AAHH@Z @2295 NONAME ?RecordFile@PSoundChannel@@UAEHABVPFilePath@@@Z @2795 NONAME ?RecordFile@PSoundChannelWin32@@UAEHABVPFilePath@@@Z @2796 NONAME ?RecordSound@PSoundChannel@@UAEHAAVPSound@@@Z @2797 NONAME ?RecordSound@PSoundChannelWin32@@UAEHAAVPSound@@@Z @2798 NONAME ?Redraw@PVideoChannel@@UAEHPBX@Z @2298 NONAME ?Register@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7161 NONAME ?Register@?$PFactory@VPProcessStartup@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @6657 NONAME ?Register@?$PFactory@VPSoundChannel@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7162 NONAME ?Register@?$PFactory@VPVideoInputDevice@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7163 NONAME ?Register@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7164 NONAME ?RegisterNotifiee@PSmartNotifieeRegistrar@@SAIPAX@Z @5688 NONAME ?RegisterService@PPluginManager@@QAEHABVPString@@0PAVPPluginServiceDescriptor@@@Z @2799 NONAME ?Register_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7165 NONAME ?Register_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6658 NONAME ?Register_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7166 NONAME ?Register_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7167 NONAME ?Register_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7168 NONAME ?Release@PWaveBuffer@@AAEKXZ @2299 NONAME ?Remove@PAbstractDictionary@@EAEHPBVPObject@@@Z @2300 NONAME ?Remove@PAbstractList@@UAEHPBVPObject@@@Z @2301 NONAME ?Remove@PAbstractSet@@UAEHPBVPObject@@@Z @2302 NONAME ?Remove@PAbstractSortedList@@UAEHPBVPObject@@@Z @2303 NONAME ?Remove@PArrayObjects@@UAEHPBVPObject@@@Z @2304 NONAME ?Remove@PDirectory@@QAEHXZ @5527 NONAME ?Remove@PDirectory@@SAHABVPString@@@Z @5528 NONAME ?Remove@PFile@@QAEHH@Z @5373 NONAME ?Remove@PFile@@SAHABVPFilePath@@H@Z @2305 NONAME ?RemoveAll@PAbstractSortedList@@UAEXXZ @2306 NONAME ?RemoveAll@PArrayObjects@@UAEXXZ @2307 NONAME ?RemoveAll@PCollection@@UAEXXZ @2308 NONAME ?RemoveAll@PSafeCollection@@UAEXH@Z @7314 NONAME ?RemoveAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPCaselessString@@@Z @2310 NONAME ?RemoveAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @2311 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @2312 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEPAVPPointer@@ABVPOrdinalKey@@@Z @5689 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEPAVPThread@@ABVPOrdinalKey@@@Z @2313 NONAME ?RemoveAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEPAVPDynaLink@@ABVPString@@@Z @5592 NONAME ?RemoveAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@@Z @2314 NONAME ?RemoveAt@?$PStringDictionary@VPOrdinalKey@@@@UAEPAVPString@@ABVPOrdinalKey@@@Z @2315 NONAME ?RemoveAt@?$PStringDictionary@VPString@@@@UAEPAVPString@@ABV2@@Z @2316 NONAME ?RemoveAt@PAbstractDictionary@@UAEPAVPObject@@H@Z @2317 NONAME ?RemoveAt@PAbstractList@@UAEPAVPObject@@H@Z @2318 NONAME ?RemoveAt@PAbstractSet@@UAEPAVPObject@@H@Z @2319 NONAME ?RemoveAt@PAbstractSortedList@@UAEPAVPObject@@H@Z @2320 NONAME ?RemoveAt@PArrayObjects@@UAEPAVPObject@@H@Z @2321 NONAME ?RemoveConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@@Z @2322 NONAME ?RemoveElement@PAbstractSortedList@@IAEXPAUElement@1@@Z @3023 NONAME ?RemoveElement@Table@PHashTable@@QAEPAVPObject@@ABV3@@Z @2324 NONAME ?RemoveNotifier@PPluginManager@@QAEXABVPNotifier@@@Z @3049 NONAME ?RemoveTarget@PNotifierList@@QAEHPAVPObject@@@Z @5690 NONAME ?Rename@PFile@@QAEHABVPString@@H@Z @2325 NONAME ?Rename@PFile@@SAHABVPFilePath@@ABVPString@@H@Z @2326 NONAME ?Replace@PString@@QAEXABV1@0HH@Z @2327 NONAME ?ReplaceAt@PAbstractList@@UAEHHPAVPObject@@@Z @2328 NONAME ?ReportStatus@PServiceProcess@@AAEHKKKK@Z @2329 NONAME ?Reset@PTimer@@QAEXXZ @2330 NONAME ?Reset@PWin32Overlapped@@QAEXXZ @2331 NONAME ?ResizeYUV422@PStandardColourConverter@@IBEXPBEPAE@Z @2332 NONAME ?Resolution@PTimer@@SAIXZ @2333 NONAME ?Restart@PDirectory@@UAEHH@Z @7286 NONAME ?Restart@PThread@@UAEXXZ @2334 NONAME ?RestrictAccess@PVideoChannel@@QAEXXZ @2335 NONAME ?Resume@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2336 NONAME ?Resume@PThread@@UAEXXZ @2337 NONAME ?Resume@PTimer@@QAEXXZ @2338 NONAME ?Resume@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2339 NONAME ?RGBtoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @16231 NONAME ?RGBtoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAEIII@Z @16232 NONAME ?RGBtoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAEIII@Z @16233 NONAME ?rgtGlobal@?1??WspiapiLoad@@9@4@4PAUWSPIAPI_FUNCTION@@A @2950 NONAME ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5374 NONAME ?Right@PString@@QBE?AV1@H@Z @2343 NONAME ?RightRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3024 NONAME ?RightTrim@PString@@QBE?AV1@XZ @2345 NONAME ?RunContinuous@PTimer@@QAEXABVPTimeInterval@@@Z @2346 NONAME ?SafeDereference@PSafeObject@@QAEXXZ @2347 NONAME ?SafelyCanBeDeleted@PSafeObject@@QBEHXZ @6747 NONAME ?SafeReference@PSafeObject@@QAEHXZ @2349 NONAME ?SafeRemove@PSafeCollection@@MAEHPAVPSafeObject@@@Z @2350 NONAME ?SafeRemove@PSafeObject@@QAEXXZ @2351 NONAME ?SafeRemoveAt@PSafeCollection@@MAEHH@Z @2352 NONAME ?SafeRemoveObject@PSafeCollection@@IAEXPAVPSafeObject@@@Z @2353 NONAME ?Save@PConfigArgs@@QAEXABVPString@@@Z @2354 NONAME ?Save@PSound@@QAEHABVPFilePath@@@Z @2355 NONAME ?SaveSettings@PSerialChannel@@UAEXAAVPConfig@@@Z @2356 NONAME ?SBGGR8toRGB@PStandardColourConverter@@IBEHPBEPAEPAH@Z @16234 NONAME ?SBGGR8toYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @16235 NONAME ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5375 NONAME ?seekoff@Buffer@PStringStream@@UAE?AV?$fpos@H@std@@JHH@Z @5376 NONAME ?seekoff@PChannelStreamBuffer@@MAE?AV?$fpos@H@std@@JHH@Z @5414 NONAME ?seekpos@Buffer@PStringStream@@UAE?AV?$fpos@H@std@@V34@H@Z @5415 NONAME ?seekpos@PChannelStreamBuffer@@MAE?AV?$fpos@H@std@@V23@H@Z @5416 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00@Z @2359 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00ABVPTimeInterval@@@Z @2360 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0@Z @2361 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0ABVPTimeInterval@@@Z @2362 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@@Z @2363 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@ABVPTimeInterval@@@Z @2364 NONAME ?Select@PSocket@@SAHAAV1@0@Z @2365 NONAME ?Select@PSocket@@SAHAAV1@0ABVPTimeInterval@@@Z @2366 NONAME ?SendCommandString@PChannel@@QAEHABVPString@@@Z @2367 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBD@Z @2368 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBDABVPStringList@@@Z @2369 NONAME ?SendNote@PMail@@QAEHABVPString@@ABVPStringList@@10PBD1@Z @2370 NONAME ?SeparatorChar@PDevicePluginServiceDescriptor@@2DB @16236 NONAME ?SetArgs@PArgList@@QAEXABVPString@@@Z @2371 NONAME ?SetArgs@PArgList@@QAEXABVPStringArray@@@Z @2372 NONAME ?SetArgs@PArgList@@QAEXHPAPAD@Z @2373 NONAME ?SetAt@?$PBaseArray@D@@QAEHHD@Z @2374 NONAME ?SetAt@?$PBaseArray@E@@QAEHHE@Z @5378 NONAME ?SetAt@?$PBaseArray@F@@QAEHHF@Z @5379 NONAME ?SetAt@?$PBaseArray@G@@QAEHHG@Z @5380 NONAME ?SetAt@?$PBaseArray@H@@QAEHHH@Z @5381 NONAME ?SetAt@?$PBaseArray@I@@QAEHHI@Z @2375 NONAME ?SetAt@?$PBaseArray@J@@QAEHHJ@Z @5382 NONAME ?SetAt@?$PBaseArray@K@@QAEHHK@Z @2376 NONAME ?SetAt@?$PBaseArray@PAVElement@PHashTable@@@@QAEHHPAVElement@PHashTable@@@Z @5383 NONAME ?SetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEHABVPCaselessString@@PAVPIPCacheData@@@Z @2377 NONAME ?SetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEHABVPIPCacheKey@@PAVPIPCacheData@@@Z @2378 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEHABVPOrdinalKey@@PAVNest@PReadWriteMutex@@@Z @2379 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEHABVPOrdinalKey@@PAVPPointer@@@Z @5691 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEHABVPOrdinalKey@@PAVPThread@@@Z @2380 NONAME ?SetAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEHABVPString@@PAVPDynaLink@@@Z @5593 NONAME ?SetAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@H@Z @2381 NONAME ?SetAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHABVPOrdinalKey@@ABVPString@@@Z @2382 NONAME ?SetAt@?$PStringDictionary@VPString@@@@UAEHABVPString@@0@Z @2383 NONAME ?SetAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @2384 NONAME ?SetAt@PAbstractList@@UAEHHPAVPObject@@@Z @2385 NONAME ?SetAt@PAbstractSet@@UAEHHPAVPObject@@@Z @2386 NONAME ?SetAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @2387 NONAME ?SetAt@PArrayObjects@@UAEHHPAVPObject@@@Z @2388 NONAME ?SetAt@PBitArray@@QAEHHH@Z @2389 NONAME ?SetAutoDelete@PThread@@UAEXW4AutoDeleteFlag@1@@Z @2390 NONAME ?SetAutoDeleteObjects@PSafeCollection@@UAEXXZ @2391 NONAME ?SetAvgBytesPerSec@PQoS@@QAEXK@Z @2669 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@0H@Z @2995 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@H@Z @2996 NONAME ?SetBreak@PSerialChannel@@QAEXH@Z @2393 NONAME ?SetBrightness@PVideoDevice@@UAEHI@Z @2394 NONAME ?SetBuffers@PSoundChannel@@UAEHHH@Z @2800 NONAME ?SetBuffers@PSoundChannelWin32@@UAEHHH@Z @2801 NONAME ?SetBufferSize@PChannel@@QAEHH@Z @2396 NONAME ?SetBufferSize@PChannelStreamBuffer@@IAEHH@Z @2397 NONAME ?SetChannel@PVideoDevice@@UAEHH@Z @2399 NONAME ?SetChannel@PVideoInputDevice_FakeVideo@@UAEHH@Z @2906 NONAME ?SetColour@PVideoDevice@@UAEHI@Z @2400 NONAME ?SetColourFormat@PVideoDevice@@UAEHABVPString@@@Z @2402 NONAME ?SetColourFormat@PVideoInputDevice_FakeVideo@@UAEHABVPString@@@Z @2907 NONAME ?SetColourFormat@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@@Z @2802 NONAME ?SetColourFormat@PVideoOutputDeviceRGB@@UAEHABVPString@@@Z @16237 NONAME ?SetColourFormat@PVideoOutputDevice_Window@@UAEHABVPString@@@Z @16238 NONAME ?SetColourFormatConverter@PVideoDevice@@UAEHABVPString@@@Z @2405 NONAME ?SetCommsParam@PSerialChannel@@AAEHKEW4Parity@1@EW4FlowControl@1@1@Z @2406 NONAME ?SetConfiguration@PRemoteConnection@@QAE?AW4Status@1@ABUConfiguration@1@H@Z @2407 NONAME ?SetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@ABUConfiguration@1@H@Z @2408 NONAME ?SetConfigurationPath@PProcess@@QAEXABVPString@@@Z @2409 NONAME ?SetContrast@PVideoDevice@@UAEHI@Z @2410 NONAME ?SetCurrent@PAbstractList@@IBEHH@Z @2411 NONAME ?SetDataAt@?$POrdinalDictionary@VPString@@@@UAEHHH@Z @2412 NONAME ?SetDataAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHHABVPString@@@Z @2413 NONAME ?SetDataAt@?$PStringDictionary@VPString@@@@UAEHHABVPString@@@Z @2414 NONAME ?SetDataAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @2415 NONAME ?SetDataBits@PSerialChannel@@QAEHE@Z @2416 NONAME ?SetDefaultIpAddressFamily@PIPSocket@@SAXH@Z @2417 NONAME ?SetDefaultIpAddressFamilyV4@PIPSocket@@SAXXZ @2418 NONAME ?SetDefaultIpAddressFamilyV6@PIPSocket@@SAXXZ @2951 NONAME ?SetDefaultSection@PConfig@@UAEXABVPString@@@Z @2997 NONAME ?SetDSCP@PQoS@@QAEXH@Z @2670 NONAME ?SetDSCPAlternative@PQoS@@SAXKI@Z @2671 NONAME ?SetDstFrameSize@PColourConverter@@UAEHIIH@Z @2419 NONAME ?SetDTR@PSerialChannel@@QAEXH@Z @2420 NONAME ?SetErrorValues@PChannel@@IAEHW4Errors@1@HW4ErrorGroup@1@@Z @2421 NONAME ?SetFilePath@PFile@@QAEXABVPString@@@Z @2422 NONAME ?SetFilter@PEthSocket@@QAEHIG@Z @2423 NONAME ?SetFormat@PSound@@QAEXIII@Z @2424 NONAME ?SetFormat@PSoundChannel@@UAEHIII@Z @2803 NONAME ?SetFormat@PSoundChannelWin32@@QAEHABVPWaveFormat@@@Z @2804 NONAME ?SetFormat@PSoundChannelWin32@@UAEHIII@Z @2805 NONAME ?SetFormat@PWaveFormat@@QAEXIII@Z @2427 NONAME ?SetFormat@PWaveFormat@@QAEXPBXH@Z @2428 NONAME ?SetFrameData@PVideoOutputDeviceRGB@@UAEHIIIIPBEH@Z @16239 NONAME ?SetFrameData@PVideoOutputDevice_NULLOutput@@UAEHIIIIPBEH@Z @2908 NONAME ?SetFrameRate@PVideoDevice@@UAEHI@Z @2432 NONAME ?SetFrameRate@PVideoInputDevice_FakeVideo@@UAEHI@Z @2909 NONAME ?SetFrameRate@PVideoInputDevice_VideoForWindows@@UAEHI@Z @2806 NONAME ?SetFrameSize@PColourConverter@@UAEHII@Z @2434 NONAME ?SetFrameSize@PVideoDevice@@UAEHII@Z @2436 NONAME ?SetFrameSize@PVideoInputDevice_FakeVideo@@UAEHII@Z @2910 NONAME ?SetFrameSize@PVideoInputDevice_VideoForWindows@@UAEHII@Z @2807 NONAME ?SetFrameSize@PVideoOutputDeviceRGB@@UAEHII@Z @16240 NONAME ?SetFrameSize@PVideoOutputDevice_Window@@UAEHII@Z @16241 NONAME ?SetFrameSizeConverter@PVideoDevice@@UAEHIIH@Z @2439 NONAME ?SetGrabberFrameSize@PVideoChannel@@UAEXHH@Z @2440 NONAME ?SetGroupName@PProcess@@QAEHABVPString@@H@Z @2441 NONAME ?SetHue@PVideoDevice@@UAEHI@Z @2442 NONAME ?SetInputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @2443 NONAME ?SetInt64@PConfig@@UAEXABVPString@@0_J@Z @2998 NONAME ?SetInt64@PConfig@@UAEXABVPString@@_J@Z @2999 NONAME ?SetInteger@PConfig@@UAEXABVPString@@0J@Z @3000 NONAME ?SetInteger@PConfig@@UAEXABVPString@@J@Z @3001 NONAME ?SetInterval@PTimeInterval@@UAEX_JJJJH@Z @2446 NONAME ?SetInterval@PTimer@@UAEX_JJJJH@Z @2447 NONAME ?SetLastElementAt@Table@PHashTable@@QAEHH@Z @2448 NONAME ?SetLength@PFile@@UAEHJ@Z @2449 NONAME ?SetLevel@PTrace@@SAXI@Z @2450 NONAME ?SetLogLevel@PServiceProcess@@QAEXW4Level@PSystemLog@@@Z @5384 NONAME ?SetMaxFrameBytes@PQoS@@QAEXK@Z @2672 NONAME ?SetMaxHandles@PProcess@@QAEHH@Z @2451 NONAME ?SetMinSize@PContainer@@QAEHH@Z @2452 NONAME ?SetNotifier@PTimer@@QAEXABVPNotifier@@@Z @5385 NONAME ?SetOid@PWin32PacketDriver@@QAEHIIPBE@Z @2453 NONAME ?SetOid@PWin32PacketDriver@@QAEHIK@Z @2454 NONAME ?SetOption@PSocket@@QAEHHHH@Z @2455 NONAME ?SetOption@PSocket@@QAEHHPBXHH@Z @2456 NONAME ?SetOptions@PTrace@@SAXI@Z @2457 NONAME ?SetOutputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @2458 NONAME ?SetPacketType@PIPXSocket@@QAEHH@Z @2459 NONAME ?SetParity@PSerialChannel@@QAEHW4Parity@1@@Z @2460 NONAME ?SetPeakBytesPerSec@PQoS@@QAEXK@Z @2673 NONAME ?SetPermissions@PFile@@QAEHH@Z @5530 NONAME ?SetPermissions@PFile@@SAHABVPFilePath@@H@Z @2461 NONAME ?SetPort@PSocket@@QAEXABVPString@@@Z @2462 NONAME ?SetPort@PSocket@@QAEXG@Z @2463 NONAME ?SetPosition@PFile@@UAEHJW4FilePositionOrigin@1@@Z @2464 NONAME ?SetPriority@PThread@@UAEXW4Priority@1@@Z @2465 NONAME ?SetReadChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2466 NONAME ?SetReadTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @5386 NONAME ?SetReal@PConfig@@UAEXABVPString@@0N@Z @3002 NONAME ?SetReal@PConfig@@UAEXABVPString@@N@Z @3003 NONAME ?SetRenderFrameSize@PVideoChannel@@UAEXHH@Z @2468 NONAME ?SetRTS@PSerialChannel@@QAEXH@Z @2469 NONAME ?SetSafetyMode@PSafePtrBase@@QAEHW4PSafetyMode@@@Z @2470 NONAME ?SetSendAddress@PUDPSocket@@QAEXABVAddress@PIPSocket@@G@Z @2471 NONAME ?SetSize@PAbstractArray@@UAEHH@Z @2472 NONAME ?SetSize@PAbstractList@@UAEHH@Z @2473 NONAME ?SetSize@PAbstractSortedList@@UAEHH@Z @2474 NONAME ?SetSize@PArrayObjects@@UAEHH@Z @2475 NONAME ?SetSize@PBitArray@@UAEHH@Z @2476 NONAME ?SetSize@PHashTable@@MAEHH@Z @2477 NONAME ?SetSize@PString@@UAEHH@Z @2478 NONAME ?SetSize@PWaveFormat@@QAEHH@Z @2479 NONAME ?SetSpeed@PSerialChannel@@QAEHK@Z @2480 NONAME ?SetSrcFrameSize@PColourConverter@@UAEHII@Z @2481 NONAME ?SetStopBits@PSerialChannel@@QAEHE@Z @2482 NONAME ?SetStream@PTrace@@SAXPAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5387 NONAME ?SetString@PConfig@@UAEXABVPString@@00@Z @3004 NONAME ?SetString@PConfig@@UAEXABVPString@@0@Z @3005 NONAME ?SetStructure@PStructuredFile@@QAEXPAUElement@1@H@Z @2485 NONAME ?SetTerminationValue@PProcess@@QAEXH@Z @5388 NONAME ?SetThreadName@PProcess@@UAEXABVPString@@@Z @2486 NONAME ?SetThreadName@PThread@@UAEXABVPString@@@Z @2487 NONAME ?SetTime@PConfig@@UAEXABVPString@@0ABVPTime@@@Z @3006 NONAME ?SetTime@PConfig@@UAEXABVPString@@ABVPTime@@@Z @3007 NONAME ?SetType@PFilePath@@QAEXABVPCaselessString@@@Z @2489 NONAME ?SetUserName@PProcess@@QAEHABVPString@@H@Z @2490 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@0@Z @2491 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@K@Z @2492 NONAME ?SetVFlipState@PColourConverter@@QAEXH@Z @5389 NONAME ?SetVFlipState@PVideoDevice@@UAEHH@Z @2493 NONAME ?SetVFlipState@PVideoOutputDevice_Window@@UAEHH@Z @16242 NONAME ?SetVideoChannelFormat@PVideoDevice@@UAEHHW4VideoFormat@1@@Z @2494 NONAME ?SetVideoFormat@PVideoDevice@@UAEHW4VideoFormat@1@@Z @2496 NONAME ?SetVideoFormat@PVideoInputDevice_FakeVideo@@UAEHW4VideoFormat@PVideoDevice@@@Z @2911 NONAME ?SetVolume@PSoundChannel@@UAEHI@Z @2808 NONAME ?SetVolume@PSoundChannelWin32@@UAEHI@Z @2809 NONAME ?SetWhiteness@PVideoDevice@@UAEHI@Z @2498 NONAME ?SetWinServiceType@PQoS@@QAEXK@Z @2674 NONAME ?SetWriteChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2499 NONAME ?SetWriteTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @5390 NONAME ?Shift@PArgList@@QAEXH@Z @2500 NONAME ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5391 NONAME ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5392 NONAME ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5393 NONAME ?Shutdown@PChannel@@UAEHW4ShutdownValue@1@@Z @2501 NONAME ?Shutdown@PIndirectChannel@@UAEHW4ShutdownValue@PChannel@@@Z @2502 NONAME ?Shutdown@PSocket@@UAEHW4ShutdownValue@PChannel@@@Z @2503 NONAME ?Signal@PCondMutex@@UAEXXZ @2504 NONAME ?Signal@PCriticalSection@@UAEXXZ @16279 NONAME ?Signal@PSemaphore@@UAEXXZ @2506 NONAME ?Signal@PSyncPoint@@UAEXXZ @2507 NONAME ?Signal@PSyncPointAck@@QAEXABVPTimeInterval@@@Z @2508 NONAME ?Signal@PSyncPointAck@@UAEXXZ @2509 NONAME ?Signal@PTimedMutex@@UAEXXZ @16280 NONAME ?SignalTimerChange@PProcess@@QAEXXZ @2510 NONAME ?size@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @6142 NONAME ?size@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @6143 NONAME ?size@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEIXZ @6659 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEIXZ @6144 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7169 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @6660 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7170 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7171 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7172 NONAME ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5394 NONAME ?Sleep@PThread@@SAXABVPTimeInterval@@@Z @5395 NONAME ?snmpLibrary@WinSNMPLoader@@1PAVPWin32SnmpLibrary@@A @6437 NONAME ?soundChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7173 NONAME ?Splice@PString@@QAEXABV1@HH@Z @5396 NONAME ?Splice@PString@@QAEXPBDHH@Z @2511 NONAME ?sprintf@PString@@QAAAAV1@PBDZZ @2512 NONAME ?Start@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2513 NONAME ?Start@PVideoDevice@@UAEHXZ @2515 NONAME ?Start@PVideoInputDevice_FakeVideo@@UAEHXZ @2912 NONAME ?Start@PVideoInputDevice_VideoForWindows@@UAEHXZ @2811 NONAME ?Start@PVideoOutputDevice@@UAEHXZ @2952 NONAME ?Start@PVideoOutputDevice_NULLOutput@@UAEHXZ @2913 NONAME ?Start@PVideoOutputDevice_Window@@UAEHXZ @16243 NONAME ?Start@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2517 NONAME ?StartNest@PReadWriteMutex@@IAEAAVNest@1@XZ @2518 NONAME ?StartRead@PReadWriteMutex@@QAEXXZ @2519 NONAME ?StartRecording@PSoundChannel@@UAEHXZ @2812 NONAME ?StartRecording@PSoundChannelWin32@@UAEHXZ @2813 NONAME ?StartRunning@PTimer@@AAEXH@Z @2521 NONAME ?StartWrite@PReadWriteMutex@@QAEXXZ @2522 NONAME ?StaticControlEntry@PServiceProcess@@CGXK@Z @2523 NONAME ?StaticMainEntry@PServiceProcess@@CGXKPAPAD@Z @2524 NONAME ?StaticThreadEntry@PServiceProcess@@CAXPAX@Z @2525 NONAME ?StaticWndProc@PServiceProcess@@CGJPAUHWND__@@IIJ@Z @2526 NONAME ?Stop@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2527 NONAME ?Stop@PTimer@@QAEXXZ @2529 NONAME ?Stop@PVideoDevice@@UAEHXZ @2530 NONAME ?Stop@PVideoInputDevice_FakeVideo@@UAEHXZ @2914 NONAME ?Stop@PVideoInputDevice_VideoForWindows@@UAEHXZ @2814 NONAME ?Stop@PVideoOutputDevice@@UAEHXZ @2953 NONAME ?Stop@PVideoOutputDevice_NULLOutput@@UAEHXZ @2915 NONAME ?Stop@PVideoOutputDevice_Window@@UAEHXZ @16244 NONAME ?Stop@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @2532 NONAME ?str@ostrstream@std@@QAEPADXZ @5397 NONAME ?str@strstreambuf@std@@QAEPADXZ @5398 NONAME ?Successor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @7366 NONAME ?SupportQoS@PUDPSocket@@SAHABVAddress@PIPSocket@@@Z @16245 NONAME ?Suspend@PThread@@UAEXH@Z @2534 NONAME ?SwapRedAndBlue@PStandardColourConverter@@IBEHPBEPAEPAHII@Z @16246 NONAME ?sync@Buffer@PDebugStream@@UAEHXZ @2535 NONAME ?sync@Buffer@PStringStream@@UAEHXZ @2536 NONAME ?sync@Buffer@PSystemLog@@UAEHXZ @2537 NONAME ?sync@PChannelStreamBuffer@@MAEHXZ @2538 NONAME ?Terminate@PProcess@@UAEXXZ @2539 NONAME ?Terminate@PThread@@UAEXXZ @2540 NONAME ?TestAllFormats@PVideoInputDevice_FakeVideo@@UAEHXZ @2916 NONAME ?TestAllFormats@PVideoInputDevice_VideoForWindows@@UAEHXZ @2815 NONAME ?ThreadEntry@PServiceProcess@@AAEXXZ @2543 NONAME ?Tick@PTimer@@SA?AVPTimeInterval@@XZ @2544 NONAME ?time@?$_Locbase@H@std@@2HB @5399 NONAME ?ToCharArray@PStringArray@@QBEPAPADPAVPCharArray@@@Z @2545 NONAME ?ToggleVFlipInput@PVideoChannel@@QAEHXZ @2546 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@ABV1@H@Z @2547 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@PBDH@Z @2548 NONAME ?ToLiteral@PString@@QBE?AV1@XZ @2549 NONAME ?ToLower@PString@@QBE?AV1@XZ @2550 NONAME ?ToPascal@PString@@QBE?AVPBYTEArray@@XZ @2551 NONAME ?ToUpper@PString@@QBE?AV1@XZ @2552 NONAME ?Trim@PString@@QBE?AV1@XZ @2553 NONAME ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B @5400 NONAME ?underflow@Buffer@PDebugStream@@UAEHXZ @2554 NONAME ?underflow@Buffer@PStringStream@@UAEHXZ @2555 NONAME ?underflow@Buffer@PSystemLog@@UAEHXZ @2556 NONAME ?underflow@PChannelStreamBuffer@@MAEHXZ @2557 NONAME ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5401 NONAME ?UnknownOption@PArgList@@UBEXABVPString@@@Z @2558 NONAME ?Unlock@PSafeLockReadOnly@@QAEXXZ @7312 NONAME ?Unlock@PSafeLockReadWrite@@QAEXXZ @7313 NONAME ?UnlockReadOnly@PSafeObject@@QBEXXZ @2559 NONAME ?UnlockReadWrite@PSafeObject@@QAEXXZ @2560 NONAME ?Unregister@?$PFactory@VPSoundChannel@@VPString@@@@SAXABVPString@@@Z @15900 NONAME ?Unregister@?$PFactory@VPVideoInputDevice@@VPString@@@@SAXABVPString@@@Z @15901 NONAME ?Unregister@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAXABVPString@@@Z @15902 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHI@Z @5692 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHPAX@Z @5693 NONAME ?Unregister_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@@Z @15903 NONAME ?Unregister_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@@Z @15904 NONAME ?Unregister_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@@Z @15905 NONAME ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5402 NONAME ?upper_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @15906 NONAME ?upper_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @15907 NONAME ?upper_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @15908 NONAME ?ValidateDeviceName@PDevicePluginServiceDescriptor@@UBE_NABVPString@@H@Z @16247 NONAME ?ValidateDeviceName@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE_NABVPString@@H@Z @16248 NONAME ?ValueSelect@PAbstractSortedList@@IBEHPBUElement@1@ABVPObject@@PAPBU21@@Z @3028 NONAME ?VerifyHardwareFrameSize@PVideoInputDevice_VideoForWindows@@MAEHII@Z @2816 NONAME ?VideoHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@PAUvideohdr_tag@@@Z @2817 NONAME ?vidinChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7174 NONAME ?vidoutChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7175 NONAME ?vsprintf@PString@@QAEAAV1@ABV1@PAD@Z @5531 NONAME ?vsprintf@PString@@QAEAAV1@PBDPAD@Z @2564 NONAME ?Wait@PCriticalSection@@UAEXXZ @16281 NONAME ?Wait@PSemaphore@@UAEHABVPTimeInterval@@@Z @2565 NONAME ?Wait@PSemaphore@@UAEXXZ @2566 NONAME ?WaitCondition@PCondMutex@@UAEXXZ @2567 NONAME ?WaitForAllRecordBuffersFull@PSoundChannel@@UAEHXZ @2818 NONAME ?WaitForAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @2819 NONAME ?WaitForPlayCompletion@PSoundChannel@@UAEHXZ @2820 NONAME ?WaitForPlayCompletion@PSoundChannelWin32@@UAEHXZ @2821 NONAME ?WaitForRecordBufferFull@PSoundChannel@@UAEHXZ @2822 NONAME ?WaitForRecordBufferFull@PSoundChannelWin32@@UAEHXZ @2823 NONAME ?WaitForTermination@PPipeChannel@@QAEHABVPTimeInterval@@@Z @2572 NONAME ?WaitForTermination@PPipeChannel@@QAEHXZ @2573 NONAME ?WaitForTermination@PThread@@QBEHABVPTimeInterval@@@Z @2574 NONAME ?WaitForTermination@PThread@@QBEXXZ @2575 NONAME ?what@logic_error@std@@UBEPBDXZ @5821 NONAME ?WillBlock@PSemaphore@@UBEHXZ @2576 NONAME ?Win32AttachThreadInput@PThread@@QAEXXZ @16282 NONAME ?WndProc@PServiceProcess@@AAEJPAUHWND__@@IIJ@Z @2577 NONAME ?WndProc@PVideoOutputDevice_Window@@QAEJIIJ@Z @16249 NONAME ?Write@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @16250 NONAME ?Write@PChannel@@UAEHPBXH@Z @2578 NONAME ?Write@PConsoleChannel@@UAEHPBXH@Z @2579 NONAME ?Write@PEthSocket@@UAEHPBXH@Z @2580 NONAME ?Write@PFile@@UAEHPBXH@Z @2581 NONAME ?Write@PIndirectChannel@@UAEHPBXH@Z @2582 NONAME ?Write@PMultiMediaFile@@QAEHPBXH@Z @2583 NONAME ?Write@PPipeChannel@@UAEHPBXH@Z @2584 NONAME ?Write@PSerialChannel@@UAEHPBXH@Z @2585 NONAME ?Write@PSocket@@UAEHPBXH@Z @2586 NONAME ?Write@PSoundChannel@@UAEHPBXH@Z @2587 NONAME ?Write@PSoundChannelWin32@@UAEHPBXH@Z @2824 NONAME ?Write@PStructuredFile@@EAEHPBXH@Z @2588 NONAME ?Write@PStructuredFile@@QAEHPBX@Z @2589 NONAME ?Write@PTCPSocket@@UAEHPBXH@Z @2590 NONAME ?Write@PUDPSocket@@UAEHPBXH@Z @2591 NONAME ?Write@PVideoChannel@@UAEHPBXH@Z @2592 NONAME ?WriteAsync@PChannel@@UAEHPBXH@Z @2593 NONAME ?WriteAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2594 NONAME ?WriteChar@PChannel@@QAEHH@Z @2595 NONAME ?WriteComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @2596 NONAME ?WriteLine@PTextFile@@QAEHABVPString@@@Z @2597 NONAME ?WriteOutOfBand@PTCPSocket@@UAEHPBXH@Z @2598 NONAME ?WriteString@PChannel@@QAEHABVPString@@@Z @2599 NONAME ?WriteTo@PIPDatagramSocket@@UAEHPBXHABVAddress@PIPSocket@@G@Z @2600 NONAME ?WriteTo@PIPXSocket@@UAEHPBXHABVAddress@1@G@Z @2601 NONAME ?Yield@PThread@@SAXXZ @2602 NONAME ?YUV420PtoRGB@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @16251 NONAME ?Zero@P_fd_set@@QAEXXZ @2604 NONAME ?_Buy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAE_NI@Z @6146 NONAME ?_Buy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAE_NI@Z @6147 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@D@Z @6661 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6662 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@D@Z @6148 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6149 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@D@Z @7176 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7177 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6663 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@D@Z @6664 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6665 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@D@Z @7178 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7179 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@D@Z @7180 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7181 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@D@Z @7182 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7183 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6666 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6153 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7184 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6667 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6668 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7185 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7186 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7187 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@0@Z @15909 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXABV12@@Z @15910 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@0@Z @15911 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXABV12@@Z @15912 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@0@Z @15913 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXABV12@@Z @15914 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEXXZ @6669 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEXXZ @6156 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7188 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6670 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7189 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7190 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7191 NONAME ?_Destroy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXPAPAVPPluginModuleManager@@0@Z @6158 NONAME ?_Destroy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXPAVPString@@0@Z @6159 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6671 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6160 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7192 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6672 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6673 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7193 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7194 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7195 NONAME ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B @5403 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEXXZ @6674 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEXXZ @6163 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7196 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6675 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6676 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7197 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7198 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7199 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXXZ @6677 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXXZ @6166 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7200 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @6678 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @6679 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7201 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7202 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7203 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6680 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @6169 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7204 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6681 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7205 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7206 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7207 NONAME ?_Insert_n@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXViterator@12@IABQAVPPluginModuleManager@@@Z @6171 NONAME ?_Insert_n@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXViterator@12@IABVPString@@@Z @6172 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6682 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6173 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7208 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6683 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6684 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7209 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7210 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7211 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6685 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6176 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7212 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6686 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6687 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7213 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7214 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7215 NONAME ?_Kfn@?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@SAABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6688 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @6179 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7216 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@@Z @6689 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6690 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7217 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7218 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7219 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6691 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7220 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @6692 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @6693 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7221 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7222 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7223 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @6694 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6184 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7224 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6695 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6696 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7225 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7226 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7227 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6697 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6187 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7228 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6698 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6699 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7229 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7230 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7231 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6700 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6190 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7232 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6701 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6702 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7233 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7234 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7235 NONAME ?_main@PProcess@@UAEHPAX@Z @2605 NONAME ?_main@PServiceProcess@@UAEHPAX@Z @2606 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @6703 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6193 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7236 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6704 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6705 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7237 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7238 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7239 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @6706 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6196 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7240 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6707 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6708 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7241 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7242 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7243 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@3@XZ @6709 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@3@XZ @6199 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7244 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @6710 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @6711 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7245 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7246 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7247 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6712 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6202 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7248 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6713 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6714 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7249 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7250 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7251 NONAME ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B @5404 NONAME ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B @5405 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @6715 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6205 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7252 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6716 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6717 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7253 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7254 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7255 NONAME ?_Psave@?$_Facetptr@V?$ctype@D@std@@@std@@2PBVfacet@locale@2@B @5406 NONAME ?_Psave@?$_Facetptr@V?$ctype@G@std@@@std@@2PBVfacet@locale@2@B @5407 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @6718 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6208 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7256 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6719 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6720 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7257 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7258 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7259 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6721 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6211 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7260 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6722 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6723 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7261 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7262 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7263 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6724 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6725 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6214 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7264 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7265 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6726 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6727 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6728 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6729 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7266 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7267 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7268 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7269 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7270 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7271 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6730 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6219 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7272 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6731 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6732 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7273 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7274 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7275 NONAME ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5408 NONAME ?_Stz@?$fpos@H@std@@0HA @5409 NONAME ?_Tidy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXXZ @6222 NONAME ?_Tidy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXXZ @6223 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXXZ @6733 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXXZ @6224 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7276 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @6734 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @6735 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7277 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7278 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7279 NONAME ?_Ubound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @15915 NONAME ?_Ubound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @15916 NONAME ?_Ubound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @15917 NONAME ?_Ufill@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEPAPAVPPluginModuleManager@@PAPAV3@IABQAV3@@Z @6227 NONAME ?_Ufill@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@PAV3@IABV3@@Z @6228 NONAME ?_Xlen@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IBEXXZ @6229 NONAME ?_Xlen@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IBEXXZ @6230 NONAME _PTimeGetChar@4 @2610 NONAME _PTimeGetDateOrder@0 @2611 NONAME _PTimeIsDayName@12 @2612 NONAME _PTimeIsMonthName@12 @2613 NONAME _PTimeParse@12 @2614 NONAME _PTimeUngetChar@8 @2615 NONAME __CT??_R0?AVbad_cast@@@8??0bad_cast@@QAE@ABV0@@Z12 @5410 NONAME __CT??_R0?AVexception@@@8??0exception@@QAE@ABV0@@Z12 @5411 NONAME __CT??_R0?AVlength_error@std@@@8??0length_error@std@@QAE@ABV01@@Z40 @5852 NONAME __CT??_R0?AVlogic_error@std@@@8??0logic_error@std@@QAE@ABV01@@Z40 @5853 NONAME __CT??_R0?AVout_of_range@std@@@8??0out_of_range@std@@QAE@ABV01@@Z40 @5854 NONAME __CTA2?AVbad_cast@@ @5412 NONAME __CTA3?AVlength_error@std@@ @5855 NONAME __CTA3?AVout_of_range@std@@ @5856 NONAME __TI2?AVbad_cast@@ @5413 NONAME __TI3?AVlength_error@std@@ @5857 NONAME __TI3?AVout_of_range@std@@ @5858 NONAME pwlib_v1_10_2/include/ptlib/msos/ptlibd.dtf0100644000176200056700000201604710276124411021101 0ustar releasepostincrLIBRARY ptlibd EXPORTS ??0?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@ABV?$allocator@PAVPFactoryBase@@@1@@Z @6547 NONAME ??0?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVPProcessStartup@@@1@@Z @5772 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@@Z @6796 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@1@@Z @6548 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@@Z @6549 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@1@@Z @6797 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE@ABV01@@Z @7311 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@1@@Z @6798 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE@ABV01@@Z @7312 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@1@@Z @6799 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE@ABV01@@Z @7313 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABU01@@Z @6550 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@ABQAVPFactoryBase@@@Z @6551 NONAME ??0?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU01@@Z @5776 NONAME ??0?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU?$pair@VPString@@PAVPProcessStartup@@@1@@Z @5777 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@ABU01@@Z @6800 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@Z @6801 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABU01@@Z @6552 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@Z @6553 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@ABU01@@Z @6802 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@Z @6803 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@ABU01@@Z @6804 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@Z @6805 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@ABU01@@Z @6806 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@Z @6807 NONAME ??0?$pair@Viterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@1@AB_N@Z @6554 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@1@AB_N@Z @5780 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@1@AB_N@Z @6808 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@1@AB_N@Z @6555 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@V123@@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@1@0@Z @7314 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@1@AB_N@Z @6809 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@V123@@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@1@0@Z @7315 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@1@AB_N@Z @6810 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@V123@@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@1@0@Z @7316 NONAME ??0?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@_N@std@@QAE@ABViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@1@AB_N@Z @6811 NONAME ??0?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@ABVPString@@ABQAVPProcessStartup@@@Z @5782 NONAME ??0?$PArray@VPString@@@@IAE@HPBV0@@Z @1 NONAME ??0?$PArray@VPString@@@@QAE@ABV0@@Z @2 NONAME ??0?$PArray@VPString@@@@QAE@H@Z @3 NONAME ??0?$PArray@VPWaveBuffer@@@@IAE@HPBV0@@Z @4 NONAME ??0?$PArray@VPWaveBuffer@@@@QAE@H@Z @5 NONAME ??0?$PArray@VPWin32PacketBuffer@@@@IAE@HPBV0@@Z @6 NONAME ??0?$PArray@VPWin32PacketBuffer@@@@QAE@H@Z @7 NONAME ??0?$PBaseArray@D@@QAE@ABV0@@Z @8 NONAME ??0?$PBaseArray@D@@QAE@H@Z @9 NONAME ??0?$PBaseArray@D@@QAE@PBDHH@Z @10 NONAME ??0?$PBaseArray@E@@QAE@ABV0@@Z @11 NONAME ??0?$PBaseArray@E@@QAE@H@Z @12 NONAME ??0?$PBaseArray@E@@QAE@PBEHH@Z @13 NONAME ??0?$PBaseArray@F@@QAE@H@Z @14 NONAME ??0?$PBaseArray@F@@QAE@PBFHH@Z @15 NONAME ??0?$PBaseArray@G@@QAE@ABV0@@Z @16 NONAME ??0?$PBaseArray@G@@QAE@H@Z @17 NONAME ??0?$PBaseArray@G@@QAE@PBGHH@Z @18 NONAME ??0?$PBaseArray@H@@QAE@ABV0@@Z @19 NONAME ??0?$PBaseArray@H@@QAE@H@Z @20 NONAME ??0?$PBaseArray@H@@QAE@PBHHH@Z @21 NONAME ??0?$PBaseArray@I@@QAE@H@Z @22 NONAME ??0?$PBaseArray@I@@QAE@PBIHH@Z @23 NONAME ??0?$PBaseArray@J@@QAE@H@Z @24 NONAME ??0?$PBaseArray@J@@QAE@PBJHH@Z @25 NONAME ??0?$PBaseArray@K@@QAE@H@Z @26 NONAME ??0?$PBaseArray@K@@QAE@PBKHH@Z @27 NONAME ??0?$PBaseArray@PAVElement@PHashTable@@@@QAE@H@Z @28 NONAME ??0?$PBaseArray@PAVElement@PHashTable@@@@QAE@PBQAVElement@PHashTable@@HH@Z @29 NONAME ??0?$PBaseArray@PAVPObject@@@@QAE@H@Z @30 NONAME ??0?$PBaseArray@PAVPObject@@@@QAE@PBQAVPObject@@HH@Z @31 NONAME ??0?$PDevicePluginAdapter@VPSoundChannel@@@@QAE@XZ @6812 NONAME ??0?$PDevicePluginAdapter@VPVideoInputDevice@@@@QAE@XZ @6813 NONAME ??0?$PDevicePluginAdapter@VPVideoOutputDevice@@@@QAE@XZ @6814 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@IAE@HPBV0@@Z @32 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@QAE@XZ @33 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@IAE@HPBV0@@Z @34 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@QAE@XZ @35 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@IAE@HPBV0@@Z @36 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@QAE@XZ @37 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@IAE@HPBV0@@Z @5620 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@QAE@XZ @5621 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@IAE@HPBV0@@Z @38 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@QAE@XZ @39 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@IAE@HPBV0@@Z @5541 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@ABV0@@Z @5542 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@XZ @5543 NONAME ??0?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@XZ @6815 NONAME ??0?$PFactory@VPPluginModuleManager@@VPString@@@@IAE@XZ @6374 NONAME ??0?$PFactory@VPProcessStartup@@VPString@@@@IAE@XZ @6375 NONAME ??0?$PFactory@VPSoundChannel@@VPString@@@@IAE@XZ @6816 NONAME ??0?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@XZ @6817 NONAME ??0?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@XZ @6818 NONAME ??0?$PList@VInterfaceEntry@PIPSocket@@@@IAE@HPBV0@@Z @7317 NONAME ??0?$PList@VInterfaceEntry@PIPSocket@@@@QAE@XZ @7318 NONAME ??0?$PList@VPDynaLink@@@@IAE@HPBV0@@Z @3986 NONAME ??0?$PList@VPDynaLink@@@@QAE@XZ @3987 NONAME ??0?$PList@VPNotifier@@@@IAE@HPBV0@@Z @3988 NONAME ??0?$PList@VPNotifier@@@@QAE@XZ @3989 NONAME ??0?$PList@VPPluginService@@@@IAE@HPBV0@@Z @3601 NONAME ??0?$PList@VPPluginService@@@@QAE@XZ @3602 NONAME ??0?$PList@VPSafeObject@@@@IAE@HPBV0@@Z @6819 NONAME ??0?$PList@VPSafeObject@@@@QAE@XZ @6820 NONAME ??0?$PList@VPSocket@@@@IAE@HPBV0@@Z @40 NONAME ??0?$PList@VPSocket@@@@QAE@XZ @41 NONAME ??0?$PList@VPString@@@@IAE@HPBV0@@Z @42 NONAME ??0?$PList@VPString@@@@QAE@ABV0@@Z @43 NONAME ??0?$PList@VPString@@@@QAE@XZ @44 NONAME ??0?$PList@VPThread@@@@IAE@HPBV0@@Z @45 NONAME ??0?$PList@VPThread@@@@QAE@XZ @46 NONAME ??0?$PList@VPTimer@@@@IAE@HPBV0@@Z @47 NONAME ??0?$PList@VPTimer@@@@QAE@XZ @48 NONAME ??0?$POrdinalDictionary@VPString@@@@IAE@HPBV0@@Z @49 NONAME ??0?$POrdinalDictionary@VPString@@@@QAE@XZ @50 NONAME ??0?$PScalarArray@F@@QAE@H@Z @51 NONAME ??0?$PScalarArray@G@@QAE@ABV0@@Z @52 NONAME ??0?$PScalarArray@G@@QAE@H@Z @53 NONAME ??0?$PScalarArray@H@@QAE@ABV0@@Z @54 NONAME ??0?$PScalarArray@H@@QAE@H@Z @55 NONAME ??0?$PScalarArray@I@@QAE@H@Z @56 NONAME ??0?$PScalarArray@J@@QAE@H@Z @57 NONAME ??0?$PScalarArray@K@@QAE@H@Z @58 NONAME ??0?$PSet@VPString@@@@IAE@HPBV0@@Z @59 NONAME ??0?$PSet@VPString@@@@QAE@H@Z @60 NONAME ??0?$PSortedList@VPString@@@@IAE@HPBV0@@Z @61 NONAME ??0?$PSortedList@VPString@@@@QAE@XZ @62 NONAME ??0?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@QAE@XZ @7319 NONAME ??0?$PStringDictionary@VPOrdinalKey@@@@IAE@HPBV0@@Z @63 NONAME ??0?$PStringDictionary@VPOrdinalKey@@@@QAE@XZ @64 NONAME ??0?$PStringDictionary@VPString@@@@IAE@HPBV0@@Z @65 NONAME ??0?$PStringDictionary@VPString@@@@QAE@ABV0@@Z @66 NONAME ??0?$PStringDictionary@VPString@@@@QAE@XZ @67 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@QAE@XZ @7320 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@QAE@XZ @7321 NONAME ??0?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@QAE@XZ @7322 NONAME ??0?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@ABV?$allocator@PAVPPluginModuleManager@@@1@@Z @5783 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@ABV01@@Z @5784 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@ABV?$allocator@VPString@@@1@@Z @5785 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @6821 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @6822 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @6823 NONAME ??0?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @6556 NONAME ??0?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @6557 NONAME ??0?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@_NABV?$allocator@PAVPFactoryBase@@@1@@Z @6558 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVPProcessStartup@@@1@@Z @5786 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@@Z @6824 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@1@@Z @6559 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@@Z @6560 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@1@@Z @6825 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@ABV01@@Z @7323 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@1@@Z @6826 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@ABV01@@Z @7324 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@ABU?$less@VPString@@@1@_NABV?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@1@@Z @6827 NONAME ??0?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@ABV01@@Z @7325 NONAME ??0Address@PEthSocket@@QAE@ABT01@@Z @68 NONAME ??0Address@PEthSocket@@QAE@ABVPString@@@Z @69 NONAME ??0Address@PEthSocket@@QAE@PBE@Z @70 NONAME ??0Address@PEthSocket@@QAE@XZ @71 NONAME ??0Address@PIPSocket@@QAE@ABUin6_addr@@@Z @3864 NONAME ??0Address@PIPSocket@@QAE@ABUin_addr@@@Z @72 NONAME ??0Address@PIPSocket@@QAE@ABV01@@Z @73 NONAME ??0Address@PIPSocket@@QAE@ABVPString@@@Z @74 NONAME ??0Address@PIPSocket@@QAE@EEEE@Z @75 NONAME ??0Address@PIPSocket@@QAE@HHPAUsockaddr@@@Z @3865 NONAME ??0Address@PIPSocket@@QAE@HPBE@Z @76 NONAME ??0Address@PIPSocket@@QAE@K@Z @77 NONAME ??0Address@PIPSocket@@QAE@XZ @78 NONAME ??0Address@PIPXSocket@@QAE@ABV01@@Z @79 NONAME ??0Address@PIPXSocket@@QAE@ABVPString@@@Z @80 NONAME ??0Address@PIPXSocket@@QAE@KPBD@Z @81 NONAME ??0Address@PIPXSocket@@QAE@XZ @82 NONAME ??0Block@PTrace@@QAE@PBDH0@Z @83 NONAME ??0Buffer@PDebugStream@@QAE@XZ @84 NONAME ??0Buffer@PStringStream@@QAE@AAV1@H@Z @85 NONAME ??0Buffer@PStringStream@@QAE@ABV01@@Z @86 NONAME ??0Buffer@PSystemLog@@QAE@XZ @87 NONAME ??0CMCDLL@PMail@@QAE@XZ @88 NONAME ??0CMC_message_reference_ptr@@QAE@ABVPString@@@Z @89 NONAME ??0const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@ABViterator@12@@Z @6561 NONAME ??0const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@XZ @6562 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @6828 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@XZ @6829 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @6563 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@XZ @6564 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @6565 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@XZ @6566 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @6830 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@XZ @6831 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @6832 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@XZ @6833 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@ABViterator@12@@Z @6834 NONAME ??0const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@XZ @6835 NONAME ??0DeleteObjectsTimeout_PNotifier@PSafeCollection@@QAE@PAV1@@Z @90 NONAME ??0Element@PAbstractList@@QAE@PAVPObject@@@Z @91 NONAME ??0FactoryMap@PFactoryBase@@QAE@XZ @6567 NONAME ??0HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@QAE@PAV1@@Z @7326 NONAME ??0HandleDisplay_PNotifier@PVideoOutputDevice_Window@@QAE@PAV1@@Z @7327 NONAME ??0HouseKeepingThread@PProcess@@QAE@XZ @93 NONAME ??0Info@PAbstractList@@QAE@XZ @94 NONAME ??0Info@PAbstractSortedList@@QAE@XZ @7328 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABV01@@Z @7329 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABVPString@@ABVAddress@1@100@Z @7330 NONAME ??0iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@PAU_Node@12@@Z @6568 NONAME ??0iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@XZ @6569 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE@PAU_Node@12@@Z @5796 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @6836 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@XZ @6837 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @6570 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@XZ @6571 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @6572 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@XZ @6573 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @6838 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@XZ @6839 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @6840 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@XZ @6841 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@PAU_Node@12@@Z @6842 NONAME ??0iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@XZ @6843 NONAME ??0MAPIDLL@PMail@@QAE@XZ @97 NONAME ??0Nest@PReadWriteMutex@@QAE@XZ @98 NONAME ??0NT_ServiceManager@@QAE@XZ @99 NONAME ??0PAbstractArray@@QAE@ABV0@@Z @100 NONAME ??0PAbstractArray@@QAE@HH@Z @101 NONAME ??0PAbstractArray@@QAE@HPBXHH@Z @102 NONAME ??0PAbstractDictionary@@IAE@HPBV0@@Z @103 NONAME ??0PAbstractDictionary@@QAE@ABV0@@Z @104 NONAME ??0PAbstractDictionary@@QAE@XZ @105 NONAME ??0PAbstractList@@IAE@HPBV0@@Z @106 NONAME ??0PAbstractList@@QAE@ABV0@@Z @107 NONAME ??0PAbstractList@@QAE@XZ @108 NONAME ??0PAbstractSet@@IAE@HPBV0@@Z @109 NONAME ??0PAbstractSet@@QAE@XZ @110 NONAME ??0PAbstractSortedList@@IAE@HPBV0@@Z @111 NONAME ??0PAbstractSortedList@@QAE@XZ @112 NONAME ??0PArgList@@QAE@ABV0@@Z @113 NONAME ??0PArgList@@QAE@ABVPString@@0H@Z @114 NONAME ??0PArgList@@QAE@ABVPString@@PBDH@Z @115 NONAME ??0PArgList@@QAE@HPAPADABVPString@@H@Z @116 NONAME ??0PArgList@@QAE@HPAPADPBDH@Z @117 NONAME ??0PArgList@@QAE@PBD0H@Z @118 NONAME ??0PArrayObjects@@IAE@HPBV0@@Z @119 NONAME ??0PArrayObjects@@QAE@ABV0@@Z @120 NONAME ??0PArrayObjects@@QAE@H@Z @121 NONAME ??0PAtomicInteger@@QAE@J@Z @5516 NONAME ??0PBitArray@@QAE@ABV0@@Z @122 NONAME ??0PBitArray@@QAE@H@Z @123 NONAME ??0PBitArray@@QAE@PBXHH@Z @124 NONAME ??0PBYTEArray@@QAE@ABV0@@Z @125 NONAME ??0PBYTEArray@@QAE@H@Z @126 NONAME ??0PBYTEArray@@QAE@PBEHH@Z @127 NONAME ??0PCapStatus@@QAE@PAUHWND__@@@Z @128 NONAME ??0PCaselessString@@IAE@HPBV0@@Z @129 NONAME ??0PCaselessString@@QAE@ABV0@@Z @130 NONAME ??0PCaselessString@@QAE@ABVPString@@@Z @131 NONAME ??0PCaselessString@@QAE@PBD@Z @132 NONAME ??0PCaselessString@@QAE@XZ @133 NONAME ??0PChannel@@IAE@ABV0@@Z @134 NONAME ??0PChannel@@QAE@XZ @135 NONAME ??0PChannelStreamBuffer@@IAE@PAVPChannel@@@Z @136 NONAME ??0PChannelStreamBuffer@@QAE@ABV0@@Z @137 NONAME ??0PCharArray@@QAE@ABV0@@Z @138 NONAME ??0PCharArray@@QAE@H@Z @139 NONAME ??0PCharArray@@QAE@PBDHH@Z @140 NONAME ??0PCollection@@IAE@HPBV0@@Z @141 NONAME ??0PCollection@@QAE@ABV0@@Z @142 NONAME ??0PCollection@@QAE@H@Z @143 NONAME ??0PColourConverter@@QAE@ABVPString@@0II@Z @144 NONAME ??0PColourConverterRegistration@@QAE@ABVPString@@0@Z @145 NONAME ??0PCondMutex@@QAE@XZ @146 NONAME ??0PConfig@@QAE@ABVPFilePath@@ABVPString@@@Z @147 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@00@Z @148 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@0@Z @149 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@@Z @150 NONAME ??0PConfig@@QAE@W4Source@0@@Z @151 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@1@Z @152 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@@Z @153 NONAME ??0PConfigArgs@@QAE@ABVPArgList@@@Z @154 NONAME ??0PConsoleChannel@@QAE@W4ConsoleType@0@@Z @155 NONAME ??0PConsoleChannel@@QAE@XZ @156 NONAME ??0PContainer@@IAE@HPBV0@@Z @157 NONAME ??0PContainer@@QAE@ABV0@@Z @158 NONAME ??0PContainer@@QAE@H@Z @159 NONAME ??0PCriticalSection@@QAE@XZ @5517 NONAME ??0PDebugStream@@QAE@XZ @160 NONAME ??0PDevicePluginAdapterBase@@QAE@XZ @6844 NONAME ??0PDevicePluginServiceDescriptor@@QAE@XZ @7331 NONAME ??0PDirectory@@QAE@ABV0@@Z @161 NONAME ??0PDirectory@@QAE@ABVPString@@@Z @162 NONAME ??0PDirectory@@QAE@PBD@Z @163 NONAME ??0PDirectory@@QAE@XZ @164 NONAME ??0PDynaLink@@QAE@ABVPString@@@Z @165 NONAME ??0PDynaLink@@QAE@XZ @166 NONAME ??0PEthSocket@@QAE@HHH@Z @167 NONAME ??0PFactoryBase@@IAE@XZ @6574 NONAME ??0PFile@@QAE@ABVPFilePath@@W4OpenMode@0@H@Z @169 NONAME ??0PFile@@QAE@W4OpenMode@0@H@Z @170 NONAME ??0PFile@@QAE@XZ @171 NONAME ??0PFileInfo@@QAE@XZ @172 NONAME ??0PFilePath@@QAE@ABV0@@Z @173 NONAME ??0PFilePath@@QAE@ABVPString@@@Z @174 NONAME ??0PFilePath@@QAE@PBD0@Z @175 NONAME ??0PFilePath@@QAE@PBD@Z @176 NONAME ??0PFilePath@@QAE@XZ @177 NONAME ??0PHashTable@@IAE@HPBV0@@Z @178 NONAME ??0PHashTable@@QAE@ABV0@@Z @179 NONAME ??0PHashTable@@QAE@XZ @180 NONAME ??0PHostByAddr@@QAE@XZ @181 NONAME ??0PHostByName@@QAE@XZ @182 NONAME ??0PICMPDLL@@QAE@XZ @183 NONAME ??0PICMPSocket@@QAE@XZ @184 NONAME ??0PImageDLL@@QAE@XZ @185 NONAME ??0PIndirectChannel@@QAE@XZ @186 NONAME ??0PingInfo@PICMPSocket@@QAE@G@Z @187 NONAME ??0PInstantiateMe@@QAE@XZ @7332 NONAME ??0PIntCondMutex@@QAE@HHW4Operation@0@@Z @188 NONAME ??0PIPCacheData@@QAE@PAUaddrinfo@@PBD@Z @3866 NONAME ??0PIPCacheData@@QAE@PAUhostent@@PBD@Z @189 NONAME ??0PIPCacheKey@@QAE@ABV0@@Z @190 NONAME ??0PIPCacheKey@@QAE@ABVAddress@PIPSocket@@@Z @191 NONAME ??0PIPDatagramSocket@@IAE@XZ @192 NONAME ??0PIPSocket@@IAE@XZ @193 NONAME ??0PIPXSocket@@QAE@G@Z @194 NONAME ??0PluginLoaderStartup@@QAE@XZ @5799 NONAME ??0PMail@@QAE@ABVPString@@00@Z @195 NONAME ??0PMail@@QAE@ABVPString@@0@Z @196 NONAME ??0PMail@@QAE@XZ @197 NONAME ??0PMultiMediaFile@@QAE@XZ @199 NONAME ??0PMutex@@QAE@ABV0@@Z @200 NONAME ??0PMutex@@QAE@XZ @201 NONAME ??0PNotifier@@QAE@ABV0@@Z @202 NONAME ??0PNotifier@@QAE@PAVPNotifierFunction@@@Z @203 NONAME ??0PNotifierFunction@@QAE@PAX@Z @204 NONAME ??0PNotifyIconData@@QAE@PAUHWND__@@IPBD@Z @205 NONAME ??0PObject@@IAE@XZ @206 NONAME ??0PObject@@QAE@ABV0@@Z @207 NONAME ??0POrdinalKey@@QAE@H@Z @208 NONAME ??0POrdinalToString@@IAE@HPBV0@@Z @209 NONAME ??0POrdinalToString@@QAE@HPBUInitialiser@0@@Z @210 NONAME ??0POrdinalToString@@QAE@XZ @211 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@0@HH@Z @212 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@W4OpenMode@0@HH@Z @213 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringToString@@W4OpenMode@0@HH@Z @214 NONAME ??0PPipeChannel@@QAE@ABVPString@@W4OpenMode@0@HH@Z @215 NONAME ??0PPipeChannel@@QAE@XZ @216 NONAME ??0PPluginManager@@QAE@XZ @3604 NONAME ??0PPluginModuleManager@@QAE@PBDPAVPPluginManager@@@Z @5545 NONAME ??0PPluginService@@QAE@ABVPString@@0PAVPPluginServiceDescriptor@@@Z @3605 NONAME ??0PPluginServiceDescriptor@@QAE@XZ @7333 NONAME ??0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z @3607 NONAME ??0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z @3765 NONAME ??0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z @3608 NONAME ??0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z @3766 NONAME ??0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z @7334 NONAME ??0PPointer@@QAE@PAX@Z @5622 NONAME ??0PProcess@@QAE@PBD0GGW4CodeStatus@0@G@Z @217 NONAME ??0PProcessStartup@@QAE@XZ @5800 NONAME ??0PQoS@@QAE@H@Z @3526 NONAME ??0PQoS@@QAE@KKHKK@Z @3527 NONAME ??0PQoS@@QAE@XZ @3528 NONAME ??0PRASDLL@@QAE@XZ @218 NONAME ??0PReadWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3982 NONAME ??0PReadWriteMutex@@QAE@XZ @219 NONAME ??0PRegularExpression@@QAE@ABV0@@Z @3920 NONAME ??0PRegularExpression@@QAE@ABVPString@@H@Z @220 NONAME ??0PRegularExpression@@QAE@PBDH@Z @221 NONAME ??0PRegularExpression@@QAE@XZ @222 NONAME ??0PRemoteConnection@@QAE@ABVPString@@@Z @223 NONAME ??0PRemoteConnection@@QAE@XZ @224 NONAME ??0PSafeCollection@@QAE@PAVPCollection@@@Z @225 NONAME ??0PSafeLockReadOnly@@QAE@ABVPSafeObject@@@Z @7303 NONAME ??0PSafeLockReadWrite@@QAE@ABVPSafeObject@@@Z @7304 NONAME ??0PSafeObject@@QAE@XZ @226 NONAME ??0PSafePtrBase@@IAE@ABV0@@Z @229 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@H@Z @6845 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@PAVPSafeObject@@@Z @6846 NONAME ??0PSafePtrBase@@IAE@PAVPSafeObject@@W4PSafetyMode@@@Z @230 NONAME ??0PSemaphore@@IAE@PAX@Z @231 NONAME ??0PSemaphore@@QAE@ABV0@@Z @232 NONAME ??0PSemaphore@@QAE@II@Z @233 NONAME ??0PSerialChannel@@QAE@AAVPConfig@@@Z @234 NONAME ??0PSerialChannel@@QAE@ABVPString@@KEW4Parity@0@EW4FlowControl@0@2@Z @235 NONAME ??0PSerialChannel@@QAE@XZ @236 NONAME ??0PServiceProcess@@QAE@PBD0GGW4CodeStatus@PProcess@@G@Z @237 NONAME ??0PSimpleThread@@QAE@ABVPNotifier@@HW4AutoDeleteFlag@PThread@@W4Priority@3@ABVPString@@H@Z @238 NONAME ??0PSmartObject@@QAE@XZ @239 NONAME ??0PSmartPointer@@QAE@ABV0@@Z @240 NONAME ??0PSmartPointer@@QAE@PAVPSmartObject@@@Z @241 NONAME ??0PSmartPtrInspector@@QAE@ABVPNotifier@@@Z @5623 NONAME ??0Psockaddr@@QAE@ABVAddress@PIPSocket@@G@Z @3867 NONAME ??0Psockaddr@@QAE@XZ @3868 NONAME ??0PSocket@@IAE@XZ @242 NONAME ??0PSortedStringList@@IAE@HPBV0@@Z @243 NONAME ??0PSortedStringList@@QAE@ABVPString@@@Z @244 NONAME ??0PSortedStringList@@QAE@ABVPStringArray@@@Z @245 NONAME ??0PSortedStringList@@QAE@ABVPStringList@@@Z @246 NONAME ??0PSortedStringList@@QAE@HPBQBDH@Z @247 NONAME ??0PSound@@QAE@ABVPFilePath@@@Z @248 NONAME ??0PSound@@QAE@IIIHPBE@Z @249 NONAME ??0PSoundChannel@@QAE@ABVPString@@W4Directions@0@III@Z @250 NONAME ??0PSoundChannel@@QAE@XZ @251 NONAME ??0PSoundChannelWin32@@QAE@ABVPString@@W4Directions@PSoundChannel@@III@Z @3610 NONAME ??0PSoundChannelWin32@@QAE@XZ @3611 NONAME ??0PSPXSocket@@QAE@G@Z @252 NONAME ??0PStandardColourConverter@@IAE@ABVPString@@0II@Z @253 NONAME ??0PString@@IAE@HPBV0@@Z @254 NONAME ??0PString@@QAA@W4ConversionType@0@PBDZZ @255 NONAME ??0PString@@QAE@ABV0@@Z @256 NONAME ??0PString@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @6195 NONAME ??0PString@@QAE@ABV?$PScalarArray@G@@@Z @257 NONAME ??0PString@@QAE@D@Z @258 NONAME ??0PString@@QAE@F@Z @259 NONAME ??0PString@@QAE@G@Z @260 NONAME ??0PString@@QAE@H@Z @261 NONAME ??0PString@@QAE@I@Z @262 NONAME ??0PString@@QAE@J@Z @263 NONAME ??0PString@@QAE@K@Z @264 NONAME ??0PString@@QAE@PBD@Z @265 NONAME ??0PString@@QAE@PBDH@Z @266 NONAME ??0PString@@QAE@PBG@Z @267 NONAME ??0PString@@QAE@PBGH@Z @268 NONAME ??0PString@@QAE@W4ConversionType@0@JI@Z @269 NONAME ??0PString@@QAE@W4ConversionType@0@NI@Z @270 NONAME ??0PString@@QAE@XZ @271 NONAME ??0PString@@QAE@_J@Z @272 NONAME ??0PString@@QAE@_K@Z @273 NONAME ??0PStringArray@@IAE@HPBV0@@Z @274 NONAME ??0PStringArray@@QAE@ABV0@@Z @275 NONAME ??0PStringArray@@QAE@ABVPSortedStringList@@@Z @276 NONAME ??0PStringArray@@QAE@ABVPString@@@Z @277 NONAME ??0PStringArray@@QAE@ABVPStringList@@@Z @278 NONAME ??0PStringArray@@QAE@H@Z @279 NONAME ??0PStringArray@@QAE@HPBQBDH@Z @280 NONAME ??0PStringList@@IAE@HPBV0@@Z @281 NONAME ??0PStringList@@QAE@ABV0@@Z @282 NONAME ??0PStringList@@QAE@ABVPSortedStringList@@@Z @283 NONAME ??0PStringList@@QAE@ABVPString@@@Z @284 NONAME ??0PStringList@@QAE@ABVPStringArray@@@Z @285 NONAME ??0PStringList@@QAE@HPBQBDH@Z @286 NONAME ??0PStringList@@QAE@XZ @287 NONAME ??0PStringSet@@IAE@HPBV0@@Z @288 NONAME ??0PStringSet@@QAE@ABVPString@@@Z @289 NONAME ??0PStringSet@@QAE@H@Z @290 NONAME ??0PStringSet@@QAE@HPBQBDH@Z @291 NONAME ??0PStringStream@@QAE@ABVPString@@@Z @292 NONAME ??0PStringStream@@QAE@H@Z @293 NONAME ??0PStringStream@@QAE@PBD@Z @294 NONAME ??0PStringStream@@QAE@XZ @295 NONAME ??0PStringToOrdinal@@IAE@HPBV0@@Z @296 NONAME ??0PStringToOrdinal@@QAE@HPBUInitialiser@0@H@Z @297 NONAME ??0PStringToOrdinal@@QAE@XZ @298 NONAME ??0PStringToString@@IAE@HPBV0@@Z @299 NONAME ??0PStringToString@@QAE@ABV0@@Z @300 NONAME ??0PStringToString@@QAE@HPBUInitialiser@0@HH@Z @301 NONAME ??0PStringToString@@QAE@XZ @302 NONAME ??0PStructuredFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @303 NONAME ??0PStructuredFile@@QAE@W4OpenMode@PFile@@H@Z @304 NONAME ??0PStructuredFile@@QAE@XZ @305 NONAME ??0PSyncPoint@@QAE@ABV0@@Z @306 NONAME ??0PSyncPoint@@QAE@XZ @307 NONAME ??0PSynonymColour@@QAE@ABVPString@@0II@Z @308 NONAME ??0PSynonymColourRegistration@@QAE@PBD0@Z @309 NONAME ??0PSystemLog@@QAE@W4Level@0@@Z @310 NONAME ??0PTCPSocket@@QAE@AAV0@@Z @311 NONAME ??0PTCPSocket@@QAE@AAVPSocket@@@Z @312 NONAME ??0PTCPSocket@@QAE@ABVPString@@0@Z @313 NONAME ??0PTCPSocket@@QAE@ABVPString@@@Z @314 NONAME ??0PTCPSocket@@QAE@ABVPString@@G@Z @315 NONAME ??0PTCPSocket@@QAE@G@Z @316 NONAME ??0PTextFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @317 NONAME ??0PTextFile@@QAE@W4OpenMode@PFile@@H@Z @318 NONAME ??0PTextFile@@QAE@XZ @319 NONAME ??0PThread@@AAE@XZ @320 NONAME ??0PThread@@QAE@HW4AutoDeleteFlag@0@W4Priority@0@ABVPString@@@Z @321 NONAME ??0PTime@@QAE@ABV0@@Z @322 NONAME ??0PTime@@QAE@ABVPString@@@Z @323 NONAME ??0PTime@@QAE@HHHHHHH@Z @324 NONAME ??0PTime@@QAE@JJ@Z @325 NONAME ??0PTime@@QAE@XZ @326 NONAME ??0PTimeInterval@@QAE@ABV0@@Z @327 NONAME ??0PTimeInterval@@QAE@ABVPString@@@Z @328 NONAME ??0PTimeInterval@@QAE@JJJJH@Z @329 NONAME ??0PTimeInterval@@QAE@_J@Z @330 NONAME ??0PTimer@@QAE@ABVPTimeInterval@@@Z @331 NONAME ??0PTimer@@QAE@JHHHH@Z @332 NONAME ??0PTimerList@@QAE@XZ @333 NONAME ??0PUDPSocket@@QAE@ABVPString@@0@Z @334 NONAME ??0PUDPSocket@@QAE@ABVPString@@G@Z @336 NONAME ??0PUDPSocket@@QAE@ABVPString@@PAVPQoS@@@Z @3531 NONAME ??0PUDPSocket@@QAE@G@Z @337 NONAME ??0PUDPSocket@@QAE@PAVPQoS@@G@Z @3532 NONAME ??0PVideoChannel@@QAE@ABVPString@@W4Directions@0@@Z @338 NONAME ??0PVideoChannel@@QAE@XZ @339 NONAME ??0PVideoDevice@@IAE@XZ @340 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@@Z @341 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@G@Z @342 NONAME ??0PVideoInputDevice@@QAE@XZ @343 NONAME ??0PVideoInputDevice_FakeVideo@@QAE@XZ @3767 NONAME ??0PVideoInputDevice_VideoForWindows@@QAE@XZ @3613 NONAME ??0PVideoOutputDevice@@QAE@XZ @345 NONAME ??0PVideoOutputDeviceRGB@@QAE@XZ @7335 NONAME ??0PVideoOutputDevice_NULLOutput@@QAE@XZ @3769 NONAME ??0PVideoOutputDevice_Window@@QAE@XZ @7336 NONAME ??0PVideoOutputDevice_Window_PluginServiceDescriptor@@QAE@XZ @7337 NONAME ??0PWaitAndSignal@@QAE@ABVPSemaphore@@H@Z @349 NONAME ??0PWaveBuffer@@AAE@H@Z @350 NONAME ??0PWaveFormat@@QAE@ABV0@@Z @351 NONAME ??0PWaveFormat@@QAE@XZ @352 NONAME ??0PWin32AsnAny@@QAE@XZ @353 NONAME ??0PWin32AsnOid@@QAE@ABV0@@Z @354 NONAME ??0PWin32AsnOid@@QAE@PBD@Z @355 NONAME ??0PWin32AsnOid@@QAE@XZ @356 NONAME ??0PWin32OidBuffer@@QAE@IIPBE@Z @357 NONAME ??0PWin32Overlapped@@QAE@XZ @358 NONAME ??0PWin32PacketBuffer@@QAE@H@Z @359 NONAME ??0PWin32PacketDriver@@IAE@XZ @360 NONAME ??0PWin32PacketSYS@@QAE@XZ @361 NONAME ??0PWin32PacketVxD@@QAE@XZ @362 NONAME ??0PWin32SnmpLibrary@@QAE@XZ @363 NONAME ??0PWinQoS@@QAE@AAVPQoS@@PAUsockaddr@@PADAAK@Z @3869 NONAME ??0PWinSock@@QAE@XZ @364 NONAME ??0PWriteWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3983 NONAME ??0P_BGR24_RGB24@@QAE@ABVPString@@0II@Z @7338 NONAME ??0P_BGR24_RGB24_Registration@@QAE@XZ @7339 NONAME ??0P_BGR24_RGB32@@QAE@ABVPString@@0II@Z @7340 NONAME ??0P_BGR24_RGB32_Registration@@QAE@XZ @7341 NONAME ??0P_BGR24_YUV420P@@QAE@ABVPString@@0II@Z @3770 NONAME ??0P_BGR24_YUV420P_Registration@@QAE@XZ @3771 NONAME ??0P_BGR32_RGB24@@QAE@ABVPString@@0II@Z @7342 NONAME ??0P_BGR32_RGB24_Registration@@QAE@XZ @7343 NONAME ??0P_BGR32_RGB32@@QAE@ABVPString@@0II@Z @7344 NONAME ??0P_BGR32_RGB32_Registration@@QAE@XZ @7345 NONAME ??0P_BGR32_YUV420P@@QAE@ABVPString@@0II@Z @3772 NONAME ??0P_BGR32_YUV420P_Registration@@QAE@XZ @3773 NONAME ??0P_fd_set@@QAE@I@Z @365 NONAME ??0P_fd_set@@QAE@XZ @366 NONAME ??0P_Grey_YUV420P@@QAE@ABVPString@@0II@Z @369 NONAME ??0P_Grey_YUV420P_Registration@@QAE@XZ @370 NONAME ??0P_RGB24_BGR24@@QAE@ABVPString@@0II@Z @7346 NONAME ??0P_RGB24_BGR24_Registration@@QAE@XZ @7347 NONAME ??0P_RGB24_BGR32@@QAE@ABVPString@@0II@Z @7348 NONAME ??0P_RGB24_BGR32_Registration@@QAE@XZ @7349 NONAME ??0P_RGB24_RGB32@@QAE@ABVPString@@0II@Z @373 NONAME ??0P_RGB24_RGB32_Registration@@QAE@XZ @374 NONAME ??0P_RGB24_YUV420P@@QAE@ABVPString@@0II@Z @375 NONAME ??0P_RGB24_YUV420P_Registration@@QAE@XZ @376 NONAME ??0P_RGB32_BGR24@@QAE@ABVPString@@0II@Z @7350 NONAME ??0P_RGB32_BGR24_Registration@@QAE@XZ @7351 NONAME ??0P_RGB32_BGR32@@QAE@ABVPString@@0II@Z @7352 NONAME ??0P_RGB32_BGR32_Registration@@QAE@XZ @7353 NONAME ??0P_RGB32_RGB24@@QAE@ABVPString@@0II@Z @379 NONAME ??0P_RGB32_RGB24_Registration@@QAE@XZ @380 NONAME ??0P_RGB32_YUV420P@@QAE@ABVPString@@0II@Z @381 NONAME ??0P_RGB32_YUV420P_Registration@@QAE@XZ @382 NONAME ??0P_SBGGR8_RGB24@@QAE@ABVPString@@0II@Z @7277 NONAME ??0P_SBGGR8_RGB24_Registration@@QAE@XZ @7278 NONAME ??0P_SBGGR8_YUV420P@@QAE@ABVPString@@0II@Z @7354 NONAME ??0P_SBGGR8_YUV420P_Registration@@QAE@XZ @7355 NONAME ??0P_timeval@@QAE@ABVPTimeInterval@@@Z @383 NONAME ??0P_timeval@@QAE@XZ @384 NONAME ??0P_UYV444_YUV420P@@QAE@ABVPString@@0II@Z @385 NONAME ??0P_UYV444_YUV420P_Registration@@QAE@XZ @386 NONAME ??0P_UYVY422_YUV420P@@QAE@ABVPString@@0II@Z @387 NONAME ??0P_UYVY422_YUV420P_Registration@@QAE@XZ @388 NONAME ??0P_YUV411P_YUV420P@@QAE@ABVPString@@0II@Z @389 NONAME ??0P_YUV411P_YUV420P_Registration@@QAE@XZ @390 NONAME ??0P_YUV420P_BGR24@@QAE@ABVPString@@0II@Z @391 NONAME ??0P_YUV420P_BGR24_Registration@@QAE@XZ @394 NONAME ??0P_YUV420P_BGR32@@QAE@ABVPString@@0II@Z @3774 NONAME ??0P_YUV420P_BGR32_Registration@@QAE@XZ @3775 NONAME ??0P_YUV420P_RGB24@@QAE@ABVPString@@0II@Z @395 NONAME ??0P_YUV420P_RGB24_Registration@@QAE@XZ @398 NONAME ??0P_YUV420P_RGB32@@QAE@ABVPString@@0II@Z @399 NONAME ??0P_YUV420P_RGB32_Registration@@QAE@XZ @402 NONAME ??0P_YUV420P_YUV411P@@QAE@ABVPString@@0II@Z @403 NONAME ??0P_YUV420P_YUV411P_Registration@@QAE@XZ @404 NONAME ??0P_YUV422_YUV420P@@QAE@ABVPString@@0II@Z @405 NONAME ??0P_YUV422_YUV420P_Registration@@QAE@XZ @406 NONAME ??0P_YUV422_YUV422@@QAE@ABVPString@@0II@Z @407 NONAME ??0P_YUV422_YUV422_Registration@@QAE@XZ @408 NONAME ??0Reference@PContainer@@QAE@ABV01@@Z @5519 NONAME ??0Reference@PContainer@@QAE@H@Z @409 NONAME ??0RegistryKey@@QAE@ABVPString@@W4OpenMode@0@@Z @410 NONAME ??0RouteEntry@PIPSocket@@QAE@ABVAddress@1@@Z @411 NONAME ??0SecurityID@@QAE@PAU_SID_IDENTIFIER_AUTHORITY@@EKKKKKKKK@Z @412 NONAME ??0SecurityID@@QAE@PBD0PADPAKPAW4_SID_NAME_USE@@@Z @413 NONAME ??0SelectList@PSocket@@QAE@XZ @414 NONAME ??0ServiceManager@@QAE@XZ @415 NONAME ??0Table@PHashTable@@QAE@H@Z @416 NONAME ??0Table@PHashTable@@QAE@PBQAVElement@1@HH@Z @417 NONAME ??0Win95_ServiceManager@@QAE@XZ @418 NONAME ??0WinSNMPLoader@@QAE@XZ @6196 NONAME ??0Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@QAE@ABVPString@@_N@Z @6847 NONAME ??0Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@QAE@ABVPString@@_N@Z @6848 NONAME ??0Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@QAE@ABVPString@@_N@Z @6849 NONAME ??0WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@_N@Z @6850 NONAME ??0WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAE@_N@Z @6575 NONAME ??0WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@IAE@_N@Z @6851 NONAME ??0WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@_N@Z @6852 NONAME ??0WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@_N@Z @6853 NONAME ??0__SMANIP_int@@QAE@P6AAAVios@@AAV1@H@ZH@Z @420 NONAME ??1?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@XZ @6576 NONAME ??1?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE@XZ @5801 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE@XZ @6854 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE@XZ @6577 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE@XZ @6578 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE@XZ @6855 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE@XZ @6856 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE@XZ @6857 NONAME ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@XZ @6579 NONAME ??1?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@XZ @5804 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@XZ @6858 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAE@XZ @6580 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@XZ @6581 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@XZ @6859 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@XZ @6860 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@XZ @6861 NONAME ??1?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@XZ @5807 NONAME ??1?$PArray@VPString@@@@UAE@XZ @421 NONAME ??1?$PArray@VPWaveBuffer@@@@UAE@XZ @422 NONAME ??1?$PArray@VPWin32PacketBuffer@@@@UAE@XZ @423 NONAME ??1?$PBaseArray@D@@UAE@XZ @424 NONAME ??1?$PBaseArray@E@@UAE@XZ @425 NONAME ??1?$PBaseArray@F@@UAE@XZ @426 NONAME ??1?$PBaseArray@G@@UAE@XZ @427 NONAME ??1?$PBaseArray@H@@UAE@XZ @428 NONAME ??1?$PBaseArray@I@@UAE@XZ @429 NONAME ??1?$PBaseArray@J@@UAE@XZ @430 NONAME ??1?$PBaseArray@K@@UAE@XZ @431 NONAME ??1?$PBaseArray@PAVElement@PHashTable@@@@UAE@XZ @432 NONAME ??1?$PBaseArray@PAVPObject@@@@UAE@XZ @433 NONAME ??1?$PDevicePluginAdapter@VPSoundChannel@@@@UAE@XZ @6862 NONAME ??1?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAE@XZ @6863 NONAME ??1?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAE@XZ @6864 NONAME ??1?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAE@XZ @434 NONAME ??1?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAE@XZ @435 NONAME ??1?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAE@XZ @436 NONAME ??1?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAE@XZ @5624 NONAME ??1?$PDictionary@VPOrdinalKey@@VPThread@@@@UAE@XZ @437 NONAME ??1?$PDictionary@VPString@@VPDynaLink@@@@UAE@XZ @5546 NONAME ??1?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @6865 NONAME ??1?$PFactory@VPPluginModuleManager@@VPString@@@@MAE@XZ @6582 NONAME ??1?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @6583 NONAME ??1?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @6866 NONAME ??1?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @6867 NONAME ??1?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @6868 NONAME ??1?$PList@VInterfaceEntry@PIPSocket@@@@UAE@XZ @7356 NONAME ??1?$PList@VPDynaLink@@@@UAE@XZ @3990 NONAME ??1?$PList@VPNotifier@@@@UAE@XZ @3991 NONAME ??1?$PList@VPPluginService@@@@UAE@XZ @3616 NONAME ??1?$PList@VPSafeObject@@@@UAE@XZ @6869 NONAME ??1?$PList@VPSocket@@@@UAE@XZ @438 NONAME ??1?$PList@VPString@@@@UAE@XZ @439 NONAME ??1?$PList@VPThread@@@@UAE@XZ @440 NONAME ??1?$PList@VPTimer@@@@UAE@XZ @441 NONAME ??1?$POrdinalDictionary@VPString@@@@UAE@XZ @442 NONAME ??1?$PScalarArray@F@@UAE@XZ @443 NONAME ??1?$PScalarArray@G@@UAE@XZ @444 NONAME ??1?$PScalarArray@H@@UAE@XZ @445 NONAME ??1?$PScalarArray@I@@UAE@XZ @446 NONAME ??1?$PScalarArray@J@@UAE@XZ @447 NONAME ??1?$PScalarArray@K@@UAE@XZ @448 NONAME ??1?$PSet@VPString@@@@UAE@XZ @449 NONAME ??1?$PSortedList@VPString@@@@UAE@XZ @450 NONAME ??1?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UAE@XZ @7357 NONAME ??1?$PStringDictionary@VPOrdinalKey@@@@UAE@XZ @451 NONAME ??1?$PStringDictionary@VPString@@@@UAE@XZ @452 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UAE@XZ @7358 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UAE@XZ @7359 NONAME ??1?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UAE@XZ @7360 NONAME ??1?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@XZ @5808 NONAME ??1?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @5809 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @6870 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @6871 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @6872 NONAME ??1?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @6789 NONAME ??1?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @6790 NONAME ??1?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE@XZ @6586 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE@XZ @5810 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE@XZ @6873 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE@XZ @6587 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE@XZ @6588 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE@XZ @6874 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE@XZ @6875 NONAME ??1?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE@XZ @6876 NONAME ??1Address@PIPSocket@@UAE@XZ @453 NONAME ??1Block@PTrace@@QAE@XZ @454 NONAME ??1Buffer@PDebugStream@@UAE@XZ @455 NONAME ??1Buffer@PStringStream@@UAE@XZ @456 NONAME ??1Buffer@PSystemLog@@UAE@XZ @457 NONAME ??1CMCDLL@PMail@@UAE@XZ @458 NONAME ??1CMC_message_reference_ptr@@QAE@XZ @459 NONAME ??1DeleteObjectsTimeout_PNotifier@PSafeCollection@@UAE@XZ @460 NONAME ??1FactoryMap@PFactoryBase@@QAE@XZ @6589 NONAME ??1HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UAE@XZ @7361 NONAME ??1HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UAE@XZ @7362 NONAME ??1HouseKeepingThread@PProcess@@UAE@XZ @461 NONAME ??1InterfaceEntry@PIPSocket@@UAE@XZ @462 NONAME ??1MAPIDLL@PMail@@UAE@XZ @463 NONAME ??1Nest@PReadWriteMutex@@UAE@XZ @464 NONAME ??1NT_ServiceManager@@QAE@XZ @465 NONAME ??1PAbstractArray@@UAE@XZ @466 NONAME ??1PAbstractDictionary@@UAE@XZ @467 NONAME ??1PAbstractList@@UAE@XZ @468 NONAME ??1PAbstractSet@@UAE@XZ @469 NONAME ??1PAbstractSortedList@@UAE@XZ @470 NONAME ??1PArgList@@UAE@XZ @471 NONAME ??1PArrayObjects@@UAE@XZ @472 NONAME ??1PBitArray@@UAE@XZ @473 NONAME ??1PBYTEArray@@UAE@XZ @474 NONAME ??1PCaselessString@@UAE@XZ @475 NONAME ??1PChannel@@UAE@XZ @476 NONAME ??1PChannelStreamBuffer@@UAE@XZ @477 NONAME ??1PCharArray@@UAE@XZ @478 NONAME ??1PCollection@@UAE@XZ @479 NONAME ??1PColourConverter@@UAE@XZ @480 NONAME ??1PColourConverterRegistration@@UAE@XZ @481 NONAME ??1PCondMutex@@UAE@XZ @482 NONAME ??1PConfig@@UAE@XZ @483 NONAME ??1PConfigArgs@@UAE@XZ @484 NONAME ??1PConsoleChannel@@UAE@XZ @485 NONAME ??1PContainer@@UAE@XZ @486 NONAME ??1PCriticalSection@@UAE@XZ @5520 NONAME ??1PDebugStream@@UAE@XZ @487 NONAME ??1PDevicePluginAdapterBase@@UAE@XZ @6877 NONAME ??1PDevicePluginServiceDescriptor@@UAE@XZ @7363 NONAME ??1PDirectory@@UAE@XZ @488 NONAME ??1PDynaLink@@UAE@XZ @489 NONAME ??1PEthSocket@@UAE@XZ @490 NONAME ??1PFactoryBase@@UAE@XZ @6590 NONAME ??1PFile@@UAE@XZ @492 NONAME ??1PFileInfo@@UAE@XZ @493 NONAME ??1PFilePath@@UAE@XZ @494 NONAME ??1PHashTable@@UAE@XZ @495 NONAME ??1PHostByAddr@@UAE@XZ @496 NONAME ??1PHostByName@@UAE@XZ @497 NONAME ??1PICMPDLL@@UAE@XZ @498 NONAME ??1PICMPSocket@@UAE@XZ @499 NONAME ??1PImageDLL@@UAE@XZ @500 NONAME ??1PIndirectChannel@@UAE@XZ @501 NONAME ??1PingInfo@PICMPSocket@@QAE@XZ @502 NONAME ??1PIntCondMutex@@UAE@XZ @503 NONAME ??1PIPCacheData@@UAE@XZ @504 NONAME ??1PIPCacheKey@@UAE@XZ @505 NONAME ??1PIPDatagramSocket@@UAE@XZ @506 NONAME ??1PIPSocket@@UAE@XZ @507 NONAME ??1PIPXSocket@@UAE@XZ @508 NONAME ??1PluginLoaderStartup@@UAE@XZ @5813 NONAME ??1PMail@@UAE@XZ @509 NONAME ??1PMultiMediaFile@@QAE@XZ @511 NONAME ??1PMutex@@UAE@XZ @512 NONAME ??1PNotifier@@UAE@XZ @513 NONAME ??1PNotifierFunction@@UAE@XZ @514 NONAME ??1PObject@@UAE@XZ @515 NONAME ??1POrdinalKey@@UAE@XZ @516 NONAME ??1POrdinalToString@@UAE@XZ @517 NONAME ??1PPipeChannel@@UAE@XZ @518 NONAME ??1PPluginManager@@UAE@XZ @3618 NONAME ??1PPluginModuleManager@@UAE@XZ @5548 NONAME ??1PPluginService@@UAE@XZ @3619 NONAME ??1PPluginServiceDescriptor@@UAE@XZ @7364 NONAME ??1PPointer@@UAE@XZ @5625 NONAME ??1PProcess@@UAE@XZ @519 NONAME ??1PProcessStartup@@UAE@XZ @5814 NONAME ??1PQoS@@UAE@XZ @3534 NONAME ??1PRASDLL@@UAE@XZ @520 NONAME ??1PReadWaitAndSignal@@QAE@XZ @3984 NONAME ??1PReadWriteMutex@@UAE@XZ @521 NONAME ??1PRegularExpression@@UAE@XZ @522 NONAME ??1PRemoteConnection@@UAE@XZ @523 NONAME ??1PSafeCollection@@UAE@XZ @524 NONAME ??1PSafeLockReadOnly@@QAE@XZ @7305 NONAME ??1PSafeLockReadWrite@@QAE@XZ @7306 NONAME ??1PSafeObject@@UAE@XZ @525 NONAME ??1PSafePtrBase@@UAE@XZ @526 NONAME ??1PSemaphore@@UAE@XZ @527 NONAME ??1PSerialChannel@@UAE@XZ @528 NONAME ??1PServiceProcess@@UAE@XZ @529 NONAME ??1PSimpleThread@@UAE@XZ @530 NONAME ??1PSmartObject@@UAE@XZ @531 NONAME ??1PSmartPointer@@UAE@XZ @532 NONAME ??1PSmartPtrInspector@@UAE@XZ @5626 NONAME ??1PSocket@@UAE@XZ @533 NONAME ??1PSortedStringList@@UAE@XZ @534 NONAME ??1PSound@@UAE@XZ @535 NONAME ??1PSoundChannel@@UAE@XZ @536 NONAME ??1PSoundChannelWin32@@UAE@XZ @3620 NONAME ??1PSPXSocket@@UAE@XZ @537 NONAME ??1PStandardColourConverter@@UAE@XZ @538 NONAME ??1PString@@UAE@XZ @539 NONAME ??1PStringArray@@UAE@XZ @540 NONAME ??1PStringList@@UAE@XZ @541 NONAME ??1PStringSet@@UAE@XZ @542 NONAME ??1PStringStream@@UAE@XZ @543 NONAME ??1PStringToOrdinal@@UAE@XZ @544 NONAME ??1PStringToString@@UAE@XZ @545 NONAME ??1PStructuredFile@@UAE@XZ @546 NONAME ??1PSyncPoint@@UAE@XZ @547 NONAME ??1PSynonymColour@@UAE@XZ @548 NONAME ??1PSynonymColourRegistration@@UAE@XZ @549 NONAME ??1PSystemLog@@UAE@XZ @550 NONAME ??1PTCPSocket@@UAE@XZ @551 NONAME ??1PTextFile@@UAE@XZ @552 NONAME ??1PThread@@UAE@XZ @553 NONAME ??1PTime@@UAE@XZ @554 NONAME ??1PTimeInterval@@UAE@XZ @555 NONAME ??1PTimer@@UAE@XZ @556 NONAME ??1PTimerList@@UAE@XZ @557 NONAME ??1PUDPSocket@@UAE@XZ @558 NONAME ??1PVideoChannel@@UAE@XZ @559 NONAME ??1PVideoDevice@@UAE@XZ @560 NONAME ??1PVideoDeviceBitmap@@UAE@XZ @561 NONAME ??1PVideoInputDevice@@UAE@XZ @562 NONAME ??1PVideoInputDevice_FakeVideo@@UAE@XZ @3776 NONAME ??1PVideoInputDevice_VideoForWindows@@UAE@XZ @3621 NONAME ??1PVideoOutputDevice@@UAE@XZ @564 NONAME ??1PVideoOutputDeviceRGB@@UAE@XZ @7365 NONAME ??1PVideoOutputDevice_NULLOutput@@UAE@XZ @3777 NONAME ??1PVideoOutputDevice_Window@@UAE@XZ @7366 NONAME ??1PVideoOutputDevice_Window_PluginServiceDescriptor@@UAE@XZ @7367 NONAME ??1PWaitAndSignal@@QAE@XZ @568 NONAME ??1PWaveBuffer@@EAE@XZ @569 NONAME ??1PWaveFormat@@UAE@XZ @570 NONAME ??1PWin32AsnAny@@QAE@XZ @571 NONAME ??1PWin32AsnOid@@QAE@XZ @572 NONAME ??1PWin32OidBuffer@@QAE@XZ @573 NONAME ??1PWin32Overlapped@@QAE@XZ @574 NONAME ??1PWin32PacketBuffer@@UAE@XZ @575 NONAME ??1PWin32PacketDriver@@UAE@XZ @576 NONAME ??1PWin32PacketSYS@@UAE@XZ @577 NONAME ??1PWin32PacketVxD@@UAE@XZ @578 NONAME ??1PWin32SnmpLibrary@@UAE@XZ @579 NONAME ??1PWinQoS@@UAE@XZ @3870 NONAME ??1PWinSock@@UAE@XZ @580 NONAME ??1PWriteWaitAndSignal@@QAE@XZ @3985 NONAME ??1P_BGR24_RGB24@@UAE@XZ @7368 NONAME ??1P_BGR24_RGB24_Registration@@UAE@XZ @7369 NONAME ??1P_BGR24_RGB32@@UAE@XZ @7370 NONAME ??1P_BGR24_RGB32_Registration@@UAE@XZ @7371 NONAME ??1P_BGR24_YUV420P@@UAE@XZ @3778 NONAME ??1P_BGR24_YUV420P_Registration@@UAE@XZ @3779 NONAME ??1P_BGR32_RGB24@@UAE@XZ @7372 NONAME ??1P_BGR32_RGB24_Registration@@UAE@XZ @7373 NONAME ??1P_BGR32_RGB32@@UAE@XZ @7374 NONAME ??1P_BGR32_RGB32_Registration@@UAE@XZ @7375 NONAME ??1P_BGR32_YUV420P@@UAE@XZ @3780 NONAME ??1P_BGR32_YUV420P_Registration@@UAE@XZ @3781 NONAME ??1P_fd_set@@QAE@XZ @581 NONAME ??1P_Grey_YUV420P@@UAE@XZ @584 NONAME ??1P_Grey_YUV420P_Registration@@UAE@XZ @585 NONAME ??1P_RGB24_BGR24@@UAE@XZ @7376 NONAME ??1P_RGB24_BGR24_Registration@@UAE@XZ @7377 NONAME ??1P_RGB24_BGR32@@UAE@XZ @7378 NONAME ??1P_RGB24_BGR32_Registration@@UAE@XZ @7379 NONAME ??1P_RGB24_RGB32@@UAE@XZ @588 NONAME ??1P_RGB24_RGB32_Registration@@UAE@XZ @589 NONAME ??1P_RGB24_YUV420P@@UAE@XZ @590 NONAME ??1P_RGB24_YUV420P_Registration@@UAE@XZ @591 NONAME ??1P_RGB32_BGR24@@UAE@XZ @7380 NONAME ??1P_RGB32_BGR24_Registration@@UAE@XZ @7381 NONAME ??1P_RGB32_BGR32@@UAE@XZ @7382 NONAME ??1P_RGB32_BGR32_Registration@@UAE@XZ @7383 NONAME ??1P_RGB32_RGB24@@UAE@XZ @594 NONAME ??1P_RGB32_RGB24_Registration@@UAE@XZ @595 NONAME ??1P_RGB32_YUV420P@@UAE@XZ @596 NONAME ??1P_RGB32_YUV420P_Registration@@UAE@XZ @597 NONAME ??1P_SBGGR8_RGB24@@UAE@XZ @7279 NONAME ??1P_SBGGR8_RGB24_Registration@@UAE@XZ @7280 NONAME ??1P_SBGGR8_YUV420P@@UAE@XZ @7384 NONAME ??1P_SBGGR8_YUV420P_Registration@@UAE@XZ @7385 NONAME ??1P_UYV444_YUV420P@@UAE@XZ @598 NONAME ??1P_UYV444_YUV420P_Registration@@UAE@XZ @599 NONAME ??1P_UYVY422_YUV420P@@UAE@XZ @600 NONAME ??1P_UYVY422_YUV420P_Registration@@UAE@XZ @601 NONAME ??1P_YUV411P_YUV420P@@UAE@XZ @602 NONAME ??1P_YUV411P_YUV420P_Registration@@UAE@XZ @603 NONAME ??1P_YUV420P_BGR24@@UAE@XZ @604 NONAME ??1P_YUV420P_BGR24_Registration@@UAE@XZ @607 NONAME ??1P_YUV420P_BGR32@@UAE@XZ @3782 NONAME ??1P_YUV420P_BGR32_Registration@@UAE@XZ @3783 NONAME ??1P_YUV420P_RGB24@@UAE@XZ @608 NONAME ??1P_YUV420P_RGB24_Registration@@UAE@XZ @611 NONAME ??1P_YUV420P_RGB32@@UAE@XZ @612 NONAME ??1P_YUV420P_RGB32_Registration@@UAE@XZ @615 NONAME ??1P_YUV420P_YUV411P@@UAE@XZ @616 NONAME ??1P_YUV420P_YUV411P_Registration@@UAE@XZ @617 NONAME ??1P_YUV422_YUV420P@@UAE@XZ @618 NONAME ??1P_YUV422_YUV420P_Registration@@UAE@XZ @619 NONAME ??1P_YUV422_YUV422@@UAE@XZ @620 NONAME ??1P_YUV422_YUV422_Registration@@UAE@XZ @621 NONAME ??1RegistryKey@@QAE@XZ @622 NONAME ??1RouteEntry@PIPSocket@@UAE@XZ @623 NONAME ??1SecurityID@@QAE@XZ @624 NONAME ??1SelectList@PSocket@@UAE@XZ @625 NONAME ??1Table@PHashTable@@UAE@XZ @626 NONAME ??1WinSNMPLoader@@UAE@XZ @6197 NONAME ??1Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@UAE@XZ @6878 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@UAE@XZ @6879 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@UAE@XZ @6880 NONAME ??1WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @6881 NONAME ??1WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @6791 NONAME ??1WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @6882 NONAME ??1WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @6883 NONAME ??1WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @6884 NONAME ??2@YAPAXIPAX@Z @5695 NONAME ??3@YAXPAX0@Z @5815 NONAME ??4?$PArray@VPString@@@@QAEAAV0@ABV0@@Z @872 NONAME ??4?$PBaseArray@D@@QAEAAV0@ABV0@@Z @873 NONAME ??4?$PBaseArray@E@@QAEAAV0@ABV0@@Z @874 NONAME ??4?$PBaseArray@F@@QAEAAV0@ABV0@@Z @875 NONAME ??4?$PBaseArray@G@@QAEAAV0@ABV0@@Z @876 NONAME ??4?$PBaseArray@H@@QAEAAV0@ABV0@@Z @877 NONAME ??4?$PBaseArray@I@@QAEAAV0@ABV0@@Z @878 NONAME ??4?$PBaseArray@J@@QAEAAV0@ABV0@@Z @879 NONAME ??4?$PBaseArray@K@@QAEAAV0@ABV0@@Z @880 NONAME ??4?$PList@VPString@@@@QAEAAV0@ABV0@@Z @881 NONAME ??4?$POrdinalDictionary@VPString@@@@QAEAAV0@ABV0@@Z @882 NONAME ??4?$PScalarArray@F@@QAEAAV0@ABV0@@Z @883 NONAME ??4?$PScalarArray@G@@QAEAAV0@ABV0@@Z @884 NONAME ??4?$PScalarArray@H@@QAEAAV0@ABV0@@Z @885 NONAME ??4?$PScalarArray@I@@QAEAAV0@ABV0@@Z @886 NONAME ??4?$PScalarArray@J@@QAEAAV0@ABV0@@Z @887 NONAME ??4?$PScalarArray@K@@QAEAAV0@ABV0@@Z @888 NONAME ??4?$PSet@VPString@@@@QAEAAV0@ABV0@@Z @889 NONAME ??4?$PStringDictionary@VPOrdinalKey@@@@QAEAAV0@ABV0@@Z @890 NONAME ??4?$PStringDictionary@VPString@@@@QAEAAV0@ABV0@@Z @891 NONAME ??4Address@PEthSocket@@QAEAAT01@ABT01@@Z @892 NONAME ??4Address@PEthSocket@@QAEAAT01@ABVPString@@@Z @893 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin6_addr@@@Z @3871 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin_addr@@@Z @894 NONAME ??4Address@PIPSocket@@QAEAAV01@ABV01@@Z @895 NONAME ??4Address@PIPSocket@@QAEAAV01@ABVPString@@@Z @896 NONAME ??4Address@PIPSocket@@QAEAAV01@K@Z @897 NONAME ??4Address@PIPXSocket@@QAEAAV01@ABV01@@Z @898 NONAME ??4Buffer@PStringStream@@QAEAAV01@ABV01@@Z @899 NONAME ??4PAbstractArray@@QAEAAV0@ABV0@@Z @900 NONAME ??4PAbstractDictionary@@QAEAAV0@ABV0@@Z @901 NONAME ??4PAbstractList@@QAEAAV0@ABV0@@Z @902 NONAME ??4PAbstractSet@@QAEAAV0@ABV0@@Z @903 NONAME ??4PArrayObjects@@QAEAAV0@ABV0@@Z @904 NONAME ??4PBYTEArray@@QAEAAV0@ABV0@@Z @905 NONAME ??4PCaselessString@@QAEAAV0@ABVPString@@@Z @906 NONAME ??4PCaselessString@@QAEAAV0@D@Z @907 NONAME ??4PCaselessString@@QAEAAV0@PBD@Z @908 NONAME ??4PChannel@@IAEAAV0@ABV0@@Z @909 NONAME ??4PChannelStreamBuffer@@QAEAAV0@ABV0@@Z @910 NONAME ??4PCharArray@@QAEAAV0@ABV0@@Z @911 NONAME ??4PContainer@@QAEAAV0@ABV0@@Z @912 NONAME ??4PDirectory@@QAEAAV0@ABVPString@@@Z @913 NONAME ??4PDirectory@@QAEAAV0@PBD@Z @914 NONAME ??4PFilePath@@QAEAAV0@ABV0@@Z @915 NONAME ??4PFilePath@@QAEAAV0@ABVPString@@@Z @916 NONAME ??4PFilePath@@QAEAAV0@PBD@Z @917 NONAME ??4PHashTable@@QAEAAV0@ABV0@@Z @918 NONAME ??4PIntCondMutex@@QAEAAV0@H@Z @919 NONAME ??4PNotifier@@QAEAAV0@ABV0@@Z @920 NONAME ??4PObject@@QAEAAV0@ABV0@@Z @921 NONAME ??4POrdinalKey@@QAEAAV0@H@Z @922 NONAME ??4POrdinalToString@@QAEAAV0@ABV0@@Z @923 NONAME ??4PQoS@@QAEAAV0@ABV0@@Z @3537 NONAME ??4PRegularExpression@@QAEAAV0@ABV0@@Z @3921 NONAME ??4PSmartPointer@@QAEAAV0@ABV0@@Z @924 NONAME ??4PSound@@QAEAAV0@ABVPBYTEArray@@@Z @925 NONAME ??4PString@@QAEAAV0@ABV0@@Z @926 NONAME ??4PString@@QAEAAV0@D@Z @927 NONAME ??4PString@@QAEAAV0@F@Z @928 NONAME ??4PString@@QAEAAV0@G@Z @929 NONAME ??4PString@@QAEAAV0@H@Z @930 NONAME ??4PString@@QAEAAV0@I@Z @931 NONAME ??4PString@@QAEAAV0@J@Z @932 NONAME ??4PString@@QAEAAV0@K@Z @933 NONAME ??4PString@@QAEAAV0@PBD@Z @934 NONAME ??4PString@@QAEAAV0@_J@Z @935 NONAME ??4PString@@QAEAAV0@_K@Z @936 NONAME ??4PStringArray@@QAEAAV0@ABV0@@Z @937 NONAME ??4PStringList@@QAEAAV0@ABV0@@Z @938 NONAME ??4PStringSet@@QAEAAV0@ABV0@@Z @939 NONAME ??4PStringStream@@QAEAAV0@ABV0@@Z @940 NONAME ??4PStringStream@@QAEAAV0@ABVPString@@@Z @941 NONAME ??4PStringStream@@QAEAAV0@D@Z @942 NONAME ??4PStringStream@@QAEAAV0@PBD@Z @943 NONAME ??4PStringToOrdinal@@QAEAAV0@ABV0@@Z @944 NONAME ??4PStringToString@@QAEAAV0@ABV0@@Z @945 NONAME ??4PTime@@QAEAAV0@ABV0@@Z @946 NONAME ??4PTimeInterval@@QAEAAV0@ABV0@@Z @947 NONAME ??4PTimer@@QAEAAV0@ABVPTimeInterval@@@Z @948 NONAME ??4PTimer@@QAEAAV0@K@Z @949 NONAME ??4PWaveBuffer@@AAEAAV0@ABVPSound@@@Z @950 NONAME ??4PWaveFormat@@QAEAAV0@ABV0@@Z @951 NONAME ??4PWin32AsnOid@@QAEAAV0@ABUAsnObjectIdentifier@@@Z @952 NONAME ??4P_fd_set@@QAEAAV0@I@Z @953 NONAME ??4P_timeval@@QAEAAV0@ABVPTimeInterval@@@Z @954 NONAME ??5@YAAAVistream@@AAV0@AAVAddress@PIPSocket@@@Z @955 NONAME ??5@YAAAVistream@@AAV0@AAVPObject@@@Z @956 NONAME ??5@YAAAVistream@@AAV0@AA_J@Z @957 NONAME ??5@YAAAVistream@@AAV0@AA_K@Z @958 NONAME ??5PArgList@@QAEAAV0@H@Z @959 NONAME ??6@YAAAVostream@@AAV0@ABVAddress@PIPSocket@@@Z @960 NONAME ??6@YAAAVostream@@AAV0@ABVPObject@@@Z @961 NONAME ??6@YAAAVostream@@AAV0@ABVPString@@@Z @7386 NONAME ??6@YAAAVostream@@AAV0@ABV__SMANIP_int@@@Z @962 NONAME ??6@YAAAVostream@@AAV0@W4VideoFormat@PVideoDevice@@@Z @963 NONAME ??6@YAAAVostream@@AAV0@_J@Z @964 NONAME ??6@YAAAVostream@@AAV0@_K@Z @965 NONAME ??6PArgList@@QAEAAV0@H@Z @966 NONAME ??7PString@@QBE_NXZ @5578 NONAME ??8Address@PEthSocket@@QBE_NABT01@@Z @5579 NONAME ??8Address@PEthSocket@@QBE_NPBE@Z @5580 NONAME ??8Address@PIPSocket@@QBE_NAAUin6_addr@@@Z @5581 NONAME ??8Address@PIPSocket@@QBE_NAAUin_addr@@@Z @5582 NONAME ??8Address@PIPSocket@@QBE_NABV01@@Z @5583 NONAME ??8Address@PIPSocket@@QBE_NH@Z @5584 NONAME ??8Address@PIPSocket@@QBE_NK@Z @5585 NONAME ??8const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @6593 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6885 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6594 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6595 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6886 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6887 NONAME ??8const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6888 NONAME ??8iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @6596 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBE_NABV012@@Z @5818 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6889 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6597 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6598 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6890 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6891 NONAME ??8iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6892 NONAME ??8PObject@@QBE_NABV0@@Z @5586 NONAME ??8PString@@QBE_NABVPObject@@@Z @5587 NONAME ??8PString@@QBE_NPBD@Z @5588 NONAME ??8PTimeInterval@@QBE_NABV0@@Z @5589 NONAME ??8PTimeInterval@@QBE_NJ@Z @5590 NONAME ??9Address@PEthSocket@@QBE_NPBE@Z @5591 NONAME ??9Address@PIPSocket@@QBE_NH@Z @5592 NONAME ??9const_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @6599 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6893 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6600 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6601 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6894 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6895 NONAME ??9const_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6896 NONAME ??9iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBE_NABV012@@Z @6602 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBE_NABV012@@Z @5823 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6897 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6603 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6604 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6898 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6899 NONAME ??9iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBE_NABV012@@Z @6900 NONAME ??9PObject@@QBE_NABV0@@Z @5593 NONAME ??9PString@@QBE_NABVPObject@@@Z @5594 NONAME ??9PString@@QBE_NPBD@Z @5595 NONAME ??9PTimeInterval@@QBE_NABV0@@Z @5596 NONAME ??9PTimeInterval@@QBE_NJ@Z @5597 NONAME ??A?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEAAPAVPFactoryBase@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @6605 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@ABVPString@@@Z @6901 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@ABVPString@@@Z @6606 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@ABVPString@@@Z @6902 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@ABVPString@@@Z @6903 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@ABVPString@@@Z @6904 NONAME ??A?$PArray@VPWaveBuffer@@@@QBEAAVPWaveBuffer@@H@Z @987 NONAME ??A?$PArray@VPWin32PacketBuffer@@@@QBEAAVPWin32PacketBuffer@@H@Z @988 NONAME ??A?$PBaseArray@D@@QAEAADH@Z @989 NONAME ??A?$PBaseArray@D@@QBEDH@Z @990 NONAME ??A?$PBaseArray@E@@QAEAAEH@Z @991 NONAME ??A?$PBaseArray@F@@QAEAAFH@Z @992 NONAME ??A?$PBaseArray@G@@QAEAAGH@Z @993 NONAME ??A?$PBaseArray@H@@QAEAAHH@Z @994 NONAME ??A?$PBaseArray@H@@QBEHH@Z @995 NONAME ??A?$PBaseArray@I@@QAEAAIH@Z @996 NONAME ??A?$PBaseArray@J@@QAEAAJH@Z @997 NONAME ??A?$PBaseArray@K@@QAEAAKH@Z @998 NONAME ??A?$PBaseArray@PAVElement@PHashTable@@@@QAEAAPAVElement@PHashTable@@H@Z @999 NONAME ??A?$PBaseArray@PAVElement@PHashTable@@@@QBEPAVElement@PHashTable@@H@Z @1000 NONAME ??A?$PBaseArray@PAVPObject@@@@QAEAAPAVPObject@@H@Z @1001 NONAME ??A?$PList@VInterfaceEntry@PIPSocket@@@@QBEAAVInterfaceEntry@PIPSocket@@H@Z @7387 NONAME ??A?$PList@VPDynaLink@@@@QBEAAVPDynaLink@@H@Z @3992 NONAME ??A?$PList@VPNotifier@@@@QBEAAVPNotifier@@H@Z @3993 NONAME ??A?$PList@VPPluginService@@@@QBEAAVPPluginService@@H@Z @3622 NONAME ??A?$PList@VPSafeObject@@@@QBEAAVPSafeObject@@H@Z @6905 NONAME ??A?$PList@VPSocket@@@@QBEAAVPSocket@@H@Z @1002 NONAME ??A?$PList@VPString@@@@QBEAAVPString@@H@Z @1003 NONAME ??A?$PList@VPThread@@@@QBEAAVPThread@@H@Z @1004 NONAME ??A?$PList@VRouteEntry@PIPSocket@@@@QBEAAVRouteEntry@PIPSocket@@H@Z @1005 NONAME ??A?$PSortedList@VPString@@@@QBEAAVPString@@H@Z @1006 NONAME ??A?$PStringDictionary@VPString@@@@QBEABVPString@@ABV1@@Z @7388 NONAME ??AAddress@PIPSocket@@QBEEH@Z @1007 NONAME ??APArgList@@QBE?AVPString@@H@Z @1008 NONAME ??APStringArray@@QAEAAVPString@@H@Z @1009 NONAME ??APStringArray@@QBE?AVPString@@H@Z @7389 NONAME ??APWin32AsnOid@@QAEAAIH@Z @1011 NONAME ??B?$PBaseArray@D@@QBEPBDXZ @1012 NONAME ??B?$PBaseArray@E@@QBEPBEXZ @1013 NONAME ??B?$PBaseArray@F@@QBEPBFXZ @1014 NONAME ??B?$PBaseArray@G@@QBEPBGXZ @1015 NONAME ??B?$PBaseArray@H@@QBEPBHXZ @1016 NONAME ??B?$PBaseArray@I@@QBEPBIXZ @1017 NONAME ??B?$PBaseArray@J@@QBEPBJXZ @1018 NONAME ??B?$PBaseArray@K@@QBEPBKXZ @1019 NONAME ??B?$PBaseArray@PAVElement@PHashTable@@@@QBEPBQAVElement@PHashTable@@XZ @1020 NONAME ??B?$PBaseArray@PAVPObject@@@@QBEPBQAVPObject@@XZ @1021 NONAME ??BAddress@PEthSocket@@QBE?AVPString@@XZ @1022 NONAME ??BAddress@PIPSocket@@QBE?AUin6_addr@@XZ @3873 NONAME ??BAddress@PIPSocket@@QBE?AUin_addr@@XZ @1023 NONAME ??BAddress@PIPSocket@@QBE?AVPString@@XZ @1024 NONAME ??BAddress@PIPSocket@@QBEKXZ @1025 NONAME ??BAddress@PIPXSocket@@QBE?AVPString@@XZ @1026 NONAME ??BCMC_message_reference_ptr@@QAEPAUCMC_counted_string@@XZ @1027 NONAME ??BPAtomicInteger@@QBEJXZ @5524 NONAME ??BPOrdinalKey@@QBEHXZ @1028 NONAME ??BPsockaddr@@QBEPAUsockaddr@@XZ @3874 NONAME ??BPString@@QBEPBEXZ @1029 NONAME ??BPWaveFormat@@QBEPAUtWAVEFORMATEX@@XZ @1030 NONAME ??BPWin32OidBuffer@@QAEKXZ @1031 NONAME ??BPWin32OidBuffer@@QAEPAXXZ @1032 NONAME ??BP_fd_set@@QBEPAUfd_set@@XZ @1033 NONAME ??BP_timeval@@QAEPAUtimeval@@XZ @1034 NONAME ??BSecurityID@@QBEPAXXZ @1035 NONAME ??Cconst_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEPBU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6607 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @6906 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @6608 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6609 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @6907 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @6908 NONAME ??Cconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @6909 NONAME ??Citerator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @5829 NONAME ??CPsockaddr@@QBEPAUsockaddr@@XZ @3875 NONAME ??CPVideoDeviceBitmap@@QBEPAUtagBITMAPINFO@@XZ @1036 NONAME ??CPWaveFormat@@QBEPAUtWAVEFORMATEX@@XZ @1037 NONAME ??Dconst_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6610 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @6910 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @6611 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6612 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @6911 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @6912 NONAME ??Dconst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @6913 NONAME ??Diterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6613 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @5832 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @6914 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6614 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @6915 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @6916 NONAME ??Diterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @6917 NONAME ??DPTimeInterval@@QBE?AV0@H@Z @1039 NONAME ??Econst_iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEAAV012@XZ @6615 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEAAV012@XZ @6918 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAEAAV012@XZ @6616 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEAAV012@XZ @6617 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEAAV012@XZ @6919 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEAAV012@XZ @6920 NONAME ??Econst_iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEAAV012@XZ @6921 NONAME ??Eiterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AV012@H@Z @6618 NONAME ??Eiterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEAAV012@XZ @6619 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AV012@H@Z @5836 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEAAV012@XZ @5837 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AV012@H@Z @6922 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEAAV012@XZ @6923 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AV012@H@Z @6620 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAEAAV012@XZ @6621 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AV012@H@Z @6622 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEAAV012@XZ @6623 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AV012@H@Z @6924 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEAAV012@XZ @6925 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AV012@H@Z @6926 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEAAV012@XZ @6927 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AV012@H@Z @6928 NONAME ??Eiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEAAV012@XZ @6929 NONAME ??EPAtomicInteger@@QAEJXZ @5525 NONAME ??EPIntCondMutex@@QAEAAV0@XZ @1040 NONAME ??EPOrdinalKey@@QAEHH@Z @1041 NONAME ??EPOrdinalKey@@QAEHXZ @1042 NONAME ??Fiterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEAAV012@XZ @6624 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEAAV012@XZ @5842 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEAAV012@XZ @6930 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEAAV012@XZ @6625 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEAAV012@XZ @6931 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEAAV012@XZ @6932 NONAME ??Fiterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEAAV012@XZ @6933 NONAME ??FPAtomicInteger@@QAEJXZ @5526 NONAME ??FPIntCondMutex@@QAEAAV0@XZ @1043 NONAME ??FPOrdinalKey@@QAEHH@Z @1044 NONAME ??FPOrdinalKey@@QAEHXZ @1045 NONAME ??GPTime@@QBE?AV0@ABVPTimeInterval@@@Z @1046 NONAME ??GPTime@@QBE?AVPTimeInterval@@ABV0@@Z @1047 NONAME ??GPTimeInterval@@QBE?AV0@ABV0@@Z @1048 NONAME ??GPTimeInterval@@QBE?AV0@XZ @1049 NONAME ??H@YA?AVPString@@DABV0@@Z @1050 NONAME ??H@YA?AVPString@@PBDABV0@@Z @1051 NONAME ??HPString@@QBE?AV0@ABV0@@Z @1052 NONAME ??HPString@@QBE?AV0@D@Z @1053 NONAME ??HPString@@QBE?AV0@PBD@Z @1054 NONAME ??HPStringArray@@QAE?AV0@ABV0@@Z @1055 NONAME ??HPStringArray@@QAE?AV0@ABVPString@@@Z @1056 NONAME ??HPStringList@@QAE?AV0@ABV0@@Z @1057 NONAME ??HPStringList@@QAE?AV0@ABVPString@@@Z @1058 NONAME ??HPTime@@QBE?AV0@ABVPTimeInterval@@@Z @1059 NONAME ??HPTimeInterval@@QBE?AV0@ABV0@@Z @1060 NONAME ??I@YA?AVPString@@DABV0@@Z @1061 NONAME ??I@YA?AVPString@@PBDABV0@@Z @1062 NONAME ??IPString@@QBE?AV0@ABV0@@Z @1063 NONAME ??IPString@@QBE?AV0@D@Z @1064 NONAME ??IPString@@QBE?AV0@PBD@Z @1065 NONAME ??KPTimeInterval@@QBE?AV0@H@Z @1066 NONAME ??MPObject@@QBE_NABV0@@Z @5598 NONAME ??MPString@@QBE_NABVPObject@@@Z @5599 NONAME ??MPString@@QBE_NPBD@Z @5600 NONAME ??MPTimeInterval@@QBE_NABV0@@Z @5601 NONAME ??MPTimeInterval@@QBE_NJ@Z @5602 NONAME ??NPObject@@QBE_NABV0@@Z @5603 NONAME ??NPString@@QBE_NABVPObject@@@Z @5604 NONAME ??NPString@@QBE_NPBD@Z @5605 NONAME ??NPTimeInterval@@QBE_NABV0@@Z @5606 NONAME ??NPTimeInterval@@QBE_NJ@Z @5607 NONAME ??OPObject@@QBE_NABV0@@Z @5608 NONAME ??OPString@@QBE_NABVPObject@@@Z @5609 NONAME ??OPString@@QBE_NPBD@Z @5610 NONAME ??OPTimeInterval@@QBE_NABV0@@Z @5611 NONAME ??OPTimeInterval@@QBE_NJ@Z @5612 NONAME ??PPObject@@QBE_NABV0@@Z @5613 NONAME ??PPString@@QBE_NABVPObject@@@Z @5614 NONAME ??PPString@@QBE_NPBD@Z @5615 NONAME ??PPTimeInterval@@QBE_NABV0@@Z @5616 NONAME ??PPTimeInterval@@QBE_NJ@Z @5617 NONAME ??R?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@QBE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z @6261 NONAME ??R?$less@VPString@@@std@@QBE_NABVPString@@0@Z @5844 NONAME ??RPNotifier@@UBEXAAVPObject@@H@Z @1087 NONAME ??RPString@@QBE?AV0@HH@Z @1088 NONAME ??R_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6626 NONAME ??R_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5845 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @6934 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@@Z @6627 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6628 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @6935 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @6936 NONAME ??R_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QBEABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @6937 NONAME ??XAddress@PIPSocket@@QBE_NABV01@@Z @7390 NONAME ??XPString@@QBE_NABV0@@Z @5618 NONAME ??XPString@@QBE_NPBD@Z @5619 NONAME ??XPTimeInterval@@QAEAAV0@H@Z @1091 NONAME ??XPWin32AsnOid@@QAE_NABV0@@Z @1092 NONAME ??YPFilePath@@QAEAAV0@ABVPString@@@Z @1093 NONAME ??YPFilePath@@QAEAAV0@PBD@Z @1094 NONAME ??YPIntCondMutex@@QAEAAV0@H@Z @1095 NONAME ??YPOrdinalKey@@QAEAAV0@H@Z @1096 NONAME ??YPString@@QAEAAV0@ABV0@@Z @1097 NONAME ??YPString@@QAEAAV0@D@Z @1098 NONAME ??YPString@@QAEAAV0@PBD@Z @1099 NONAME ??YPStringArray@@QAEAAV0@ABV0@@Z @1100 NONAME ??YPStringArray@@QAEAAV0@ABVPString@@@Z @1101 NONAME ??YPStringList@@QAEAAV0@ABV0@@Z @1102 NONAME ??YPStringList@@QAEAAV0@ABVPString@@@Z @1103 NONAME ??YPStringSet@@QAEAAV0@ABVPString@@@Z @1104 NONAME ??YPTime@@QAEAAV0@ABVPTimeInterval@@@Z @1105 NONAME ??YPTimeInterval@@QAEAAV0@ABV0@@Z @1106 NONAME ??YP_fd_set@@QAEAAV0@I@Z @1107 NONAME ??YSelectList@PSocket@@QAEXAAV1@@Z @5680 NONAME ??ZPIntCondMutex@@QAEAAV0@H@Z @1108 NONAME ??ZPOrdinalKey@@QAEAAV0@H@Z @1109 NONAME ??ZPStringSet@@QAEAAV0@ABVPString@@@Z @1110 NONAME ??ZPTime@@QAEAAV0@ABVPTimeInterval@@@Z @1111 NONAME ??ZPTimeInterval@@QAEAAV0@ABV0@@Z @1112 NONAME ??ZP_fd_set@@QAEAAV0@I@Z @1113 NONAME ??_0PTimeInterval@@QAEAAV0@H@Z @1114 NONAME ??_4PString@@QAEAAV0@ABV0@@Z @1115 NONAME ??_4PString@@QAEAAV0@D@Z @1116 NONAME ??_4PString@@QAEAAV0@PBD@Z @1117 NONAME ??_7?$PArray@VPString@@@@6B@ @1118 NONAME ??_7?$PArray@VPWaveBuffer@@@@6B@ @1119 NONAME ??_7?$PArray@VPWin32PacketBuffer@@@@6B@ @1120 NONAME ??_7?$PBaseArray@D@@6B@ @1121 NONAME ??_7?$PBaseArray@E@@6B@ @1122 NONAME ??_7?$PBaseArray@F@@6B@ @1123 NONAME ??_7?$PBaseArray@G@@6B@ @1124 NONAME ??_7?$PBaseArray@H@@6B@ @1125 NONAME ??_7?$PBaseArray@I@@6B@ @1126 NONAME ??_7?$PBaseArray@J@@6B@ @1127 NONAME ??_7?$PBaseArray@K@@6B@ @1128 NONAME ??_7?$PBaseArray@PAVElement@PHashTable@@@@6B@ @1129 NONAME ??_7?$PBaseArray@PAVPObject@@@@6B@ @1130 NONAME ??_7?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @6938 NONAME ??_7?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @6939 NONAME ??_7?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @6940 NONAME ??_7?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @1131 NONAME ??_7?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @1132 NONAME ??_7?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @1133 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @5627 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @1134 NONAME ??_7?$PDictionary@VPString@@VPDynaLink@@@@6B@ @5549 NONAME ??_7?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6941 NONAME ??_7?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @6420 NONAME ??_7?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6421 NONAME ??_7?$PFactory@VPSoundChannel@@VPString@@@@6B@ @6942 NONAME ??_7?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @6943 NONAME ??_7?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6944 NONAME ??_7?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @7391 NONAME ??_7?$PList@VPDynaLink@@@@6B@ @3994 NONAME ??_7?$PList@VPNotifier@@@@6B@ @3995 NONAME ??_7?$PList@VPPluginService@@@@6B@ @3624 NONAME ??_7?$PList@VPSafeObject@@@@6B@ @6945 NONAME ??_7?$PList@VPSocket@@@@6B@ @1135 NONAME ??_7?$PList@VPString@@@@6B@ @1136 NONAME ??_7?$PList@VPThread@@@@6B@ @1137 NONAME ??_7?$PList@VPTimer@@@@6B@ @1138 NONAME ??_7?$POrdinalDictionary@VPString@@@@6B@ @1139 NONAME ??_7?$PScalarArray@F@@6B@ @1140 NONAME ??_7?$PScalarArray@G@@6B@ @1141 NONAME ??_7?$PScalarArray@H@@6B@ @1142 NONAME ??_7?$PScalarArray@I@@6B@ @1143 NONAME ??_7?$PScalarArray@J@@6B@ @1144 NONAME ??_7?$PScalarArray@K@@6B@ @1145 NONAME ??_7?$PSet@VPString@@@@6B@ @1146 NONAME ??_7?$PSortedList@VPString@@@@6B@ @1147 NONAME ??_7?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @7392 NONAME ??_7?$PStringDictionary@VPOrdinalKey@@@@6B@ @1148 NONAME ??_7?$PStringDictionary@VPString@@@@6B@ @1149 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @7393 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @7394 NONAME ??_7?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @7395 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6946 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6947 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6948 NONAME ??_7?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6629 NONAME ??_7?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6630 NONAME ??_7Address@PIPSocket@@6B@ @1150 NONAME ??_7Buffer@PDebugStream@@6B@ @1151 NONAME ??_7Buffer@PStringStream@@6B@ @1152 NONAME ??_7Buffer@PSystemLog@@6B@ @1153 NONAME ??_7CMCDLL@PMail@@6B@ @1154 NONAME ??_7DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @1155 NONAME ??_7HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @7396 NONAME ??_7HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @7397 NONAME ??_7HouseKeepingThread@PProcess@@6B@ @1156 NONAME ??_7InterfaceEntry@PIPSocket@@6B@ @1157 NONAME ??_7MAPIDLL@PMail@@6B@ @1158 NONAME ??_7Nest@PReadWriteMutex@@6B@ @1159 NONAME ??_7NT_ServiceManager@@6B@ @1160 NONAME ??_7PAbstractArray@@6B@ @1161 NONAME ??_7PAbstractDictionary@@6B@ @1162 NONAME ??_7PAbstractList@@6B@ @1163 NONAME ??_7PAbstractSet@@6B@ @1164 NONAME ??_7PAbstractSortedList@@6B@ @1165 NONAME ??_7PArgList@@6B@ @1166 NONAME ??_7PArrayObjects@@6B@ @1167 NONAME ??_7PBitArray@@6B@ @1168 NONAME ??_7PBYTEArray@@6B@ @1169 NONAME ??_7PCaselessString@@6B@ @1170 NONAME ??_7PChannel@@6Biostream@@@ @1171 NONAME ??_7PChannel@@6BPObject@@@ @1172 NONAME ??_7PChannelStreamBuffer@@6B@ @1173 NONAME ??_7PCharArray@@6B@ @1174 NONAME ??_7PCollection@@6B@ @1175 NONAME ??_7PColourConverter@@6B@ @1176 NONAME ??_7PColourConverterRegistration@@6B@ @1177 NONAME ??_7PCondMutex@@6B@ @1178 NONAME ??_7PConfig@@6B@ @1179 NONAME ??_7PConfigArgs@@6B@ @1180 NONAME ??_7PConsoleChannel@@6Biostream@@@ @1181 NONAME ??_7PConsoleChannel@@6BPObject@@@ @1182 NONAME ??_7PContainer@@6B@ @1183 NONAME ??_7PCriticalSection@@6B@ @5527 NONAME ??_7PDebugStream@@6B@ @1184 NONAME ??_7PDevicePluginAdapterBase@@6B@ @6949 NONAME ??_7PDevicePluginServiceDescriptor@@6B@ @7398 NONAME ??_7PDirectory@@6B@ @1185 NONAME ??_7PDynaLink@@6B@ @1186 NONAME ??_7PEthSocket@@6Biostream@@@ @1187 NONAME ??_7PEthSocket@@6BPObject@@@ @1188 NONAME ??_7PFactoryBase@@6B@ @6631 NONAME ??_7PFile@@6Biostream@@@ @1190 NONAME ??_7PFile@@6BPObject@@@ @1191 NONAME ??_7PFileInfo@@6B@ @1192 NONAME ??_7PFilePath@@6B@ @1193 NONAME ??_7PHashTable@@6B@ @1194 NONAME ??_7PHostByAddr@@6B@ @1195 NONAME ??_7PHostByName@@6B@ @1196 NONAME ??_7PICMPDLL@@6B@ @1197 NONAME ??_7PICMPSocket@@6Biostream@@@ @1198 NONAME ??_7PICMPSocket@@6BPObject@@@ @1199 NONAME ??_7PImageDLL@@6B@ @1200 NONAME ??_7PIndirectChannel@@6Biostream@@@ @1201 NONAME ??_7PIndirectChannel@@6BPObject@@@ @1202 NONAME ??_7PIntCondMutex@@6B@ @1203 NONAME ??_7PIPCacheData@@6B@ @1204 NONAME ??_7PIPCacheKey@@6B@ @1205 NONAME ??_7PIPDatagramSocket@@6Biostream@@@ @1206 NONAME ??_7PIPDatagramSocket@@6BPObject@@@ @1207 NONAME ??_7PIPSocket@@6Biostream@@@ @1208 NONAME ??_7PIPSocket@@6BPObject@@@ @1209 NONAME ??_7PIPXSocket@@6Biostream@@@ @1210 NONAME ??_7PIPXSocket@@6BPObject@@@ @1211 NONAME ??_7PluginLoaderStartup@@6B@ @5848 NONAME ??_7PMail@@6B@ @1212 NONAME ??_7PMutex@@6B@ @1213 NONAME ??_7PNotifier@@6B@ @1214 NONAME ??_7PNotifierFunction@@6B@ @1215 NONAME ??_7PObject@@6B@ @1216 NONAME ??_7POrdinalKey@@6B@ @1217 NONAME ??_7POrdinalToString@@6B@ @1218 NONAME ??_7PPipeChannel@@6Biostream@@@ @1219 NONAME ??_7PPipeChannel@@6BPObject@@@ @1220 NONAME ??_7PPluginManager@@6B@ @3626 NONAME ??_7PPluginModuleManager@@6B@ @5551 NONAME ??_7PPluginService@@6B@ @3627 NONAME ??_7PPluginServiceDescriptor@@6B@ @7399 NONAME ??_7PPointer@@6B@ @5628 NONAME ??_7PProcess@@6B@ @1221 NONAME ??_7PProcessStartup@@6B@ @5849 NONAME ??_7PQoS@@6B@ @3542 NONAME ??_7PRASDLL@@6B@ @1222 NONAME ??_7PReadWriteMutex@@6B@ @1223 NONAME ??_7PRegularExpression@@6B@ @1224 NONAME ??_7PRemoteConnection@@6B@ @1225 NONAME ??_7PSafeCollection@@6B@ @1226 NONAME ??_7PSafeObject@@6B@ @1227 NONAME ??_7PSafePtrBase@@6B@ @1228 NONAME ??_7PSemaphore@@6B@ @1229 NONAME ??_7PSerialChannel@@6Biostream@@@ @1230 NONAME ??_7PSerialChannel@@6BPObject@@@ @1231 NONAME ??_7PServiceProcess@@6B@ @1232 NONAME ??_7PSimpleThread@@6B@ @1233 NONAME ??_7PSmartObject@@6B@ @1234 NONAME ??_7PSmartPointer@@6B@ @1235 NONAME ??_7PSmartPtrInspector@@6B@ @5629 NONAME ??_7PSocket@@6Biostream@@@ @1236 NONAME ??_7PSocket@@6BPObject@@@ @1237 NONAME ??_7PSortedStringList@@6B@ @1238 NONAME ??_7PSound@@6B@ @1239 NONAME ??_7PSoundChannel@@6Biostream@@@ @1240 NONAME ??_7PSoundChannel@@6BPObject@@@ @1241 NONAME ??_7PSoundChannelWin32@@6Biostream@@@ @3628 NONAME ??_7PSoundChannelWin32@@6BPObject@@@ @3629 NONAME ??_7PSPXSocket@@6Biostream@@@ @1242 NONAME ??_7PSPXSocket@@6BPObject@@@ @1243 NONAME ??_7PStandardColourConverter@@6B@ @1244 NONAME ??_7PString@@6B@ @1245 NONAME ??_7PStringArray@@6B@ @1246 NONAME ??_7PStringList@@6B@ @1247 NONAME ??_7PStringSet@@6B@ @1248 NONAME ??_7PStringStream@@6Biostream@@@ @1249 NONAME ??_7PStringStream@@6BPString@@@ @1250 NONAME ??_7PStringToOrdinal@@6B@ @1251 NONAME ??_7PStringToString@@6B@ @1252 NONAME ??_7PStructuredFile@@6Biostream@@@ @1253 NONAME ??_7PStructuredFile@@6BPObject@@@ @1254 NONAME ??_7PSyncPoint@@6B@ @1255 NONAME ??_7PSynonymColour@@6B@ @1256 NONAME ??_7PSynonymColourRegistration@@6B@ @1257 NONAME ??_7PSystemLog@@6Biostream@@@ @1258 NONAME ??_7PSystemLog@@6BPObject@@@ @1259 NONAME ??_7PTCPSocket@@6Biostream@@@ @1260 NONAME ??_7PTCPSocket@@6BPObject@@@ @1261 NONAME ??_7PTextFile@@6Biostream@@@ @1262 NONAME ??_7PTextFile@@6BPObject@@@ @1263 NONAME ??_7PThread@@6B@ @1264 NONAME ??_7PTime@@6B@ @1265 NONAME ??_7PTimeInterval@@6B@ @1266 NONAME ??_7PTimer@@6B@ @1267 NONAME ??_7PTimerList@@6B@ @1268 NONAME ??_7PUDPSocket@@6Biostream@@@ @1269 NONAME ??_7PUDPSocket@@6BPObject@@@ @1270 NONAME ??_7PVideoChannel@@6Biostream@@@ @1271 NONAME ??_7PVideoChannel@@6BPObject@@@ @1272 NONAME ??_7PVideoDevice@@6B@ @1273 NONAME ??_7PVideoDeviceBitmap@@6B@ @1274 NONAME ??_7PVideoInputDevice@@6B@ @1275 NONAME ??_7PVideoInputDevice_FakeVideo@@6B@ @3784 NONAME ??_7PVideoInputDevice_VideoForWindows@@6B@ @3630 NONAME ??_7PVideoOutputDevice@@6B@ @1277 NONAME ??_7PVideoOutputDeviceRGB@@6B@ @7400 NONAME ??_7PVideoOutputDevice_NULLOutput@@6B@ @3785 NONAME ??_7PVideoOutputDevice_Window@@6B@ @7401 NONAME ??_7PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @7402 NONAME ??_7PWaveBuffer@@6B@ @1281 NONAME ??_7PWaveFormat@@6B@ @1282 NONAME ??_7PWin32PacketBuffer@@6B@ @1283 NONAME ??_7PWin32PacketDriver@@6B@ @1284 NONAME ??_7PWin32PacketSYS@@6B@ @1285 NONAME ??_7PWin32PacketVxD@@6B@ @1286 NONAME ??_7PWin32SnmpLibrary@@6B@ @1287 NONAME ??_7PWinQoS@@6B@ @3876 NONAME ??_7PWinSock@@6Biostream@@@ @1288 NONAME ??_7PWinSock@@6BPObject@@@ @1289 NONAME ??_7P_BGR24_RGB24@@6B@ @7403 NONAME ??_7P_BGR24_RGB24_Registration@@6B@ @7404 NONAME ??_7P_BGR24_RGB32@@6B@ @7405 NONAME ??_7P_BGR24_RGB32_Registration@@6B@ @7406 NONAME ??_7P_BGR24_YUV420P@@6B@ @3786 NONAME ??_7P_BGR24_YUV420P_Registration@@6B@ @3787 NONAME ??_7P_BGR32_RGB24@@6B@ @7407 NONAME ??_7P_BGR32_RGB24_Registration@@6B@ @7408 NONAME ??_7P_BGR32_RGB32@@6B@ @7409 NONAME ??_7P_BGR32_RGB32_Registration@@6B@ @7410 NONAME ??_7P_BGR32_YUV420P@@6B@ @3788 NONAME ??_7P_BGR32_YUV420P_Registration@@6B@ @3789 NONAME ??_7P_Grey_YUV420P@@6B@ @1292 NONAME ??_7P_Grey_YUV420P_Registration@@6B@ @1293 NONAME ??_7P_RGB24_BGR24@@6B@ @7411 NONAME ??_7P_RGB24_BGR24_Registration@@6B@ @7412 NONAME ??_7P_RGB24_BGR32@@6B@ @7413 NONAME ??_7P_RGB24_BGR32_Registration@@6B@ @7414 NONAME ??_7P_RGB24_RGB32@@6B@ @1296 NONAME ??_7P_RGB24_RGB32_Registration@@6B@ @1297 NONAME ??_7P_RGB24_YUV420P@@6B@ @1298 NONAME ??_7P_RGB24_YUV420P_Registration@@6B@ @1299 NONAME ??_7P_RGB32_BGR24@@6B@ @7415 NONAME ??_7P_RGB32_BGR24_Registration@@6B@ @7416 NONAME ??_7P_RGB32_BGR32@@6B@ @7417 NONAME ??_7P_RGB32_BGR32_Registration@@6B@ @7418 NONAME ??_7P_RGB32_RGB24@@6B@ @1302 NONAME ??_7P_RGB32_RGB24_Registration@@6B@ @1303 NONAME ??_7P_RGB32_YUV420P@@6B@ @1304 NONAME ??_7P_RGB32_YUV420P_Registration@@6B@ @1305 NONAME ??_7P_SBGGR8_RGB24@@6B@ @7281 NONAME ??_7P_SBGGR8_RGB24_Registration@@6B@ @7282 NONAME ??_7P_SBGGR8_YUV420P@@6B@ @7419 NONAME ??_7P_SBGGR8_YUV420P_Registration@@6B@ @7420 NONAME ??_7P_UYV444_YUV420P@@6B@ @1306 NONAME ??_7P_UYV444_YUV420P_Registration@@6B@ @1307 NONAME ??_7P_UYVY422_YUV420P@@6B@ @1308 NONAME ??_7P_UYVY422_YUV420P_Registration@@6B@ @1309 NONAME ??_7P_YUV411P_YUV420P@@6B@ @1310 NONAME ??_7P_YUV411P_YUV420P_Registration@@6B@ @1311 NONAME ??_7P_YUV420P_BGR24@@6B@ @1312 NONAME ??_7P_YUV420P_BGR24_Registration@@6B@ @1315 NONAME ??_7P_YUV420P_BGR32@@6B@ @3790 NONAME ??_7P_YUV420P_BGR32_Registration@@6B@ @3791 NONAME ??_7P_YUV420P_RGB24@@6B@ @1316 NONAME ??_7P_YUV420P_RGB24_Registration@@6B@ @1319 NONAME ??_7P_YUV420P_RGB32@@6B@ @1320 NONAME ??_7P_YUV420P_RGB32_Registration@@6B@ @1323 NONAME ??_7P_YUV420P_YUV411P@@6B@ @1324 NONAME ??_7P_YUV420P_YUV411P_Registration@@6B@ @1325 NONAME ??_7P_YUV422_YUV420P@@6B@ @1326 NONAME ??_7P_YUV422_YUV420P_Registration@@6B@ @1327 NONAME ??_7P_YUV422_YUV422@@6B@ @1328 NONAME ??_7P_YUV422_YUV422_Registration@@6B@ @1329 NONAME ??_7RouteEntry@PIPSocket@@6B@ @1330 NONAME ??_7SelectList@PSocket@@6B@ @1331 NONAME ??_7ServiceManager@@6B@ @1332 NONAME ??_7Table@PHashTable@@6B@ @1333 NONAME ??_7Win95_ServiceManager@@6B@ @1334 NONAME ??_7WinSNMPLoader@@6B@ @6198 NONAME ??_7Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @6950 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @6951 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6952 NONAME ??_7WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @6953 NONAME ??_7WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6633 NONAME ??_7WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @6954 NONAME ??_7WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @6955 NONAME ??_7WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @6956 NONAME ??_8PChannel@@7Bistream@@@ @1335 NONAME ??_8PChannel@@7Bostream@@@ @1336 NONAME ??_8PConsoleChannel@@7Bistream@@@ @1337 NONAME ??_8PConsoleChannel@@7Bostream@@@ @1338 NONAME ??_8PDebugStream@@7B@ @1339 NONAME ??_8PEthSocket@@7Bistream@@@ @1340 NONAME ??_8PEthSocket@@7Bostream@@@ @1341 NONAME ??_8PFile@@7Bistream@@@ @1342 NONAME ??_8PFile@@7Bostream@@@ @1343 NONAME ??_8PICMPSocket@@7Bistream@@@ @1344 NONAME ??_8PICMPSocket@@7Bostream@@@ @1345 NONAME ??_8PIndirectChannel@@7Bistream@@@ @1346 NONAME ??_8PIndirectChannel@@7Bostream@@@ @1347 NONAME ??_8PIPDatagramSocket@@7Bistream@@@ @1348 NONAME ??_8PIPDatagramSocket@@7Bostream@@@ @1349 NONAME ??_8PIPSocket@@7Bistream@@@ @1350 NONAME ??_8PIPSocket@@7Bostream@@@ @1351 NONAME ??_8PIPXSocket@@7Bistream@@@ @1352 NONAME ??_8PIPXSocket@@7Bostream@@@ @1353 NONAME ??_8PPipeChannel@@7Bistream@@@ @1354 NONAME ??_8PPipeChannel@@7Bostream@@@ @1355 NONAME ??_8PSerialChannel@@7Bistream@@@ @1356 NONAME ??_8PSerialChannel@@7Bostream@@@ @1357 NONAME ??_8PSocket@@7Bistream@@@ @1358 NONAME ??_8PSocket@@7Bostream@@@ @1359 NONAME ??_8PSoundChannel@@7Bistream@@@ @1360 NONAME ??_8PSoundChannel@@7Bostream@@@ @1361 NONAME ??_8PSoundChannelWin32@@7Bistream@@@ @3631 NONAME ??_8PSoundChannelWin32@@7Bostream@@@ @3632 NONAME ??_8PSPXSocket@@7Bistream@@@ @1362 NONAME ??_8PSPXSocket@@7Bostream@@@ @1363 NONAME ??_8PStringStream@@7Bistream@@@ @1364 NONAME ??_8PStringStream@@7Bostream@@@ @1365 NONAME ??_8PStructuredFile@@7Bistream@@@ @1366 NONAME ??_8PStructuredFile@@7Bostream@@@ @1367 NONAME ??_8PSystemLog@@7Bistream@@@ @1368 NONAME ??_8PSystemLog@@7Bostream@@@ @1369 NONAME ??_8PTCPSocket@@7Bistream@@@ @1370 NONAME ??_8PTCPSocket@@7Bostream@@@ @1371 NONAME ??_8PTextFile@@7Bistream@@@ @1372 NONAME ??_8PTextFile@@7Bostream@@@ @1373 NONAME ??_8PUDPSocket@@7Bistream@@@ @1374 NONAME ??_8PUDPSocket@@7Bostream@@@ @1375 NONAME ??_8PVideoChannel@@7Bistream@@@ @1376 NONAME ??_8PVideoChannel@@7Bostream@@@ @1377 NONAME ??_8PWinSock@@7Bistream@@@ @1378 NONAME ??_8PWinSock@@7Bostream@@@ @1379 NONAME ??_DPChannel@@QAEXXZ @1380 NONAME ??_DPConsoleChannel@@QAEXXZ @1381 NONAME ??_DPDebugStream@@QAEXXZ @1382 NONAME ??_DPEthSocket@@QAEXXZ @1383 NONAME ??_DPFile@@QAEXXZ @1384 NONAME ??_DPICMPSocket@@QAEXXZ @1385 NONAME ??_DPIndirectChannel@@QAEXXZ @1386 NONAME ??_DPIPDatagramSocket@@QAEXXZ @1387 NONAME ??_DPIPSocket@@QAEXXZ @1388 NONAME ??_DPIPXSocket@@QAEXXZ @1389 NONAME ??_DPPipeChannel@@QAEXXZ @1390 NONAME ??_DPSerialChannel@@QAEXXZ @1391 NONAME ??_DPSocket@@QAEXXZ @1392 NONAME ??_DPSoundChannel@@QAEXXZ @1393 NONAME ??_DPSoundChannelWin32@@QAEXXZ @3633 NONAME ??_DPSPXSocket@@QAEXXZ @1394 NONAME ??_DPStringStream@@QAEXXZ @1395 NONAME ??_DPStructuredFile@@QAEXXZ @1396 NONAME ??_DPSystemLog@@QAEXXZ @1397 NONAME ??_DPTCPSocket@@QAEXXZ @1398 NONAME ??_DPTextFile@@QAEXXZ @1399 NONAME ??_DPUDPSocket@@QAEXXZ @1400 NONAME ??_DPVideoChannel@@QAEXXZ @1401 NONAME ??_DPWinSock@@QAEXXZ @1402 NONAME ??_R0?AV?$PArray@VPString@@@@@8 @4011 NONAME ??_R0?AV?$PArray@VPWaveBuffer@@@@@8 @4012 NONAME ??_R0?AV?$PArray@VPWin32PacketBuffer@@@@@8 @4013 NONAME ??_R0?AV?$PBaseArray@D@@@8 @4014 NONAME ??_R0?AV?$PBaseArray@E@@@8 @4015 NONAME ??_R0?AV?$PBaseArray@F@@@8 @4016 NONAME ??_R0?AV?$PBaseArray@G@@@8 @4017 NONAME ??_R0?AV?$PBaseArray@H@@@8 @4018 NONAME ??_R0?AV?$PBaseArray@I@@@8 @4019 NONAME ??_R0?AV?$PBaseArray@J@@@8 @4020 NONAME ??_R0?AV?$PBaseArray@K@@@8 @4021 NONAME ??_R0?AV?$PBaseArray@PAVElement@PHashTable@@@@@8 @4022 NONAME ??_R0?AV?$PBaseArray@PAVPObject@@@@@8 @4023 NONAME ??_R0?AV?$PDevicePluginAdapter@VPSoundChannel@@@@@8 @6957 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoInputDevice@@@@@8 @6958 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@8 @6959 NONAME ??_R0?AV?$PDictionary@VPCaselessString@@VPIPCacheData@@@@@8 @4024 NONAME ??_R0?AV?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@@8 @4025 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@@8 @4026 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPPointer@@@@@8 @5630 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPThread@@@@@8 @4027 NONAME ??_R0?AV?$PDictionary@VPString@@VPDynaLink@@@@@8 @5552 NONAME ??_R0?AV?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6960 NONAME ??_R0?AV?$PFactory@VPPluginModuleManager@@VPString@@@@@8 @6425 NONAME ??_R0?AV?$PFactory@VPProcessStartup@@VPString@@@@@8 @6426 NONAME ??_R0?AV?$PFactory@VPSoundChannel@@VPString@@@@@8 @6961 NONAME ??_R0?AV?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @6962 NONAME ??_R0?AV?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @6963 NONAME ??_R0?AV?$PList@VInterfaceEntry@PIPSocket@@@@@8 @7421 NONAME ??_R0?AV?$PList@VPDynaLink@@@@@8 @4028 NONAME ??_R0?AV?$PList@VPNotifier@@@@@8 @4029 NONAME ??_R0?AV?$PList@VPPluginService@@@@@8 @4030 NONAME ??_R0?AV?$PList@VPSafeObject@@@@@8 @6964 NONAME ??_R0?AV?$PList@VPSocket@@@@@8 @4031 NONAME ??_R0?AV?$PList@VPString@@@@@8 @4032 NONAME ??_R0?AV?$PList@VPThread@@@@@8 @4033 NONAME ??_R0?AV?$PList@VPTimer@@@@@8 @4034 NONAME ??_R0?AV?$POrdinalDictionary@VPString@@@@@8 @4035 NONAME ??_R0?AV?$PScalarArray@F@@@8 @4036 NONAME ??_R0?AV?$PScalarArray@G@@@8 @4037 NONAME ??_R0?AV?$PScalarArray@H@@@8 @4038 NONAME ??_R0?AV?$PScalarArray@I@@@8 @4039 NONAME ??_R0?AV?$PScalarArray@J@@@8 @4040 NONAME ??_R0?AV?$PScalarArray@K@@@8 @4041 NONAME ??_R0?AV?$PSet@VPString@@@@@8 @4042 NONAME ??_R0?AV?$PSortedList@VPString@@@@@8 @4043 NONAME ??_R0?AV?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@@8 @7422 NONAME ??_R0?AV?$PStringDictionary@VPOrdinalKey@@@@@8 @4044 NONAME ??_R0?AV?$PStringDictionary@VPString@@@@@8 @4045 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@@8 @7423 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@@8 @7424 NONAME ??_R0?AV?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@@8 @7425 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6965 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6966 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6967 NONAME ??_R0?AV?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6634 NONAME ??_R0?AV?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6635 NONAME ??_R0?AVAddress@PIPSocket@@@8 @4046 NONAME ??_R0?AVBuffer@PDebugStream@@@8 @4047 NONAME ??_R0?AVBuffer@PStringStream@@@8 @4048 NONAME ??_R0?AVBuffer@PSystemLog@@@8 @4049 NONAME ??_R0?AVCMCDLL@PMail@@@8 @4050 NONAME ??_R0?AVDeleteObjectsTimeout_PNotifier@PSafeCollection@@@8 @4051 NONAME ??_R0?AVHandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@@8 @7426 NONAME ??_R0?AVHandleDisplay_PNotifier@PVideoOutputDevice_Window@@@8 @7427 NONAME ??_R0?AVHouseKeepingThread@PProcess@@@8 @4052 NONAME ??_R0?AVInterfaceEntry@PIPSocket@@@8 @4053 NONAME ??_R0?AVios@@@8 @4054 NONAME ??_R0?AViostream@@@8 @4055 NONAME ??_R0?AVistream@@@8 @4056 NONAME ??_R0?AVMAPIDLL@PMail@@@8 @4057 NONAME ??_R0?AVNest@PReadWriteMutex@@@8 @4058 NONAME ??_R0?AVNT_ServiceManager@@@8 @4059 NONAME ??_R0?AVofstream@@@8 @4060 NONAME ??_R0?AVostream@@@8 @4061 NONAME ??_R0?AVPAbstractArray@@@8 @4062 NONAME ??_R0?AVPAbstractDictionary@@@8 @4063 NONAME ??_R0?AVPAbstractList@@@8 @4064 NONAME ??_R0?AVPAbstractSet@@@8 @4065 NONAME ??_R0?AVPAbstractSortedList@@@8 @4066 NONAME ??_R0?AVPArgList@@@8 @4067 NONAME ??_R0?AVPArrayObjects@@@8 @4068 NONAME ??_R0?AVPBitArray@@@8 @4069 NONAME ??_R0?AVPBYTEArray@@@8 @4070 NONAME ??_R0?AVPCaselessString@@@8 @4071 NONAME ??_R0?AVPChannel@@@8 @4072 NONAME ??_R0?AVPChannelStreamBuffer@@@8 @4073 NONAME ??_R0?AVPCharArray@@@8 @4074 NONAME ??_R0?AVPCollection@@@8 @4075 NONAME ??_R0?AVPColourConverter@@@8 @4076 NONAME ??_R0?AVPColourConverterRegistration@@@8 @4077 NONAME ??_R0?AVPCondMutex@@@8 @4078 NONAME ??_R0?AVPConfig@@@8 @4079 NONAME ??_R0?AVPConfigArgs@@@8 @4080 NONAME ??_R0?AVPConsoleChannel@@@8 @4081 NONAME ??_R0?AVPContainer@@@8 @4082 NONAME ??_R0?AVPCriticalSection@@@8 @5528 NONAME ??_R0?AVPDebugStream@@@8 @4083 NONAME ??_R0?AVPDevicePluginAdapterBase@@@8 @6968 NONAME ??_R0?AVPDevicePluginServiceDescriptor@@@8 @7428 NONAME ??_R0?AVPDirectory@@@8 @4084 NONAME ??_R0?AVPDynaLink@@@8 @4085 NONAME ??_R0?AVPEthSocket@@@8 @4086 NONAME ??_R0?AVPFactoryBase@@@8 @6636 NONAME ??_R0?AVPFile@@@8 @4087 NONAME ??_R0?AVPFileInfo@@@8 @4088 NONAME ??_R0?AVPFilePath@@@8 @4089 NONAME ??_R0?AVPHashTable@@@8 @4090 NONAME ??_R0?AVPHostByAddr@@@8 @4091 NONAME ??_R0?AVPHostByName@@@8 @4092 NONAME ??_R0?AVPICMPDLL@@@8 @4093 NONAME ??_R0?AVPICMPSocket@@@8 @4094 NONAME ??_R0?AVPImageDLL@@@8 @4095 NONAME ??_R0?AVPIndirectChannel@@@8 @4096 NONAME ??_R0?AVPIntCondMutex@@@8 @4097 NONAME ??_R0?AVPIPCacheData@@@8 @4098 NONAME ??_R0?AVPIPCacheKey@@@8 @4099 NONAME ??_R0?AVPIPDatagramSocket@@@8 @4100 NONAME ??_R0?AVPIPSocket@@@8 @4101 NONAME ??_R0?AVPIPXSocket@@@8 @4102 NONAME ??_R0?AVPluginLoaderStartup@@@8 @5850 NONAME ??_R0?AVPMail@@@8 @4103 NONAME ??_R0?AVPMutex@@@8 @4104 NONAME ??_R0?AVPNotifier@@@8 @4105 NONAME ??_R0?AVPNotifierFunction@@@8 @4106 NONAME ??_R0?AVPObject@@@8 @4107 NONAME ??_R0?AVPOrdinalKey@@@8 @4108 NONAME ??_R0?AVPOrdinalToString@@@8 @4109 NONAME ??_R0?AVPPipeChannel@@@8 @4110 NONAME ??_R0?AVPPluginManager@@@8 @4111 NONAME ??_R0?AVPPluginModuleManager@@@8 @5554 NONAME ??_R0?AVPPluginService@@@8 @4112 NONAME ??_R0?AVPPluginServiceDescriptor@@@8 @7429 NONAME ??_R0?AVPPointer@@@8 @5631 NONAME ??_R0?AVPProcess@@@8 @4113 NONAME ??_R0?AVPProcessStartup@@@8 @5851 NONAME ??_R0?AVPQoS@@@8 @4114 NONAME ??_R0?AVPRASDLL@@@8 @4115 NONAME ??_R0?AVPReadWriteMutex@@@8 @4116 NONAME ??_R0?AVPRegularExpression@@@8 @4117 NONAME ??_R0?AVPRemoteConnection@@@8 @4118 NONAME ??_R0?AVPSafeCollection@@@8 @4119 NONAME ??_R0?AVPSafeObject@@@8 @4120 NONAME ??_R0?AVPSafePtrBase@@@8 @4121 NONAME ??_R0?AVPSemaphore@@@8 @4122 NONAME ??_R0?AVPSerialChannel@@@8 @4123 NONAME ??_R0?AVPServiceProcess@@@8 @4124 NONAME ??_R0?AVPSimpleThread@@@8 @4125 NONAME ??_R0?AVPSmartNotifierFunction@@@8 @5632 NONAME ??_R0?AVPSmartObject@@@8 @4126 NONAME ??_R0?AVPSmartPointer@@@8 @4127 NONAME ??_R0?AVPSmartPtrInspector@@@8 @5633 NONAME ??_R0?AVPSocket@@@8 @4128 NONAME ??_R0?AVPSortedStringList@@@8 @4129 NONAME ??_R0?AVPSound@@@8 @4130 NONAME ??_R0?AVPSoundChannel@@@8 @4131 NONAME ??_R0?AVPSoundChannelWin32@@@8 @4132 NONAME ??_R0?AVPSPXSocket@@@8 @4133 NONAME ??_R0?AVPStandardColourConverter@@@8 @4134 NONAME ??_R0?AVPString@@@8 @4135 NONAME ??_R0?AVPStringArray@@@8 @4136 NONAME ??_R0?AVPStringList@@@8 @4137 NONAME ??_R0?AVPStringSet@@@8 @4138 NONAME ??_R0?AVPStringStream@@@8 @4139 NONAME ??_R0?AVPStringToOrdinal@@@8 @4140 NONAME ??_R0?AVPStringToString@@@8 @4141 NONAME ??_R0?AVPStructuredFile@@@8 @4142 NONAME ??_R0?AVPSyncPoint@@@8 @4143 NONAME ??_R0?AVPSynonymColour@@@8 @4144 NONAME ??_R0?AVPSynonymColourRegistration@@@8 @4145 NONAME ??_R0?AVPSystemLog@@@8 @4146 NONAME ??_R0?AVPTCPSocket@@@8 @4147 NONAME ??_R0?AVPTextFile@@@8 @4148 NONAME ??_R0?AVPThread@@@8 @4149 NONAME ??_R0?AVPTime@@@8 @4150 NONAME ??_R0?AVPTimeInterval@@@8 @4151 NONAME ??_R0?AVPTimer@@@8 @4152 NONAME ??_R0?AVPTimerList@@@8 @4153 NONAME ??_R0?AVPUDPSocket@@@8 @4154 NONAME ??_R0?AVPVideoChannel@@@8 @4155 NONAME ??_R0?AVPVideoDevice@@@8 @4156 NONAME ??_R0?AVPVideoDeviceBitmap@@@8 @4157 NONAME ??_R0?AVPVideoInputDevice@@@8 @4158 NONAME ??_R0?AVPVideoInputDevice_FakeVideo@@@8 @4159 NONAME ??_R0?AVPVideoInputDevice_VideoForWindows@@@8 @4160 NONAME ??_R0?AVPVideoOutputDevice@@@8 @4162 NONAME ??_R0?AVPVideoOutputDeviceRGB@@@8 @7430 NONAME ??_R0?AVPVideoOutputDevice_NULLOutput@@@8 @4163 NONAME ??_R0?AVPVideoOutputDevice_Window@@@8 @7431 NONAME ??_R0?AVPVideoOutputDevice_Window_PluginServiceDescriptor@@@8 @7432 NONAME ??_R0?AVPWaveBuffer@@@8 @4164 NONAME ??_R0?AVPWaveFormat@@@8 @4165 NONAME ??_R0?AVPWin32PacketBuffer@@@8 @4166 NONAME ??_R0?AVPWin32PacketDriver@@@8 @4167 NONAME ??_R0?AVPWin32PacketSYS@@@8 @4168 NONAME ??_R0?AVPWin32PacketVxD@@@8 @4169 NONAME ??_R0?AVPWin32SnmpLibrary@@@8 @4170 NONAME ??_R0?AVPWinQoS@@@8 @4171 NONAME ??_R0?AVPWinSock@@@8 @4172 NONAME ??_R0?AVP_BGR24_RGB24@@@8 @7433 NONAME ??_R0?AVP_BGR24_RGB24_Registration@@@8 @7434 NONAME ??_R0?AVP_BGR24_RGB32@@@8 @7435 NONAME ??_R0?AVP_BGR24_RGB32_Registration@@@8 @7436 NONAME ??_R0?AVP_BGR24_YUV420P@@@8 @4173 NONAME ??_R0?AVP_BGR24_YUV420P_Registration@@@8 @4174 NONAME ??_R0?AVP_BGR32_RGB24@@@8 @7437 NONAME ??_R0?AVP_BGR32_RGB24_Registration@@@8 @7438 NONAME ??_R0?AVP_BGR32_RGB32@@@8 @7439 NONAME ??_R0?AVP_BGR32_RGB32_Registration@@@8 @7440 NONAME ??_R0?AVP_BGR32_YUV420P@@@8 @4175 NONAME ??_R0?AVP_BGR32_YUV420P_Registration@@@8 @4176 NONAME ??_R0?AVP_Grey_YUV420P@@@8 @4179 NONAME ??_R0?AVP_Grey_YUV420P_Registration@@@8 @4180 NONAME ??_R0?AVP_RGB24_BGR24@@@8 @7441 NONAME ??_R0?AVP_RGB24_BGR24_Registration@@@8 @7442 NONAME ??_R0?AVP_RGB24_BGR32@@@8 @7443 NONAME ??_R0?AVP_RGB24_BGR32_Registration@@@8 @7444 NONAME ??_R0?AVP_RGB24_RGB32@@@8 @4183 NONAME ??_R0?AVP_RGB24_RGB32_Registration@@@8 @4184 NONAME ??_R0?AVP_RGB24_YUV420P@@@8 @4185 NONAME ??_R0?AVP_RGB24_YUV420P_Registration@@@8 @4186 NONAME ??_R0?AVP_RGB32_BGR24@@@8 @7445 NONAME ??_R0?AVP_RGB32_BGR24_Registration@@@8 @7446 NONAME ??_R0?AVP_RGB32_BGR32@@@8 @7447 NONAME ??_R0?AVP_RGB32_BGR32_Registration@@@8 @7448 NONAME ??_R0?AVP_RGB32_RGB24@@@8 @4189 NONAME ??_R0?AVP_RGB32_RGB24_Registration@@@8 @4190 NONAME ??_R0?AVP_RGB32_YUV420P@@@8 @4191 NONAME ??_R0?AVP_RGB32_YUV420P_Registration@@@8 @4192 NONAME ??_R0?AVP_SBGGR8_RGB24@@@8 @7283 NONAME ??_R0?AVP_SBGGR8_RGB24_Registration@@@8 @7284 NONAME ??_R0?AVP_SBGGR8_YUV420P@@@8 @7449 NONAME ??_R0?AVP_SBGGR8_YUV420P_Registration@@@8 @7450 NONAME ??_R0?AVP_UYV444_YUV420P@@@8 @4193 NONAME ??_R0?AVP_UYV444_YUV420P_Registration@@@8 @4194 NONAME ??_R0?AVP_UYVY422_YUV420P@@@8 @4195 NONAME ??_R0?AVP_UYVY422_YUV420P_Registration@@@8 @4196 NONAME ??_R0?AVP_YUV411P_YUV420P@@@8 @4197 NONAME ??_R0?AVP_YUV411P_YUV420P_Registration@@@8 @4198 NONAME ??_R0?AVP_YUV420P_BGR24@@@8 @4199 NONAME ??_R0?AVP_YUV420P_BGR24_Registration@@@8 @4202 NONAME ??_R0?AVP_YUV420P_BGR32@@@8 @4203 NONAME ??_R0?AVP_YUV420P_BGR32_Registration@@@8 @4204 NONAME ??_R0?AVP_YUV420P_RGB24@@@8 @4205 NONAME ??_R0?AVP_YUV420P_RGB24_Registration@@@8 @4208 NONAME ??_R0?AVP_YUV420P_RGB32@@@8 @4209 NONAME ??_R0?AVP_YUV420P_RGB32_Registration@@@8 @4212 NONAME ??_R0?AVP_YUV420P_YUV411P@@@8 @4213 NONAME ??_R0?AVP_YUV420P_YUV411P_Registration@@@8 @4214 NONAME ??_R0?AVP_YUV422_YUV420P@@@8 @4215 NONAME ??_R0?AVP_YUV422_YUV420P_Registration@@@8 @4216 NONAME ??_R0?AVP_YUV422_YUV422@@@8 @4217 NONAME ??_R0?AVP_YUV422_YUV422_Registration@@@8 @4218 NONAME ??_R0?AVRouteEntry@PIPSocket@@@8 @4219 NONAME ??_R0?AVSelectList@PSocket@@@8 @4220 NONAME ??_R0?AVServiceManager@@@8 @4221 NONAME ??_R0?AVstreambuf@@@8 @4222 NONAME ??_R0?AVTable@PHashTable@@@8 @4223 NONAME ??_R0?AVWin95_ServiceManager@@@8 @4224 NONAME ??_R0?AVWinSNMPLoader@@@8 @6199 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@@8 @6969 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@@8 @6970 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@@8 @6971 NONAME ??_R0?AVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @6972 NONAME ??_R0?AVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6638 NONAME ??_R0?AVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@8 @6973 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @6974 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @6975 NONAME ??_R13?0A@A@iostream@@8 @4225 NONAME ??_R13?0A@A@istream@@8 @4226 NONAME ??_R1A@33BA@ios@@8 @4227 NONAME ??_R1A@?0A@8?$PBaseArray@E@@8 @4228 NONAME ??_R1A@?0A@8?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4229 NONAME ??_R1A@?0A@8?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4230 NONAME ??_R1A@?0A@8?$PList@VPTimer@@@@8 @4231 NONAME ??_R1A@?0A@8PAbstractArray@@8 @4232 NONAME ??_R1A@?0A@8PAbstractDictionary@@8 @4233 NONAME ??_R1A@?0A@8PAbstractList@@8 @4234 NONAME ??_R1A@?0A@8PBYTEArray@@8 @4235 NONAME ??_R1A@?0A@8PCollection@@8 @4236 NONAME ??_R1A@?0A@8PContainer@@8 @4237 NONAME ??_R1A@?0A@8PFactoryBase@@8 @6639 NONAME ??_R1A@?0A@8PHashTable@@8 @4238 NONAME ??_R1A@?0A@8PObject@@8 @4239 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6976 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6640 NONAME ??_R1A@?0A@A@?$PArray@VPString@@@@8 @4240 NONAME ??_R1A@?0A@A@?$PArray@VPWaveBuffer@@@@8 @4241 NONAME ??_R1A@?0A@A@?$PArray@VPWin32PacketBuffer@@@@8 @4242 NONAME ??_R1A@?0A@A@?$PBaseArray@D@@8 @4243 NONAME ??_R1A@?0A@A@?$PBaseArray@E@@8 @4244 NONAME ??_R1A@?0A@A@?$PBaseArray@F@@8 @4245 NONAME ??_R1A@?0A@A@?$PBaseArray@G@@8 @4246 NONAME ??_R1A@?0A@A@?$PBaseArray@H@@8 @4247 NONAME ??_R1A@?0A@A@?$PBaseArray@I@@8 @4248 NONAME ??_R1A@?0A@A@?$PBaseArray@J@@8 @4249 NONAME ??_R1A@?0A@A@?$PBaseArray@K@@8 @4250 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVElement@PHashTable@@@@8 @4251 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVPObject@@@@8 @4252 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPSoundChannel@@@@8 @6977 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @6978 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @6979 NONAME ??_R1A@?0A@A@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4253 NONAME ??_R1A@?0A@A@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4254 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @4255 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5634 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @4256 NONAME ??_R1A@?0A@A@?$PDictionary@VPString@@VPDynaLink@@@@8 @5555 NONAME ??_R1A@?0A@A@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6980 NONAME ??_R1A@?0A@A@?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6431 NONAME ??_R1A@?0A@A@?$PFactory@VPProcessStartup@@VPString@@@@8 @6432 NONAME ??_R1A@?0A@A@?$PFactory@VPSoundChannel@@VPString@@@@8 @6981 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @6982 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @6983 NONAME ??_R1A@?0A@A@?$PList@VInterfaceEntry@PIPSocket@@@@8 @7451 NONAME ??_R1A@?0A@A@?$PList@VPDynaLink@@@@8 @4257 NONAME ??_R1A@?0A@A@?$PList@VPNotifier@@@@8 @4258 NONAME ??_R1A@?0A@A@?$PList@VPPluginService@@@@8 @4259 NONAME ??_R1A@?0A@A@?$PList@VPSafeObject@@@@8 @6984 NONAME ??_R1A@?0A@A@?$PList@VPSocket@@@@8 @4260 NONAME ??_R1A@?0A@A@?$PList@VPString@@@@8 @4261 NONAME ??_R1A@?0A@A@?$PList@VPThread@@@@8 @4262 NONAME ??_R1A@?0A@A@?$PList@VPTimer@@@@8 @4263 NONAME ??_R1A@?0A@A@?$POrdinalDictionary@VPString@@@@8 @4264 NONAME ??_R1A@?0A@A@?$PScalarArray@F@@8 @4265 NONAME ??_R1A@?0A@A@?$PScalarArray@G@@8 @4266 NONAME ??_R1A@?0A@A@?$PScalarArray@H@@8 @4267 NONAME ??_R1A@?0A@A@?$PScalarArray@I@@8 @4268 NONAME ??_R1A@?0A@A@?$PScalarArray@J@@8 @4269 NONAME ??_R1A@?0A@A@?$PScalarArray@K@@8 @4270 NONAME ??_R1A@?0A@A@?$PSet@VPString@@@@8 @4271 NONAME ??_R1A@?0A@A@?$PSortedList@VPString@@@@8 @4272 NONAME ??_R1A@?0A@A@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @7452 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPOrdinalKey@@@@8 @4273 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPString@@@@8 @4274 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @7453 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @7454 NONAME ??_R1A@?0A@A@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @7455 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6985 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6986 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6987 NONAME ??_R1A@?0A@A@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6641 NONAME ??_R1A@?0A@A@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6642 NONAME ??_R1A@?0A@A@Address@PIPSocket@@8 @4275 NONAME ??_R1A@?0A@A@Buffer@PDebugStream@@8 @4276 NONAME ??_R1A@?0A@A@Buffer@PStringStream@@8 @4277 NONAME ??_R1A@?0A@A@Buffer@PSystemLog@@8 @4278 NONAME ??_R1A@?0A@A@CMCDLL@PMail@@8 @4279 NONAME ??_R1A@?0A@A@DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @4280 NONAME ??_R1A@?0A@A@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @7456 NONAME ??_R1A@?0A@A@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @7457 NONAME ??_R1A@?0A@A@HouseKeepingThread@PProcess@@8 @4281 NONAME ??_R1A@?0A@A@InterfaceEntry@PIPSocket@@8 @4282 NONAME ??_R1A@?0A@A@MAPIDLL@PMail@@8 @4283 NONAME ??_R1A@?0A@A@Nest@PReadWriteMutex@@8 @4284 NONAME ??_R1A@?0A@A@NT_ServiceManager@@8 @4285 NONAME ??_R1A@?0A@A@ofstream@@8 @4286 NONAME ??_R1A@?0A@A@ostream@@8 @4287 NONAME ??_R1A@?0A@A@PAbstractArray@@8 @4288 NONAME ??_R1A@?0A@A@PAbstractDictionary@@8 @4289 NONAME ??_R1A@?0A@A@PAbstractList@@8 @4290 NONAME ??_R1A@?0A@A@PAbstractSet@@8 @4291 NONAME ??_R1A@?0A@A@PAbstractSortedList@@8 @4292 NONAME ??_R1A@?0A@A@PArgList@@8 @4293 NONAME ??_R1A@?0A@A@PArrayObjects@@8 @4294 NONAME ??_R1A@?0A@A@PBitArray@@8 @4295 NONAME ??_R1A@?0A@A@PBYTEArray@@8 @4296 NONAME ??_R1A@?0A@A@PCaselessString@@8 @4297 NONAME ??_R1A@?0A@A@PChannel@@8 @4298 NONAME ??_R1A@?0A@A@PChannelStreamBuffer@@8 @4299 NONAME ??_R1A@?0A@A@PCharArray@@8 @4300 NONAME ??_R1A@?0A@A@PCollection@@8 @4301 NONAME ??_R1A@?0A@A@PColourConverter@@8 @4302 NONAME ??_R1A@?0A@A@PColourConverterRegistration@@8 @4303 NONAME ??_R1A@?0A@A@PCondMutex@@8 @4304 NONAME ??_R1A@?0A@A@PConfig@@8 @4305 NONAME ??_R1A@?0A@A@PConfigArgs@@8 @4306 NONAME ??_R1A@?0A@A@PConsoleChannel@@8 @4307 NONAME ??_R1A@?0A@A@PContainer@@8 @4308 NONAME ??_R1A@?0A@A@PCriticalSection@@8 @5529 NONAME ??_R1A@?0A@A@PDebugStream@@8 @4309 NONAME ??_R1A@?0A@A@PDevicePluginAdapterBase@@8 @6988 NONAME ??_R1A@?0A@A@PDevicePluginServiceDescriptor@@8 @7458 NONAME ??_R1A@?0A@A@PDirectory@@8 @4310 NONAME ??_R1A@?0A@A@PDynaLink@@8 @4311 NONAME ??_R1A@?0A@A@PEthSocket@@8 @4312 NONAME ??_R1A@?0A@A@PFactoryBase@@8 @6643 NONAME ??_R1A@?0A@A@PFile@@8 @4313 NONAME ??_R1A@?0A@A@PFileInfo@@8 @4314 NONAME ??_R1A@?0A@A@PFilePath@@8 @4315 NONAME ??_R1A@?0A@A@PHashTable@@8 @4316 NONAME ??_R1A@?0A@A@PHostByAddr@@8 @4317 NONAME ??_R1A@?0A@A@PHostByName@@8 @4318 NONAME ??_R1A@?0A@A@PICMPDLL@@8 @4319 NONAME ??_R1A@?0A@A@PICMPSocket@@8 @4320 NONAME ??_R1A@?0A@A@PImageDLL@@8 @4321 NONAME ??_R1A@?0A@A@PIndirectChannel@@8 @4322 NONAME ??_R1A@?0A@A@PIntCondMutex@@8 @4323 NONAME ??_R1A@?0A@A@PIPCacheData@@8 @4324 NONAME ??_R1A@?0A@A@PIPCacheKey@@8 @4325 NONAME ??_R1A@?0A@A@PIPDatagramSocket@@8 @4326 NONAME ??_R1A@?0A@A@PIPSocket@@8 @4327 NONAME ??_R1A@?0A@A@PIPXSocket@@8 @4328 NONAME ??_R1A@?0A@A@PluginLoaderStartup@@8 @5852 NONAME ??_R1A@?0A@A@PMail@@8 @4329 NONAME ??_R1A@?0A@A@PMutex@@8 @4330 NONAME ??_R1A@?0A@A@PNotifier@@8 @4331 NONAME ??_R1A@?0A@A@PNotifierFunction@@8 @4332 NONAME ??_R1A@?0A@A@PObject@@8 @4333 NONAME ??_R1A@?0A@A@POrdinalKey@@8 @4334 NONAME ??_R1A@?0A@A@POrdinalToString@@8 @4335 NONAME ??_R1A@?0A@A@PPipeChannel@@8 @4336 NONAME ??_R1A@?0A@A@PPluginManager@@8 @4337 NONAME ??_R1A@?0A@A@PPluginModuleManager@@8 @5557 NONAME ??_R1A@?0A@A@PPluginService@@8 @4338 NONAME ??_R1A@?0A@A@PPluginServiceDescriptor@@8 @7459 NONAME ??_R1A@?0A@A@PPointer@@8 @5635 NONAME ??_R1A@?0A@A@PProcess@@8 @4339 NONAME ??_R1A@?0A@A@PProcessStartup@@8 @5853 NONAME ??_R1A@?0A@A@PQoS@@8 @4340 NONAME ??_R1A@?0A@A@PRASDLL@@8 @4341 NONAME ??_R1A@?0A@A@PReadWriteMutex@@8 @4342 NONAME ??_R1A@?0A@A@PRegularExpression@@8 @4343 NONAME ??_R1A@?0A@A@PRemoteConnection@@8 @4344 NONAME ??_R1A@?0A@A@PSafeCollection@@8 @4345 NONAME ??_R1A@?0A@A@PSafeObject@@8 @4346 NONAME ??_R1A@?0A@A@PSafePtrBase@@8 @4347 NONAME ??_R1A@?0A@A@PSemaphore@@8 @4348 NONAME ??_R1A@?0A@A@PSerialChannel@@8 @4349 NONAME ??_R1A@?0A@A@PServiceProcess@@8 @4350 NONAME ??_R1A@?0A@A@PSimpleThread@@8 @4351 NONAME ??_R1A@?0A@A@PSmartObject@@8 @4352 NONAME ??_R1A@?0A@A@PSmartPointer@@8 @4353 NONAME ??_R1A@?0A@A@PSmartPtrInspector@@8 @5636 NONAME ??_R1A@?0A@A@PSocket@@8 @4354 NONAME ??_R1A@?0A@A@PSortedStringList@@8 @4355 NONAME ??_R1A@?0A@A@PSound@@8 @4356 NONAME ??_R1A@?0A@A@PSoundChannel@@8 @4357 NONAME ??_R1A@?0A@A@PSoundChannelWin32@@8 @4358 NONAME ??_R1A@?0A@A@PSPXSocket@@8 @4359 NONAME ??_R1A@?0A@A@PStandardColourConverter@@8 @4360 NONAME ??_R1A@?0A@A@PString@@8 @4361 NONAME ??_R1A@?0A@A@PStringArray@@8 @4362 NONAME ??_R1A@?0A@A@PStringList@@8 @4363 NONAME ??_R1A@?0A@A@PStringSet@@8 @4364 NONAME ??_R1A@?0A@A@PStringStream@@8 @4365 NONAME ??_R1A@?0A@A@PStringToOrdinal@@8 @4366 NONAME ??_R1A@?0A@A@PStringToString@@8 @4367 NONAME ??_R1A@?0A@A@PStructuredFile@@8 @4368 NONAME ??_R1A@?0A@A@PSyncPoint@@8 @4369 NONAME ??_R1A@?0A@A@PSynonymColour@@8 @4370 NONAME ??_R1A@?0A@A@PSynonymColourRegistration@@8 @4371 NONAME ??_R1A@?0A@A@PSystemLog@@8 @4372 NONAME ??_R1A@?0A@A@PTCPSocket@@8 @4373 NONAME ??_R1A@?0A@A@PTextFile@@8 @4374 NONAME ??_R1A@?0A@A@PThread@@8 @4375 NONAME ??_R1A@?0A@A@PTime@@8 @4376 NONAME ??_R1A@?0A@A@PTimeInterval@@8 @4377 NONAME ??_R1A@?0A@A@PTimer@@8 @4378 NONAME ??_R1A@?0A@A@PTimerList@@8 @4379 NONAME ??_R1A@?0A@A@PUDPSocket@@8 @4380 NONAME ??_R1A@?0A@A@PVideoChannel@@8 @4381 NONAME ??_R1A@?0A@A@PVideoDevice@@8 @4382 NONAME ??_R1A@?0A@A@PVideoDeviceBitmap@@8 @4383 NONAME ??_R1A@?0A@A@PVideoInputDevice@@8 @4384 NONAME ??_R1A@?0A@A@PVideoInputDevice_FakeVideo@@8 @4385 NONAME ??_R1A@?0A@A@PVideoInputDevice_VideoForWindows@@8 @4386 NONAME ??_R1A@?0A@A@PVideoOutputDevice@@8 @4388 NONAME ??_R1A@?0A@A@PVideoOutputDeviceRGB@@8 @7460 NONAME ??_R1A@?0A@A@PVideoOutputDevice_NULLOutput@@8 @4389 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window@@8 @7461 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @7462 NONAME ??_R1A@?0A@A@PWaveBuffer@@8 @4390 NONAME ??_R1A@?0A@A@PWaveFormat@@8 @4391 NONAME ??_R1A@?0A@A@PWin32PacketBuffer@@8 @4392 NONAME ??_R1A@?0A@A@PWin32PacketDriver@@8 @4393 NONAME ??_R1A@?0A@A@PWin32PacketSYS@@8 @4394 NONAME ??_R1A@?0A@A@PWin32PacketVxD@@8 @4395 NONAME ??_R1A@?0A@A@PWin32SnmpLibrary@@8 @4396 NONAME ??_R1A@?0A@A@PWinQoS@@8 @4397 NONAME ??_R1A@?0A@A@PWinSock@@8 @4398 NONAME ??_R1A@?0A@A@P_BGR24_RGB24@@8 @7463 NONAME ??_R1A@?0A@A@P_BGR24_RGB24_Registration@@8 @7464 NONAME ??_R1A@?0A@A@P_BGR24_RGB32@@8 @7465 NONAME ??_R1A@?0A@A@P_BGR24_RGB32_Registration@@8 @7466 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P@@8 @4399 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P_Registration@@8 @4400 NONAME ??_R1A@?0A@A@P_BGR32_RGB24@@8 @7467 NONAME ??_R1A@?0A@A@P_BGR32_RGB24_Registration@@8 @7468 NONAME ??_R1A@?0A@A@P_BGR32_RGB32@@8 @7469 NONAME ??_R1A@?0A@A@P_BGR32_RGB32_Registration@@8 @7470 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P@@8 @4401 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P_Registration@@8 @4402 NONAME ??_R1A@?0A@A@P_Grey_YUV420P@@8 @4405 NONAME ??_R1A@?0A@A@P_Grey_YUV420P_Registration@@8 @4406 NONAME ??_R1A@?0A@A@P_RGB24_BGR24@@8 @7471 NONAME ??_R1A@?0A@A@P_RGB24_BGR24_Registration@@8 @7472 NONAME ??_R1A@?0A@A@P_RGB24_BGR32@@8 @7473 NONAME ??_R1A@?0A@A@P_RGB24_BGR32_Registration@@8 @7474 NONAME ??_R1A@?0A@A@P_RGB24_RGB32@@8 @4409 NONAME ??_R1A@?0A@A@P_RGB24_RGB32_Registration@@8 @4410 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P@@8 @4411 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P_Registration@@8 @4412 NONAME ??_R1A@?0A@A@P_RGB32_BGR24@@8 @7475 NONAME ??_R1A@?0A@A@P_RGB32_BGR24_Registration@@8 @7476 NONAME ??_R1A@?0A@A@P_RGB32_BGR32@@8 @7477 NONAME ??_R1A@?0A@A@P_RGB32_BGR32_Registration@@8 @7478 NONAME ??_R1A@?0A@A@P_RGB32_RGB24@@8 @4415 NONAME ??_R1A@?0A@A@P_RGB32_RGB24_Registration@@8 @4416 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P@@8 @4417 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P_Registration@@8 @4418 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24@@8 @7285 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24_Registration@@8 @7286 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P@@8 @7479 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P_Registration@@8 @7480 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P@@8 @4419 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P_Registration@@8 @4420 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P@@8 @4421 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P_Registration@@8 @4422 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P@@8 @4423 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P_Registration@@8 @4424 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24@@8 @4425 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24_Registration@@8 @4428 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32@@8 @4429 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32_Registration@@8 @4430 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24@@8 @4431 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24_Registration@@8 @4434 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32@@8 @4435 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32_Registration@@8 @4438 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P@@8 @4439 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P_Registration@@8 @4440 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P@@8 @4441 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P_Registration@@8 @4442 NONAME ??_R1A@?0A@A@P_YUV422_YUV422@@8 @4443 NONAME ??_R1A@?0A@A@P_YUV422_YUV422_Registration@@8 @4444 NONAME ??_R1A@?0A@A@RouteEntry@PIPSocket@@8 @4445 NONAME ??_R1A@?0A@A@SelectList@PSocket@@8 @4446 NONAME ??_R1A@?0A@A@ServiceManager@@8 @4447 NONAME ??_R1A@?0A@A@streambuf@@8 @4448 NONAME ??_R1A@?0A@A@Table@PHashTable@@8 @4449 NONAME ??_R1A@?0A@A@Win95_ServiceManager@@8 @4450 NONAME ??_R1A@?0A@A@WinSNMPLoader@@8 @6200 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @6989 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @6990 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @6991 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6992 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6645 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @6993 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @6994 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @6995 NONAME ??_R1A@A@3BA@ios@@8 @4451 NONAME ??_R1A@BE@3BA@ios@@8 @4452 NONAME ??_R1BA@?0A@A@ostream@@8 @4453 NONAME ??_R1BE@?0A@A@iostream@@8 @4454 NONAME ??_R1BE@?0A@A@istream@@8 @4455 NONAME ??_R1CA@?0A@A@ostream@@8 @4456 NONAME ??_R2?$PArray@VPString@@@@8 @4457 NONAME ??_R2?$PArray@VPWaveBuffer@@@@8 @4458 NONAME ??_R2?$PArray@VPWin32PacketBuffer@@@@8 @4459 NONAME ??_R2?$PBaseArray@D@@8 @4460 NONAME ??_R2?$PBaseArray@E@@8 @4461 NONAME ??_R2?$PBaseArray@F@@8 @4462 NONAME ??_R2?$PBaseArray@G@@8 @4463 NONAME ??_R2?$PBaseArray@H@@8 @4464 NONAME ??_R2?$PBaseArray@I@@8 @4465 NONAME ??_R2?$PBaseArray@J@@8 @4466 NONAME ??_R2?$PBaseArray@K@@8 @4467 NONAME ??_R2?$PBaseArray@PAVElement@PHashTable@@@@8 @4468 NONAME ??_R2?$PBaseArray@PAVPObject@@@@8 @4469 NONAME ??_R2?$PDevicePluginAdapter@VPSoundChannel@@@@8 @6996 NONAME ??_R2?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @6997 NONAME ??_R2?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @6998 NONAME ??_R2?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4470 NONAME ??_R2?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4471 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @4472 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5637 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @4473 NONAME ??_R2?$PDictionary@VPString@@VPDynaLink@@@@8 @5558 NONAME ??_R2?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @6999 NONAME ??_R2?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6436 NONAME ??_R2?$PFactory@VPProcessStartup@@VPString@@@@8 @6437 NONAME ??_R2?$PFactory@VPSoundChannel@@VPString@@@@8 @7000 NONAME ??_R2?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7001 NONAME ??_R2?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7002 NONAME ??_R2?$PList@VInterfaceEntry@PIPSocket@@@@8 @7481 NONAME ??_R2?$PList@VPDynaLink@@@@8 @4474 NONAME ??_R2?$PList@VPNotifier@@@@8 @4475 NONAME ??_R2?$PList@VPPluginService@@@@8 @4476 NONAME ??_R2?$PList@VPSafeObject@@@@8 @7003 NONAME ??_R2?$PList@VPSocket@@@@8 @4477 NONAME ??_R2?$PList@VPString@@@@8 @4478 NONAME ??_R2?$PList@VPThread@@@@8 @4479 NONAME ??_R2?$PList@VPTimer@@@@8 @4480 NONAME ??_R2?$POrdinalDictionary@VPString@@@@8 @4481 NONAME ??_R2?$PScalarArray@F@@8 @4482 NONAME ??_R2?$PScalarArray@G@@8 @4483 NONAME ??_R2?$PScalarArray@H@@8 @4484 NONAME ??_R2?$PScalarArray@I@@8 @4485 NONAME ??_R2?$PScalarArray@J@@8 @4486 NONAME ??_R2?$PScalarArray@K@@8 @4487 NONAME ??_R2?$PSet@VPString@@@@8 @4488 NONAME ??_R2?$PSortedList@VPString@@@@8 @4489 NONAME ??_R2?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @7482 NONAME ??_R2?$PStringDictionary@VPOrdinalKey@@@@8 @4490 NONAME ??_R2?$PStringDictionary@VPString@@@@8 @4491 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @7483 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @7484 NONAME ??_R2?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @7485 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7004 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7005 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7006 NONAME ??_R2?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6646 NONAME ??_R2?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6647 NONAME ??_R2Address@PIPSocket@@8 @4492 NONAME ??_R2Buffer@PDebugStream@@8 @4493 NONAME ??_R2Buffer@PStringStream@@8 @4494 NONAME ??_R2Buffer@PSystemLog@@8 @4495 NONAME ??_R2CMCDLL@PMail@@8 @4496 NONAME ??_R2DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @4497 NONAME ??_R2HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @7486 NONAME ??_R2HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @7487 NONAME ??_R2HouseKeepingThread@PProcess@@8 @4498 NONAME ??_R2InterfaceEntry@PIPSocket@@8 @4499 NONAME ??_R2MAPIDLL@PMail@@8 @4500 NONAME ??_R2Nest@PReadWriteMutex@@8 @4501 NONAME ??_R2NT_ServiceManager@@8 @4502 NONAME ??_R2ofstream@@8 @4503 NONAME ??_R2PAbstractArray@@8 @4504 NONAME ??_R2PAbstractDictionary@@8 @4505 NONAME ??_R2PAbstractList@@8 @4506 NONAME ??_R2PAbstractSet@@8 @4507 NONAME ??_R2PAbstractSortedList@@8 @4508 NONAME ??_R2PArgList@@8 @4509 NONAME ??_R2PArrayObjects@@8 @4510 NONAME ??_R2PBitArray@@8 @4511 NONAME ??_R2PBYTEArray@@8 @4512 NONAME ??_R2PCaselessString@@8 @4513 NONAME ??_R2PChannel@@8 @4514 NONAME ??_R2PChannelStreamBuffer@@8 @4515 NONAME ??_R2PCharArray@@8 @4516 NONAME ??_R2PCollection@@8 @4517 NONAME ??_R2PColourConverter@@8 @4518 NONAME ??_R2PColourConverterRegistration@@8 @4519 NONAME ??_R2PCondMutex@@8 @4520 NONAME ??_R2PConfig@@8 @4521 NONAME ??_R2PConfigArgs@@8 @4522 NONAME ??_R2PConsoleChannel@@8 @4523 NONAME ??_R2PContainer@@8 @4524 NONAME ??_R2PCriticalSection@@8 @5530 NONAME ??_R2PDebugStream@@8 @4525 NONAME ??_R2PDevicePluginAdapterBase@@8 @7007 NONAME ??_R2PDevicePluginServiceDescriptor@@8 @7488 NONAME ??_R2PDirectory@@8 @4526 NONAME ??_R2PDynaLink@@8 @4527 NONAME ??_R2PEthSocket@@8 @4528 NONAME ??_R2PFactoryBase@@8 @6648 NONAME ??_R2PFile@@8 @4529 NONAME ??_R2PFileInfo@@8 @4530 NONAME ??_R2PFilePath@@8 @4531 NONAME ??_R2PHashTable@@8 @4532 NONAME ??_R2PHostByAddr@@8 @4533 NONAME ??_R2PHostByName@@8 @4534 NONAME ??_R2PICMPDLL@@8 @4535 NONAME ??_R2PICMPSocket@@8 @4536 NONAME ??_R2PImageDLL@@8 @4537 NONAME ??_R2PIndirectChannel@@8 @4538 NONAME ??_R2PIntCondMutex@@8 @4539 NONAME ??_R2PIPCacheData@@8 @4540 NONAME ??_R2PIPCacheKey@@8 @4541 NONAME ??_R2PIPDatagramSocket@@8 @4542 NONAME ??_R2PIPSocket@@8 @4543 NONAME ??_R2PIPXSocket@@8 @4544 NONAME ??_R2PluginLoaderStartup@@8 @5854 NONAME ??_R2PMail@@8 @4545 NONAME ??_R2PMutex@@8 @4546 NONAME ??_R2PNotifier@@8 @4547 NONAME ??_R2PNotifierFunction@@8 @4548 NONAME ??_R2PObject@@8 @4549 NONAME ??_R2POrdinalKey@@8 @4550 NONAME ??_R2POrdinalToString@@8 @4551 NONAME ??_R2PPipeChannel@@8 @4552 NONAME ??_R2PPluginManager@@8 @4553 NONAME ??_R2PPluginModuleManager@@8 @5560 NONAME ??_R2PPluginService@@8 @4554 NONAME ??_R2PPluginServiceDescriptor@@8 @7489 NONAME ??_R2PPointer@@8 @5638 NONAME ??_R2PProcess@@8 @4555 NONAME ??_R2PProcessStartup@@8 @5855 NONAME ??_R2PQoS@@8 @4556 NONAME ??_R2PRASDLL@@8 @4557 NONAME ??_R2PReadWriteMutex@@8 @4558 NONAME ??_R2PRegularExpression@@8 @4559 NONAME ??_R2PRemoteConnection@@8 @4560 NONAME ??_R2PSafeCollection@@8 @4561 NONAME ??_R2PSafeObject@@8 @4562 NONAME ??_R2PSafePtrBase@@8 @4563 NONAME ??_R2PSemaphore@@8 @4564 NONAME ??_R2PSerialChannel@@8 @4565 NONAME ??_R2PServiceProcess@@8 @4566 NONAME ??_R2PSimpleThread@@8 @4567 NONAME ??_R2PSmartObject@@8 @4568 NONAME ??_R2PSmartPointer@@8 @4569 NONAME ??_R2PSmartPtrInspector@@8 @5639 NONAME ??_R2PSocket@@8 @4570 NONAME ??_R2PSortedStringList@@8 @4571 NONAME ??_R2PSound@@8 @4572 NONAME ??_R2PSoundChannel@@8 @4573 NONAME ??_R2PSoundChannelWin32@@8 @4574 NONAME ??_R2PSPXSocket@@8 @4575 NONAME ??_R2PStandardColourConverter@@8 @4576 NONAME ??_R2PString@@8 @4577 NONAME ??_R2PStringArray@@8 @4578 NONAME ??_R2PStringList@@8 @4579 NONAME ??_R2PStringSet@@8 @4580 NONAME ??_R2PStringStream@@8 @4581 NONAME ??_R2PStringToOrdinal@@8 @4582 NONAME ??_R2PStringToString@@8 @4583 NONAME ??_R2PStructuredFile@@8 @4584 NONAME ??_R2PSyncPoint@@8 @4585 NONAME ??_R2PSynonymColour@@8 @4586 NONAME ??_R2PSynonymColourRegistration@@8 @4587 NONAME ??_R2PSystemLog@@8 @4588 NONAME ??_R2PTCPSocket@@8 @4589 NONAME ??_R2PTextFile@@8 @4590 NONAME ??_R2PThread@@8 @4591 NONAME ??_R2PTime@@8 @4592 NONAME ??_R2PTimeInterval@@8 @4593 NONAME ??_R2PTimer@@8 @4594 NONAME ??_R2PTimerList@@8 @4595 NONAME ??_R2PUDPSocket@@8 @4596 NONAME ??_R2PVideoChannel@@8 @4597 NONAME ??_R2PVideoDevice@@8 @4598 NONAME ??_R2PVideoDeviceBitmap@@8 @4599 NONAME ??_R2PVideoInputDevice@@8 @4600 NONAME ??_R2PVideoInputDevice_FakeVideo@@8 @4601 NONAME ??_R2PVideoInputDevice_VideoForWindows@@8 @4602 NONAME ??_R2PVideoOutputDevice@@8 @4604 NONAME ??_R2PVideoOutputDeviceRGB@@8 @7490 NONAME ??_R2PVideoOutputDevice_NULLOutput@@8 @4605 NONAME ??_R2PVideoOutputDevice_Window@@8 @7491 NONAME ??_R2PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @7492 NONAME ??_R2PWaveBuffer@@8 @4606 NONAME ??_R2PWaveFormat@@8 @4607 NONAME ??_R2PWin32PacketBuffer@@8 @4608 NONAME ??_R2PWin32PacketDriver@@8 @4609 NONAME ??_R2PWin32PacketSYS@@8 @4610 NONAME ??_R2PWin32PacketVxD@@8 @4611 NONAME ??_R2PWin32SnmpLibrary@@8 @4612 NONAME ??_R2PWinQoS@@8 @4613 NONAME ??_R2PWinSock@@8 @4614 NONAME ??_R2P_BGR24_RGB24@@8 @7493 NONAME ??_R2P_BGR24_RGB24_Registration@@8 @7494 NONAME ??_R2P_BGR24_RGB32@@8 @7495 NONAME ??_R2P_BGR24_RGB32_Registration@@8 @7496 NONAME ??_R2P_BGR24_YUV420P@@8 @4615 NONAME ??_R2P_BGR24_YUV420P_Registration@@8 @4616 NONAME ??_R2P_BGR32_RGB24@@8 @7497 NONAME ??_R2P_BGR32_RGB24_Registration@@8 @7498 NONAME ??_R2P_BGR32_RGB32@@8 @7499 NONAME ??_R2P_BGR32_RGB32_Registration@@8 @7500 NONAME ??_R2P_BGR32_YUV420P@@8 @4617 NONAME ??_R2P_BGR32_YUV420P_Registration@@8 @4618 NONAME ??_R2P_Grey_YUV420P@@8 @4621 NONAME ??_R2P_Grey_YUV420P_Registration@@8 @4622 NONAME ??_R2P_RGB24_BGR24@@8 @7501 NONAME ??_R2P_RGB24_BGR24_Registration@@8 @7502 NONAME ??_R2P_RGB24_BGR32@@8 @7503 NONAME ??_R2P_RGB24_BGR32_Registration@@8 @7504 NONAME ??_R2P_RGB24_RGB32@@8 @4625 NONAME ??_R2P_RGB24_RGB32_Registration@@8 @4626 NONAME ??_R2P_RGB24_YUV420P@@8 @4627 NONAME ??_R2P_RGB24_YUV420P_Registration@@8 @4628 NONAME ??_R2P_RGB32_BGR24@@8 @7505 NONAME ??_R2P_RGB32_BGR24_Registration@@8 @7506 NONAME ??_R2P_RGB32_BGR32@@8 @7507 NONAME ??_R2P_RGB32_BGR32_Registration@@8 @7508 NONAME ??_R2P_RGB32_RGB24@@8 @4631 NONAME ??_R2P_RGB32_RGB24_Registration@@8 @4632 NONAME ??_R2P_RGB32_YUV420P@@8 @4633 NONAME ??_R2P_RGB32_YUV420P_Registration@@8 @4634 NONAME ??_R2P_SBGGR8_RGB24@@8 @7287 NONAME ??_R2P_SBGGR8_RGB24_Registration@@8 @7288 NONAME ??_R2P_SBGGR8_YUV420P@@8 @7509 NONAME ??_R2P_SBGGR8_YUV420P_Registration@@8 @7510 NONAME ??_R2P_UYV444_YUV420P@@8 @4635 NONAME ??_R2P_UYV444_YUV420P_Registration@@8 @4636 NONAME ??_R2P_UYVY422_YUV420P@@8 @4637 NONAME ??_R2P_UYVY422_YUV420P_Registration@@8 @4638 NONAME ??_R2P_YUV411P_YUV420P@@8 @4639 NONAME ??_R2P_YUV411P_YUV420P_Registration@@8 @4640 NONAME ??_R2P_YUV420P_BGR24@@8 @4641 NONAME ??_R2P_YUV420P_BGR24_Registration@@8 @4644 NONAME ??_R2P_YUV420P_BGR32@@8 @4645 NONAME ??_R2P_YUV420P_BGR32_Registration@@8 @4646 NONAME ??_R2P_YUV420P_RGB24@@8 @4647 NONAME ??_R2P_YUV420P_RGB24_Registration@@8 @4650 NONAME ??_R2P_YUV420P_RGB32@@8 @4651 NONAME ??_R2P_YUV420P_RGB32_Registration@@8 @4654 NONAME ??_R2P_YUV420P_YUV411P@@8 @4655 NONAME ??_R2P_YUV420P_YUV411P_Registration@@8 @4656 NONAME ??_R2P_YUV422_YUV420P@@8 @4657 NONAME ??_R2P_YUV422_YUV420P_Registration@@8 @4658 NONAME ??_R2P_YUV422_YUV422@@8 @4659 NONAME ??_R2P_YUV422_YUV422_Registration@@8 @4660 NONAME ??_R2RouteEntry@PIPSocket@@8 @4661 NONAME ??_R2SelectList@PSocket@@8 @4662 NONAME ??_R2ServiceManager@@8 @4663 NONAME ??_R2Table@PHashTable@@8 @4664 NONAME ??_R2Win95_ServiceManager@@8 @4665 NONAME ??_R2WinSNMPLoader@@8 @6201 NONAME ??_R2Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7008 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7009 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7010 NONAME ??_R2WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7011 NONAME ??_R2WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6650 NONAME ??_R2WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7012 NONAME ??_R2WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7013 NONAME ??_R2WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7014 NONAME ??_R3?$PArray@VPString@@@@8 @4666 NONAME ??_R3?$PArray@VPWaveBuffer@@@@8 @4667 NONAME ??_R3?$PArray@VPWin32PacketBuffer@@@@8 @4668 NONAME ??_R3?$PBaseArray@D@@8 @4669 NONAME ??_R3?$PBaseArray@E@@8 @4670 NONAME ??_R3?$PBaseArray@F@@8 @4671 NONAME ??_R3?$PBaseArray@G@@8 @4672 NONAME ??_R3?$PBaseArray@H@@8 @4673 NONAME ??_R3?$PBaseArray@I@@8 @4674 NONAME ??_R3?$PBaseArray@J@@8 @4675 NONAME ??_R3?$PBaseArray@K@@8 @4676 NONAME ??_R3?$PBaseArray@PAVElement@PHashTable@@@@8 @4677 NONAME ??_R3?$PBaseArray@PAVPObject@@@@8 @4678 NONAME ??_R3?$PDevicePluginAdapter@VPSoundChannel@@@@8 @7015 NONAME ??_R3?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @7016 NONAME ??_R3?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @7017 NONAME ??_R3?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4679 NONAME ??_R3?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4680 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @4681 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5640 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @4682 NONAME ??_R3?$PDictionary@VPString@@VPDynaLink@@@@8 @5561 NONAME ??_R3?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7018 NONAME ??_R3?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6441 NONAME ??_R3?$PFactory@VPProcessStartup@@VPString@@@@8 @6442 NONAME ??_R3?$PFactory@VPSoundChannel@@VPString@@@@8 @7019 NONAME ??_R3?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7020 NONAME ??_R3?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7021 NONAME ??_R3?$PList@VInterfaceEntry@PIPSocket@@@@8 @7511 NONAME ??_R3?$PList@VPDynaLink@@@@8 @4683 NONAME ??_R3?$PList@VPNotifier@@@@8 @4684 NONAME ??_R3?$PList@VPPluginService@@@@8 @4685 NONAME ??_R3?$PList@VPSafeObject@@@@8 @7022 NONAME ??_R3?$PList@VPSocket@@@@8 @4686 NONAME ??_R3?$PList@VPString@@@@8 @4687 NONAME ??_R3?$PList@VPThread@@@@8 @4688 NONAME ??_R3?$PList@VPTimer@@@@8 @4689 NONAME ??_R3?$POrdinalDictionary@VPString@@@@8 @4690 NONAME ??_R3?$PScalarArray@F@@8 @4691 NONAME ??_R3?$PScalarArray@G@@8 @4692 NONAME ??_R3?$PScalarArray@H@@8 @4693 NONAME ??_R3?$PScalarArray@I@@8 @4694 NONAME ??_R3?$PScalarArray@J@@8 @4695 NONAME ??_R3?$PScalarArray@K@@8 @4696 NONAME ??_R3?$PSet@VPString@@@@8 @4697 NONAME ??_R3?$PSortedList@VPString@@@@8 @4698 NONAME ??_R3?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @7512 NONAME ??_R3?$PStringDictionary@VPOrdinalKey@@@@8 @4699 NONAME ??_R3?$PStringDictionary@VPString@@@@8 @4700 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @7513 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @7514 NONAME ??_R3?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @7515 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7023 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7024 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7025 NONAME ??_R3?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6651 NONAME ??_R3?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6652 NONAME ??_R3Address@PIPSocket@@8 @4701 NONAME ??_R3Buffer@PDebugStream@@8 @4702 NONAME ??_R3Buffer@PStringStream@@8 @4703 NONAME ??_R3Buffer@PSystemLog@@8 @4704 NONAME ??_R3CMCDLL@PMail@@8 @4705 NONAME ??_R3DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @4706 NONAME ??_R3HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @7516 NONAME ??_R3HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @7517 NONAME ??_R3HouseKeepingThread@PProcess@@8 @4707 NONAME ??_R3InterfaceEntry@PIPSocket@@8 @4708 NONAME ??_R3MAPIDLL@PMail@@8 @4709 NONAME ??_R3Nest@PReadWriteMutex@@8 @4710 NONAME ??_R3NT_ServiceManager@@8 @4711 NONAME ??_R3ofstream@@8 @4712 NONAME ??_R3PAbstractArray@@8 @4713 NONAME ??_R3PAbstractDictionary@@8 @4714 NONAME ??_R3PAbstractList@@8 @4715 NONAME ??_R3PAbstractSet@@8 @4716 NONAME ??_R3PAbstractSortedList@@8 @4717 NONAME ??_R3PArgList@@8 @4718 NONAME ??_R3PArrayObjects@@8 @4719 NONAME ??_R3PBitArray@@8 @4720 NONAME ??_R3PBYTEArray@@8 @4721 NONAME ??_R3PCaselessString@@8 @4722 NONAME ??_R3PChannel@@8 @4723 NONAME ??_R3PChannelStreamBuffer@@8 @4724 NONAME ??_R3PCharArray@@8 @4725 NONAME ??_R3PCollection@@8 @4726 NONAME ??_R3PColourConverter@@8 @4727 NONAME ??_R3PColourConverterRegistration@@8 @4728 NONAME ??_R3PCondMutex@@8 @4729 NONAME ??_R3PConfig@@8 @4730 NONAME ??_R3PConfigArgs@@8 @4731 NONAME ??_R3PConsoleChannel@@8 @4732 NONAME ??_R3PContainer@@8 @4733 NONAME ??_R3PCriticalSection@@8 @5531 NONAME ??_R3PDebugStream@@8 @4734 NONAME ??_R3PDevicePluginAdapterBase@@8 @7026 NONAME ??_R3PDevicePluginServiceDescriptor@@8 @7518 NONAME ??_R3PDirectory@@8 @4735 NONAME ??_R3PDynaLink@@8 @4736 NONAME ??_R3PEthSocket@@8 @4737 NONAME ??_R3PFactoryBase@@8 @6653 NONAME ??_R3PFile@@8 @4738 NONAME ??_R3PFileInfo@@8 @4739 NONAME ??_R3PFilePath@@8 @4740 NONAME ??_R3PHashTable@@8 @4741 NONAME ??_R3PHostByAddr@@8 @4742 NONAME ??_R3PHostByName@@8 @4743 NONAME ??_R3PICMPDLL@@8 @4744 NONAME ??_R3PICMPSocket@@8 @4745 NONAME ??_R3PImageDLL@@8 @4746 NONAME ??_R3PIndirectChannel@@8 @4747 NONAME ??_R3PIntCondMutex@@8 @4748 NONAME ??_R3PIPCacheData@@8 @4749 NONAME ??_R3PIPCacheKey@@8 @4750 NONAME ??_R3PIPDatagramSocket@@8 @4751 NONAME ??_R3PIPSocket@@8 @4752 NONAME ??_R3PIPXSocket@@8 @4753 NONAME ??_R3PluginLoaderStartup@@8 @5856 NONAME ??_R3PMail@@8 @4754 NONAME ??_R3PMutex@@8 @4755 NONAME ??_R3PNotifier@@8 @4756 NONAME ??_R3PNotifierFunction@@8 @4757 NONAME ??_R3PObject@@8 @4758 NONAME ??_R3POrdinalKey@@8 @4759 NONAME ??_R3POrdinalToString@@8 @4760 NONAME ??_R3PPipeChannel@@8 @4761 NONAME ??_R3PPluginManager@@8 @4762 NONAME ??_R3PPluginModuleManager@@8 @5563 NONAME ??_R3PPluginService@@8 @4763 NONAME ??_R3PPluginServiceDescriptor@@8 @7519 NONAME ??_R3PPointer@@8 @5641 NONAME ??_R3PProcess@@8 @4764 NONAME ??_R3PProcessStartup@@8 @5857 NONAME ??_R3PQoS@@8 @4765 NONAME ??_R3PRASDLL@@8 @4766 NONAME ??_R3PReadWriteMutex@@8 @4767 NONAME ??_R3PRegularExpression@@8 @4768 NONAME ??_R3PRemoteConnection@@8 @4769 NONAME ??_R3PSafeCollection@@8 @4770 NONAME ??_R3PSafeObject@@8 @4771 NONAME ??_R3PSafePtrBase@@8 @4772 NONAME ??_R3PSemaphore@@8 @4773 NONAME ??_R3PSerialChannel@@8 @4774 NONAME ??_R3PServiceProcess@@8 @4775 NONAME ??_R3PSimpleThread@@8 @4776 NONAME ??_R3PSmartObject@@8 @4777 NONAME ??_R3PSmartPointer@@8 @4778 NONAME ??_R3PSmartPtrInspector@@8 @5642 NONAME ??_R3PSocket@@8 @4779 NONAME ??_R3PSortedStringList@@8 @4780 NONAME ??_R3PSound@@8 @4781 NONAME ??_R3PSoundChannel@@8 @4782 NONAME ??_R3PSoundChannelWin32@@8 @4783 NONAME ??_R3PSPXSocket@@8 @4784 NONAME ??_R3PStandardColourConverter@@8 @4785 NONAME ??_R3PString@@8 @4786 NONAME ??_R3PStringArray@@8 @4787 NONAME ??_R3PStringList@@8 @4788 NONAME ??_R3PStringSet@@8 @4789 NONAME ??_R3PStringStream@@8 @4790 NONAME ??_R3PStringToOrdinal@@8 @4791 NONAME ??_R3PStringToString@@8 @4792 NONAME ??_R3PStructuredFile@@8 @4793 NONAME ??_R3PSyncPoint@@8 @4794 NONAME ??_R3PSynonymColour@@8 @4795 NONAME ??_R3PSynonymColourRegistration@@8 @4796 NONAME ??_R3PSystemLog@@8 @4797 NONAME ??_R3PTCPSocket@@8 @4798 NONAME ??_R3PTextFile@@8 @4799 NONAME ??_R3PThread@@8 @4800 NONAME ??_R3PTime@@8 @4801 NONAME ??_R3PTimeInterval@@8 @4802 NONAME ??_R3PTimer@@8 @4803 NONAME ??_R3PTimerList@@8 @4804 NONAME ??_R3PUDPSocket@@8 @4805 NONAME ??_R3PVideoChannel@@8 @4806 NONAME ??_R3PVideoDevice@@8 @4807 NONAME ??_R3PVideoDeviceBitmap@@8 @4808 NONAME ??_R3PVideoInputDevice@@8 @4809 NONAME ??_R3PVideoInputDevice_FakeVideo@@8 @4810 NONAME ??_R3PVideoInputDevice_VideoForWindows@@8 @4811 NONAME ??_R3PVideoOutputDevice@@8 @4813 NONAME ??_R3PVideoOutputDeviceRGB@@8 @7520 NONAME ??_R3PVideoOutputDevice_NULLOutput@@8 @4814 NONAME ??_R3PVideoOutputDevice_Window@@8 @7521 NONAME ??_R3PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @7522 NONAME ??_R3PWaveBuffer@@8 @4815 NONAME ??_R3PWaveFormat@@8 @4816 NONAME ??_R3PWin32PacketBuffer@@8 @4817 NONAME ??_R3PWin32PacketDriver@@8 @4818 NONAME ??_R3PWin32PacketSYS@@8 @4819 NONAME ??_R3PWin32PacketVxD@@8 @4820 NONAME ??_R3PWin32SnmpLibrary@@8 @4821 NONAME ??_R3PWinQoS@@8 @4822 NONAME ??_R3PWinSock@@8 @4823 NONAME ??_R3P_BGR24_RGB24@@8 @7523 NONAME ??_R3P_BGR24_RGB24_Registration@@8 @7524 NONAME ??_R3P_BGR24_RGB32@@8 @7525 NONAME ??_R3P_BGR24_RGB32_Registration@@8 @7526 NONAME ??_R3P_BGR24_YUV420P@@8 @4824 NONAME ??_R3P_BGR24_YUV420P_Registration@@8 @4825 NONAME ??_R3P_BGR32_RGB24@@8 @7527 NONAME ??_R3P_BGR32_RGB24_Registration@@8 @7528 NONAME ??_R3P_BGR32_RGB32@@8 @7529 NONAME ??_R3P_BGR32_RGB32_Registration@@8 @7530 NONAME ??_R3P_BGR32_YUV420P@@8 @4826 NONAME ??_R3P_BGR32_YUV420P_Registration@@8 @4827 NONAME ??_R3P_Grey_YUV420P@@8 @4830 NONAME ??_R3P_Grey_YUV420P_Registration@@8 @4831 NONAME ??_R3P_RGB24_BGR24@@8 @7531 NONAME ??_R3P_RGB24_BGR24_Registration@@8 @7532 NONAME ??_R3P_RGB24_BGR32@@8 @7533 NONAME ??_R3P_RGB24_BGR32_Registration@@8 @7534 NONAME ??_R3P_RGB24_RGB32@@8 @4834 NONAME ??_R3P_RGB24_RGB32_Registration@@8 @4835 NONAME ??_R3P_RGB24_YUV420P@@8 @4836 NONAME ??_R3P_RGB24_YUV420P_Registration@@8 @4837 NONAME ??_R3P_RGB32_BGR24@@8 @7535 NONAME ??_R3P_RGB32_BGR24_Registration@@8 @7536 NONAME ??_R3P_RGB32_BGR32@@8 @7537 NONAME ??_R3P_RGB32_BGR32_Registration@@8 @7538 NONAME ??_R3P_RGB32_RGB24@@8 @4840 NONAME ??_R3P_RGB32_RGB24_Registration@@8 @4841 NONAME ??_R3P_RGB32_YUV420P@@8 @4842 NONAME ??_R3P_RGB32_YUV420P_Registration@@8 @4843 NONAME ??_R3P_SBGGR8_RGB24@@8 @7289 NONAME ??_R3P_SBGGR8_RGB24_Registration@@8 @7290 NONAME ??_R3P_SBGGR8_YUV420P@@8 @7539 NONAME ??_R3P_SBGGR8_YUV420P_Registration@@8 @7540 NONAME ??_R3P_UYV444_YUV420P@@8 @4844 NONAME ??_R3P_UYV444_YUV420P_Registration@@8 @4845 NONAME ??_R3P_UYVY422_YUV420P@@8 @4846 NONAME ??_R3P_UYVY422_YUV420P_Registration@@8 @4847 NONAME ??_R3P_YUV411P_YUV420P@@8 @4848 NONAME ??_R3P_YUV411P_YUV420P_Registration@@8 @4849 NONAME ??_R3P_YUV420P_BGR24@@8 @4850 NONAME ??_R3P_YUV420P_BGR24_Registration@@8 @4853 NONAME ??_R3P_YUV420P_BGR32@@8 @4854 NONAME ??_R3P_YUV420P_BGR32_Registration@@8 @4855 NONAME ??_R3P_YUV420P_RGB24@@8 @4856 NONAME ??_R3P_YUV420P_RGB24_Registration@@8 @4859 NONAME ??_R3P_YUV420P_RGB32@@8 @4860 NONAME ??_R3P_YUV420P_RGB32_Registration@@8 @4863 NONAME ??_R3P_YUV420P_YUV411P@@8 @4864 NONAME ??_R3P_YUV420P_YUV411P_Registration@@8 @4865 NONAME ??_R3P_YUV422_YUV420P@@8 @4866 NONAME ??_R3P_YUV422_YUV420P_Registration@@8 @4867 NONAME ??_R3P_YUV422_YUV422@@8 @4868 NONAME ??_R3P_YUV422_YUV422_Registration@@8 @4869 NONAME ??_R3RouteEntry@PIPSocket@@8 @4870 NONAME ??_R3SelectList@PSocket@@8 @4871 NONAME ??_R3ServiceManager@@8 @4872 NONAME ??_R3Table@PHashTable@@8 @4873 NONAME ??_R3Win95_ServiceManager@@8 @4874 NONAME ??_R3WinSNMPLoader@@8 @6202 NONAME ??_R3Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7027 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7028 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7029 NONAME ??_R3WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7030 NONAME ??_R3WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6655 NONAME ??_R3WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7031 NONAME ??_R3WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7032 NONAME ??_R3WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7033 NONAME ??_R4?$PArray@VPString@@@@6B@ @4875 NONAME ??_R4?$PArray@VPWaveBuffer@@@@6B@ @4876 NONAME ??_R4?$PArray@VPWin32PacketBuffer@@@@6B@ @4877 NONAME ??_R4?$PBaseArray@D@@6B@ @4878 NONAME ??_R4?$PBaseArray@E@@6B@ @4879 NONAME ??_R4?$PBaseArray@F@@6B@ @4880 NONAME ??_R4?$PBaseArray@G@@6B@ @4881 NONAME ??_R4?$PBaseArray@H@@6B@ @4882 NONAME ??_R4?$PBaseArray@I@@6B@ @4883 NONAME ??_R4?$PBaseArray@J@@6B@ @4884 NONAME ??_R4?$PBaseArray@K@@6B@ @4885 NONAME ??_R4?$PBaseArray@PAVElement@PHashTable@@@@6B@ @4886 NONAME ??_R4?$PBaseArray@PAVPObject@@@@6B@ @4887 NONAME ??_R4?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @7034 NONAME ??_R4?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @7035 NONAME ??_R4?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @7036 NONAME ??_R4?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @4888 NONAME ??_R4?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @4889 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @4890 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @5643 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @4891 NONAME ??_R4?$PDictionary@VPString@@VPDynaLink@@@@6B@ @5564 NONAME ??_R4?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7037 NONAME ??_R4?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @6446 NONAME ??_R4?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6447 NONAME ??_R4?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7038 NONAME ??_R4?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7039 NONAME ??_R4?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7040 NONAME ??_R4?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @7541 NONAME ??_R4?$PList@VPDynaLink@@@@6B@ @4892 NONAME ??_R4?$PList@VPNotifier@@@@6B@ @4893 NONAME ??_R4?$PList@VPPluginService@@@@6B@ @4894 NONAME ??_R4?$PList@VPSafeObject@@@@6B@ @7041 NONAME ??_R4?$PList@VPSocket@@@@6B@ @4895 NONAME ??_R4?$PList@VPString@@@@6B@ @4896 NONAME ??_R4?$PList@VPThread@@@@6B@ @4897 NONAME ??_R4?$PList@VPTimer@@@@6B@ @4898 NONAME ??_R4?$POrdinalDictionary@VPString@@@@6B@ @4899 NONAME ??_R4?$PScalarArray@F@@6B@ @4900 NONAME ??_R4?$PScalarArray@G@@6B@ @4901 NONAME ??_R4?$PScalarArray@H@@6B@ @4902 NONAME ??_R4?$PScalarArray@I@@6B@ @4903 NONAME ??_R4?$PScalarArray@J@@6B@ @4904 NONAME ??_R4?$PScalarArray@K@@6B@ @4905 NONAME ??_R4?$PSet@VPString@@@@6B@ @4906 NONAME ??_R4?$PSortedList@VPString@@@@6B@ @4907 NONAME ??_R4?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @7542 NONAME ??_R4?$PStringDictionary@VPOrdinalKey@@@@6B@ @4908 NONAME ??_R4?$PStringDictionary@VPString@@@@6B@ @4909 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @7543 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @7544 NONAME ??_R4?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @7545 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7042 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7043 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7044 NONAME ??_R4?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6656 NONAME ??_R4?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6657 NONAME ??_R4Address@PIPSocket@@6B@ @4910 NONAME ??_R4Buffer@PDebugStream@@6B@ @4911 NONAME ??_R4Buffer@PStringStream@@6B@ @4912 NONAME ??_R4Buffer@PSystemLog@@6B@ @4913 NONAME ??_R4CMCDLL@PMail@@6B@ @4914 NONAME ??_R4DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @4915 NONAME ??_R4HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @7546 NONAME ??_R4HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @7547 NONAME ??_R4HouseKeepingThread@PProcess@@6B@ @4916 NONAME ??_R4InterfaceEntry@PIPSocket@@6B@ @4917 NONAME ??_R4MAPIDLL@PMail@@6B@ @4918 NONAME ??_R4Nest@PReadWriteMutex@@6B@ @4919 NONAME ??_R4NT_ServiceManager@@6B@ @4920 NONAME ??_R4ofstream@@6B@ @4921 NONAME ??_R4PAbstractArray@@6B@ @4922 NONAME ??_R4PAbstractDictionary@@6B@ @4923 NONAME ??_R4PAbstractList@@6B@ @4924 NONAME ??_R4PAbstractSet@@6B@ @4925 NONAME ??_R4PAbstractSortedList@@6B@ @4926 NONAME ??_R4PArgList@@6B@ @4927 NONAME ??_R4PArrayObjects@@6B@ @4928 NONAME ??_R4PBitArray@@6B@ @4929 NONAME ??_R4PBYTEArray@@6B@ @4930 NONAME ??_R4PCaselessString@@6B@ @4931 NONAME ??_R4PChannel@@6Biostream@@@ @4932 NONAME ??_R4PChannel@@6BPObject@@@ @4933 NONAME ??_R4PChannelStreamBuffer@@6B@ @4934 NONAME ??_R4PCharArray@@6B@ @4935 NONAME ??_R4PCollection@@6B@ @4936 NONAME ??_R4PColourConverter@@6B@ @4937 NONAME ??_R4PColourConverterRegistration@@6B@ @4938 NONAME ??_R4PCondMutex@@6B@ @4939 NONAME ??_R4PConfig@@6B@ @4940 NONAME ??_R4PConfigArgs@@6B@ @4941 NONAME ??_R4PConsoleChannel@@6Biostream@@@ @4942 NONAME ??_R4PConsoleChannel@@6BPObject@@@ @4943 NONAME ??_R4PContainer@@6B@ @4944 NONAME ??_R4PCriticalSection@@6B@ @5532 NONAME ??_R4PDebugStream@@6B@ @4945 NONAME ??_R4PDevicePluginAdapterBase@@6B@ @7045 NONAME ??_R4PDevicePluginServiceDescriptor@@6B@ @7548 NONAME ??_R4PDirectory@@6B@ @4946 NONAME ??_R4PDynaLink@@6B@ @4947 NONAME ??_R4PEthSocket@@6Biostream@@@ @4948 NONAME ??_R4PEthSocket@@6BPObject@@@ @4949 NONAME ??_R4PFactoryBase@@6B@ @6658 NONAME ??_R4PFile@@6Biostream@@@ @4950 NONAME ??_R4PFile@@6BPObject@@@ @4951 NONAME ??_R4PFileInfo@@6B@ @4952 NONAME ??_R4PFilePath@@6B@ @4953 NONAME ??_R4PHashTable@@6B@ @4954 NONAME ??_R4PHostByAddr@@6B@ @4955 NONAME ??_R4PHostByName@@6B@ @4956 NONAME ??_R4PICMPDLL@@6B@ @4957 NONAME ??_R4PICMPSocket@@6Biostream@@@ @4958 NONAME ??_R4PICMPSocket@@6BPObject@@@ @4959 NONAME ??_R4PImageDLL@@6B@ @4960 NONAME ??_R4PIndirectChannel@@6Biostream@@@ @4961 NONAME ??_R4PIndirectChannel@@6BPObject@@@ @4962 NONAME ??_R4PIntCondMutex@@6B@ @4963 NONAME ??_R4PIPCacheData@@6B@ @4964 NONAME ??_R4PIPCacheKey@@6B@ @4965 NONAME ??_R4PIPDatagramSocket@@6Biostream@@@ @4966 NONAME ??_R4PIPDatagramSocket@@6BPObject@@@ @4967 NONAME ??_R4PIPSocket@@6Biostream@@@ @4968 NONAME ??_R4PIPSocket@@6BPObject@@@ @4969 NONAME ??_R4PIPXSocket@@6Biostream@@@ @4970 NONAME ??_R4PIPXSocket@@6BPObject@@@ @4971 NONAME ??_R4PluginLoaderStartup@@6B@ @5858 NONAME ??_R4PMail@@6B@ @4972 NONAME ??_R4PMutex@@6B@ @4973 NONAME ??_R4PNotifier@@6B@ @4974 NONAME ??_R4PNotifierFunction@@6B@ @4975 NONAME ??_R4PObject@@6B@ @4976 NONAME ??_R4POrdinalKey@@6B@ @4977 NONAME ??_R4POrdinalToString@@6B@ @4978 NONAME ??_R4PPipeChannel@@6Biostream@@@ @4979 NONAME ??_R4PPipeChannel@@6BPObject@@@ @4980 NONAME ??_R4PPluginManager@@6B@ @4981 NONAME ??_R4PPluginModuleManager@@6B@ @5566 NONAME ??_R4PPluginService@@6B@ @4982 NONAME ??_R4PPluginServiceDescriptor@@6B@ @7549 NONAME ??_R4PPointer@@6B@ @5644 NONAME ??_R4PProcess@@6B@ @4983 NONAME ??_R4PProcessStartup@@6B@ @5859 NONAME ??_R4PQoS@@6B@ @4984 NONAME ??_R4PRASDLL@@6B@ @4985 NONAME ??_R4PReadWriteMutex@@6B@ @4986 NONAME ??_R4PRegularExpression@@6B@ @4987 NONAME ??_R4PRemoteConnection@@6B@ @4988 NONAME ??_R4PSafeCollection@@6B@ @4989 NONAME ??_R4PSafeObject@@6B@ @4990 NONAME ??_R4PSafePtrBase@@6B@ @4991 NONAME ??_R4PSemaphore@@6B@ @4992 NONAME ??_R4PSerialChannel@@6Biostream@@@ @4993 NONAME ??_R4PSerialChannel@@6BPObject@@@ @4994 NONAME ??_R4PServiceProcess@@6B@ @4995 NONAME ??_R4PSimpleThread@@6B@ @4996 NONAME ??_R4PSmartObject@@6B@ @4997 NONAME ??_R4PSmartPointer@@6B@ @4998 NONAME ??_R4PSmartPtrInspector@@6B@ @5645 NONAME ??_R4PSocket@@6Biostream@@@ @4999 NONAME ??_R4PSocket@@6BPObject@@@ @5000 NONAME ??_R4PSortedStringList@@6B@ @5001 NONAME ??_R4PSound@@6B@ @5002 NONAME ??_R4PSoundChannel@@6Biostream@@@ @5003 NONAME ??_R4PSoundChannel@@6BPObject@@@ @5004 NONAME ??_R4PSoundChannelWin32@@6Biostream@@@ @5005 NONAME ??_R4PSoundChannelWin32@@6BPObject@@@ @5006 NONAME ??_R4PSPXSocket@@6Biostream@@@ @5007 NONAME ??_R4PSPXSocket@@6BPObject@@@ @5008 NONAME ??_R4PStandardColourConverter@@6B@ @5009 NONAME ??_R4PString@@6B@ @5010 NONAME ??_R4PStringArray@@6B@ @5011 NONAME ??_R4PStringList@@6B@ @5012 NONAME ??_R4PStringSet@@6B@ @5013 NONAME ??_R4PStringStream@@6Biostream@@@ @5014 NONAME ??_R4PStringStream@@6BPString@@@ @5015 NONAME ??_R4PStringToOrdinal@@6B@ @5016 NONAME ??_R4PStringToString@@6B@ @5017 NONAME ??_R4PStructuredFile@@6Biostream@@@ @5018 NONAME ??_R4PStructuredFile@@6BPObject@@@ @5019 NONAME ??_R4PSyncPoint@@6B@ @5020 NONAME ??_R4PSynonymColour@@6B@ @5021 NONAME ??_R4PSynonymColourRegistration@@6B@ @5022 NONAME ??_R4PSystemLog@@6Biostream@@@ @5023 NONAME ??_R4PSystemLog@@6BPObject@@@ @5024 NONAME ??_R4PTCPSocket@@6Biostream@@@ @5025 NONAME ??_R4PTCPSocket@@6BPObject@@@ @5026 NONAME ??_R4PTextFile@@6Biostream@@@ @5027 NONAME ??_R4PTextFile@@6BPObject@@@ @5028 NONAME ??_R4PThread@@6B@ @5029 NONAME ??_R4PTime@@6B@ @5030 NONAME ??_R4PTimeInterval@@6B@ @5031 NONAME ??_R4PTimer@@6B@ @5032 NONAME ??_R4PTimerList@@6B@ @5033 NONAME ??_R4PUDPSocket@@6Biostream@@@ @5034 NONAME ??_R4PUDPSocket@@6BPObject@@@ @5035 NONAME ??_R4PVideoChannel@@6Biostream@@@ @5036 NONAME ??_R4PVideoChannel@@6BPObject@@@ @5037 NONAME ??_R4PVideoDevice@@6B@ @5038 NONAME ??_R4PVideoDeviceBitmap@@6B@ @5039 NONAME ??_R4PVideoInputDevice@@6B@ @5040 NONAME ??_R4PVideoInputDevice_FakeVideo@@6B@ @5041 NONAME ??_R4PVideoInputDevice_VideoForWindows@@6B@ @5042 NONAME ??_R4PVideoOutputDevice@@6B@ @5044 NONAME ??_R4PVideoOutputDeviceRGB@@6B@ @7550 NONAME ??_R4PVideoOutputDevice_NULLOutput@@6B@ @5045 NONAME ??_R4PVideoOutputDevice_Window@@6B@ @7551 NONAME ??_R4PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @7552 NONAME ??_R4PWaveBuffer@@6B@ @5046 NONAME ??_R4PWaveFormat@@6B@ @5047 NONAME ??_R4PWin32PacketBuffer@@6B@ @5048 NONAME ??_R4PWin32PacketDriver@@6B@ @5049 NONAME ??_R4PWin32PacketSYS@@6B@ @5050 NONAME ??_R4PWin32PacketVxD@@6B@ @5051 NONAME ??_R4PWin32SnmpLibrary@@6B@ @5052 NONAME ??_R4PWinQoS@@6B@ @5053 NONAME ??_R4PWinSock@@6Biostream@@@ @5054 NONAME ??_R4PWinSock@@6BPObject@@@ @5055 NONAME ??_R4P_BGR24_RGB24@@6B@ @7553 NONAME ??_R4P_BGR24_RGB24_Registration@@6B@ @7554 NONAME ??_R4P_BGR24_RGB32@@6B@ @7555 NONAME ??_R4P_BGR24_RGB32_Registration@@6B@ @7556 NONAME ??_R4P_BGR24_YUV420P@@6B@ @5056 NONAME ??_R4P_BGR24_YUV420P_Registration@@6B@ @5057 NONAME ??_R4P_BGR32_RGB24@@6B@ @7557 NONAME ??_R4P_BGR32_RGB24_Registration@@6B@ @7558 NONAME ??_R4P_BGR32_RGB32@@6B@ @7559 NONAME ??_R4P_BGR32_RGB32_Registration@@6B@ @7560 NONAME ??_R4P_BGR32_YUV420P@@6B@ @5058 NONAME ??_R4P_BGR32_YUV420P_Registration@@6B@ @5059 NONAME ??_R4P_Grey_YUV420P@@6B@ @5062 NONAME ??_R4P_Grey_YUV420P_Registration@@6B@ @5063 NONAME ??_R4P_RGB24_BGR24@@6B@ @7561 NONAME ??_R4P_RGB24_BGR24_Registration@@6B@ @7562 NONAME ??_R4P_RGB24_BGR32@@6B@ @7563 NONAME ??_R4P_RGB24_BGR32_Registration@@6B@ @7564 NONAME ??_R4P_RGB24_RGB32@@6B@ @5066 NONAME ??_R4P_RGB24_RGB32_Registration@@6B@ @5067 NONAME ??_R4P_RGB24_YUV420P@@6B@ @5068 NONAME ??_R4P_RGB24_YUV420P_Registration@@6B@ @5069 NONAME ??_R4P_RGB32_BGR24@@6B@ @7565 NONAME ??_R4P_RGB32_BGR24_Registration@@6B@ @7566 NONAME ??_R4P_RGB32_BGR32@@6B@ @7567 NONAME ??_R4P_RGB32_BGR32_Registration@@6B@ @7568 NONAME ??_R4P_RGB32_RGB24@@6B@ @5072 NONAME ??_R4P_RGB32_RGB24_Registration@@6B@ @5073 NONAME ??_R4P_RGB32_YUV420P@@6B@ @5074 NONAME ??_R4P_RGB32_YUV420P_Registration@@6B@ @5075 NONAME ??_R4P_SBGGR8_RGB24@@6B@ @7291 NONAME ??_R4P_SBGGR8_RGB24_Registration@@6B@ @7292 NONAME ??_R4P_SBGGR8_YUV420P@@6B@ @7569 NONAME ??_R4P_SBGGR8_YUV420P_Registration@@6B@ @7570 NONAME ??_R4P_UYV444_YUV420P@@6B@ @5076 NONAME ??_R4P_UYV444_YUV420P_Registration@@6B@ @5077 NONAME ??_R4P_UYVY422_YUV420P@@6B@ @5078 NONAME ??_R4P_UYVY422_YUV420P_Registration@@6B@ @5079 NONAME ??_R4P_YUV411P_YUV420P@@6B@ @5080 NONAME ??_R4P_YUV411P_YUV420P_Registration@@6B@ @5081 NONAME ??_R4P_YUV420P_BGR24@@6B@ @5082 NONAME ??_R4P_YUV420P_BGR24_Registration@@6B@ @5085 NONAME ??_R4P_YUV420P_BGR32@@6B@ @5086 NONAME ??_R4P_YUV420P_BGR32_Registration@@6B@ @5087 NONAME ??_R4P_YUV420P_RGB24@@6B@ @5088 NONAME ??_R4P_YUV420P_RGB24_Registration@@6B@ @5091 NONAME ??_R4P_YUV420P_RGB32@@6B@ @5092 NONAME ??_R4P_YUV420P_RGB32_Registration@@6B@ @5095 NONAME ??_R4P_YUV420P_YUV411P@@6B@ @5096 NONAME ??_R4P_YUV420P_YUV411P_Registration@@6B@ @5097 NONAME ??_R4P_YUV422_YUV420P@@6B@ @5098 NONAME ??_R4P_YUV422_YUV420P_Registration@@6B@ @5099 NONAME ??_R4P_YUV422_YUV422@@6B@ @5100 NONAME ??_R4P_YUV422_YUV422_Registration@@6B@ @5101 NONAME ??_R4RouteEntry@PIPSocket@@6B@ @5102 NONAME ??_R4SelectList@PSocket@@6B@ @5103 NONAME ??_R4ServiceManager@@6B@ @5104 NONAME ??_R4Table@PHashTable@@6B@ @5105 NONAME ??_R4Win95_ServiceManager@@6B@ @5106 NONAME ??_R4WinSNMPLoader@@6B@ @6203 NONAME ??_R4Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @7046 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @7047 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7048 NONAME ??_R4WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7049 NONAME ??_R4WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6660 NONAME ??_R4WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7050 NONAME ??_R4WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7051 NONAME ??_R4WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7052 NONAME ??_Sofstream@@6B@ @1403 NONAME ??_U@YAPAXI@Z @6204 NONAME ??_V@YAXPAX@Z @6205 NONAME ?Abort@PSoundChannel@@UAEHXZ @3634 NONAME ?Abort@PSoundChannelWin32@@UAEHXZ @3635 NONAME ?AbortCommandString@PChannel@@QAEXXZ @1408 NONAME ?AbstractContains@PHashTable@@IBEHABVPObject@@@Z @1409 NONAME ?AbstractGetAt@PAbstractDictionary@@UBEPAVPObject@@ABV2@@Z @1410 NONAME ?AbstractGetDataAt@PHashTable@@MBEAAVPObject@@H@Z @1411 NONAME ?AbstractGetKeyAt@PHashTable@@MBEABVPObject@@H@Z @1412 NONAME ?AbstractSetAt@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @1413 NONAME ?Accept@PSocket@@UAEHAAV1@@Z @1414 NONAME ?Accept@PSPXSocket@@UAEHAAVPSocket@@@Z @1415 NONAME ?Accept@PTCPSocket@@UAEHAAVPSocket@@@Z @1416 NONAME ?Access@PFile@@QAEHW4OpenMode@1@@Z @1417 NONAME ?Access@PFile@@SAHABVPFilePath@@W4OpenMode@1@@Z @1418 NONAME ?Acknowledge@PSyncPointAck@@QAEXXZ @1419 NONAME ?Add@PNotifyIconData@@QAEXXZ @1420 NONAME ?AddEntry@PIPCacheData@@QAEXPAUaddrinfo@@@Z @3877 NONAME ?AddNotifier@PPluginManager@@QAEXABVPNotifier@@H@Z @3996 NONAME ?allocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEPAPAVPPluginModuleManager@@IPBX@Z @5860 NONAME ?allocate@?$allocator@VPString@@@std@@QAEPAVPString@@IPBX@Z @5861 NONAME ?AllowDeleteObjects@PCollection@@QAEXH@Z @1424 NONAME ?Append@PAbstractDictionary@@EAEHPAVPObject@@@Z @1425 NONAME ?Append@PAbstractList@@UAEHPAVPObject@@@Z @1426 NONAME ?Append@PAbstractSet@@UAEHPAVPObject@@@Z @1427 NONAME ?Append@PAbstractSortedList@@UAEHPAVPObject@@@Z @1428 NONAME ?Append@PArrayObjects@@UAEHPAVPObject@@@Z @1429 NONAME ?AppendElement@Table@PHashTable@@QAEHPAVPObject@@0@Z @1430 NONAME ?AppendString@PSortedStringList@@QAEHABVPString@@@Z @1431 NONAME ?AppendString@PStringArray@@QAEHABVPString@@@Z @1432 NONAME ?AppendString@PStringList@@QAEHABVPString@@@Z @1433 NONAME ?ApplyFormat@PVideoDeviceBitmap@@QAEHPAUHWND__@@PBD@Z @7571 NONAME ?ApplyQoS@PUDPSocket@@MAEHXZ @3545 NONAME ?AreAllRecordBuffersFull@PSoundChannel@@UAEHXZ @3636 NONAME ?AreAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @3637 NONAME ?Ascend@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @1436 NONAME ?AsInt64@PString@@QBE_JI@Z @1437 NONAME ?AsInteger@PString@@QBEJI@Z @1438 NONAME ?AsNumeric@PIPSocket@@SAIVAddress@1@@Z @7572 NONAME ?AsReal@PString@@QBENXZ @1439 NONAME ?Assign@PSafePtrBase@@QAEXABV1@@Z @7573 NONAME ?Assign@PSafePtrBase@@QAEXABVPSafeCollection@@@Z @7574 NONAME ?Assign@PSafePtrBase@@QAEXH@Z @7575 NONAME ?Assign@PSafePtrBase@@QAEXPAVPSafeObject@@@Z @7576 NONAME ?AssignContents@PAbstractArray@@MAEXABVPContainer@@@Z @1444 NONAME ?AssignContents@PAbstractList@@MAEXABVPContainer@@@Z @1445 NONAME ?AssignContents@PAbstractSet@@MAEXABVPContainer@@@Z @1446 NONAME ?AssignContents@PAbstractSortedList@@MAEXABVPContainer@@@Z @1447 NONAME ?AssignContents@PArrayObjects@@MAEXABVPContainer@@@Z @1448 NONAME ?AssignContents@PContainer@@MAEXABV1@@Z @1449 NONAME ?AssignContents@PDirectory@@MAEXABVPContainer@@@Z @1450 NONAME ?AssignContents@PFilePath@@MAEXABVPContainer@@@Z @1451 NONAME ?AssignContents@PHashTable@@MAEXABVPContainer@@@Z @1452 NONAME ?AssignContents@PStringStream@@MAEXABVPContainer@@@Z @1453 NONAME ?AsString@Address@PIPSocket@@QBE?AVPString@@XZ @1454 NONAME ?AsString@PTime@@QBE?AVPString@@ABV2@H@Z @1455 NONAME ?AsString@PTime@@QBE?AVPString@@PBDH@Z @1456 NONAME ?AsString@PTime@@QBE?AVPString@@W4TimeFormat@1@H@Z @1457 NONAME ?AsString@PTimeInterval@@QBE?AVPString@@HW4Formats@1@H@Z @1458 NONAME ?AsUCS2@PString@@QBE?AV?$PScalarArray@G@@XZ @1459 NONAME ?AsUnsigned64@PString@@QBE_KI@Z @1460 NONAME ?AsUnsigned@PString@@QBEKI@Z @1461 NONAME ?Attach@?$PBaseArray@D@@QAEXPBDH@Z @1462 NONAME ?Attach@?$PBaseArray@E@@QAEXPBEH@Z @1463 NONAME ?Attach@?$PBaseArray@F@@QAEXPBFH@Z @1464 NONAME ?Attach@?$PBaseArray@G@@QAEXPBGH@Z @1465 NONAME ?Attach@?$PBaseArray@H@@QAEXPBHH@Z @1466 NONAME ?Attach@?$PBaseArray@I@@QAEXPBIH@Z @1467 NONAME ?Attach@?$PBaseArray@J@@QAEXPBJH@Z @1468 NONAME ?Attach@?$PBaseArray@K@@QAEXPBKH@Z @1469 NONAME ?Attach@PAbstractArray@@QAEXPBXH@Z @1470 NONAME ?Attach@PBitArray@@QAEXPBXH@Z @1471 NONAME ?AttachVideoPlayer@PVideoChannel@@UAEXPAVPVideoOutputDevice@@H@Z @1472 NONAME ?AttachVideoReader@PVideoChannel@@UAEXPAVPVideoInputDevice@@H@Z @1473 NONAME ?begin@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@XZ @6661 NONAME ?begin@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@2@XZ @5862 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@2@XZ @7054 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@2@XZ @6662 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@2@XZ @6663 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@2@XZ @7055 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@2@XZ @7056 NONAME ?begin@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@2@XZ @7057 NONAME ?begin@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@XZ @5865 NONAME ?begin@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBEPBUSlice@PChannel@@XZ @7577 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEPAVPString@@XZ @5866 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEPBVPString@@XZ @5867 NONAME ?begin@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@XZ @6664 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@XZ @5868 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7058 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6665 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6666 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7059 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7060 NONAME ?begin@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7061 NONAME ?Begin@PTrace@@SAAAVostream@@IPBDH@Z @1474 NONAME ?BeginRead@PWin32PacketSYS@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @1475 NONAME ?BeginRead@PWin32PacketVxD@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @1476 NONAME ?BeginWrite@PWin32PacketSYS@@UAEHPBXKAAVPWin32Overlapped@@@Z @1477 NONAME ?BeginWrite@PWin32PacketVxD@@UAEHPBXKAAVPWin32Overlapped@@@Z @1478 NONAME ?bestEffortDSCP@PQoS@@2DA @3546 NONAME ?BindInterface@PWin32PacketSYS@@UAEHABVPString@@@Z @1479 NONAME ?BindInterface@PWin32PacketVxD@@UAEHABVPString@@@Z @1480 NONAME ?bInitialized@?1??WspiapiLoad@@9@4@4HA @3878 NONAME ?Byte1@Address@PIPSocket@@QBEEXZ @1481 NONAME ?Byte2@Address@PIPSocket@@QBEEXZ @1482 NONAME ?Byte3@Address@PIPSocket@@QBEEXZ @1483 NONAME ?Byte4@Address@PIPSocket@@QBEEXZ @1484 NONAME ?CalculateFrameBytes@PVideoDevice@@SAIIIABVPString@@@Z @1485 NONAME ?Call@DeleteObjectsTimeout_PNotifier@PSafeCollection@@UBEXAAVPObject@@H@Z @1486 NONAME ?Call@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UBEXAAVPObject@@H@Z @7578 NONAME ?Call@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UBEXAAVPObject@@H@Z @7579 NONAME ?CallNotifier@PPluginManager@@IAEXAAVPDynaLink@@H@Z @3997 NONAME ?CanCaptureVideo@PVideoInputDevice@@UBEHXZ @1487 NONAME ?CanCaptureVideo@PVideoOutputDevice@@UBEHXZ @1488 NONAME ?CanReadAndWrite@PPipeChannel@@SAHXZ @1489 NONAME ?CanTrace@PTrace@@SAHI@Z @1490 NONAME ?Change@PDirectory@@QBEHXZ @1491 NONAME ?Change@PDirectory@@SAHABVPString@@@Z @1492 NONAME ?CharToString@PConfigArgs@@IBE?AVPString@@D@Z @1493 NONAME ?Class@?$PArray@VPString@@@@SAPBDXZ @1494 NONAME ?Class@?$PArray@VPWaveBuffer@@@@SAPBDXZ @1495 NONAME ?Class@?$PArray@VPWin32PacketBuffer@@@@SAPBDXZ @1496 NONAME ?Class@?$PBaseArray@D@@SAPBDXZ @1497 NONAME ?Class@?$PBaseArray@E@@SAPBDXZ @1498 NONAME ?Class@?$PBaseArray@F@@SAPBDXZ @1499 NONAME ?Class@?$PBaseArray@G@@SAPBDXZ @1500 NONAME ?Class@?$PBaseArray@H@@SAPBDXZ @1501 NONAME ?Class@?$PBaseArray@I@@SAPBDXZ @1502 NONAME ?Class@?$PBaseArray@J@@SAPBDXZ @1503 NONAME ?Class@?$PBaseArray@K@@SAPBDXZ @1504 NONAME ?Class@?$PBaseArray@PAVElement@PHashTable@@@@SAPBDXZ @1505 NONAME ?Class@?$PBaseArray@PAVPObject@@@@SAPBDXZ @1506 NONAME ?Class@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@SAPBDXZ @1507 NONAME ?Class@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@SAPBDXZ @1508 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@SAPBDXZ @1509 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPPointer@@@@SAPBDXZ @5646 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPThread@@@@SAPBDXZ @1510 NONAME ?Class@?$PDictionary@VPString@@VPDynaLink@@@@SAPBDXZ @5568 NONAME ?Class@?$PList@VInterfaceEntry@PIPSocket@@@@SAPBDXZ @7580 NONAME ?Class@?$PList@VPDynaLink@@@@SAPBDXZ @3998 NONAME ?Class@?$PList@VPNotifier@@@@SAPBDXZ @3999 NONAME ?Class@?$PList@VPPluginService@@@@SAPBDXZ @3639 NONAME ?Class@?$PList@VPSafeObject@@@@SAPBDXZ @7062 NONAME ?Class@?$PList@VPSocket@@@@SAPBDXZ @1511 NONAME ?Class@?$PList@VPString@@@@SAPBDXZ @1512 NONAME ?Class@?$PList@VPThread@@@@SAPBDXZ @1513 NONAME ?Class@?$PList@VPTimer@@@@SAPBDXZ @1514 NONAME ?Class@?$POrdinalDictionary@VPString@@@@SAPBDXZ @1515 NONAME ?Class@?$PSet@VPString@@@@SAPBDXZ @1516 NONAME ?Class@?$PSortedList@VPString@@@@SAPBDXZ @1517 NONAME ?Class@?$PStringDictionary@VPOrdinalKey@@@@SAPBDXZ @1518 NONAME ?Class@?$PStringDictionary@VPString@@@@SAPBDXZ @1519 NONAME ?Class@CMCDLL@PMail@@SAPBDXZ @1520 NONAME ?Class@HouseKeepingThread@PProcess@@SAPBDXZ @1521 NONAME ?Class@InterfaceEntry@PIPSocket@@SAPBDXZ @1522 NONAME ?Class@MAPIDLL@PMail@@SAPBDXZ @1523 NONAME ?Class@Nest@PReadWriteMutex@@SAPBDXZ @1524 NONAME ?Class@PAbstractArray@@SAPBDXZ @1525 NONAME ?Class@PAbstractDictionary@@SAPBDXZ @1526 NONAME ?Class@PAbstractList@@SAPBDXZ @1527 NONAME ?Class@PAbstractSet@@SAPBDXZ @1528 NONAME ?Class@PAbstractSortedList@@SAPBDXZ @1529 NONAME ?Class@PArgList@@SAPBDXZ @1530 NONAME ?Class@PArrayObjects@@SAPBDXZ @1531 NONAME ?Class@PBitArray@@SAPBDXZ @1532 NONAME ?Class@PBYTEArray@@SAPBDXZ @1533 NONAME ?Class@PCaselessString@@SAPBDXZ @1534 NONAME ?Class@PChannel@@SAPBDXZ @1535 NONAME ?Class@PCharArray@@SAPBDXZ @1536 NONAME ?Class@PCollection@@SAPBDXZ @1537 NONAME ?Class@PColourConverter@@SAPBDXZ @1538 NONAME ?Class@PColourConverterRegistration@@SAPBDXZ @1539 NONAME ?Class@PCondMutex@@SAPBDXZ @1540 NONAME ?Class@PConfig@@SAPBDXZ @1541 NONAME ?Class@PConfigArgs@@SAPBDXZ @1542 NONAME ?Class@PConsoleChannel@@SAPBDXZ @1543 NONAME ?Class@PContainer@@SAPBDXZ @1544 NONAME ?Class@PCriticalSection@@SAPBDXZ @5533 NONAME ?Class@PDirectory@@SAPBDXZ @1545 NONAME ?Class@PDynaLink@@SAPBDXZ @1546 NONAME ?Class@PEthSocket@@SAPBDXZ @1547 NONAME ?Class@PFile@@SAPBDXZ @1549 NONAME ?Class@PFileInfo@@SAPBDXZ @1550 NONAME ?Class@PFilePath@@SAPBDXZ @1551 NONAME ?Class@PHashTable@@SAPBDXZ @1552 NONAME ?Class@PICMPDLL@@SAPBDXZ @1553 NONAME ?Class@PICMPSocket@@SAPBDXZ @1554 NONAME ?Class@PImageDLL@@SAPBDXZ @1555 NONAME ?Class@PIndirectChannel@@SAPBDXZ @1556 NONAME ?Class@PIntCondMutex@@SAPBDXZ @1557 NONAME ?Class@PIPCacheData@@SAPBDXZ @1558 NONAME ?Class@PIPCacheKey@@SAPBDXZ @1559 NONAME ?Class@PIPDatagramSocket@@SAPBDXZ @1560 NONAME ?Class@PIPSocket@@SAPBDXZ @1561 NONAME ?Class@PIPXSocket@@SAPBDXZ @1562 NONAME ?Class@PluginLoaderStartup@@SAPBDXZ @5871 NONAME ?Class@PMail@@SAPBDXZ @1563 NONAME ?Class@PMutex@@SAPBDXZ @1564 NONAME ?Class@PNotifier@@SAPBDXZ @1565 NONAME ?Class@PNotifierFunction@@SAPBDXZ @1566 NONAME ?Class@PObject@@SAPBDXZ @1567 NONAME ?Class@POrdinalKey@@SAPBDXZ @1568 NONAME ?Class@POrdinalToString@@SAPBDXZ @1569 NONAME ?Class@PPipeChannel@@SAPBDXZ @1570 NONAME ?Class@PPluginManager@@SAPBDXZ @3640 NONAME ?Class@PPointer@@SAPBDXZ @5647 NONAME ?Class@PProcess@@SAPBDXZ @1571 NONAME ?Class@PProcessStartup@@SAPBDXZ @5872 NONAME ?Class@PQoS@@SAPBDXZ @3548 NONAME ?Class@PRASDLL@@SAPBDXZ @1572 NONAME ?Class@PReadWriteMutex@@SAPBDXZ @1573 NONAME ?Class@PRegularExpression@@SAPBDXZ @1574 NONAME ?Class@PRemoteConnection@@SAPBDXZ @1575 NONAME ?Class@PSafeCollection@@SAPBDXZ @1576 NONAME ?Class@PSafeObject@@SAPBDXZ @1577 NONAME ?Class@PSafePtrBase@@SAPBDXZ @1578 NONAME ?Class@PSemaphore@@SAPBDXZ @1579 NONAME ?Class@PSerialChannel@@SAPBDXZ @1580 NONAME ?Class@PServiceProcess@@SAPBDXZ @1581 NONAME ?Class@PSimpleThread@@SAPBDXZ @1582 NONAME ?Class@PSmartObject@@SAPBDXZ @1583 NONAME ?Class@PSmartPointer@@SAPBDXZ @1584 NONAME ?Class@PSmartPtrInspector@@SAPBDXZ @5648 NONAME ?Class@PSocket@@SAPBDXZ @1585 NONAME ?Class@PSortedStringList@@SAPBDXZ @1586 NONAME ?Class@PSound@@SAPBDXZ @1587 NONAME ?Class@PSoundChannel@@SAPBDXZ @1588 NONAME ?Class@PSPXSocket@@SAPBDXZ @1589 NONAME ?Class@PStandardColourConverter@@SAPBDXZ @1590 NONAME ?Class@PString@@SAPBDXZ @1591 NONAME ?Class@PStringArray@@SAPBDXZ @1592 NONAME ?Class@PStringList@@SAPBDXZ @1593 NONAME ?Class@PStringSet@@SAPBDXZ @1594 NONAME ?Class@PStringStream@@SAPBDXZ @1595 NONAME ?Class@PStringToOrdinal@@SAPBDXZ @1596 NONAME ?Class@PStringToString@@SAPBDXZ @1597 NONAME ?Class@PStructuredFile@@SAPBDXZ @1598 NONAME ?Class@PSyncPoint@@SAPBDXZ @1599 NONAME ?Class@PSystemLog@@SAPBDXZ @1600 NONAME ?Class@PTCPSocket@@SAPBDXZ @1601 NONAME ?Class@PTextFile@@SAPBDXZ @1602 NONAME ?Class@PThread@@SAPBDXZ @1603 NONAME ?Class@PTime@@SAPBDXZ @1604 NONAME ?Class@PTimeInterval@@SAPBDXZ @1605 NONAME ?Class@PTimer@@SAPBDXZ @1606 NONAME ?Class@PTimerList@@SAPBDXZ @1607 NONAME ?Class@PUDPSocket@@SAPBDXZ @1608 NONAME ?Class@PVideoChannel@@SAPBDXZ @1609 NONAME ?Class@PVideoDevice@@SAPBDXZ @1610 NONAME ?Class@PVideoInputDevice@@SAPBDXZ @1611 NONAME ?Class@PVideoInputDevice_FakeVideo@@SAPBDXZ @3792 NONAME ?Class@PVideoInputDevice_VideoForWindows@@SAPBDXZ @3641 NONAME ?Class@PVideoOutputDevice@@SAPBDXZ @1613 NONAME ?Class@PVideoOutputDeviceRGB@@SAPBDXZ @7581 NONAME ?Class@PVideoOutputDevice_NULLOutput@@SAPBDXZ @3793 NONAME ?Class@PVideoOutputDevice_Window@@SAPBDXZ @7582 NONAME ?Class@PWaveBuffer@@SAPBDXZ @1617 NONAME ?Class@PWaveFormat@@SAPBDXZ @1618 NONAME ?Class@PWin32PacketBuffer@@SAPBDXZ @1619 NONAME ?Class@PWin32SnmpLibrary@@SAPBDXZ @1620 NONAME ?Class@PWinQoS@@SAPBDXZ @3879 NONAME ?Class@PWinSock@@SAPBDXZ @1621 NONAME ?Class@RouteEntry@PIPSocket@@SAPBDXZ @1622 NONAME ?Class@SelectList@PSocket@@SAPBDXZ @1623 NONAME ?Class@Table@PHashTable@@SAPBDXZ @1624 NONAME ?Class@WinSNMPLoader@@SAPBDXZ @6206 NONAME ?Cleanup@PNotifierList@@AAEXXZ @5649 NONAME ?ClearBreak@PSerialChannel@@QAEXXZ @1625 NONAME ?ClearDTR@PSerialChannel@@QAEXXZ @1626 NONAME ?ClearNameCache@PIPSocket@@SAXXZ @1627 NONAME ?ClearOptions@PTrace@@SAXI@Z @1628 NONAME ?ClearRTS@PSerialChannel@@QAEXXZ @1629 NONAME ?Clone@?$PArray@VPString@@@@UBEPAVPObject@@XZ @1630 NONAME ?Clone@?$PArray@VPWaveBuffer@@@@UBEPAVPObject@@XZ @1631 NONAME ?Clone@?$PArray@VPWin32PacketBuffer@@@@UBEPAVPObject@@XZ @1632 NONAME ?Clone@?$PBaseArray@D@@UBEPAVPObject@@XZ @1633 NONAME ?Clone@?$PBaseArray@E@@UBEPAVPObject@@XZ @1634 NONAME ?Clone@?$PBaseArray@F@@UBEPAVPObject@@XZ @1635 NONAME ?Clone@?$PBaseArray@G@@UBEPAVPObject@@XZ @1636 NONAME ?Clone@?$PBaseArray@H@@UBEPAVPObject@@XZ @1637 NONAME ?Clone@?$PBaseArray@I@@UBEPAVPObject@@XZ @1638 NONAME ?Clone@?$PBaseArray@J@@UBEPAVPObject@@XZ @1639 NONAME ?Clone@?$PBaseArray@K@@UBEPAVPObject@@XZ @1640 NONAME ?Clone@?$PBaseArray@PAVElement@PHashTable@@@@UBEPAVPObject@@XZ @1641 NONAME ?Clone@?$PBaseArray@PAVPObject@@@@UBEPAVPObject@@XZ @1642 NONAME ?Clone@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPObject@@XZ @1643 NONAME ?Clone@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPObject@@XZ @1644 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVPObject@@XZ @1645 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPObject@@XZ @5650 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPObject@@XZ @1646 NONAME ?Clone@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPObject@@XZ @5569 NONAME ?Clone@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPAVPObject@@XZ @7583 NONAME ?Clone@?$PList@VPDynaLink@@@@UBEPAVPObject@@XZ @4000 NONAME ?Clone@?$PList@VPNotifier@@@@UBEPAVPObject@@XZ @4001 NONAME ?Clone@?$PList@VPPluginService@@@@UBEPAVPObject@@XZ @3643 NONAME ?Clone@?$PList@VPSafeObject@@@@UBEPAVPObject@@XZ @7063 NONAME ?Clone@?$PList@VPSocket@@@@UBEPAVPObject@@XZ @1647 NONAME ?Clone@?$PList@VPString@@@@UBEPAVPObject@@XZ @1648 NONAME ?Clone@?$PList@VPThread@@@@UBEPAVPObject@@XZ @1649 NONAME ?Clone@?$PList@VPTimer@@@@UBEPAVPObject@@XZ @1650 NONAME ?Clone@?$POrdinalDictionary@VPString@@@@UBEPAVPObject@@XZ @1651 NONAME ?Clone@?$PSet@VPString@@@@UBEPAVPObject@@XZ @1652 NONAME ?Clone@?$PSortedList@VPString@@@@UBEPAVPObject@@XZ @1653 NONAME ?Clone@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPObject@@XZ @1654 NONAME ?Clone@?$PStringDictionary@VPString@@@@UBEPAVPObject@@XZ @1655 NONAME ?Clone@PBitArray@@UBEPAVPObject@@XZ @1656 NONAME ?Clone@PBYTEArray@@UBEPAVPObject@@XZ @1657 NONAME ?Clone@PCaselessString@@UBEPAVPObject@@XZ @1658 NONAME ?Clone@PCharArray@@UBEPAVPObject@@XZ @1659 NONAME ?Clone@PIPCacheKey@@UBEPAVPObject@@XZ @1660 NONAME ?Clone@PObject@@UBEPAV1@XZ @1661 NONAME ?Clone@POrdinalKey@@UBEPAVPObject@@XZ @1662 NONAME ?Clone@POrdinalToString@@UBEPAVPObject@@XZ @1663 NONAME ?Clone@PSortedStringList@@UBEPAVPObject@@XZ @1664 NONAME ?Clone@PString@@UBEPAVPObject@@XZ @1665 NONAME ?Clone@PStringArray@@UBEPAVPObject@@XZ @1666 NONAME ?Clone@PStringList@@UBEPAVPObject@@XZ @1667 NONAME ?Clone@PStringSet@@UBEPAVPObject@@XZ @1668 NONAME ?Clone@PStringToOrdinal@@UBEPAVPObject@@XZ @1669 NONAME ?Clone@PStringToString@@UBEPAVPObject@@XZ @1670 NONAME ?Clone@PTCPSocket@@UBEPAVPObject@@XZ @1671 NONAME ?Clone@PTime@@UBEPAVPObject@@XZ @1672 NONAME ?Clone@PTimeInterval@@UBEPAVPObject@@XZ @1673 NONAME ?Clone@Table@PHashTable@@UBEPAVPObject@@XZ @1674 NONAME ?CloneContents@PAbstractArray@@IAEXPBV1@@Z @1675 NONAME ?CloneContents@PAbstractList@@IAEXPBV1@@Z @1676 NONAME ?CloneContents@PAbstractSet@@IAEXPBV1@@Z @1677 NONAME ?CloneContents@PAbstractSortedList@@IAEXPBV1@@Z @1678 NONAME ?CloneContents@PArrayObjects@@IAEXPBV1@@Z @1679 NONAME ?CloneContents@PContainer@@IAEXPBV1@@Z @1680 NONAME ?CloneContents@PDirectory@@IAEXPBV1@@Z @1681 NONAME ?CloneContents@PHashTable@@IAEXPBV1@@Z @1682 NONAME ?Close@PChannel@@UAEHXZ @1683 NONAME ?Close@PConsoleChannel@@UAEHXZ @1684 NONAME ?Close@PDirectory@@UAEXXZ @7293 NONAME ?Close@PDynaLink@@UAEXXZ @1686 NONAME ?Close@PEthSocket@@UAEHXZ @1687 NONAME ?Close@PFile@@UAEHXZ @1689 NONAME ?Close@PICMPSocket@@UAEHXZ @1690 NONAME ?Close@PIndirectChannel@@UAEHXZ @1691 NONAME ?Close@PMultiMediaFile@@QAEHI@Z @1692 NONAME ?Close@PPipeChannel@@UAEHXZ @1693 NONAME ?Close@PRemoteConnection@@QAEXXZ @1694 NONAME ?Close@PSerialChannel@@UAEHXZ @1695 NONAME ?Close@PSocket@@UAEHXZ @1696 NONAME ?Close@PSoundChannelWin32@@UAEHXZ @3644 NONAME ?Close@PVideoChannel@@UAEHXZ @1698 NONAME ?Close@PVideoDevice@@UAEHXZ @1699 NONAME ?Close@PVideoInputDevice@@UAEHXZ @1700 NONAME ?Close@PVideoInputDevice_FakeVideo@@UAEHXZ @3794 NONAME ?Close@PVideoInputDevice_VideoForWindows@@UAEHXZ @3645 NONAME ?Close@PVideoOutputDevice@@UAEHXZ @3646 NONAME ?Close@PVideoOutputDevice_NULLOutput@@UAEHXZ @3795 NONAME ?Close@PVideoOutputDevice_Window@@UAEHXZ @7584 NONAME ?Close@PWin32PacketDriver@@QAEXXZ @1702 NONAME ?CloseVideoPlayer@PVideoChannel@@UAEXXZ @1703 NONAME ?CloseVideoReader@PVideoChannel@@UAEXXZ @1704 NONAME ?Compare@Address@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1705 NONAME ?Compare@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1706 NONAME ?Compare@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1707 NONAME ?Compare@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1708 NONAME ?Compare@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1709 NONAME ?Compare@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1710 NONAME ?Compare@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1711 NONAME ?Compare@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1712 NONAME ?Compare@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1713 NONAME ?Compare@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1714 NONAME ?Compare@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1715 NONAME ?Compare@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1716 NONAME ?Compare@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1717 NONAME ?Compare@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1718 NONAME ?Compare@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1719 NONAME ?Compare@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1720 NONAME ?Compare@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1721 NONAME ?Compare@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1722 NONAME ?Compare@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1723 NONAME ?CompareObjectMemoryDirect@?$PArray@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1724 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWaveBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1725 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWin32PacketBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1726 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@D@@UBE?AW4Comparison@PObject@@ABV3@@Z @1727 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@E@@UBE?AW4Comparison@PObject@@ABV3@@Z @1728 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@F@@UBE?AW4Comparison@PObject@@ABV3@@Z @1729 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@G@@UBE?AW4Comparison@PObject@@ABV3@@Z @1730 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@H@@UBE?AW4Comparison@PObject@@ABV3@@Z @1731 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@I@@UBE?AW4Comparison@PObject@@ABV3@@Z @1732 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@J@@UBE?AW4Comparison@PObject@@ABV3@@Z @1733 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@K@@UBE?AW4Comparison@PObject@@ABV3@@Z @1734 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVElement@PHashTable@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1735 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVPObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1736 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1737 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1738 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1739 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5651 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1740 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPString@@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5570 NONAME ?CompareObjectMemoryDirect@?$PList@VInterfaceEntry@PIPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @7585 NONAME ?CompareObjectMemoryDirect@?$PList@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @4002 NONAME ?CompareObjectMemoryDirect@?$PList@VPNotifier@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @4003 NONAME ?CompareObjectMemoryDirect@?$PList@VPPluginService@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3648 NONAME ?CompareObjectMemoryDirect@?$PList@VPSafeObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @7064 NONAME ?CompareObjectMemoryDirect@?$PList@VPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1741 NONAME ?CompareObjectMemoryDirect@?$PList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1742 NONAME ?CompareObjectMemoryDirect@?$PList@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1743 NONAME ?CompareObjectMemoryDirect@?$PList@VPTimer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1744 NONAME ?CompareObjectMemoryDirect@?$POrdinalDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1745 NONAME ?CompareObjectMemoryDirect@?$PSet@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1746 NONAME ?CompareObjectMemoryDirect@?$PSortedList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1747 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPOrdinalKey@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1748 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1749 NONAME ?CompareObjectMemoryDirect@CMCDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1750 NONAME ?CompareObjectMemoryDirect@HouseKeepingThread@PProcess@@UBE?AW4Comparison@PObject@@ABV4@@Z @1751 NONAME ?CompareObjectMemoryDirect@InterfaceEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1752 NONAME ?CompareObjectMemoryDirect@MAPIDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1753 NONAME ?CompareObjectMemoryDirect@Nest@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV4@@Z @1754 NONAME ?CompareObjectMemoryDirect@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1755 NONAME ?CompareObjectMemoryDirect@PAbstractDictionary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1756 NONAME ?CompareObjectMemoryDirect@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1757 NONAME ?CompareObjectMemoryDirect@PAbstractSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1758 NONAME ?CompareObjectMemoryDirect@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1759 NONAME ?CompareObjectMemoryDirect@PArgList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1760 NONAME ?CompareObjectMemoryDirect@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1761 NONAME ?CompareObjectMemoryDirect@PBitArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1762 NONAME ?CompareObjectMemoryDirect@PBYTEArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1763 NONAME ?CompareObjectMemoryDirect@PCaselessString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1764 NONAME ?CompareObjectMemoryDirect@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1765 NONAME ?CompareObjectMemoryDirect@PCharArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1766 NONAME ?CompareObjectMemoryDirect@PCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1767 NONAME ?CompareObjectMemoryDirect@PColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1768 NONAME ?CompareObjectMemoryDirect@PColourConverterRegistration@@UBE?AW4Comparison@PObject@@ABV3@@Z @1769 NONAME ?CompareObjectMemoryDirect@PCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1770 NONAME ?CompareObjectMemoryDirect@PConfig@@UBE?AW4Comparison@PObject@@ABV3@@Z @1771 NONAME ?CompareObjectMemoryDirect@PConfigArgs@@UBE?AW4Comparison@PObject@@ABV3@@Z @1772 NONAME ?CompareObjectMemoryDirect@PConsoleChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1773 NONAME ?CompareObjectMemoryDirect@PContainer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1774 NONAME ?CompareObjectMemoryDirect@PCriticalSection@@UBE?AW4Comparison@PObject@@ABV3@@Z @5534 NONAME ?CompareObjectMemoryDirect@PDirectory@@UBE?AW4Comparison@PObject@@ABV3@@Z @1775 NONAME ?CompareObjectMemoryDirect@PDynaLink@@UBE?AW4Comparison@PObject@@ABV3@@Z @1776 NONAME ?CompareObjectMemoryDirect@PEthSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1777 NONAME ?CompareObjectMemoryDirect@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1779 NONAME ?CompareObjectMemoryDirect@PFileInfo@@UBE?AW4Comparison@PObject@@ABV3@@Z @1780 NONAME ?CompareObjectMemoryDirect@PFilePath@@UBE?AW4Comparison@PObject@@ABV3@@Z @1781 NONAME ?CompareObjectMemoryDirect@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1782 NONAME ?CompareObjectMemoryDirect@PICMPDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1783 NONAME ?CompareObjectMemoryDirect@PICMPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1784 NONAME ?CompareObjectMemoryDirect@PImageDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1785 NONAME ?CompareObjectMemoryDirect@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1786 NONAME ?CompareObjectMemoryDirect@PIntCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1787 NONAME ?CompareObjectMemoryDirect@PIPCacheData@@UBE?AW4Comparison@PObject@@ABV3@@Z @1788 NONAME ?CompareObjectMemoryDirect@PIPCacheKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1789 NONAME ?CompareObjectMemoryDirect@PIPDatagramSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1790 NONAME ?CompareObjectMemoryDirect@PIPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1791 NONAME ?CompareObjectMemoryDirect@PIPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1792 NONAME ?CompareObjectMemoryDirect@PluginLoaderStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @5873 NONAME ?CompareObjectMemoryDirect@PMail@@UBE?AW4Comparison@PObject@@ABV3@@Z @1793 NONAME ?CompareObjectMemoryDirect@PMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1794 NONAME ?CompareObjectMemoryDirect@PNotifier@@UBE?AW4Comparison@PObject@@ABV3@@Z @1795 NONAME ?CompareObjectMemoryDirect@PNotifierFunction@@UBE?AW4Comparison@PObject@@ABV3@@Z @1796 NONAME ?CompareObjectMemoryDirect@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1797 NONAME ?CompareObjectMemoryDirect@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1798 NONAME ?CompareObjectMemoryDirect@POrdinalToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1799 NONAME ?CompareObjectMemoryDirect@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1800 NONAME ?CompareObjectMemoryDirect@PPluginManager@@UBE?AW4Comparison@PObject@@ABV3@@Z @3649 NONAME ?CompareObjectMemoryDirect@PPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @5652 NONAME ?CompareObjectMemoryDirect@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1801 NONAME ?CompareObjectMemoryDirect@PProcessStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @5874 NONAME ?CompareObjectMemoryDirect@PQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @3550 NONAME ?CompareObjectMemoryDirect@PRASDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1802 NONAME ?CompareObjectMemoryDirect@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1803 NONAME ?CompareObjectMemoryDirect@PRegularExpression@@UBE?AW4Comparison@PObject@@ABV3@@Z @1804 NONAME ?CompareObjectMemoryDirect@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1805 NONAME ?CompareObjectMemoryDirect@PSafeCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1806 NONAME ?CompareObjectMemoryDirect@PSafeObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @1807 NONAME ?CompareObjectMemoryDirect@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1808 NONAME ?CompareObjectMemoryDirect@PSemaphore@@UBE?AW4Comparison@PObject@@ABV3@@Z @1809 NONAME ?CompareObjectMemoryDirect@PSerialChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1810 NONAME ?CompareObjectMemoryDirect@PServiceProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1811 NONAME ?CompareObjectMemoryDirect@PSimpleThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1812 NONAME ?CompareObjectMemoryDirect@PSmartObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @1813 NONAME ?CompareObjectMemoryDirect@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1814 NONAME ?CompareObjectMemoryDirect@PSmartPtrInspector@@UBE?AW4Comparison@PObject@@ABV3@@Z @5653 NONAME ?CompareObjectMemoryDirect@PSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1815 NONAME ?CompareObjectMemoryDirect@PSortedStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1816 NONAME ?CompareObjectMemoryDirect@PSound@@UBE?AW4Comparison@PObject@@ABV3@@Z @1817 NONAME ?CompareObjectMemoryDirect@PSoundChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1818 NONAME ?CompareObjectMemoryDirect@PSPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1819 NONAME ?CompareObjectMemoryDirect@PStandardColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1820 NONAME ?CompareObjectMemoryDirect@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1821 NONAME ?CompareObjectMemoryDirect@PStringArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1822 NONAME ?CompareObjectMemoryDirect@PStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1823 NONAME ?CompareObjectMemoryDirect@PStringSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1824 NONAME ?CompareObjectMemoryDirect@PStringStream@@UBE?AW4Comparison@PObject@@ABV3@@Z @1825 NONAME ?CompareObjectMemoryDirect@PStringToOrdinal@@UBE?AW4Comparison@PObject@@ABV3@@Z @1826 NONAME ?CompareObjectMemoryDirect@PStringToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1827 NONAME ?CompareObjectMemoryDirect@PStructuredFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1828 NONAME ?CompareObjectMemoryDirect@PSyncPoint@@UBE?AW4Comparison@PObject@@ABV3@@Z @1829 NONAME ?CompareObjectMemoryDirect@PSystemLog@@UBE?AW4Comparison@PObject@@ABV3@@Z @1830 NONAME ?CompareObjectMemoryDirect@PTCPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1831 NONAME ?CompareObjectMemoryDirect@PTextFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1832 NONAME ?CompareObjectMemoryDirect@PThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1833 NONAME ?CompareObjectMemoryDirect@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1834 NONAME ?CompareObjectMemoryDirect@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1835 NONAME ?CompareObjectMemoryDirect@PTimer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1836 NONAME ?CompareObjectMemoryDirect@PTimerList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1837 NONAME ?CompareObjectMemoryDirect@PUDPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1838 NONAME ?CompareObjectMemoryDirect@PVideoChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1839 NONAME ?CompareObjectMemoryDirect@PVideoDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1840 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1841 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_FakeVideo@@UBE?AW4Comparison@PObject@@ABV3@@Z @3796 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_VideoForWindows@@UBE?AW4Comparison@PObject@@ABV3@@Z @3650 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1843 NONAME ?CompareObjectMemoryDirect@PVideoOutputDeviceRGB@@UBE?AW4Comparison@PObject@@ABV3@@Z @7586 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_NULLOutput@@UBE?AW4Comparison@PObject@@ABV3@@Z @3797 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_Window@@UBE?AW4Comparison@PObject@@ABV3@@Z @7587 NONAME ?CompareObjectMemoryDirect@PWaveBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1847 NONAME ?CompareObjectMemoryDirect@PWaveFormat@@UBE?AW4Comparison@PObject@@ABV3@@Z @1848 NONAME ?CompareObjectMemoryDirect@PWin32PacketBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1849 NONAME ?CompareObjectMemoryDirect@PWin32SnmpLibrary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1850 NONAME ?CompareObjectMemoryDirect@PWinQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @3880 NONAME ?CompareObjectMemoryDirect@PWinSock@@UBE?AW4Comparison@PObject@@ABV3@@Z @1851 NONAME ?CompareObjectMemoryDirect@RouteEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1852 NONAME ?CompareObjectMemoryDirect@SelectList@PSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1853 NONAME ?CompareObjectMemoryDirect@Table@PHashTable@@UBE?AW4Comparison@PObject@@ABV4@@Z @1854 NONAME ?CompareObjectMemoryDirect@WinSNMPLoader@@UBE?AW4Comparison@PObject@@ABV3@@Z @6207 NONAME ?Compile@PRegularExpression@@QAEHABVPString@@H@Z @1855 NONAME ?Compile@PRegularExpression@@QAEHPBDH@Z @1856 NONAME ?CompleteIO@PWin32PacketDriver@@QAEHAAKAAVPWin32Overlapped@@@Z @1857 NONAME ?Concatenate@PAbstractArray@@QAEHABV1@@Z @1858 NONAME ?Concatenate@PBitArray@@QAEHABV1@@Z @1859 NONAME ?Condition@PIntCondMutex@@UAEHXZ @1860 NONAME ?Connect@PEthSocket@@UAEHABVPString@@@Z @1861 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@0@Z @1862 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@@Z @1863 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@G0@Z @1864 NONAME ?Connect@PIPSocket@@UAEHABVPString@@@Z @1865 NONAME ?Connect@PIPSocket@@UAEHGABVAddress@1@@Z @1866 NONAME ?Connect@PIPXSocket@@UAEHABVAddress@1@@Z @1867 NONAME ?Connect@PIPXSocket@@UAEHABVPString@@@Z @1868 NONAME ?Connect@PSocket@@UAEHABVPString@@@Z @1869 NONAME ?Connect@PUDPSocket@@UAEHABVPString@@@Z @1870 NONAME ?construct@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAPAVPPluginModuleManager@@ABQAV3@@Z @5875 NONAME ?construct@?$allocator@VPString@@@std@@QAEXPAVPString@@ABV3@@Z @5876 NONAME ?Construct@PChannel@@AAEXXZ @1871 NONAME ?Construct@PConfig@@AAEXABVPFilePath@@@Z @1872 NONAME ?Construct@PConfig@@AAEXW4Source@1@ABVPString@@1@Z @1873 NONAME ?Construct@PDirectory@@IAEXXZ @1874 NONAME ?Construct@PMail@@IAEXXZ @1875 NONAME ?Construct@PProcess@@AAEXXZ @1876 NONAME ?Construct@PRemoteConnection@@AAEXXZ @1877 NONAME ?Construct@PSerialChannel@@AAEXXZ @1878 NONAME ?Construct@PSoundChannelWin32@@QAEXXZ @3651 NONAME ?Construct@PTimer@@AAEXXZ @1880 NONAME ?Construct@P_fd_set@@AAEXXZ @1881 NONAME ?Contains@?$PDictionary@VPOrdinalKey@@VPPointer@@@@QBEHABVPOrdinalKey@@@Z @5654 NONAME ?Contains@?$PStringDictionary@VPString@@@@QBEHABVPString@@@Z @7588 NONAME ?Control@NT_ServiceManager@@AAEHPAVPServiceProcess@@K@Z @1882 NONAME ?ControlEntry@PServiceProcess@@AAEXK@Z @1883 NONAME ?controlledLoadDSCP@PQoS@@2DA @3552 NONAME ?Convert@PSynonymColour@@UAEHPBEPAEPAH@Z @1884 NONAME ?Convert@P_BGR24_RGB24@@UAEHPBEPAEPAH@Z @7589 NONAME ?Convert@P_BGR24_RGB32@@UAEHPBEPAEPAH@Z @7590 NONAME ?Convert@P_BGR24_YUV420P@@UAEHPBEPAEPAH@Z @3798 NONAME ?Convert@P_BGR32_RGB24@@UAEHPBEPAEPAH@Z @7591 NONAME ?Convert@P_BGR32_RGB32@@UAEHPBEPAEPAH@Z @7592 NONAME ?Convert@P_BGR32_YUV420P@@UAEHPBEPAEPAH@Z @3799 NONAME ?Convert@P_Grey_YUV420P@@UAEHPBEPAEPAH@Z @1886 NONAME ?Convert@P_RGB24_BGR24@@UAEHPBEPAEPAH@Z @7593 NONAME ?Convert@P_RGB24_BGR32@@UAEHPBEPAEPAH@Z @7594 NONAME ?Convert@P_RGB24_RGB32@@UAEHPBEPAEPAH@Z @1888 NONAME ?Convert@P_RGB24_YUV420P@@UAEHPBEPAEPAH@Z @1889 NONAME ?Convert@P_RGB32_BGR24@@UAEHPBEPAEPAH@Z @7595 NONAME ?Convert@P_RGB32_BGR32@@UAEHPBEPAEPAH@Z @7596 NONAME ?Convert@P_RGB32_RGB24@@UAEHPBEPAEPAH@Z @1891 NONAME ?Convert@P_RGB32_YUV420P@@UAEHPBEPAEPAH@Z @1892 NONAME ?Convert@P_SBGGR8_RGB24@@UAEHPBEPAEPAH@Z @7294 NONAME ?Convert@P_SBGGR8_YUV420P@@UAEHPBEPAEPAH@Z @7597 NONAME ?Convert@P_UYV444_YUV420P@@UAEHPBEPAEPAH@Z @1893 NONAME ?Convert@P_UYVY422_YUV420P@@UAEHPBEPAEPAH@Z @1894 NONAME ?Convert@P_YUV411P_YUV420P@@UAEHPBEPAEPAH@Z @1895 NONAME ?Convert@P_YUV420P_BGR24@@UAEHPBEPAEPAH@Z @1896 NONAME ?Convert@P_YUV420P_BGR32@@UAEHPBEPAEPAH@Z @3800 NONAME ?Convert@P_YUV420P_RGB24@@UAEHPBEPAEPAH@Z @1898 NONAME ?Convert@P_YUV420P_RGB32@@UAEHPBEPAEPAH@Z @1900 NONAME ?Convert@P_YUV420P_YUV411P@@UAEHPBEPAEPAH@Z @1902 NONAME ?Convert@P_YUV422_YUV420P@@UAEHPBEPAEPAH@Z @1903 NONAME ?Convert@P_YUV422_YUV422@@UAEHPBEPAEPAH@Z @1904 NONAME ?ConvertInPlace@PColourConverter@@UAEHPAEPAHH@Z @1905 NONAME ?ConvertOSError@PChannel@@MAEHHW4ErrorGroup@1@@Z @1906 NONAME ?ConvertOSError@PChannel@@SAHHAAW4Errors@1@AAH@Z @1907 NONAME ?ConvertOSError@PSocket@@KAHHAAW4Errors@PChannel@@AAH@Z @1908 NONAME ?ConvertOSError@PSocket@@MAEHHW4ErrorGroup@PChannel@@@Z @1909 NONAME ?Copy@PFile@@QAEHABVPFilePath@@H@Z @1910 NONAME ?Copy@PFile@@SAHABVPFilePath@@0H@Z @1911 NONAME ?copy@std@@YAPAPAVPPluginModuleManager@@PAPAV2@00@Z @6208 NONAME ?CopyContents@PAbstractArray@@IAEXABV1@@Z @1912 NONAME ?CopyContents@PAbstractList@@IAEXABV1@@Z @1913 NONAME ?CopyContents@PAbstractSet@@IAEXABV1@@Z @1914 NONAME ?CopyContents@PAbstractSortedList@@IAEXABV1@@Z @1915 NONAME ?CopyContents@PArrayObjects@@IAEXABV1@@Z @1916 NONAME ?CopyContents@PContainer@@IAEXABV1@@Z @1917 NONAME ?CopyContents@PDirectory@@IAEXABV1@@Z @1918 NONAME ?CopyContents@PHashTable@@IAEXABV1@@Z @1919 NONAME ?copy_backward@std@@YAPAPAVPPluginModuleManager@@PAPAV2@00@Z @5877 NONAME ?copy_backward@std@@YAPAVPString@@PAV2@00@Z @5878 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7065 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7066 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7067 NONAME ?Create@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7068 NONAME ?Create@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7069 NONAME ?Create@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1920 NONAME ?Create@PColourConverter@@SAPAV1@ABVPString@@0II@Z @1921 NONAME ?Create@PDirectory@@QBEHH@Z @1922 NONAME ?Create@PDirectory@@SAHABVPString@@H@Z @1923 NONAME ?Create@PSynonymColourRegistration@@UBEPAVPColourConverter@@II@Z @1924 NONAME ?Create@PThread@@SAPAV1@ABVPNotifier@@HW4AutoDeleteFlag@1@W4Priority@1@ABVPString@@H@Z @1925 NONAME ?Create@PWin32PacketDriver@@SAPAV1@XZ @1926 NONAME ?Create@P_BGR24_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @7598 NONAME ?Create@P_BGR24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @7599 NONAME ?Create@P_BGR24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @3801 NONAME ?Create@P_BGR32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @7600 NONAME ?Create@P_BGR32_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @7601 NONAME ?Create@P_BGR32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @3802 NONAME ?Create@P_Grey_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1928 NONAME ?Create@P_RGB24_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @7602 NONAME ?Create@P_RGB24_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @7603 NONAME ?Create@P_RGB24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1930 NONAME ?Create@P_RGB24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1931 NONAME ?Create@P_RGB32_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @7604 NONAME ?Create@P_RGB32_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @7605 NONAME ?Create@P_RGB32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1933 NONAME ?Create@P_RGB32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1934 NONAME ?Create@P_SBGGR8_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @7295 NONAME ?Create@P_SBGGR8_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @7606 NONAME ?Create@P_UYV444_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1935 NONAME ?Create@P_UYVY422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1936 NONAME ?Create@P_YUV411P_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1937 NONAME ?Create@P_YUV420P_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @1939 NONAME ?Create@P_YUV420P_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @3803 NONAME ?Create@P_YUV420P_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1941 NONAME ?Create@P_YUV420P_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1943 NONAME ?Create@P_YUV420P_YUV411P_Registration@@UBEPAVPColourConverter@@II@Z @1944 NONAME ?Create@P_YUV422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1945 NONAME ?Create@P_YUV422_YUV422_Registration@@UBEPAVPColourConverter@@II@Z @1946 NONAME ?Create@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1947 NONAME ?Create@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @7070 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @7071 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @7072 NONAME ?Create@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7073 NONAME ?Create@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7074 NONAME ?Create@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @7075 NONAME ?Create@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @7076 NONAME ?Create@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @7077 NONAME ?CreateChannel@PSoundChannel@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3652 NONAME ?CreateChannelByName@PSoundChannel@@SAPAV1@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @7607 NONAME ?CreateChunk@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @1948 NONAME ?CreateControlWindow@PServiceProcess@@AAEHH@Z @1949 NONAME ?CreateDevice@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3653 NONAME ?CreateDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3804 NONAME ?CreateDeviceByName@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3966 NONAME ?CreateDeviceByName@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @7608 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPSoundChannel@@@@UAEXABVPString@@@Z @7078 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAEXABVPString@@@Z @7079 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAEXABVPString@@@Z @7080 NONAME ?CreateFullPath@PDirectory@@SA?AVPString@@ABV2@H@Z @1950 NONAME ?CreateInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7081 NONAME ?CreateInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@SAPAVPPluginModuleManager@@ABVPString@@@Z @6455 NONAME ?CreateInstance@?$PFactory@VPProcessStartup@@VPString@@@@SAPAVPProcessStartup@@ABVPString@@@Z @6456 NONAME ?CreateInstance@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBEPAVPObject@@H@Z @7609 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBEPAVPObject@@H@Z @7610 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBEPAVPObject@@H@Z @7611 NONAME ?CreateInstance@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBEPAVPObject@@H@Z @7612 NONAME ?CreateInstance@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBEPAVPObject@@H@Z @7613 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7082 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @7083 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @7084 NONAME ?CreateInstance_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7085 NONAME ?CreateInstance_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @6459 NONAME ?CreateInstance_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @6460 NONAME ?CreateOpenedChannel@PSoundChannel@@SAPAV1@ABVPString@@0W4Directions@1@IIIPAVPPluginManager@@@Z @7614 NONAME ?CreateOpenedDevice@PVideoInputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @3655 NONAME ?CreateOpenedDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @3805 NONAME ?CreatePluginsDevice@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @7615 NONAME ?CreatePluginsDeviceByName@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @7616 NONAME ?CreateWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@ABVPWaveFormat@@K@Z @1951 NONAME ?Current@PProcess@@SAAAV1@XZ @1952 NONAME ?Current@PServiceProcess@@SAAAV1@XZ @1953 NONAME ?Current@PThread@@SAPAV1@XZ @1954 NONAME ?Current@PWin32SnmpLibrary@@SAAAV1@XZ @1955 NONAME ?Current@WinSNMPLoader@@QAEAAVPWin32SnmpLibrary@@XZ @6211 NONAME ?deallocate@?$allocator@PAVPFactoryBase@@@std@@QAEXPAXI@Z @6671 NONAME ?deallocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAXI@Z @5882 NONAME ?deallocate@?$allocator@PAVPProcessStartup@@@std@@QAEXPAXI@Z @5715 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAEXPAXI@Z @7086 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAEXPAXI@Z @6672 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAEXPAXI@Z @6673 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAEXPAXI@Z @7087 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAEXPAXI@Z @7088 NONAME ?deallocate@?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAEXPAXI@Z @7089 NONAME ?deallocate@?$allocator@VPString@@@std@@QAEXPAXI@Z @5885 NONAME ?DebugOutput@PServiceProcess@@AAEXPBD@Z @1957 NONAME ?Delete@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1958 NONAME ?Delete@PNotifyIconData@@QAEXXZ @1959 NONAME ?Delete@PString@@QAEXHH@Z @1960 NONAME ?Delete@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1961 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@0@Z @3926 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@@Z @3927 NONAME ?DeleteKey@RegistryKey@@QAEHABVPString@@@Z @1964 NONAME ?DeleteMessage@PMail@@QAEHABVPString@@@Z @1965 NONAME ?DeleteObject@PSafeCollection@@UBEXPAVPObject@@@Z @7090 NONAME ?DeleteObjectsTimeout@PSafeCollection@@MAEXAAVPTimer@@H@Z @1966 NONAME ?DeleteObjectsToBeRemoved@PSafeCollection@@UAEHXZ @7091 NONAME ?DeleteSection@PConfig@@UAEXABVPString@@@Z @3928 NONAME ?DeleteSection@PConfig@@UAEXXZ @3929 NONAME ?DeleteSubTrees@PAbstractSortedList@@IAEXPAUElement@1@H@Z @3969 NONAME ?DeleteValue@RegistryKey@@QAEHABVPString@@@Z @1971 NONAME ?Descend@PMultiMediaFile@@QAEHIAAU_MMCKINFO@@PAU2@@Z @1972 NONAME ?destroy@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAPAVPPluginModuleManager@@@Z @5886 NONAME ?destroy@?$allocator@VPString@@@std@@QAEXPAVPString@@@Z @5887 NONAME ?DestroyContents@PAbstractArray@@MAEXXZ @1973 NONAME ?DestroyContents@PAbstractList@@MAEXXZ @1974 NONAME ?DestroyContents@PAbstractSet@@MAEXXZ @1975 NONAME ?DestroyContents@PAbstractSortedList@@MAEXXZ @1976 NONAME ?DestroyContents@PArrayObjects@@MAEXXZ @1977 NONAME ?DestroyContents@PDirectory@@MAEXXZ @1978 NONAME ?DestroyContents@PHashTable@@MAEXXZ @1979 NONAME ?DestroyContents@Table@PHashTable@@UAEXXZ @1980 NONAME ?Destruct@PContainer@@IAEXXZ @1981 NONAME ?Destruct@PDirectory@@IAEXXZ @7296 NONAME ?disableQoS@PUDPSocket@@1HA @7617 NONAME ?DisallowDeleteObjects@PCollection@@QAEXXZ @1982 NONAME ?DisplayRawData@PVideoChannel@@QAEHPAX@Z @1983 NONAME ?Draw@PVideoOutputDevice_Window@@IAEXPAUHDC__@@@Z @7618 NONAME ?Empty@PString@@SA?AV1@XZ @3967 NONAME ?EnableAccess@PVideoChannel@@QAEXXZ @1989 NONAME ?EnableQoS@PUDPSocket@@SAXXZ @7619 NONAME ?end@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@XZ @6674 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@2@XZ @7092 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@2@XZ @6675 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@2@XZ @6676 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@2@XZ @7093 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@2@XZ @7094 NONAME ?end@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@2@XZ @7095 NONAME ?end@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@XZ @5890 NONAME ?end@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBEPBUSlice@PChannel@@XZ @7620 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEPAVPString@@XZ @5891 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEPBVPString@@XZ @5892 NONAME ?end@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@XZ @6677 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@XZ @5893 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7096 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6678 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @6679 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7097 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7098 NONAME ?end@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@XZ @7099 NONAME ?End@PTrace@@SAAAVostream@@AAV2@@Z @1990 NONAME ?EndFrame@PVideoOutputDevice_NULLOutput@@UAEHXZ @3806 NONAME ?EndNest@PReadWriteMutex@@IAEXXZ @1993 NONAME ?EndRead@PReadWriteMutex@@QAEXXZ @1994 NONAME ?EndWrite@PReadWriteMutex@@QAEXXZ @1995 NONAME ?Enter@PCriticalSection@@QAEXXZ @5535 NONAME ?EnterSafetyMode@PSafePtrBase@@IAEHW4EnterSafetyModeOption@1@@Z @1996 NONAME ?EnumInterfaces@PEthSocket@@QAEHHAAVPString@@@Z @1997 NONAME ?EnumInterfaces@PWin32PacketSYS@@UAEHHAAVPString@@@Z @1998 NONAME ?EnumInterfaces@PWin32PacketVxD@@UAEHHAAVPString@@@Z @1999 NONAME ?EnumIpAddress@PEthSocket@@QAEHHAAVAddress@PIPSocket@@0@Z @2000 NONAME ?EnumIpAddress@PWin32PacketSYS@@UAEHHAAVAddress@PIPSocket@@0@Z @2001 NONAME ?EnumIpAddress@PWin32PacketVxD@@UAEHHAAVAddress@PIPSocket@@0@Z @2002 NONAME ?EnumKey@RegistryKey@@QAEHHAAVPString@@@Z @2003 NONAME ?EnumValue@RegistryKey@@QAEHHAAVPString@@@Z @2004 NONAME ?equal_range@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@V123@@2@ABVPString@@@Z @7621 NONAME ?equal_range@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@V123@@2@ABVPString@@@Z @7622 NONAME ?equal_range@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@V123@@2@ABVPString@@@Z @7623 NONAME ?erase@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@2@V342@@Z @5896 NONAME ?erase@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAEIABVPString@@@Z @7624 NONAME ?erase@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAEIABVPString@@@Z @7625 NONAME ?erase@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAEIABVPString@@@Z @7626 NONAME ?erase@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@PAPAV3@@Z @6212 NONAME ?erase@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@V312@0@Z @6680 NONAME ?erase@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@V312@@Z @6681 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@V312@0@Z @5897 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AViterator@12@V312@@Z @5898 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @7100 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @7101 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @6682 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @6683 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @6684 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @6685 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @7102 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @7103 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEIABVPString@@@Z @7627 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @7104 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @7105 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEIABVPString@@@Z @7628 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@0@Z @7106 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@V312@@Z @7107 NONAME ?erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEIABVPString@@@Z @7629 NONAME ?ErrorHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@HPBD@Z @3656 NONAME ?EscapeString@PRegularExpression@@SA?AVPString@@ABV2@@Z @2006 NONAME ?Exclude@PStringSet@@QAEXABVPString@@@Z @2007 NONAME ?Execute@PPipeChannel@@QAEHXZ @2008 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAH1H@Z @2009 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAHH@Z @2010 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@1H@Z @2011 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@H@Z @2012 NONAME ?Execute@PRegularExpression@@QBEHPBDAAH1H@Z @2013 NONAME ?Execute@PRegularExpression@@QBEHPBDAAHH@Z @2014 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@1H@Z @2015 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@H@Z @2016 NONAME ?Exists@PDirectory@@QBEHXZ @2017 NONAME ?Exists@PDirectory@@SAHABVPString@@@Z @2018 NONAME ?Exists@PFile@@QBEHXZ @2019 NONAME ?Exists@PFile@@SAHABVPFilePath@@@Z @2020 NONAME ?ExitSafetyMode@PSafePtrBase@@IAEXW4ExitSafetyModeOption@1@@Z @2021 NONAME ?factory@?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@A @7108 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7109 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7110 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @7111 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @7630 NONAME ?fill@std@@YAXPAPAVPPluginModuleManager@@0ABQAV2@@Z @5903 NONAME ?fill@std@@YAXPAVPString@@0ABV2@@Z @5904 NONAME ?FillRect@PVideoInputDevice_FakeVideo@@QAEXPAEHHHHHHH@Z @7631 NONAME ?Filtered@PDirectory@@IAEHXZ @2023 NONAME ?find@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6686 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@2@ABVPString@@@Z @7112 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@2@ABVPString@@@Z @6687 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@2@ABVPString@@@Z @6688 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@2@ABVPString@@@Z @7113 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@2@ABVPString@@@Z @7114 NONAME ?find@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE?AViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@2@ABVPString@@@Z @7115 NONAME ?find@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6689 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7116 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6690 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6691 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7117 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7118 NONAME ?find@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7119 NONAME ?Find@PString@@QBEHABV1@H@Z @2024 NONAME ?Find@PString@@QBEHDH@Z @2025 NONAME ?Find@PString@@QBEHPBDH@Z @2026 NONAME ?FindLast@PString@@QBEHABV1@H@Z @2027 NONAME ?FindLast@PString@@QBEHDH@Z @2028 NONAME ?FindLast@PString@@QBEHPBDH@Z @2029 NONAME ?FindLetter@PVideoInputDevice_FakeVideo@@QAEPAUOneVFakeLetterData@@D@Z @3808 NONAME ?FindOneOf@PString@@QBEHABV1@H@Z @2031 NONAME ?FindOneOf@PString@@QBEHPBDH@Z @2032 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@AAH1HH@Z @2033 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@H@Z @2034 NONAME ?Fire@PNotifierList@@QAEHAAVPObject@@H@Z @5655 NONAME ?FrameComplete@PVideoOutputDevice_Window@@UAEHXZ @7632 NONAME ?FromString@Address@PIPSocket@@QAEHABVPString@@@Z @2035 NONAME ?GetAddress@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @7633 NONAME ?GetAddress@PEthSocket@@QAEHAATAddress@1@@Z @2036 NONAME ?GetAddress@PRemoteConnection@@QAE?AVPString@@XZ @2037 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@ABVPString@@@Z @3930 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@XZ @3931 NONAME ?GetAny6@Address@PIPSocket@@SAABV12@XZ @3881 NONAME ?GetArguments@PProcess@@QAEAAVPArgList@@XZ @2041 NONAME ?GetAt@?$PBaseArray@D@@QBEDH@Z @2042 NONAME ?GetAt@?$PBaseArray@E@@QBEEH@Z @2043 NONAME ?GetAt@?$PBaseArray@F@@QBEFH@Z @2044 NONAME ?GetAt@?$PBaseArray@G@@QBEGH@Z @2045 NONAME ?GetAt@?$PBaseArray@H@@QBEHH@Z @2046 NONAME ?GetAt@?$PBaseArray@I@@QBEIH@Z @2047 NONAME ?GetAt@?$PBaseArray@J@@QBEJH@Z @2048 NONAME ?GetAt@?$PBaseArray@K@@QBEKH@Z @2049 NONAME ?GetAt@?$PBaseArray@PAVElement@PHashTable@@@@QBEPAVElement@PHashTable@@H@Z @2050 NONAME ?GetAt@?$PBaseArray@PAVPObject@@@@QBEPAVPObject@@H@Z @2051 NONAME ?GetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPCaselessString@@@Z @2052 NONAME ?GetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @2053 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @2054 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPPointer@@ABVPOrdinalKey@@@Z @5656 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPThread@@ABVPOrdinalKey@@@Z @2055 NONAME ?GetAt@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPDynaLink@@ABVPString@@@Z @5571 NONAME ?GetAt@?$POrdinalDictionary@VPString@@@@UBEPAVPOrdinalKey@@ABVPString@@@Z @2056 NONAME ?GetAt@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPString@@ABVPOrdinalKey@@@Z @2057 NONAME ?GetAt@?$PStringDictionary@VPString@@@@UBEPAVPString@@ABV2@@Z @2058 NONAME ?GetAt@PAbstractDictionary@@UBEPAVPObject@@H@Z @2059 NONAME ?GetAt@PAbstractList@@UBEPAVPObject@@H@Z @2060 NONAME ?GetAt@PAbstractSet@@UBEPAVPObject@@H@Z @2061 NONAME ?GetAt@PAbstractSortedList@@UBEPAVPObject@@H@Z @2062 NONAME ?GetAt@PArrayObjects@@UBEPAVPObject@@H@Z @2063 NONAME ?GetAt@PBitArray@@QBEHH@Z @2064 NONAME ?GetAvailableNames@PRemoteConnection@@SA?AVPStringArray@@XZ @2065 NONAME ?GetBaseReadChannel@PChannel@@UBEPAV1@XZ @2066 NONAME ?GetBaseReadChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @2067 NONAME ?GetBaseWriteChannel@PChannel@@UBEPAV1@XZ @2068 NONAME ?GetBaseWriteChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @2069 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@0H@Z @3932 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@H@Z @3933 NONAME ?GetBrightness@PVideoDevice@@UAEHXZ @2072 NONAME ?GetBroadcast@Address@PIPSocket@@SAABV12@XZ @2073 NONAME ?GetBuffers@PSoundChannel@@UAEHAAH0@Z @3657 NONAME ?GetBuffers@PSoundChannelWin32@@UAEHAAH0@Z @3658 NONAME ?GetChannel@PVideoDevice@@UBEHXZ @2075 NONAME ?GetChannels@PSound@@QBEIXZ @2076 NONAME ?GetChannels@PSoundChannel@@UBEIXZ @3659 NONAME ?GetChannels@PSoundChannelWin32@@UBEIXZ @3660 NONAME ?GetClass@?$PArray@VPString@@@@UBEPBDI@Z @5380 NONAME ?GetClass@?$PArray@VPWaveBuffer@@@@UBEPBDI@Z @5381 NONAME ?GetClass@?$PArray@VPWin32PacketBuffer@@@@UBEPBDI@Z @5382 NONAME ?GetClass@?$PBaseArray@D@@UBEPBDI@Z @5383 NONAME ?GetClass@?$PBaseArray@E@@UBEPBDI@Z @5384 NONAME ?GetClass@?$PBaseArray@F@@UBEPBDI@Z @5385 NONAME ?GetClass@?$PBaseArray@G@@UBEPBDI@Z @5386 NONAME ?GetClass@?$PBaseArray@H@@UBEPBDI@Z @5387 NONAME ?GetClass@?$PBaseArray@I@@UBEPBDI@Z @5388 NONAME ?GetClass@?$PBaseArray@J@@UBEPBDI@Z @5389 NONAME ?GetClass@?$PBaseArray@K@@UBEPBDI@Z @5390 NONAME ?GetClass@?$PBaseArray@PAVElement@PHashTable@@@@UBEPBDI@Z @5391 NONAME ?GetClass@?$PBaseArray@PAVPObject@@@@UBEPBDI@Z @5392 NONAME ?GetClass@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPBDI@Z @5393 NONAME ?GetClass@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPBDI@Z @5394 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPBDI@Z @5395 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPBDI@Z @5657 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPBDI@Z @5396 NONAME ?GetClass@?$PDictionary@VPString@@VPDynaLink@@@@UBEPBDI@Z @5572 NONAME ?GetClass@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPBDI@Z @7634 NONAME ?GetClass@?$PList@VPDynaLink@@@@UBEPBDI@Z @5397 NONAME ?GetClass@?$PList@VPNotifier@@@@UBEPBDI@Z @5398 NONAME ?GetClass@?$PList@VPPluginService@@@@UBEPBDI@Z @5399 NONAME ?GetClass@?$PList@VPSafeObject@@@@UBEPBDI@Z @7120 NONAME ?GetClass@?$PList@VPSocket@@@@UBEPBDI@Z @5400 NONAME ?GetClass@?$PList@VPString@@@@UBEPBDI@Z @5401 NONAME ?GetClass@?$PList@VPThread@@@@UBEPBDI@Z @5402 NONAME ?GetClass@?$PList@VPTimer@@@@UBEPBDI@Z @5403 NONAME ?GetClass@?$POrdinalDictionary@VPString@@@@UBEPBDI@Z @5404 NONAME ?GetClass@?$PSet@VPString@@@@UBEPBDI@Z @5405 NONAME ?GetClass@?$PSortedList@VPString@@@@UBEPBDI@Z @5406 NONAME ?GetClass@?$PStringDictionary@VPOrdinalKey@@@@UBEPBDI@Z @5407 NONAME ?GetClass@?$PStringDictionary@VPString@@@@UBEPBDI@Z @5408 NONAME ?GetClass@CMCDLL@PMail@@UBEPBDI@Z @5409 NONAME ?GetClass@HouseKeepingThread@PProcess@@UBEPBDI@Z @5410 NONAME ?GetClass@InterfaceEntry@PIPSocket@@UBEPBDI@Z @5411 NONAME ?GetClass@MAPIDLL@PMail@@UBEPBDI@Z @5412 NONAME ?GetClass@Nest@PReadWriteMutex@@UBEPBDI@Z @5413 NONAME ?GetClass@PAbstractArray@@UBEPBDI@Z @5414 NONAME ?GetClass@PAbstractDictionary@@UBEPBDI@Z @5415 NONAME ?GetClass@PAbstractList@@UBEPBDI@Z @5416 NONAME ?GetClass@PAbstractSet@@UBEPBDI@Z @5417 NONAME ?GetClass@PAbstractSortedList@@UBEPBDI@Z @5418 NONAME ?GetClass@PArgList@@UBEPBDI@Z @5419 NONAME ?GetClass@PArrayObjects@@UBEPBDI@Z @5420 NONAME ?GetClass@PBitArray@@UBEPBDI@Z @5421 NONAME ?GetClass@PBYTEArray@@UBEPBDI@Z @5422 NONAME ?GetClass@PCaselessString@@UBEPBDI@Z @5423 NONAME ?GetClass@PChannel@@UBEPBDI@Z @5424 NONAME ?GetClass@PCharArray@@UBEPBDI@Z @5425 NONAME ?GetClass@PCollection@@UBEPBDI@Z @5426 NONAME ?GetClass@PColourConverter@@UBEPBDI@Z @5427 NONAME ?GetClass@PColourConverterRegistration@@UBEPBDI@Z @5428 NONAME ?GetClass@PCondMutex@@UBEPBDI@Z @5429 NONAME ?GetClass@PConfig@@UBEPBDI@Z @5430 NONAME ?GetClass@PConfigArgs@@UBEPBDI@Z @5431 NONAME ?GetClass@PConsoleChannel@@UBEPBDI@Z @5432 NONAME ?GetClass@PContainer@@UBEPBDI@Z @5433 NONAME ?GetClass@PCriticalSection@@UBEPBDI@Z @5536 NONAME ?GetClass@PDirectory@@UBEPBDI@Z @5434 NONAME ?GetClass@PDynaLink@@UBEPBDI@Z @5435 NONAME ?GetClass@PEthSocket@@UBEPBDI@Z @5436 NONAME ?GetClass@PFile@@UBEPBDI@Z @5437 NONAME ?GetClass@PFileInfo@@UBEPBDI@Z @5438 NONAME ?GetClass@PFilePath@@UBEPBDI@Z @5439 NONAME ?GetClass@PHashTable@@UBEPBDI@Z @5440 NONAME ?GetClass@PICMPDLL@@UBEPBDI@Z @5441 NONAME ?GetClass@PICMPSocket@@UBEPBDI@Z @5442 NONAME ?GetClass@PImageDLL@@UBEPBDI@Z @5443 NONAME ?GetClass@PIndirectChannel@@UBEPBDI@Z @5444 NONAME ?GetClass@PIntCondMutex@@UBEPBDI@Z @5445 NONAME ?GetClass@PIPCacheData@@UBEPBDI@Z @5446 NONAME ?GetClass@PIPCacheKey@@UBEPBDI@Z @5447 NONAME ?GetClass@PIPDatagramSocket@@UBEPBDI@Z @5448 NONAME ?GetClass@PIPSocket@@UBEPBDI@Z @5449 NONAME ?GetClass@PIPXSocket@@UBEPBDI@Z @5450 NONAME ?GetClass@PluginLoaderStartup@@UBEPBDI@Z @5909 NONAME ?GetClass@PMail@@UBEPBDI@Z @5451 NONAME ?GetClass@PMutex@@UBEPBDI@Z @5452 NONAME ?GetClass@PNotifier@@UBEPBDI@Z @5453 NONAME ?GetClass@PNotifierFunction@@UBEPBDI@Z @5454 NONAME ?GetClass@PObject@@UBEPBDI@Z @5455 NONAME ?GetClass@POrdinalKey@@UBEPBDI@Z @5456 NONAME ?GetClass@POrdinalToString@@UBEPBDI@Z @5457 NONAME ?GetClass@PPipeChannel@@UBEPBDI@Z @5458 NONAME ?GetClass@PPluginManager@@UBEPBDI@Z @5459 NONAME ?GetClass@PPointer@@UBEPBDI@Z @5658 NONAME ?GetClass@PProcess@@UBEPBDI@Z @5460 NONAME ?GetClass@PProcessStartup@@UBEPBDI@Z @5910 NONAME ?GetClass@PQoS@@UBEPBDI@Z @5461 NONAME ?GetClass@PRASDLL@@UBEPBDI@Z @5462 NONAME ?GetClass@PReadWriteMutex@@UBEPBDI@Z @5463 NONAME ?GetClass@PRegularExpression@@UBEPBDI@Z @5464 NONAME ?GetClass@PRemoteConnection@@UBEPBDI@Z @5465 NONAME ?GetClass@PSafeCollection@@UBEPBDI@Z @5466 NONAME ?GetClass@PSafeObject@@UBEPBDI@Z @5467 NONAME ?GetClass@PSafePtrBase@@UBEPBDI@Z @5468 NONAME ?GetClass@PSemaphore@@UBEPBDI@Z @5469 NONAME ?GetClass@PSerialChannel@@UBEPBDI@Z @5470 NONAME ?GetClass@PServiceProcess@@UBEPBDI@Z @5471 NONAME ?GetClass@PSimpleThread@@UBEPBDI@Z @5472 NONAME ?GetClass@PSmartObject@@UBEPBDI@Z @5473 NONAME ?GetClass@PSmartPointer@@UBEPBDI@Z @5474 NONAME ?GetClass@PSmartPtrInspector@@UBEPBDI@Z @5659 NONAME ?GetClass@PSocket@@UBEPBDI@Z @5475 NONAME ?GetClass@PSortedStringList@@UBEPBDI@Z @5476 NONAME ?GetClass@PSound@@UBEPBDI@Z @5477 NONAME ?GetClass@PSoundChannel@@UBEPBDI@Z @5478 NONAME ?GetClass@PSPXSocket@@UBEPBDI@Z @5479 NONAME ?GetClass@PStandardColourConverter@@UBEPBDI@Z @5480 NONAME ?GetClass@PString@@UBEPBDI@Z @5481 NONAME ?GetClass@PStringArray@@UBEPBDI@Z @5482 NONAME ?GetClass@PStringList@@UBEPBDI@Z @5483 NONAME ?GetClass@PStringSet@@UBEPBDI@Z @5484 NONAME ?GetClass@PStringStream@@UBEPBDI@Z @5485 NONAME ?GetClass@PStringToOrdinal@@UBEPBDI@Z @5486 NONAME ?GetClass@PStringToString@@UBEPBDI@Z @5487 NONAME ?GetClass@PStructuredFile@@UBEPBDI@Z @5488 NONAME ?GetClass@PSyncPoint@@UBEPBDI@Z @5489 NONAME ?GetClass@PSystemLog@@UBEPBDI@Z @5490 NONAME ?GetClass@PTCPSocket@@UBEPBDI@Z @5491 NONAME ?GetClass@PTextFile@@UBEPBDI@Z @5492 NONAME ?GetClass@PThread@@UBEPBDI@Z @5493 NONAME ?GetClass@PTime@@UBEPBDI@Z @5494 NONAME ?GetClass@PTimeInterval@@UBEPBDI@Z @5495 NONAME ?GetClass@PTimer@@UBEPBDI@Z @5496 NONAME ?GetClass@PTimerList@@UBEPBDI@Z @5497 NONAME ?GetClass@PUDPSocket@@UBEPBDI@Z @5498 NONAME ?GetClass@PVideoChannel@@UBEPBDI@Z @5499 NONAME ?GetClass@PVideoDevice@@UBEPBDI@Z @5500 NONAME ?GetClass@PVideoInputDevice@@UBEPBDI@Z @5501 NONAME ?GetClass@PVideoInputDevice_FakeVideo@@UBEPBDI@Z @5502 NONAME ?GetClass@PVideoInputDevice_VideoForWindows@@UBEPBDI@Z @5503 NONAME ?GetClass@PVideoOutputDevice@@UBEPBDI@Z @5505 NONAME ?GetClass@PVideoOutputDeviceRGB@@UBEPBDI@Z @7635 NONAME ?GetClass@PVideoOutputDevice_NULLOutput@@UBEPBDI@Z @5506 NONAME ?GetClass@PVideoOutputDevice_Window@@UBEPBDI@Z @7636 NONAME ?GetClass@PWaveBuffer@@UBEPBDI@Z @5507 NONAME ?GetClass@PWaveFormat@@UBEPBDI@Z @5508 NONAME ?GetClass@PWin32PacketBuffer@@UBEPBDI@Z @5509 NONAME ?GetClass@PWin32SnmpLibrary@@UBEPBDI@Z @5510 NONAME ?GetClass@PWinQoS@@UBEPBDI@Z @5511 NONAME ?GetClass@PWinSock@@UBEPBDI@Z @5512 NONAME ?GetClass@RouteEntry@PIPSocket@@UBEPBDI@Z @5513 NONAME ?GetClass@SelectList@PSocket@@UBEPBDI@Z @5514 NONAME ?GetClass@Table@PHashTable@@UBEPBDI@Z @5515 NONAME ?GetClass@WinSNMPLoader@@UBEPBDI@Z @6213 NONAME ?GetColour@PVideoDevice@@UAEHXZ @2209 NONAME ?GetColourFormat@PVideoDevice@@QBEABVPString@@XZ @2210 NONAME ?GetConfiguration@PRemoteConnection@@QAE?AW4Status@1@AAUConfiguration@1@@Z @2211 NONAME ?GetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@AAUConfiguration@1@@Z @2212 NONAME ?GetConfigurationFile@PProcess@@UAE?AVPString@@XZ @2213 NONAME ?GetContrast@PVideoDevice@@UAEHXZ @2214 NONAME ?GetCount@PArgList@@QBEHXZ @2215 NONAME ?GetCTS@PSerialChannel@@QAEHXZ @2216 NONAME ?GetCurrentThreadId@PThread@@SAKXZ @2217 NONAME ?GetData@PWin32PacketBuffer@@QAEHPAXH@Z @2218 NONAME ?GetDataAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@QBEAAVPThread@@H@Z @2219 NONAME ?GetDataAt@?$PStringDictionary@VPString@@@@QBEAAVPString@@H@Z @2220 NONAME ?GetDataBits@PSerialChannel@@QBEEXZ @2221 NONAME ?GetDateOrder@PTime@@SA?AW4DateOrder@1@XZ @2222 NONAME ?GetDateSeparator@PTime@@SA?AVPString@@XZ @2223 NONAME ?GetDay@PTime@@QBEHXZ @2224 NONAME ?GetDayName@PTime@@SA?AVPString@@W4Weekdays@1@W4NameType@1@@Z @2225 NONAME ?GetDayOfWeek@PTime@@QBE?AW4Weekdays@1@XZ @2226 NONAME ?GetDayOfYear@PTime@@QBEHXZ @2227 NONAME ?GetDays@PTimeInterval@@QBEHXZ @2228 NONAME ?GetDCD@PSerialChannel@@QAEHXZ @2229 NONAME ?GetDefaultDevice@PSoundChannel@@SA?AVPString@@W4Directions@1@@Z @2230 NONAME ?GetDefaultDevice@PSoundChannelWin32@@SA?AVPString@@W4Directions@PSoundChannel@@@Z @3665 NONAME ?GetDefaultDevice@PVideoChannel@@SA?AVPString@@W4Directions@1@@Z @2231 NONAME ?GetDefaultIpAddressFamily@PIPSocket@@SAHXZ @2232 NONAME ?GetDefaultIpAny@PIPSocket@@SA?AVAddress@1@XZ @2233 NONAME ?GetDefaultSection@PConfig@@UBE?AVPString@@XZ @3934 NONAME ?GetDeviceID@PSoundChannelWin32@@AAEHABVPString@@W4Directions@PSoundChannel@@AAI@Z @3666 NONAME ?GetDeviceNames@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBE?AVPStringList@@H@Z @7637 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBE?AVPStringList@@H@Z @7638 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBE?AVPStringList@@H@Z @7639 NONAME ?GetDeviceNames@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBE?AVPStringList@@H@Z @7640 NONAME ?GetDeviceNames@PSoundChannel@@SA?AVPStringList@@W4Directions@1@PAVPPluginManager@@@Z @7641 NONAME ?GetDeviceNames@PSoundChannelWin32@@SA?AVPStringArray@@W4Directions@PSoundChannel@@@Z @3669 NONAME ?GetDeviceNames@PVideoChannel@@SA?AVPStringList@@W4Directions@1@@Z @2237 NONAME ?GetDeviceNames@PVideoDevice@@UBE?AVPStringList@@XZ @3670 NONAME ?GetDeviceNames@PVideoInputDevice_FakeVideo@@UBE?AVPStringList@@XZ @3883 NONAME ?GetDeviceNames@PVideoInputDevice_VideoForWindows@@UBE?AVPStringList@@XZ @3884 NONAME ?GetDeviceNames@PVideoOutputDevice_NULLOutput@@UBE?AVPStringList@@XZ @3885 NONAME ?GetDeviceNames@PVideoOutputDevice_Window@@UBE?AVPStringList@@XZ @7642 NONAME ?GetDeviceNames@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE?AVPStringList@@H@Z @7643 NONAME ?GetDirectory@PFilePath@@QBE?AVPDirectory@@XZ @2241 NONAME ?GetDriverNames@PSoundChannel@@SA?AVPStringList@@PAVPPluginManager@@@Z @3673 NONAME ?GetDriverNames@PVideoInputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @3674 NONAME ?GetDriverNames@PVideoOutputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @3813 NONAME ?GetDriversDeviceNames@PSoundChannel@@SA?AVPStringList@@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @7644 NONAME ?GetDriversDeviceNames@PVideoInputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @3886 NONAME ?GetDriversDeviceNames@PVideoOutputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @3887 NONAME ?GetDSCP@PQoS@@QBEHXZ @3556 NONAME ?GetDSR@PSerialChannel@@QAEHXZ @2242 NONAME ?GetDstColourFormat@PColourConverter@@QAEABVPString@@XZ @2243 NONAME ?GetDstFrameSize@PColourConverter@@QBEHAAI0@Z @2244 NONAME ?GetElementAt@Table@PHashTable@@QAEPAVElement@2@ABVPObject@@@Z @2245 NONAME ?GetElementsIndex@Table@PHashTable@@QBEHPBVPObject@@HH@Z @2246 NONAME ?GetEncoding@PSound@@QBEIXZ @2247 NONAME ?GetEntryName@PDirectory@@UBE?AVPCaselessString@@XZ @7297 NONAME ?GetError@ServiceManager@@QBEKXZ @2249 NONAME ?GetErrorCode@PChannel@@QBE?AW4Errors@1@W4ErrorGroup@1@@Z @2250 NONAME ?GetErrorCode@PMail@@QBEHXZ @2251 NONAME ?GetErrorCode@PRegularExpression@@QBE?AW4ErrorCodes@1@XZ @2252 NONAME ?GetErrorNumber@PChannel@@QBEHW4ErrorGroup@1@@Z @2253 NONAME ?GetErrorText@PChannel@@SA?AVPString@@W4Errors@1@H@Z @2254 NONAME ?GetErrorText@PChannel@@UBE?AVPString@@W4ErrorGroup@1@@Z @2255 NONAME ?GetErrorText@PIndirectChannel@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @2256 NONAME ?GetErrorText@PMail@@QBE?AVPString@@XZ @2257 NONAME ?GetErrorText@PRegularExpression@@QBE?AVPString@@XZ @2258 NONAME ?GetErrorText@PSoundChannelWin32@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @3675 NONAME ?GetEvent@PWin32PacketBuffer@@QBEPAXXZ @2260 NONAME ?GetExtension@PDynaLink@@SA?AVPString@@XZ @2261 NONAME ?GetFactories@PFactoryBase@@SAAAVFactoryMap@1@XZ @6793 NONAME ?GetFactoriesMutex@PFactoryBase@@SAAAVPMutex@@XZ @6794 NONAME ?GetFile@PProcess@@QBEABVPFilePath@@XZ @2262 NONAME ?GetFileName@PFilePath@@QBE?AVPCaselessString@@XZ @2263 NONAME ?GetFilePath@PFile@@QBEABVPFilePath@@XZ @2264 NONAME ?GetFilter@PEthSocket@@QAEHAAIAAG@Z @2265 NONAME ?GetFormatInfoData@PSound@@QBEPBXXZ @2266 NONAME ?GetFormatInfoSize@PSound@@QBEHXZ @2267 NONAME ?GetFrame@PVideoInputDevice@@UAEHAAVPBYTEArray@@@Z @7645 NONAME ?GetFrameData@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @3815 NONAME ?GetFrameData@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @3677 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @3816 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @3678 NONAME ?GetFrameHeight@PVideoDevice@@UBEIXZ @2273 NONAME ?GetFrameRate@PVideoDevice@@UBEIXZ @2274 NONAME ?GetFrameSize@PVideoDevice@@UAEHAAI0@Z @2275 NONAME ?GetFrameSizeLimits@PVideoDevice@@UAEHAAI000@Z @2277 NONAME ?GetFrameSizeLimits@PVideoInputDevice_FakeVideo@@UAEHAAI000@Z @3817 NONAME ?GetFrameWidth@PVideoDevice@@UBEIXZ @2278 NONAME ?GetFunction@PDynaLink@@QAEHABVPString@@AAP6AXXZ@Z @2279 NONAME ?GetFunction@PDynaLink@@QAEHHAAP6AXXZ@Z @2280 NONAME ?GetGatewayAddress@PIPSocket@@SAHAAVAddress@1@@Z @2281 NONAME ?GetGatewayInterface@PIPSocket@@SA?AVPString@@XZ @2282 NONAME ?GetGatewayInterfaceAddress@PIPSocket@@SA?AVAddress@1@XZ @7646 NONAME ?GetGrabHeight@PVideoChannel@@UAEHXZ @2283 NONAME ?GetGrabWidth@PVideoChannel@@UAEHXZ @2284 NONAME ?GetGroupName@PProcess@@QBE?AVPString@@XZ @2285 NONAME ?GetHandle@PChannel@@QBEHXZ @2286 NONAME ?GetHandle@PSemaphore@@QBEPAXXZ @2287 NONAME ?GetHandle@PSoundChannel@@UBEHXZ @3679 NONAME ?GetHandle@PThread@@QBEPAXXZ @2288 NONAME ?GetHost@PHostByAddr@@AAEPAVPIPCacheData@@ABVAddress@PIPSocket@@@Z @2289 NONAME ?GetHost@PHostByName@@AAEPAVPIPCacheData@@ABVPString@@@Z @2290 NONAME ?GetHostAddress@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAV23@@Z @2291 NONAME ?GetHostAddress@PHostByName@@QAEHABVPString@@AAVAddress@PIPSocket@@@Z @2292 NONAME ?GetHostAddress@PIPCacheData@@QBEABVAddress@PIPSocket@@XZ @2293 NONAME ?GetHostAddress@PIPSocket@@SAHAAVAddress@1@@Z @2294 NONAME ?GetHostAddress@PIPSocket@@SAHABVPString@@AAVAddress@1@@Z @2295 NONAME ?GetHostAddress@PIPXSocket@@SAHAAVAddress@1@@Z @2296 NONAME ?GetHostAddress@PIPXSocket@@SAHABVPString@@AAVAddress@1@@Z @2297 NONAME ?GetHostAliases@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPStringArray@@@Z @2298 NONAME ?GetHostAliases@PHostByName@@QAEHABVPString@@AAVPStringArray@@@Z @2299 NONAME ?GetHostAliases@PIPCacheData@@QBEABVPStringList@@XZ @2300 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVAddress@1@@Z @2301 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVPString@@@Z @2302 NONAME ?GetHostName@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPString@@@Z @2303 NONAME ?GetHostName@PHostByName@@QAEHABVPString@@AAV2@@Z @2304 NONAME ?GetHostName@PIPCacheData@@QBEABVPString@@XZ @2305 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABV2@@Z @2306 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABVAddress@1@@Z @2307 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@XZ @2308 NONAME ?GetHostName@PIPXSocket@@SA?AVPString@@ABVAddress@1@@Z @2309 NONAME ?GetHour@PTime@@QBEHXZ @2310 NONAME ?GetHours@PTimeInterval@@QBEHXZ @2311 NONAME ?GetHue@PVideoDevice@@UAEHXZ @2312 NONAME ?GetInfo@PDirectory@@UBEHAAVPFileInfo@@@Z @7298 NONAME ?GetInfo@PFile@@QAEHAAVPFileInfo@@@Z @2314 NONAME ?GetInfo@PFile@@SAHABVPFilePath@@AAVPFileInfo@@@Z @2315 NONAME ?GetInitialVal@PSemaphore@@QBEIXZ @2316 NONAME ?GetInputDeviceNames@PVideoInputDevice_FakeVideo@@SA?AVPStringList@@XZ @3818 NONAME ?GetInputDeviceNames@PVideoInputDevice_VideoForWindows@@SA?AVPStringList@@XZ @3680 NONAME ?GetInputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @2319 NONAME ?GetInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@KAAAV1@XZ @7121 NONAME ?GetInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@KAAAV1@XZ @6475 NONAME ?GetInstance@?$PFactory@VPProcessStartup@@VPString@@@@KAAAV1@XZ @6476 NONAME ?GetInstance@?$PFactory@VPSoundChannel@@VPString@@@@KAAAV1@XZ @7122 NONAME ?GetInstance@?$PFactory@VPVideoInputDevice@@VPString@@@@KAAAV1@XZ @7123 NONAME ?GetInstance@?$PFactory@VPVideoOutputDevice@@VPString@@@@KAAAV1@XZ @7124 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@0_J@Z @3935 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@_J@Z @3936 NONAME ?GetInteger@PConfig@@UBEJABVPString@@0J@Z @3937 NONAME ?GetInteger@PConfig@@UBEJABVPString@@J@Z @3938 NONAME ?GetInteger@PWin32AsnAny@@QAEHAAJ@Z @2324 NONAME ?GetInterface@PIPSocket@@SA?AVPString@@VAddress@1@@Z @7647 NONAME ?GetInterfaceAddress@PWin32SnmpLibrary@@QAE?AVAddress@PIPSocket@@H@Z @7648 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@H@Z @2325 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@VAddress@PIPSocket@@@Z @2326 NONAME ?GetInterfaceTable@PIPSocket@@SAHAAV?$PList@VInterfaceEntry@PIPSocket@@@@@Z @2327 NONAME ?GetInterval@PTimeInterval@@QBEKXZ @2328 NONAME ?GetIP@Psockaddr@@QBE?AVAddress@PIPSocket@@XZ @3888 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@0@Z @2329 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@@Z @2330 NONAME ?GetIpAddress@PWin32AsnAny@@QAEHAAVAddress@PIPSocket@@@Z @2331 NONAME ?GetKeyAt@?$PSet@VPString@@@@UBEABVPString@@H@Z @2332 NONAME ?GetKeyAt@?$PStringDictionary@VPString@@@@QBEABVPString@@H@Z @2333 NONAME ?GetKeyList@?$PFactory@VPPluginModuleManager@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6477 NONAME ?GetKeyList@?$PFactory@VPProcessStartup@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6478 NONAME ?GetKeyList_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6479 NONAME ?GetKeyList_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6480 NONAME ?GetKeyMap@?$PFactory@VPSoundChannel@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@XZ @7649 NONAME ?GetKeyMap@?$PFactory@VPVideoInputDevice@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@XZ @7650 NONAME ?GetKeyMap@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@XZ @7651 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@ABVPString@@@Z @3939 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@XZ @3940 NONAME ?GetLastError@PMultiMediaFile@@QBEKXZ @2336 NONAME ?GetLastError@PWin32PacketDriver@@QBEKXZ @2337 NONAME ?GetLastReadCount@PChannel@@UBEHXZ @3922 NONAME ?GetLastReadCount@PSoundChannel@@UBEHXZ @3923 NONAME ?GetLastReceiveAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @2339 NONAME ?GetLastWriteCount@PChannel@@UBEHXZ @3924 NONAME ?GetLastWriteCount@PSoundChannel@@UBEHXZ @3925 NONAME ?GetLength@PFile@@UBEJXZ @2341 NONAME ?GetLength@PString@@QBEHXZ @2342 NONAME ?GetLength@SecurityID@@QBEKXZ @2343 NONAME ?GetLevel@PTrace@@SAIXZ @2344 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@@Z @2345 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @2346 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @2347 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @2348 NONAME ?GetLocalHostName@PIPSocket@@QAE?AVPString@@XZ @2349 NONAME ?GetLogLevel@PServiceProcess@@QBE?AW4Level@PSystemLog@@XZ @2350 NONAME ?GetLoopback6@Address@PIPSocket@@SAABV12@XZ @3889 NONAME ?GetLoopback@Address@PIPSocket@@SAABV12@XZ @2351 NONAME ?GetManufacturer@PProcess@@UBEABVPString@@XZ @2352 NONAME ?GetMaxCountVal@PSemaphore@@QBEIXZ @2353 NONAME ?GetMaxDstFrameBytes@PColourConverter@@QAEHXZ @2354 NONAME ?GetMaxFrameBytes@PVideoInputDevice_FakeVideo@@UAEHXZ @3819 NONAME ?GetMaxFrameBytes@PVideoInputDevice_VideoForWindows@@UAEHXZ @3681 NONAME ?GetMaxFrameBytes@PVideoOutputDeviceRGB@@UAEHXZ @7652 NONAME ?GetMaxFrameBytes@PVideoOutputDevice_NULLOutput@@UAEHXZ @3820 NONAME ?GetMaxFrameBytesConverted@PVideoDevice@@IBEHH@Z @7653 NONAME ?GetMaxHandles@PProcess@@QBEHXZ @2359 NONAME ?GetMaxSrcFrameBytes@PColourConverter@@QAEHXZ @7654 NONAME ?GetMedium@PEthSocket@@QAE?AW4MediumTypes@1@XZ @2360 NONAME ?GetMessageAttachments@PMail@@QAEHABVPString@@AAVPStringArray@@HH@Z @2361 NONAME ?GetMessageBody@PMail@@QAEHABVPString@@AAV2@H@Z @2362 NONAME ?GetMessageHeader@PMail@@QAEHABVPString@@AAUHeader@1@@Z @2363 NONAME ?GetMessageIDs@PMail@@QAE?AVPStringArray@@H@Z @2364 NONAME ?GetMicrosecond@PTime@@QBEJXZ @2365 NONAME ?GetMilliSeconds@PTimeInterval@@QBE_JXZ @2366 NONAME ?GetMinute@PTime@@QBEHXZ @2367 NONAME ?GetMinutes@PTimeInterval@@QBEJXZ @2368 NONAME ?GetMonth@PTime@@QBE?AW4Months@1@XZ @2369 NONAME ?GetMonthName@PTime@@SA?AVPString@@W4Months@1@W4NameType@1@@Z @2370 NONAME ?GetMutex@PWin32SnmpLibrary@@SAAAVPMutex@@XZ @6215 NONAME ?GetName@InterfaceEntry@PIPSocket@@QBEABVPString@@XZ @7655 NONAME ?GetName@PChannel@@UBE?AVPString@@XZ @2371 NONAME ?GetName@PConsoleChannel@@UBE?AVPString@@XZ @2372 NONAME ?GetName@PDynaLink@@UBE?AVPString@@H@Z @2373 NONAME ?GetName@PEthSocket@@UBE?AVPString@@XZ @2374 NONAME ?GetName@PFile@@UBE?AVPString@@XZ @2375 NONAME ?GetName@PIndirectChannel@@UBE?AVPString@@XZ @2376 NONAME ?GetName@PIPSocket@@UBE?AVPString@@XZ @2377 NONAME ?GetName@PIPXSocket@@UBE?AVPString@@XZ @2378 NONAME ?GetName@PPipeChannel@@UBE?AVPString@@XZ @2379 NONAME ?GetName@PProcess@@UBEABVPString@@XZ @2380 NONAME ?GetName@PSerialChannel@@UBE?AVPString@@XZ @2381 NONAME ?GetName@PSoundChannelWin32@@UBE?AVPString@@XZ @3682 NONAME ?GetName@PVideoChannel@@UBE?AVPString@@XZ @2383 NONAME ?GetNameByProtocol@PSocket@@SA?AVPString@@G@Z @2384 NONAME ?GetNest@PReadWriteMutex@@IBEPAVNest@1@XZ @2385 NONAME ?GetNetMask@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @7656 NONAME ?GetNetworkInterface@PIPSocket@@SAHAAVAddress@1@@Z @7657 NONAME ?GetNextOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @2386 NONAME ?GetNextStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @2387 NONAME ?GetNotifiee@PSmartNotifieeRegistrar@@SAPAXI@Z @5660 NONAME ?GetNotifiee@PSmartNotifierFunction@@QBEPAXXZ @5661 NONAME ?GetNotifieeID@PSmartNotifierFunction@@QBEIXZ @5662 NONAME ?GetNotifier@PTimer@@QBEABVPNotifier@@XZ @2388 NONAME ?GetNumChannels@PVideoDevice@@UAEHXZ @2390 NONAME ?GetNumChannels@PVideoInputDevice_FakeVideo@@UAEHXZ @3821 NONAME ?GetObjectA@PSmartPtrInspector@@QBEPAXXZ @5663 NONAME ?GetObjectsIndex@PAbstractDictionary@@UBEHPBVPObject@@@Z @2391 NONAME ?GetObjectsIndex@PAbstractList@@UBEHPBVPObject@@@Z @2392 NONAME ?GetObjectsIndex@PAbstractSet@@UBEHPBVPObject@@@Z @2393 NONAME ?GetObjectsIndex@PAbstractSortedList@@UBEHPBVPObject@@@Z @2394 NONAME ?GetObjectsIndex@PArrayObjects@@UBEHPBVPObject@@@Z @2395 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAJ@Z @2396 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVAddress@PIPSocket@@@Z @2397 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPString@@@Z @2398 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @2399 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@PAXIPAI@Z @2400 NONAME ?GetOption@PSocket@@QAEHHAAHH@Z @2401 NONAME ?GetOption@PSocket@@QAEHHPAXHH@Z @2402 NONAME ?GetOptionCount@PArgList@@UBEHABVPString@@@Z @2403 NONAME ?GetOptionCount@PArgList@@UBEHD@Z @2404 NONAME ?GetOptionCount@PArgList@@UBEHPBD@Z @2405 NONAME ?GetOptionCount@PConfigArgs@@UBEHABVPString@@@Z @2406 NONAME ?GetOptionCount@PConfigArgs@@UBEHD@Z @2407 NONAME ?GetOptionCount@PConfigArgs@@UBEHPBD@Z @2408 NONAME ?GetOptionCountByIndex@PArgList@@ABEHH@Z @2409 NONAME ?GetOptions@PTrace@@SAIXZ @2410 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@ABV2@PBD@Z @2411 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@DPBD@Z @2412 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@PBD0@Z @2413 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@ABV2@PBD@Z @2414 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@DPBD@Z @2415 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@PBD0@Z @2416 NONAME ?GetOptionStringByIndex@PArgList@@ABE?AVPString@@HPBD@Z @2417 NONAME ?GetOSClass@PProcess@@SA?AVPString@@XZ @2418 NONAME ?GetOSConfigDir@PProcess@@SA?AVPDirectory@@XZ @2419 NONAME ?GetOSHardware@PProcess@@SA?AVPString@@XZ @2420 NONAME ?GetOSName@PProcess@@SA?AVPString@@XZ @2421 NONAME ?GetOSVersion@PProcess@@SA?AVPString@@XZ @2422 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_NULLOutput@@SA?AVPStringList@@XZ @3822 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_Window@@SA?AVPStringList@@XZ @7658 NONAME ?GetOutputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @2423 NONAME ?GetPacketType@PIPXSocket@@QAEHXZ @2424 NONAME ?GetParameter@PArgList@@QBE?AVPString@@H@Z @2425 NONAME ?GetParameters@PArgList@@QBE?AVPStringArray@@HH@Z @2426 NONAME ?GetParameters@PVideoDevice@@UAEHPAH0000@Z @2427 NONAME ?GetParent@PDirectory@@QBE?AV1@XZ @2428 NONAME ?GetParity@PSerialChannel@@QBE?AW4Parity@1@XZ @2429 NONAME ?GetPath@PDirectory@@QBE?AVPStringArray@@XZ @2430 NONAME ?GetPath@PFilePath@@QBE?AVPCaselessString@@XZ @2431 NONAME ?GetPeakBandwidth@PQoS@@QBEKXZ @3890 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@@Z @2432 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @2433 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @2434 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @2435 NONAME ?GetPeerHostName@PIPSocket@@QAE?AVPString@@XZ @2436 NONAME ?GetPluginAPIVersion@PPluginServiceDescriptor@@UBEIXZ @7659 NONAME ?GetPluginDirs@PPluginManager@@SA?AVPStringArray@@XZ @5664 NONAME ?GetPluginList@PPluginModuleManager@@UBE?AV?$PDictionary@VPString@@VPDynaLink@@@@XZ @5573 NONAME ?GetPluginManager@PPluginManager@@SAAAV1@XZ @3683 NONAME ?GetPluginsDeviceNames@PPluginManager@@QBE?AVPStringList@@ABVPString@@0H@Z @7660 NONAME ?GetPluginsProviding@PPluginManager@@QBE?AVPStringList@@ABVPString@@@Z @3684 NONAME ?GetPluginTypes@PPluginManager@@QBE?AVPStringList@@XZ @3685 NONAME ?GetPointer@?$PBaseArray@D@@QAEPADH@Z @2437 NONAME ?GetPointer@?$PBaseArray@E@@QAEPAEH@Z @2438 NONAME ?GetPointer@?$PBaseArray@F@@QAEPAFH@Z @2439 NONAME ?GetPointer@?$PBaseArray@G@@QAEPAGH@Z @2440 NONAME ?GetPointer@?$PBaseArray@H@@QAEPAHH@Z @2441 NONAME ?GetPointer@?$PBaseArray@I@@QAEPAIH@Z @2442 NONAME ?GetPointer@?$PBaseArray@J@@QAEPAJH@Z @2443 NONAME ?GetPointer@?$PBaseArray@K@@QAEPAKH@Z @2444 NONAME ?GetPointer@Address@PIPSocket@@QBEPBDXZ @2445 NONAME ?GetPointer@PAbstractArray@@QAEPAXH@Z @2446 NONAME ?GetPointer@PBitArray@@QAEPAEH@Z @2447 NONAME ?GetPointer@PPointer@@QBEPAXXZ @5665 NONAME ?GetPointer@PWaveFormat@@QBEPAXXZ @2448 NONAME ?GetPort@Psockaddr@@QBEGXZ @3891 NONAME ?GetPort@PSocket@@QBEGXZ @2449 NONAME ?GetPortByService@PSocket@@SAGPBDABVPString@@@Z @2450 NONAME ?GetPortByService@PSocket@@UBEGABVPString@@@Z @2451 NONAME ?GetPortNames@PSerialChannel@@SA?AVPStringList@@XZ @2452 NONAME ?GetPosition@PFile@@UBEJXZ @2453 NONAME ?GetPriority@PThread@@UBE?AW4Priority@1@XZ @2454 NONAME ?GetProcessID@PProcess@@QBEKXZ @2455 NONAME ?GetProtocolByName@PSocket@@SAGABVPString@@@Z @2456 NONAME ?GetProtocolName@PEthSocket@@MBEPBDXZ @2457 NONAME ?GetProtocolName@PICMPSocket@@MBEPBDXZ @2458 NONAME ?GetProtocolName@PIPXSocket@@MBEPBDXZ @2459 NONAME ?GetProtocolName@PSPXSocket@@MBEPBDXZ @2460 NONAME ?GetProtocolName@PTCPSocket@@MBEPBDXZ @2461 NONAME ?GetProtocolName@PUDPSocket@@MBEPBDXZ @2462 NONAME ?GetProtocolName@PWinSock@@EBEPBDXZ @2463 NONAME ?GetQoSSpec@PUDPSocket@@UAEAAVPQoS@@XZ @7661 NONAME ?GetQueryOidCommand@PWin32PacketSYS@@UBEIK@Z @2464 NONAME ?GetQueryOidCommand@PWin32PacketVxD@@UBEIK@Z @2465 NONAME ?GetReadChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @2466 NONAME ?GetReadTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @2467 NONAME ?GetReal@PConfig@@UBENABVPString@@0N@Z @3941 NONAME ?GetReal@PConfig@@UBENABVPString@@N@Z @3942 NONAME ?GetRefAt@PAbstractDictionary@@UBEAAVPObject@@ABV2@@Z @2470 NONAME ?GetReferenceAt@PAbstractList@@IBEAAVPObject@@H@Z @2471 NONAME ?GetRenderHeight@PVideoChannel@@QAEHXZ @2472 NONAME ?GetRenderWidth@PVideoChannel@@QAEHXZ @2473 NONAME ?GetResetTime@PTimer@@QBEABVPTimeInterval@@XZ @2474 NONAME ?GetReturnCode@PPipeChannel@@QBEHXZ @2475 NONAME ?GetRing@PSerialChannel@@QAEHXZ @2476 NONAME ?GetRoot@PDirectory@@QBE?AV1@XZ @2477 NONAME ?GetRouteAddress@PIPSocket@@SA?AVAddress@1@V21@@Z @7662 NONAME ?GetRouteTable@PIPSocket@@SAHAAV?$PList@VRouteEntry@PIPSocket@@@@@Z @2478 NONAME ?GetSampleRate@PSound@@QBEIXZ @2479 NONAME ?GetSampleRate@PSoundChannel@@UBEIXZ @3686 NONAME ?GetSampleRate@PSoundChannelWin32@@UBEIXZ @3687 NONAME ?GetSampleSize@PSound@@QBEIXZ @2481 NONAME ?GetSampleSize@PSoundChannel@@UBEIXZ @3688 NONAME ?GetSampleSize@PSoundChannelWin32@@UBEIXZ @3689 NONAME ?GetSecond@PTime@@QBEHXZ @2483 NONAME ?GetSeconds@PTimeInterval@@QBEJXZ @2484 NONAME ?GetSections@PConfig@@UBE?AVPStringList@@XZ @3943 NONAME ?GetSendAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @2486 NONAME ?GetService@PSocket@@QBE?AVPString@@XZ @2487 NONAME ?GetServiceByPort@PSocket@@SA?AVPString@@PBDG@Z @2488 NONAME ?GetServiceByPort@PSocket@@UBE?AVPString@@G@Z @2489 NONAME ?GetServiceDependencies@PServiceProcess@@UBEPBDXZ @2490 NONAME ?GetServiceDescriptor@PPluginManager@@QBEPAVPPluginServiceDescriptor@@ABVPString@@0@Z @7663 NONAME ?GetServiceType@PQoS@@QBEKXZ @3561 NONAME ?GetSize@Address@PIPSocket@@QBEHXZ @2491 NONAME ?GetSize@PArrayObjects@@UBEHXZ @2492 NONAME ?GetSize@PBitArray@@UBEHXZ @2493 NONAME ?GetSize@PContainer@@UBEHXZ @2494 NONAME ?GetSize@PSafeCollection@@QBEHXZ @7125 NONAME ?GetSize@Psockaddr@@QBEHXZ @3892 NONAME ?GetSize@PWaveFormat@@QBEHXZ @2495 NONAME ?GetSpeed@PSerialChannel@@QBEKXZ @2496 NONAME ?GetSrcColourFormat@PColourConverter@@QAEABVPString@@XZ @2497 NONAME ?GetSrcFrameSize@PColourConverter@@QBEHAAI0@Z @2498 NONAME ?GetStartTime@PProcess@@QBE?AVPTime@@XZ @2499 NONAME ?GetStatus@PRemoteConnection@@QBE?AW4Status@1@XZ @2500 NONAME ?GetStopBits@PSerialChannel@@QBEEXZ @2501 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@00@Z @3944 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@0@Z @3945 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@@Z @3946 NONAME ?GetStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @2505 NONAME ?GetStringsIndex@PStringArray@@QBEHABVPString@@@Z @2506 NONAME ?GetStringsIndex@PStringList@@QBEHABVPString@@@Z @2507 NONAME ?GetTarget@PSmartFuncInspector@@QBEPAXXZ @5666 NONAME ?GetTarget@PSmartPtrInspector@@QBEPAXXZ @5667 NONAME ?GetTerminationValue@PProcess@@QBEHXZ @2508 NONAME ?GetThreadId@PThread@@UBEKXZ @2509 NONAME ?GetThreadName@PProcess@@UBE?AVPString@@XZ @2510 NONAME ?GetThreadName@PThread@@UBE?AVPString@@XZ @2511 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0@Z @3947 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0ABV2@@Z @3948 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@@Z @3949 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@ABV2@@Z @3950 NONAME ?GetTimeAM@PTime@@SA?AVPString@@XZ @2516 NONAME ?GetTimeAMPM@PTime@@SAHXZ @2517 NONAME ?GetTimeInSeconds@PTime@@QBEJXZ @2518 NONAME ?GetTimePM@PTime@@SA?AVPString@@XZ @2519 NONAME ?GetTimerList@PProcess@@QAEPAVPTimerList@@XZ @2520 NONAME ?GetTimeSeparator@PTime@@SA?AVPString@@XZ @2521 NONAME ?GetTimestamp@PTime@@QBE_JXZ @2522 NONAME ?GetTimeZone@PTime@@SAHW4TimeZoneType@1@@Z @2523 NONAME ?GetTimeZone@PTime@@SAHXZ @2524 NONAME ?GetTimeZoneString@PTime@@SA?AVPString@@W4TimeZoneType@1@@Z @2525 NONAME ?GetTitle@PFilePath@@QBE?AVPCaselessString@@XZ @2526 NONAME ?GetTokenBucketSize@PQoS@@QBEKXZ @3893 NONAME ?GetTokenRate@PQoS@@QBEKXZ @3894 NONAME ?GetType@PFilePath@@QBE?AVPCaselessString@@XZ @2527 NONAME ?GetUserNameA@PProcess@@QBE?AVPString@@XZ @2528 NONAME ?GetValuesIndex@PAbstractDictionary@@UBEHABVPObject@@@Z @2529 NONAME ?GetValuesIndex@PAbstractList@@UBEHABVPObject@@@Z @2530 NONAME ?GetValuesIndex@PAbstractSet@@UBEHABVPObject@@@Z @2531 NONAME ?GetValuesIndex@PAbstractSortedList@@UBEHABVPObject@@@Z @2532 NONAME ?GetValuesIndex@PArrayObjects@@UBEHABVPObject@@@Z @2533 NONAME ?GetVersion@Address@PIPSocket@@QBEIXZ @2534 NONAME ?GetVersion@PProcess@@UBE?AVPString@@H@Z @2535 NONAME ?GetVFlipState@PColourConverter@@QAEHXZ @2536 NONAME ?GetVFlipState@PVideoDevice@@UAEHXZ @2537 NONAME ?GetVFlipState@PVideoOutputDevice_Window@@UAEHXZ @7664 NONAME ?GetVideoFormat@PVideoDevice@@UBE?AW4VideoFormat@1@XZ @2538 NONAME ?GetVideoPlayer@PVideoChannel@@UAEPAVPVideoOutputDevice@@XZ @2539 NONAME ?GetVideoReader@PVideoChannel@@UAEPAVPVideoInputDevice@@XZ @2540 NONAME ?GetVolume@PDirectory@@QBE?AVPCaselessString@@XZ @2541 NONAME ?GetVolume@PFilePath@@QBE?AVPCaselessString@@XZ @2542 NONAME ?GetVolume@PSoundChannel@@UAEHAAI@Z @3691 NONAME ?GetVolume@PSoundChannelWin32@@UAEHAAI@Z @3692 NONAME ?GetVolumeSpace@PDirectory@@QBEHAA_J0AAK@Z @2544 NONAME ?GetWhiteness@PVideoDevice@@UAEHXZ @2545 NONAME ?GetWriteChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @2546 NONAME ?GetWriteTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @2547 NONAME ?GetYear@PTime@@QBEHXZ @2548 NONAME ?GrabBlankImage@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3823 NONAME ?GrabBouncingBoxes@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3824 NONAME ?GrabMovingBlocksTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3825 NONAME ?GrabMovingLineTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3826 NONAME ?GrabNTSCTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3827 NONAME ?GrabOriginalMovingBlocksFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3828 NONAME ?GrabTextVideoFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3829 NONAME ?GreytoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @7665 NONAME ?GreytoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAE@Z @7666 NONAME ?GreytoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAE@Z @7667 NONAME ?guaranteedDSCP@PQoS@@2DA @3565 NONAME ?HandleCapture@PVideoInputDevice_VideoForWindows@@MAEXAAVPThread@@H@Z @7668 NONAME ?HandleDisplay@PVideoOutputDevice_Window@@MAEXAAVPThread@@H@Z @7669 NONAME ?HandleError@PVideoInputDevice_VideoForWindows@@IAEJHPBD@Z @3694 NONAME ?HandleVideo@PVideoInputDevice_VideoForWindows@@IAEJPAUvideohdr_tag@@@Z @3695 NONAME ?HasAged@PIPCacheData@@QBEHXZ @2563 NONAME ?HashFunction@PChannel@@UBEHXZ @2564 NONAME ?HashFunction@PIPCacheKey@@UBEHXZ @2565 NONAME ?HashFunction@PObject@@UBEHXZ @2566 NONAME ?HashFunction@POrdinalKey@@UBEHXZ @2567 NONAME ?HashFunction@PRemoteConnection@@UBEHXZ @2568 NONAME ?HashFunction@PString@@UBEHXZ @2569 NONAME ?HasKey@PConfig@@UBEHABVPString@@0@Z @3951 NONAME ?HasKey@PConfig@@UBEHABVPString@@@Z @3952 NONAME ?HasOption@PArgList@@QBEHABVPString@@@Z @2572 NONAME ?HasOption@PArgList@@QBEHD@Z @2573 NONAME ?HasOption@PArgList@@QBEHPBD@Z @2574 NONAME ?HasPlayCompleted@PSoundChannel@@UAEHXZ @3696 NONAME ?HasPlayCompleted@PSoundChannelWin32@@UAEHXZ @3697 NONAME ?Host2Net@PSocket@@SAGG@Z @2576 NONAME ?ICMP@@3VPICMPDLL@@A @2577 NONAME ?IllegalArgumentIndex@PArgList@@UBEXH@Z @2578 NONAME ?IN6_IS_ADDR_LINKLOCAL@@YAHPBUin6_addr@@@Z @7670 NONAME ?IN6_IS_ADDR_LOOPBACK@@YAHPBUin6_addr@@@Z @7671 NONAME ?IN6_IS_ADDR_SITELOCAL@@YAHPBUin6_addr@@@Z @7672 NONAME ?IN6_IS_ADDR_V4COMPAT@@YAHPBUin6_addr@@@Z @7673 NONAME ?IN6_IS_ADDR_V4MAPPED@@YAHPBUin6_addr@@@Z @7674 NONAME ?Include@PStringSet@@QAEXABVPString@@@Z @2579 NONAME ?Init@PWin32SnmpLibrary@@AAEHKPAPAXPAUAsnObjectIdentifier@@@Z @6216 NONAME ?Initialise@PTrace@@SAXIPBDI@Z @2580 NONAME ?InitialiseCapture@PVideoInputDevice_VideoForWindows@@IAEHXZ @3698 NONAME ?InitialiseProcessThread@PThread@@IAEXXZ @2582 NONAME ?InProgress@PWin32PacketBuffer@@QBEHXZ @2583 NONAME ?insert@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@_N@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6693 NONAME ?insert@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5918 NONAME ?insert@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7126 NONAME ?insert@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6694 NONAME ?insert@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7127 NONAME ?insert@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7128 NONAME ?insert@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7129 NONAME ?insert@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEPAPAVPPluginModuleManager@@PAPAV3@ABQAV3@@Z @5920 NONAME ?insert@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEXPAPAVPPluginModuleManager@@IABQAV3@@Z @5921 NONAME ?insert@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEPAVPString@@PAV3@ABV3@@Z @5922 NONAME ?insert@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEXPAVPString@@IABV3@@Z @5923 NONAME ?insert@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@_N@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6695 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5924 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7130 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6696 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7131 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7132 NONAME ?insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AU?$pair@Viterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7133 NONAME ?Insert@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @2584 NONAME ?Insert@PAbstractList@@UAEHABVPObject@@PAV2@@Z @2585 NONAME ?Insert@PAbstractSet@@UAEHABVPObject@@PAV2@@Z @2586 NONAME ?Insert@PAbstractSortedList@@UAEHABVPObject@@PAV2@@Z @2587 NONAME ?Insert@PArrayObjects@@UAEHABVPObject@@PAV2@@Z @2588 NONAME ?InsertAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @2589 NONAME ?InsertAt@PAbstractList@@UAEHHPAVPObject@@@Z @2590 NONAME ?InsertAt@PAbstractSet@@UAEHHPAVPObject@@@Z @2591 NONAME ?InsertAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @2592 NONAME ?InsertAt@PArrayObjects@@UAEHHPAVPObject@@@Z @2593 NONAME ?InsertString@PStringList@@QAEHABVPString@@0@Z @2594 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HD@Z @2596 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HHPBD@Z @2597 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HD@Z @2598 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HHPBD@Z @2599 NONAME ?InternalEndRead@PReadWriteMutex@@IAEXXZ @2602 NONAME ?InternalFromUCS2@PString@@IAEXPBGH@Z @2603 NONAME ?InternalIsDescendant@?$PArray@VPString@@@@UBEHPBD@Z @5243 NONAME ?InternalIsDescendant@?$PArray@VPWaveBuffer@@@@UBEHPBD@Z @5244 NONAME ?InternalIsDescendant@?$PArray@VPWin32PacketBuffer@@@@UBEHPBD@Z @5245 NONAME ?InternalIsDescendant@?$PBaseArray@D@@UBEHPBD@Z @5246 NONAME ?InternalIsDescendant@?$PBaseArray@E@@UBEHPBD@Z @5247 NONAME ?InternalIsDescendant@?$PBaseArray@F@@UBEHPBD@Z @5248 NONAME ?InternalIsDescendant@?$PBaseArray@G@@UBEHPBD@Z @5249 NONAME ?InternalIsDescendant@?$PBaseArray@H@@UBEHPBD@Z @5250 NONAME ?InternalIsDescendant@?$PBaseArray@I@@UBEHPBD@Z @5251 NONAME ?InternalIsDescendant@?$PBaseArray@J@@UBEHPBD@Z @5252 NONAME ?InternalIsDescendant@?$PBaseArray@K@@UBEHPBD@Z @5253 NONAME ?InternalIsDescendant@?$PBaseArray@PAVElement@PHashTable@@@@UBEHPBD@Z @5254 NONAME ?InternalIsDescendant@?$PBaseArray@PAVPObject@@@@UBEHPBD@Z @5255 NONAME ?InternalIsDescendant@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEHPBD@Z @5256 NONAME ?InternalIsDescendant@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEHPBD@Z @5257 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEHPBD@Z @5258 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEHPBD@Z @5668 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEHPBD@Z @5259 NONAME ?InternalIsDescendant@?$PDictionary@VPString@@VPDynaLink@@@@UBEHPBD@Z @5574 NONAME ?InternalIsDescendant@?$PList@VInterfaceEntry@PIPSocket@@@@UBEHPBD@Z @7675 NONAME ?InternalIsDescendant@?$PList@VPDynaLink@@@@UBEHPBD@Z @5260 NONAME ?InternalIsDescendant@?$PList@VPNotifier@@@@UBEHPBD@Z @5261 NONAME ?InternalIsDescendant@?$PList@VPPluginService@@@@UBEHPBD@Z @5262 NONAME ?InternalIsDescendant@?$PList@VPSafeObject@@@@UBEHPBD@Z @7134 NONAME ?InternalIsDescendant@?$PList@VPSocket@@@@UBEHPBD@Z @5263 NONAME ?InternalIsDescendant@?$PList@VPString@@@@UBEHPBD@Z @5264 NONAME ?InternalIsDescendant@?$PList@VPThread@@@@UBEHPBD@Z @5265 NONAME ?InternalIsDescendant@?$PList@VPTimer@@@@UBEHPBD@Z @5266 NONAME ?InternalIsDescendant@?$POrdinalDictionary@VPString@@@@UBEHPBD@Z @5267 NONAME ?InternalIsDescendant@?$PSet@VPString@@@@UBEHPBD@Z @5268 NONAME ?InternalIsDescendant@?$PSortedList@VPString@@@@UBEHPBD@Z @5269 NONAME ?InternalIsDescendant@?$PStringDictionary@VPOrdinalKey@@@@UBEHPBD@Z @5270 NONAME ?InternalIsDescendant@?$PStringDictionary@VPString@@@@UBEHPBD@Z @5271 NONAME ?InternalIsDescendant@CMCDLL@PMail@@UBEHPBD@Z @5272 NONAME ?InternalIsDescendant@HouseKeepingThread@PProcess@@UBEHPBD@Z @5273 NONAME ?InternalIsDescendant@InterfaceEntry@PIPSocket@@UBEHPBD@Z @5274 NONAME ?InternalIsDescendant@MAPIDLL@PMail@@UBEHPBD@Z @5275 NONAME ?InternalIsDescendant@Nest@PReadWriteMutex@@UBEHPBD@Z @5276 NONAME ?InternalIsDescendant@PAbstractArray@@UBEHPBD@Z @5277 NONAME ?InternalIsDescendant@PAbstractDictionary@@UBEHPBD@Z @5278 NONAME ?InternalIsDescendant@PAbstractList@@UBEHPBD@Z @5279 NONAME ?InternalIsDescendant@PAbstractSet@@UBEHPBD@Z @5280 NONAME ?InternalIsDescendant@PAbstractSortedList@@UBEHPBD@Z @5281 NONAME ?InternalIsDescendant@PArgList@@UBEHPBD@Z @5282 NONAME ?InternalIsDescendant@PArrayObjects@@UBEHPBD@Z @5283 NONAME ?InternalIsDescendant@PBitArray@@UBEHPBD@Z @5284 NONAME ?InternalIsDescendant@PBYTEArray@@UBEHPBD@Z @5285 NONAME ?InternalIsDescendant@PCaselessString@@UBEHPBD@Z @5286 NONAME ?InternalIsDescendant@PChannel@@UBEHPBD@Z @5287 NONAME ?InternalIsDescendant@PCharArray@@UBEHPBD@Z @5288 NONAME ?InternalIsDescendant@PCollection@@UBEHPBD@Z @5289 NONAME ?InternalIsDescendant@PColourConverter@@UBEHPBD@Z @5290 NONAME ?InternalIsDescendant@PColourConverterRegistration@@UBEHPBD@Z @5291 NONAME ?InternalIsDescendant@PCondMutex@@UBEHPBD@Z @5292 NONAME ?InternalIsDescendant@PConfig@@UBEHPBD@Z @5293 NONAME ?InternalIsDescendant@PConfigArgs@@UBEHPBD@Z @5294 NONAME ?InternalIsDescendant@PConsoleChannel@@UBEHPBD@Z @5295 NONAME ?InternalIsDescendant@PContainer@@UBEHPBD@Z @5296 NONAME ?InternalIsDescendant@PCriticalSection@@UBEHPBD@Z @5537 NONAME ?InternalIsDescendant@PDirectory@@UBEHPBD@Z @5297 NONAME ?InternalIsDescendant@PDynaLink@@UBEHPBD@Z @5298 NONAME ?InternalIsDescendant@PEthSocket@@UBEHPBD@Z @5299 NONAME ?InternalIsDescendant@PFile@@UBEHPBD@Z @5300 NONAME ?InternalIsDescendant@PFileInfo@@UBEHPBD@Z @5301 NONAME ?InternalIsDescendant@PFilePath@@UBEHPBD@Z @5302 NONAME ?InternalIsDescendant@PHashTable@@UBEHPBD@Z @5303 NONAME ?InternalIsDescendant@PICMPDLL@@UBEHPBD@Z @5304 NONAME ?InternalIsDescendant@PICMPSocket@@UBEHPBD@Z @5305 NONAME ?InternalIsDescendant@PImageDLL@@UBEHPBD@Z @5306 NONAME ?InternalIsDescendant@PIndirectChannel@@UBEHPBD@Z @5307 NONAME ?InternalIsDescendant@PIntCondMutex@@UBEHPBD@Z @5308 NONAME ?InternalIsDescendant@PIPCacheData@@UBEHPBD@Z @5309 NONAME ?InternalIsDescendant@PIPCacheKey@@UBEHPBD@Z @5310 NONAME ?InternalIsDescendant@PIPDatagramSocket@@UBEHPBD@Z @5311 NONAME ?InternalIsDescendant@PIPSocket@@UBEHPBD@Z @5312 NONAME ?InternalIsDescendant@PIPXSocket@@UBEHPBD@Z @5313 NONAME ?InternalIsDescendant@PluginLoaderStartup@@UBEHPBD@Z @5927 NONAME ?InternalIsDescendant@PMail@@UBEHPBD@Z @5314 NONAME ?InternalIsDescendant@PMutex@@UBEHPBD@Z @5315 NONAME ?InternalIsDescendant@PNotifier@@UBEHPBD@Z @5316 NONAME ?InternalIsDescendant@PNotifierFunction@@UBEHPBD@Z @5317 NONAME ?InternalIsDescendant@PObject@@UBEHPBD@Z @5318 NONAME ?InternalIsDescendant@POrdinalKey@@UBEHPBD@Z @5319 NONAME ?InternalIsDescendant@POrdinalToString@@UBEHPBD@Z @5320 NONAME ?InternalIsDescendant@PPipeChannel@@UBEHPBD@Z @5321 NONAME ?InternalIsDescendant@PPluginManager@@UBEHPBD@Z @5322 NONAME ?InternalIsDescendant@PPointer@@UBEHPBD@Z @5669 NONAME ?InternalIsDescendant@PProcess@@UBEHPBD@Z @5323 NONAME ?InternalIsDescendant@PProcessStartup@@UBEHPBD@Z @5928 NONAME ?InternalIsDescendant@PQoS@@UBEHPBD@Z @5324 NONAME ?InternalIsDescendant@PRASDLL@@UBEHPBD@Z @5325 NONAME ?InternalIsDescendant@PReadWriteMutex@@UBEHPBD@Z @5326 NONAME ?InternalIsDescendant@PRegularExpression@@UBEHPBD@Z @5327 NONAME ?InternalIsDescendant@PRemoteConnection@@UBEHPBD@Z @5328 NONAME ?InternalIsDescendant@PSafeCollection@@UBEHPBD@Z @5329 NONAME ?InternalIsDescendant@PSafeObject@@UBEHPBD@Z @5330 NONAME ?InternalIsDescendant@PSafePtrBase@@UBEHPBD@Z @5331 NONAME ?InternalIsDescendant@PSemaphore@@UBEHPBD@Z @5332 NONAME ?InternalIsDescendant@PSerialChannel@@UBEHPBD@Z @5333 NONAME ?InternalIsDescendant@PServiceProcess@@UBEHPBD@Z @5334 NONAME ?InternalIsDescendant@PSimpleThread@@UBEHPBD@Z @5335 NONAME ?InternalIsDescendant@PSmartObject@@UBEHPBD@Z @5336 NONAME ?InternalIsDescendant@PSmartPointer@@UBEHPBD@Z @5337 NONAME ?InternalIsDescendant@PSmartPtrInspector@@UBEHPBD@Z @5670 NONAME ?InternalIsDescendant@PSocket@@UBEHPBD@Z @5338 NONAME ?InternalIsDescendant@PSortedStringList@@UBEHPBD@Z @5339 NONAME ?InternalIsDescendant@PSound@@UBEHPBD@Z @5340 NONAME ?InternalIsDescendant@PSoundChannel@@UBEHPBD@Z @5341 NONAME ?InternalIsDescendant@PSPXSocket@@UBEHPBD@Z @5342 NONAME ?InternalIsDescendant@PStandardColourConverter@@UBEHPBD@Z @5343 NONAME ?InternalIsDescendant@PString@@UBEHPBD@Z @5344 NONAME ?InternalIsDescendant@PStringArray@@UBEHPBD@Z @5345 NONAME ?InternalIsDescendant@PStringList@@UBEHPBD@Z @5346 NONAME ?InternalIsDescendant@PStringSet@@UBEHPBD@Z @5347 NONAME ?InternalIsDescendant@PStringStream@@UBEHPBD@Z @5348 NONAME ?InternalIsDescendant@PStringToOrdinal@@UBEHPBD@Z @5349 NONAME ?InternalIsDescendant@PStringToString@@UBEHPBD@Z @5350 NONAME ?InternalIsDescendant@PStructuredFile@@UBEHPBD@Z @5351 NONAME ?InternalIsDescendant@PSyncPoint@@UBEHPBD@Z @5352 NONAME ?InternalIsDescendant@PSystemLog@@UBEHPBD@Z @5353 NONAME ?InternalIsDescendant@PTCPSocket@@UBEHPBD@Z @5354 NONAME ?InternalIsDescendant@PTextFile@@UBEHPBD@Z @5355 NONAME ?InternalIsDescendant@PThread@@UBEHPBD@Z @5356 NONAME ?InternalIsDescendant@PTime@@UBEHPBD@Z @5357 NONAME ?InternalIsDescendant@PTimeInterval@@UBEHPBD@Z @5358 NONAME ?InternalIsDescendant@PTimer@@UBEHPBD@Z @5359 NONAME ?InternalIsDescendant@PTimerList@@UBEHPBD@Z @5360 NONAME ?InternalIsDescendant@PUDPSocket@@UBEHPBD@Z @5361 NONAME ?InternalIsDescendant@PVideoChannel@@UBEHPBD@Z @5362 NONAME ?InternalIsDescendant@PVideoDevice@@UBEHPBD@Z @5363 NONAME ?InternalIsDescendant@PVideoInputDevice@@UBEHPBD@Z @5364 NONAME ?InternalIsDescendant@PVideoInputDevice_FakeVideo@@UBEHPBD@Z @5365 NONAME ?InternalIsDescendant@PVideoInputDevice_VideoForWindows@@UBEHPBD@Z @5366 NONAME ?InternalIsDescendant@PVideoOutputDevice@@UBEHPBD@Z @5368 NONAME ?InternalIsDescendant@PVideoOutputDeviceRGB@@UBEHPBD@Z @7676 NONAME ?InternalIsDescendant@PVideoOutputDevice_NULLOutput@@UBEHPBD@Z @5369 NONAME ?InternalIsDescendant@PVideoOutputDevice_Window@@UBEHPBD@Z @7677 NONAME ?InternalIsDescendant@PWaveBuffer@@UBEHPBD@Z @5370 NONAME ?InternalIsDescendant@PWaveFormat@@UBEHPBD@Z @5371 NONAME ?InternalIsDescendant@PWin32PacketBuffer@@UBEHPBD@Z @5372 NONAME ?InternalIsDescendant@PWin32SnmpLibrary@@UBEHPBD@Z @5373 NONAME ?InternalIsDescendant@PWinQoS@@UBEHPBD@Z @5374 NONAME ?InternalIsDescendant@PWinSock@@UBEHPBD@Z @5375 NONAME ?InternalIsDescendant@RouteEntry@PIPSocket@@UBEHPBD@Z @5376 NONAME ?InternalIsDescendant@SelectList@PSocket@@UBEHPBD@Z @5377 NONAME ?InternalIsDescendant@Table@PHashTable@@UBEHPBD@Z @5378 NONAME ?InternalIsDescendant@WinSNMPLoader@@UBEHPBD@Z @6219 NONAME ?InternalSetSize@PAbstractArray@@IAEHHH@Z @7678 NONAME ?InternalStartRead@PReadWriteMutex@@IAEXXZ @2604 NONAME ?InternalStringSelect@PSortedStringList@@IBEHPBDHPAUElement@PAbstractSortedList@@@Z @3980 NONAME ?iNumGlobal@?1??WspiapiLoad@@9@4@4HB @3895 NONAME ?IoControl@PWin32PacketDriver@@QAEHIPBXKPAXKAAK@Z @2607 NONAME ?IsAddressReachable@PIPSocket@@SAHVAddress@1@00@Z @7679 NONAME ?IsAny@Address@PIPSocket@@QBEHXZ @7680 NONAME ?IsBroadcast@Address@PIPSocket@@QBEHXZ @2609 NONAME ?IsCapturing@PVideoInputDevice_FakeVideo@@UAEHXZ @3830 NONAME ?IsCapturing@PVideoInputDevice_VideoForWindows@@UAEHXZ @3699 NONAME ?IsClass@PObject@@QBEHPBD@Z @5379 NONAME ?IsCompleted@PWin32PacketBuffer@@QBEHXZ @2743 NONAME ?IsDaylightSavings@PTime@@SAHXZ @2744 NONAME ?IsEmpty@PContainer@@UBEHXZ @2876 NONAME ?IsEmpty@PString@@UBEHXZ @2877 NONAME ?IsEndOfFile@PFile@@QBEHXZ @2878 NONAME ?IsFuture@PTime@@QBEHXZ @2879 NONAME ?IsGrabberOpen@PVideoChannel@@UAEHXZ @2880 NONAME ?IsGUIProcess@PProcess@@UBEHXZ @2881 NONAME ?IsInitialised@PProcess@@SAHXZ @2882 NONAME ?IsIpAddressFamilyV6Supported@PIPSocket@@SAHXZ @3898 NONAME ?IsLoaded@PDynaLink@@UBEHXZ @2883 NONAME ?IsLocalHost@PIPSocket@@SAHABVPString@@@Z @2884 NONAME ?IsLoggedOn@PMail@@QBEHXZ @2885 NONAME ?IsLoopback@Address@PIPSocket@@QBEHXZ @2886 NONAME ?IsNULL@PSmartPointer@@QBEHXZ @2887 NONAME ?IsOK@PCapStatus@@QAEHXZ @2888 NONAME ?IsOpen@PChannel@@UBEHXZ @2889 NONAME ?IsOpen@PICMPSocket@@UBEHXZ @2891 NONAME ?IsOpen@PIndirectChannel@@UBEHXZ @2892 NONAME ?IsOpen@PPipeChannel@@UBEHXZ @2893 NONAME ?IsOpen@PSoundChannel@@UBEHXZ @3708 NONAME ?IsOpen@PSoundChannelWin32@@UBEHXZ @3709 NONAME ?IsOpen@PVideoChannel@@UBEHXZ @2894 NONAME ?IsOpen@PVideoInputDevice_FakeVideo@@UAEHXZ @3835 NONAME ?IsOpen@PVideoInputDevice_VideoForWindows@@UAEHXZ @3710 NONAME ?IsOpen@PVideoOutputDevice_NULLOutput@@UAEHXZ @3836 NONAME ?IsOpen@PVideoOutputDevice_Window@@UAEHXZ @7681 NONAME ?IsOpen@PWin32PacketDriver@@QBEHXZ @2898 NONAME ?IsPast@PTime@@QBEHXZ @2899 NONAME ?IsPaused@PTimer@@QBEHXZ @2900 NONAME ?IsPresent@P_fd_set@@QBEHI@Z @2901 NONAME ?IsRecordBufferFull@PSoundChannel@@UAEHXZ @3711 NONAME ?IsRecordBufferFull@PSoundChannelWin32@@UAEHXZ @3712 NONAME ?IsRegistered@?$PFactory@VPSoundChannel@@VPString@@@@SA_NABVPString@@@Z @7682 NONAME ?IsRegistered@?$PFactory@VPVideoInputDevice@@VPString@@@@SA_NABVPString@@@Z @7683 NONAME ?IsRegistered@?$PFactory@VPVideoOutputDevice@@VPString@@@@SA_NABVPString@@@Z @7684 NONAME ?IsRegistered_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAE_NABVPString@@@Z @7685 NONAME ?IsRegistered_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAE_NABVPString@@@Z @7686 NONAME ?IsRegistered_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE_NABVPString@@@Z @7687 NONAME ?IsRenderOpen@PVideoChannel@@UAEHXZ @2903 NONAME ?IsRFC1918@Address@PIPSocket@@QBEHXZ @7688 NONAME ?IsRoot@PDirectory@@QBEHXZ @2904 NONAME ?IsRunning@PPipeChannel@@QBEHXZ @2905 NONAME ?IsRunning@PTimer@@QBEHXZ @2906 NONAME ?IsSeparator@PDirectory@@SAHD@Z @2907 NONAME ?IsServiceProcess@PProcess@@UBEHXZ @2908 NONAME ?IsServiceProcess@PServiceProcess@@UBEHXZ @2909 NONAME ?IsSingleton@?$PFactory@VPProcessStartup@@VPString@@@@SAHABVPString@@@Z @6483 NONAME ?IsSingleton_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE_NABVPString@@@Z @6485 NONAME ?IsSubDir@PDirectory@@UBEHXZ @7299 NONAME ?IsSuspended@PThread@@UBEHXZ @2911 NONAME ?IsTerminated@PThread@@UBEHXZ @2912 NONAME ?IsTextFile@PFile@@MBEHXZ @2913 NONAME ?IsTextFile@PTextFile@@MBEHXZ @2914 NONAME ?IsType@PWin32PacketBuffer@@QBEHG@Z @2915 NONAME ?IsUnique@PContainer@@QBEHXZ @2916 NONAME ?IsV4Mapped@Address@PIPSocket@@QBEHXZ @3899 NONAME ?IsValid@Address@PIPSocket@@QBEHXZ @2917 NONAME ?IsValid@Address@PIPXSocket@@QBEHXZ @2918 NONAME ?IsValid@PFilePath@@SAHABVPString@@@Z @2919 NONAME ?IsValid@PFilePath@@SAHD@Z @2920 NONAME ?IsValid@PTime@@QBEHXZ @2921 NONAME ?IsValid@SecurityID@@QBEHXZ @2922 NONAME ?Kill@PPipeChannel@@QAEHH@Z @2923 NONAME ?Leave@PCriticalSection@@QAEXXZ @5539 NONAME ?Left@PString@@QBE?AV1@H@Z @2924 NONAME ?LeftRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3971 NONAME ?LeftTrim@PString@@QBE?AV1@XZ @2926 NONAME ?Lines@PString@@QBE?AVPStringArray@@XZ @2927 NONAME ?Listen@PEthSocket@@UAEHIGW4Reusability@PSocket@@@Z @2928 NONAME ?Listen@PIPSocket@@UAEHABVAddress@1@IGW4Reusability@PSocket@@@Z @2929 NONAME ?Listen@PIPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2930 NONAME ?Listen@PIPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2931 NONAME ?Listen@PSocket@@UAEHIGW4Reusability@1@@Z @2932 NONAME ?Listen@PSPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2933 NONAME ?Listen@PTCPSocket@@UAEHABVAddress@PIPSocket@@IGW4Reusability@PSocket@@@Z @2934 NONAME ?Listen@PTCPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2935 NONAME ?Load@PSound@@QAEHABVPFilePath@@@Z @2936 NONAME ?LoadPlugin@PPluginManager@@QAEHABVPString@@@Z @3713 NONAME ?LoadPluginDirectory@PPluginManager@@QAEXABVPDirectory@@@Z @3714 NONAME ?loadSoundStuff@PWLibStupidWindowsHacks@@3HA @7135 NONAME ?loadVideoStuff@PWLibStupidWindowsHacks@@3HA @7136 NONAME ?Lock@PSafeLockReadOnly@@QAEHXZ @7307 NONAME ?Lock@PSafeLockReadWrite@@QAEHXZ @7308 NONAME ?LockReadOnly@PSafeObject@@QBEHXZ @2937 NONAME ?LockReadWrite@PSafeObject@@QAEHXZ @2938 NONAME ?LogOff@PMail@@UAEHXZ @2939 NONAME ?LogOn@PMail@@QAEHABVPString@@00@Z @2940 NONAME ?LogOn@PMail@@QAEHABVPString@@0@Z @2941 NONAME ?LogOnCommonInterface@PMail@@IAEHPBD00@Z @2942 NONAME ?LookUp@PMail@@QAE?AW4LookUpResult@1@ABVPString@@PAV3@@Z @2943 NONAME ?lower_bound@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6697 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7137 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6698 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @6699 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7138 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7139 NONAME ?lower_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7140 NONAME ?Main@HouseKeepingThread@PProcess@@UAEXXZ @2944 NONAME ?Main@PSimpleThread@@UAEXXZ @2945 NONAME ?MainEntry@PServiceProcess@@AAEXKPAPAD@Z @2947 NONAME ?MainFunction@PThread@@CGIPAX@Z @2948 NONAME ?MakeEmpty@PString@@UAEAAV1@XZ @5681 NONAME ?MakeEmpty@PStringStream@@UAEAAVPString@@XZ @5682 NONAME ?MakeMinimumSize@PString@@QAEHXZ @2949 NONAME ?MakeUnique@PAbstractArray@@UAEHXZ @2950 NONAME ?MakeUnique@PAbstractList@@UAEHXZ @2951 NONAME ?MakeUnique@PAbstractSet@@UAEHXZ @2952 NONAME ?MakeUnique@PAbstractSortedList@@UAEHXZ @2953 NONAME ?MakeUnique@PArrayObjects@@UAEHXZ @2954 NONAME ?MakeUnique@PContainer@@UAEHXZ @2955 NONAME ?MakeUnique@PDirectory@@UAEHXZ @2956 NONAME ?MakeUnique@PHashTable@@UAEHXZ @2957 NONAME ?MakeUnique@PString@@UAEHXZ @2958 NONAME ?MarkMessageRead@PMail@@QAEHABVPString@@@Z @2959 NONAME ?MemFree@PWin32AsnAny@@QAEXXZ @2960 NONAME ?Mid@PString@@QBE?AV1@HH@Z @2961 NONAME ?MissingArgument@PArgList@@UBEXABVPString@@@Z @2962 NONAME ?Modify@PNotifyIconData@@QAEXXZ @2963 NONAME ?ModifyQoSSpec@PUDPSocket@@UAEHPAVPQoS@@@Z @3573 NONAME ?Move@PFile@@SAHABVPFilePath@@0H@Z @2964 NONAME ?Move@PNotifierList@@QAEXAAV1@@Z @5671 NONAME ?Move@PWin32OidBuffer@@QAEXPAEK@Z @2965 NONAME ?Net2Host@PSocket@@SAGG@Z @2966 NONAME ?Next@PDirectory@@QAEHXZ @2967 NONAME ?Next@PSafePtrBase@@IAEXXZ @2968 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@ABV1@HH@Z @2970 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@PBDHH@Z @2971 NONAME ?OnContinue@PServiceProcess@@UAEXXZ @2972 NONAME ?OnControl@PServiceProcess@@UAEXXZ @2973 NONAME ?OnLoadModule@PPluginModuleManager@@MAEXAAVPDynaLink@@H@Z @5575 NONAME ?OnLoadPlugin@PPluginModuleManager@@UAEXAAVPDynaLink@@H@Z @5672 NONAME ?OnOpen@PIndirectChannel@@MAEHXZ @2974 NONAME ?OnOutOfBand@PTCPSocket@@UAEXPBXH@Z @2975 NONAME ?OnPause@PServiceProcess@@UAEHXZ @2976 NONAME ?OnReadComplete@PChannel@@UAEXPAXH@Z @2977 NONAME ?OnShutdown@PluginLoaderStartup@@UAEXXZ @6220 NONAME ?OnShutdown@PPluginModuleManager@@UAEXXZ @6221 NONAME ?OnShutdown@PProcessStartup@@UAEXXZ @5936 NONAME ?OnShutdown@WinSNMPLoader@@UAEXXZ @6222 NONAME ?OnStartup@PluginLoaderStartup@@UAEXXZ @5937 NONAME ?OnStartup@PProcessStartup@@UAEXXZ @5938 NONAME ?OnStartup@WinSNMPLoader@@UAEXXZ @6223 NONAME ?OnStop@PServiceProcess@@UAEXXZ @2978 NONAME ?OnTimeout@PTimer@@UAEXXZ @2979 NONAME ?OnWait@PCondMutex@@UAEXXZ @2980 NONAME ?OnWriteComplete@PChannel@@UAEXPBXH@Z @2981 NONAME ?Open@NT_ServiceManager@@AAEHPAVPServiceProcess@@@Z @2982 NONAME ?Open@PConsoleChannel@@UAEHW4ConsoleType@1@@Z @2983 NONAME ?Open@PDirectory@@UAEHH@Z @7300 NONAME ?Open@PDynaLink@@UAEHABVPString@@@Z @2985 NONAME ?Open@PFile@@UAEHABVPFilePath@@W4OpenMode@1@H@Z @2987 NONAME ?Open@PFile@@UAEHW4OpenMode@1@H@Z @2988 NONAME ?Open@PIndirectChannel@@QAEHAAVPChannel@@@Z @2989 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@0HH@Z @2990 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2991 NONAME ?Open@PMultiMediaFile@@QAEHABVPFilePath@@KPAU_MMIOINFO@@@Z @2992 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@1@HH@Z @2993 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HH@Z @2994 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringToString@@W4OpenMode@1@HH@Z @2995 NONAME ?Open@PPipeChannel@@QAEHABVPString@@W4OpenMode@1@HH@Z @2996 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@00H@Z @2997 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@H@Z @2998 NONAME ?Open@PRemoteConnection@@QAEHH@Z @2999 NONAME ?Open@PSerialChannel@@UAEHAAVPConfig@@@Z @3000 NONAME ?Open@PSerialChannel@@UAEHABVPString@@KEW4Parity@1@EW4FlowControl@1@2@Z @3001 NONAME ?Open@PSoundChannel@@UAEHABVPString@@W4Directions@1@III@Z @3715 NONAME ?Open@PSoundChannelWin32@@QAEHABVPString@@W4Directions@PSoundChannel@@ABVPWaveFormat@@@Z @3716 NONAME ?Open@PSoundChannelWin32@@UAEHABVPString@@W4Directions@PSoundChannel@@III@Z @3717 NONAME ?Open@PVideoChannel@@QAEHABVPString@@W4Directions@1@@Z @3004 NONAME ?Open@PVideoInputDevice_FakeVideo@@UAEHABVPString@@H@Z @3837 NONAME ?Open@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@H@Z @3718 NONAME ?Open@PVideoOutputDevice_NULLOutput@@UAEHABVPString@@H@Z @3838 NONAME ?Open@PVideoOutputDevice_Window@@UAEHABVPString@@H@Z @7689 NONAME ?OpenDevice@PSoundChannelWin32@@AAEHI@Z @3719 NONAME ?OpenFull@PVideoDevice@@UAEHABUOpenArgs@1@H@Z @3009 NONAME ?OpenManager@NT_ServiceManager@@AAEHXZ @3010 NONAME ?OpenSocket@PEthSocket@@MAEHXZ @3011 NONAME ?OpenSocket@PICMPSocket@@MAEHH@Z @3012 NONAME ?OpenSocket@PICMPSocket@@MAEHXZ @3013 NONAME ?OpenSocket@PIPXSocket@@MAEHXZ @3014 NONAME ?OpenSocket@PSPXSocket@@MAEHXZ @3015 NONAME ?OpenSocket@PTCPSocket@@MAEHH@Z @3016 NONAME ?OpenSocket@PTCPSocket@@MAEHXZ @3017 NONAME ?OpenSocket@PUDPSocket@@MAEHH@Z @3018 NONAME ?OpenSocket@PUDPSocket@@MAEHXZ @3019 NONAME ?OpenSocket@PWinSock@@EAEHXZ @3020 NONAME ?OpenSocketGQOS@PUDPSocket@@MAEHHHH@Z @3574 NONAME ?OpenWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@AAVPWaveFormat@@AAK@Z @3021 NONAME ?OrderSelect@Info@PAbstractSortedList@@QBEPAUElement@2@PAU32@H@Z @7690 NONAME ?os_accept@PSocket@@IAEHAAV1@PAUsockaddr@@PAH@Z @3023 NONAME ?os_close@PSocket@@IAEHXZ @3024 NONAME ?os_connect@PSocket@@IAEHPAUsockaddr@@H@Z @3025 NONAME ?os_gmtime@PTime@@SAPAUtm@@PBJPAU2@@Z @3026 NONAME ?os_localtime@PTime@@SAPAUtm@@PBJPAU2@@Z @3027 NONAME ?os_recvfrom@PSocket@@IAEHPAXHHPAUsockaddr@@PAH@Z @3028 NONAME ?os_sendto@PSocket@@IAEHPBXHHPAUsockaddr@@H@Z @3030 NONAME ?os_socket@PSocket@@IAEHHHH@Z @3031 NONAME ?Output@PSystemLog@@SAXW4Level@1@PBD@Z @3032 NONAME ?overflow@Buffer@PDebugStream@@UAEHH@Z @3033 NONAME ?overflow@Buffer@PStringStream@@UAEHH@Z @3034 NONAME ?overflow@Buffer@PSystemLog@@UAEHH@Z @3035 NONAME ?overflow@PChannelStreamBuffer@@MAEHH@Z @3036 NONAME ?PABSINDEX@@YAHH@Z @3037 NONAME ?Parse@Frame@PEthSocket@@QAEXAAGAAPAEAAH@Z @3038 NONAME ?Parse@PArgList@@UAEHABVPString@@H@Z @3039 NONAME ?Parse@PArgList@@UAEHPBDH@Z @3040 NONAME ?ParseOption@PArgList@@AAEHHHAAHABV?$PScalarArray@H@@@Z @3041 NONAME ?PAssertCast@@YAPAVPSafeObject@@PAV1@PBDH@Z @7141 NONAME ?PAssertCast@@YAPBVPSafePtrBase@@PBV1@PBDH@Z @7142 NONAME ?PAssertFunc@@YAXPBD@Z @3042 NONAME ?PAssertFunc@@YAXPBDH00@Z @3043 NONAME ?PAssertFunc@@YAXPBDH0W4PStandardAssertMessage@@@Z @3044 NONAME ?PAssertFuncInline@@YA_N_NPBDH11@Z @7143 NONAME ?PAssertFuncInline@@YA_N_NPBDH1W4PStandardAssertMessage@@@Z @7144 NONAME ?Pause@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3045 NONAME ?Pause@PTimer@@QAEXXZ @3046 NONAME ?Pause@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3047 NONAME ?PDummyFunctionToMakeSureSymbolsAreInDEFFile@@YAXXZ @3048 NONAME ?pfFreeAddrInfo@?1??WspiapiFreeAddrInfo@@9@4@4P6GXPAUaddrinfo@@@ZA @3900 NONAME ?pfGetAddrInfo@?1??WspiapiGetAddrInfo@@9@16@4P6GHPBD0PBUaddrinfo@@PAPAU2@@ZA @3901 NONAME ?pfGetNameInfo@?1??WspiapiGetNameInfo@@9@28@4P6GHPBUsockaddr@@HPADI1IH@ZA @3902 NONAME ?PGetErrorStream@@YAAAVostream@@XZ @3049 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@@Z @3050 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@AAVPingInfo@1@@Z @3051 NONAME ?PlatformOpen@PPipeChannel@@AAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HHPBVPStringToString@@@Z @3052 NONAME ?Play@PSound@@QAEHABVPString@@@Z @7691 NONAME ?Play@PSound@@QAEHXZ @3053 NONAME ?PlayFile@PSound@@SAHABVPFilePath@@H@Z @3054 NONAME ?PlayFile@PSoundChannel@@UAEHABVPFilePath@@H@Z @3720 NONAME ?PlayFile@PSoundChannelWin32@@UAEHABVPFilePath@@H@Z @3721 NONAME ?PlaySoundA@PSoundChannel@@UAEHABVPSound@@H@Z @3722 NONAME ?PlaySoundA@PSoundChannelWin32@@UAEHABVPSound@@H@Z @3723 NONAME ?PLoadPluginDirectory@@YAXAAVPPluginManager@@ABVPDirectory@@PBD@Z @6227 NONAME ?PluginLoaderStartup_PString@PWLibFactoryLoader@@3HA @7692 NONAME ?PPlugin_PSoundChannel_WindowsMultimedia_Registration_Instance@@3VPPlugin_PSoundChannel_WindowsMultimedia_Registration@@A @3725 NONAME ?PPlugin_PVideoInputDevice_FakeVideo_Registration_Instance@@3VPPlugin_PVideoInputDevice_FakeVideo_Registration@@A @3840 NONAME ?PPlugin_PVideoInputDevice_VideoForWindows_Registration_Instance@@3VPPlugin_PVideoInputDevice_VideoForWindows_Registration@@A @3727 NONAME ?PPlugin_PVideoOutputDevice_NULLOutput_Registration_Instance@@3VPPlugin_PVideoOutputDevice_NULLOutput_Registration@@A @3842 NONAME ?PPlugin_PVideoOutputDevice_Window_Registration_Instance@@3VPPlugin_PVideoOutputDevice_Window_Registration@@A @7693 NONAME ?Predecessor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @7694 NONAME ?PreInitialise@PProcess@@SAXHPAPAD0@Z @3058 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEIN__@@@Z @3059 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEOUT__@@AAH@Z @3060 NONAME ?PrepareCommon@PWaveBuffer@@AAEXH@Z @3061 NONAME ?PreShutdown@PProcess@@SAXXZ @6125 NONAME ?Previous@PSafePtrBase@@IAEXXZ @3062 NONAME ?PrintElementOn@?$PBaseArray@D@@MBEXAAVostream@@H@Z @3063 NONAME ?PrintElementOn@?$PBaseArray@E@@MBEXAAVostream@@H@Z @3064 NONAME ?PrintElementOn@?$PBaseArray@F@@MBEXAAVostream@@H@Z @3065 NONAME ?PrintElementOn@?$PBaseArray@G@@MBEXAAVostream@@H@Z @3066 NONAME ?PrintElementOn@?$PBaseArray@H@@MBEXAAVostream@@H@Z @3067 NONAME ?PrintElementOn@?$PBaseArray@I@@MBEXAAVostream@@H@Z @3068 NONAME ?PrintElementOn@?$PBaseArray@J@@MBEXAAVostream@@H@Z @3069 NONAME ?PrintElementOn@?$PBaseArray@K@@MBEXAAVostream@@H@Z @3070 NONAME ?PrintElementOn@?$PBaseArray@PAVElement@PHashTable@@@@MBEXAAVostream@@H@Z @3071 NONAME ?PrintElementOn@?$PBaseArray@PAVPObject@@@@MBEXAAVostream@@H@Z @3072 NONAME ?PrintElementOn@PAbstractArray@@MBEXAAVostream@@H@Z @3073 NONAME ?PrintOn@InterfaceEntry@PIPSocket@@UBEXAAVostream@@@Z @3074 NONAME ?PrintOn@PAbstractArray@@UBEXAAVostream@@@Z @3075 NONAME ?PrintOn@PAbstractDictionary@@UBEXAAVostream@@@Z @3076 NONAME ?PrintOn@PArgList@@UBEXAAVostream@@@Z @3077 NONAME ?PrintOn@PBYTEArray@@UBEXAAVostream@@@Z @3078 NONAME ?PrintOn@PCharArray@@UBEXAAVostream@@@Z @3079 NONAME ?PrintOn@PCollection@@UBEXAAVostream@@@Z @3080 NONAME ?PrintOn@PIntCondMutex@@UBEXAAVostream@@@Z @3081 NONAME ?PrintOn@PObject@@UBEXAAVostream@@@Z @3082 NONAME ?PrintOn@POrdinalKey@@UBEXAAVostream@@@Z @3083 NONAME ?PrintOn@PString@@UBEXAAVostream@@@Z @3084 NONAME ?PrintOn@PThread@@UBEXAAVostream@@@Z @3085 NONAME ?PrintOn@PTime@@UBEXAAVostream@@@Z @3086 NONAME ?PrintOn@PTimeInterval@@UBEXAAVostream@@@Z @3087 NONAME ?PrintOn@PWaveFormat@@UBEXAAVostream@@@Z @3088 NONAME ?Process@PTimer@@AAEXABVPTimeInterval@@AAV2@@Z @3089 NONAME ?Process@PTimerList@@QAE?AVPTimeInterval@@XZ @3090 NONAME ?ProcessCommand@PServiceProcess@@AAEHPBD@Z @3091 NONAME ?PSetErrorStream@@YAXPAVostream@@@Z @3092 NONAME ?psprintf@@YA?AVPString@@PBDZZ @3093 NONAME ?PTraceCurrentLevel@@3IA @6126 NONAME ?push_back@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEXABQAVPPluginModuleManager@@@Z @5940 NONAME ?push_back@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEXABVPString@@@Z @5941 NONAME ?PutData@PWin32PacketBuffer@@QAEHPBXH@Z @3094 NONAME ?PVideoOutputDevice_Window_descriptor@@3VPVideoOutputDevice_Window_PluginServiceDescriptor@@A @7695 NONAME ?pvsprintf@@YA?AVPString@@ABV1@PAD@Z @3095 NONAME ?pvsprintf@@YA?AVPString@@PBDPAD@Z @3096 NONAME ?PWaitOnExitConsoleWindow@@YAXXZ @3097 NONAME ?p_argc@PProcess@@0HA @3098 NONAME ?p_argv@PProcess@@0PAPADA @3099 NONAME ?p_envp@PProcess@@0PAPADA @3100 NONAME ?P_IsOldWin95@@YAHXZ @3101 NONAME ?p_signed2string@@YAPADHHPAD@Z @3102 NONAME ?p_signed2string@@YAPADJJPAD@Z @3103 NONAME ?p_signed2string@@YAPAD_J0PAD@Z @3104 NONAME ?p_unsigned2string@@YAPADHHPAD@Z @3105 NONAME ?p_unsigned2string@@YAPADIIPAD@Z @3106 NONAME ?p_unsigned2string@@YAPADJJPAD@Z @3107 NONAME ?p_unsigned2string@@YAPADKKPAD@Z @3108 NONAME ?p_unsigned2string@@YAPAD_J0PAD@Z @3109 NONAME ?p_unsigned2string@@YAPAD_K0PAD@Z @3110 NONAME ?Query@PWin32SnmpLibrary@@AAEHEPAUSnmpVarBindList@@PAJ1@Z @6224 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIAAK@Z @3111 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIIPAE@Z @3112 NONAME ?QueryOid@PWin32SnmpLibrary@@AAEHEAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @3113 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAKH@Z @3114 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAV2@@Z @3115 NONAME ?Ras@@3VPRASDLL@@A @3116 NONAME ?Read@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @7696 NONAME ?Read@PChannel@@UAEHPAXH@Z @3117 NONAME ?Read@PConsoleChannel@@UAEHPAXH@Z @3118 NONAME ?Read@PEthSocket@@UAEHPAXH@Z @3119 NONAME ?Read@PFile@@UAEHPAXH@Z @3120 NONAME ?Read@PIndirectChannel@@UAEHPAXH@Z @3121 NONAME ?Read@PMultiMediaFile@@QAEHPAXH@Z @3122 NONAME ?Read@PPipeChannel@@UAEHPAXH@Z @3123 NONAME ?Read@PSerialChannel@@UAEHPAXH@Z @3124 NONAME ?Read@PSocket@@UAEHPAXH@Z @3125 NONAME ?Read@PSoundChannel@@UAEHPAXH@Z @3126 NONAME ?Read@PSoundChannelWin32@@UAEHPAXH@Z @3734 NONAME ?Read@PStructuredFile@@EAEHPAXH@Z @3127 NONAME ?Read@PStructuredFile@@QAEHPAX@Z @3128 NONAME ?Read@PUDPSocket@@UAEHPAXH@Z @3129 NONAME ?Read@PVideoChannel@@UAEHPAXH@Z @3130 NONAME ?ReadAsync@PChannel@@UAEHPAXH@Z @3131 NONAME ?ReadAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3132 NONAME ?ReadBlock@PChannel@@QAEHPAXH@Z @3133 NONAME ?ReadChar@PChannel@@UAEHXZ @3134 NONAME ?ReadCharWithTimeout@PChannel@@IAEHAAVPTimeInterval@@@Z @3135 NONAME ?ReadComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3136 NONAME ?ReadElementFrom@?$PScalarArray@F@@MAEXAAVistream@@H@Z @3137 NONAME ?ReadElementFrom@?$PScalarArray@G@@MAEXAAVistream@@H@Z @3138 NONAME ?ReadElementFrom@?$PScalarArray@H@@MAEXAAVistream@@H@Z @3139 NONAME ?ReadElementFrom@?$PScalarArray@I@@MAEXAAVistream@@H@Z @3140 NONAME ?ReadElementFrom@?$PScalarArray@J@@MAEXAAVistream@@H@Z @3141 NONAME ?ReadElementFrom@?$PScalarArray@K@@MAEXAAVistream@@H@Z @3142 NONAME ?ReadElementFrom@PAbstractArray@@MAEXAAVistream@@H@Z @3143 NONAME ?ReadFrom@PAbstractArray@@UAEXAAVistream@@@Z @3144 NONAME ?ReadFrom@PArgList@@UAEXAAVistream@@@Z @3145 NONAME ?ReadFrom@PBYTEArray@@UAEXAAVistream@@@Z @3146 NONAME ?ReadFrom@PCharArray@@UAEXAAVistream@@@Z @3147 NONAME ?ReadFrom@PIPDatagramSocket@@UAEHPAXHAAVAddress@PIPSocket@@AAG@Z @3148 NONAME ?ReadFrom@PIPXSocket@@UAEHPAXHAAVAddress@1@AAG@Z @3149 NONAME ?ReadFrom@PObject@@UAEXAAVistream@@@Z @3150 NONAME ?ReadFrom@POrdinalToString@@UAEXAAVistream@@@Z @3151 NONAME ?ReadFrom@PSortedStringList@@UAEXAAVistream@@@Z @3152 NONAME ?ReadFrom@PString@@UAEXAAVistream@@@Z @3153 NONAME ?ReadFrom@PStringArray@@UAEXAAVistream@@@Z @3154 NONAME ?ReadFrom@PStringList@@UAEXAAVistream@@@Z @3155 NONAME ?ReadFrom@PStringSet@@UAEXAAVistream@@@Z @3156 NONAME ?ReadFrom@PStringToOrdinal@@UAEXAAVistream@@@Z @3157 NONAME ?ReadFrom@PStringToString@@UAEXAAVistream@@@Z @3158 NONAME ?ReadFrom@PTime@@UAEXAAVistream@@@Z @3159 NONAME ?ReadFrom@PTimeInterval@@UAEXAAVistream@@@Z @3160 NONAME ?ReadFrom@PWaveFormat@@UAEXAAVistream@@@Z @3161 NONAME ?ReadLine@PTextFile@@QAEHAAVPString@@@Z @3162 NONAME ?ReadPacket@PEthSocket@@QAEHAAVPBYTEArray@@AATAddress@1@1AAGAAHAAPAE@Z @3163 NONAME ?ReadStandardError@PPipeChannel@@QAEHAAVPString@@H@Z @3164 NONAME ?ReadString@PChannel@@QAE?AVPString@@H@Z @3165 NONAME ?ReceiveCommandString@PChannel@@IAEHHABVPString@@AAHH@Z @3167 NONAME ?RecordFile@PSoundChannel@@UAEHABVPFilePath@@@Z @3735 NONAME ?RecordFile@PSoundChannelWin32@@UAEHABVPFilePath@@@Z @3736 NONAME ?RecordSound@PSoundChannel@@UAEHAAVPSound@@@Z @3737 NONAME ?RecordSound@PSoundChannelWin32@@UAEHAAVPSound@@@Z @3738 NONAME ?Redraw@PVideoChannel@@UAEHPBX@Z @3170 NONAME ?Register@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7145 NONAME ?Register@?$PFactory@VPProcessStartup@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @6701 NONAME ?Register@?$PFactory@VPSoundChannel@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7146 NONAME ?Register@?$PFactory@VPVideoInputDevice@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7147 NONAME ?Register@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7148 NONAME ?RegisterNotifiee@PSmartNotifieeRegistrar@@SAIPAX@Z @5674 NONAME ?RegisterService@PPluginManager@@QAEHABVPString@@0PAVPPluginServiceDescriptor@@@Z @3739 NONAME ?Register_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7149 NONAME ?Register_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6702 NONAME ?Register_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7150 NONAME ?Register_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7151 NONAME ?Register_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7152 NONAME ?Release@PWaveBuffer@@AAEKXZ @3171 NONAME ?Remove@PAbstractDictionary@@EAEHPBVPObject@@@Z @3172 NONAME ?Remove@PAbstractList@@UAEHPBVPObject@@@Z @3173 NONAME ?Remove@PAbstractSet@@UAEHPBVPObject@@@Z @3174 NONAME ?Remove@PAbstractSortedList@@UAEHPBVPObject@@@Z @3175 NONAME ?Remove@PArrayObjects@@UAEHPBVPObject@@@Z @3176 NONAME ?Remove@PDirectory@@QAEHXZ @3177 NONAME ?Remove@PDirectory@@SAHABVPString@@@Z @3178 NONAME ?Remove@PFile@@QAEHH@Z @3179 NONAME ?Remove@PFile@@SAHABVPFilePath@@H@Z @3180 NONAME ?RemoveAll@PAbstractSortedList@@UAEXXZ @3181 NONAME ?RemoveAll@PArrayObjects@@UAEXXZ @3182 NONAME ?RemoveAll@PCollection@@UAEXXZ @3183 NONAME ?RemoveAll@PSafeCollection@@UAEXH@Z @7697 NONAME ?RemoveAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPCaselessString@@@Z @3185 NONAME ?RemoveAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @3186 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @3187 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEPAVPPointer@@ABVPOrdinalKey@@@Z @5675 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEPAVPThread@@ABVPOrdinalKey@@@Z @3188 NONAME ?RemoveAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEPAVPDynaLink@@ABVPString@@@Z @5576 NONAME ?RemoveAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@@Z @3189 NONAME ?RemoveAt@?$PStringDictionary@VPOrdinalKey@@@@UAEPAVPString@@ABVPOrdinalKey@@@Z @3190 NONAME ?RemoveAt@?$PStringDictionary@VPString@@@@UAEPAVPString@@ABV2@@Z @3191 NONAME ?RemoveAt@PAbstractDictionary@@UAEPAVPObject@@H@Z @3192 NONAME ?RemoveAt@PAbstractList@@UAEPAVPObject@@H@Z @3193 NONAME ?RemoveAt@PAbstractSet@@UAEPAVPObject@@H@Z @3194 NONAME ?RemoveAt@PAbstractSortedList@@UAEPAVPObject@@H@Z @3195 NONAME ?RemoveAt@PArrayObjects@@UAEPAVPObject@@H@Z @3196 NONAME ?RemoveConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@@Z @3197 NONAME ?RemoveElement@PAbstractSortedList@@IAEXPAUElement@1@@Z @3974 NONAME ?RemoveElement@Table@PHashTable@@QAEPAVPObject@@ABV3@@Z @3199 NONAME ?RemoveNotifier@PPluginManager@@QAEXABVPNotifier@@@Z @4010 NONAME ?RemoveTarget@PNotifierList@@QAEHPAVPObject@@@Z @5676 NONAME ?Rename@PFile@@QAEHABVPString@@H@Z @3200 NONAME ?Rename@PFile@@SAHABVPFilePath@@ABVPString@@H@Z @3201 NONAME ?Replace@PString@@QAEXABV1@0HH@Z @3202 NONAME ?ReplaceAt@PAbstractList@@UAEHHPAVPObject@@@Z @3203 NONAME ?ReportStatus@PServiceProcess@@AAEHKKKK@Z @3204 NONAME ?Reset@PTimer@@QAEXXZ @3205 NONAME ?Reset@PWin32Overlapped@@QAEXXZ @3206 NONAME ?ResizeYUV422@PStandardColourConverter@@IBEXPBEPAE@Z @3207 NONAME ?Resolution@PTimer@@SAIXZ @3208 NONAME ?Restart@PDirectory@@UAEHH@Z @7301 NONAME ?Restart@PThread@@UAEXXZ @3210 NONAME ?RestrictAccess@PVideoChannel@@QAEXXZ @3211 NONAME ?Resume@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3212 NONAME ?Resume@PThread@@UAEXXZ @3213 NONAME ?Resume@PTimer@@QAEXXZ @3214 NONAME ?Resume@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3215 NONAME ?RGBtoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @7698 NONAME ?RGBtoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAEIII@Z @7699 NONAME ?RGBtoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAEIII@Z @7700 NONAME ?rgtGlobal@?1??WspiapiLoad@@9@4@4PAUWSPIAPI_FUNCTION@@A @3903 NONAME ?Right@PString@@QBE?AV1@H@Z @3219 NONAME ?RightRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3975 NONAME ?RightTrim@PString@@QBE?AV1@XZ @3221 NONAME ?RunContinuous@PTimer@@QAEXABVPTimeInterval@@@Z @3222 NONAME ?SafeDereference@PSafeObject@@QAEXXZ @3223 NONAME ?SafelyCanBeDeleted@PSafeObject@@QBEHXZ @7153 NONAME ?SafeReference@PSafeObject@@QAEHXZ @3225 NONAME ?SafeRemove@PSafeCollection@@MAEHPAVPSafeObject@@@Z @3226 NONAME ?SafeRemove@PSafeObject@@QAEXXZ @3227 NONAME ?SafeRemoveAt@PSafeCollection@@MAEHH@Z @3228 NONAME ?SafeRemoveObject@PSafeCollection@@IAEXPAVPSafeObject@@@Z @3229 NONAME ?Save@PConfigArgs@@QAEXABVPString@@@Z @3230 NONAME ?Save@PSound@@QAEHABVPFilePath@@@Z @3231 NONAME ?SaveSettings@PSerialChannel@@UAEXAAVPConfig@@@Z @3232 NONAME ?SBGGR8toRGB@PStandardColourConverter@@IBEHPBEPAEPAH@Z @7701 NONAME ?SBGGR8toYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @7702 NONAME ?seekoff@Buffer@PStringStream@@UAEJJW4seek_dir@ios@@H@Z @3233 NONAME ?seekoff@PChannelStreamBuffer@@MAEJJW4seek_dir@ios@@H@Z @3234 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00@Z @3235 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00ABVPTimeInterval@@@Z @3236 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0@Z @3237 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0ABVPTimeInterval@@@Z @3238 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@@Z @3239 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@ABVPTimeInterval@@@Z @3240 NONAME ?Select@PSocket@@SAHAAV1@0@Z @3241 NONAME ?Select@PSocket@@SAHAAV1@0ABVPTimeInterval@@@Z @3242 NONAME ?SendCommandString@PChannel@@QAEHABVPString@@@Z @3243 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBD@Z @3244 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBDABVPStringList@@@Z @3245 NONAME ?SendNote@PMail@@QAEHABVPString@@ABVPStringList@@10PBD1@Z @3246 NONAME ?SeparatorChar@PDevicePluginServiceDescriptor@@2DB @7703 NONAME ?SetArgs@PArgList@@QAEXABVPString@@@Z @3248 NONAME ?SetArgs@PArgList@@QAEXABVPStringArray@@@Z @3249 NONAME ?SetArgs@PArgList@@QAEXHPAPAD@Z @3250 NONAME ?SetAt@?$PBaseArray@D@@QAEHHD@Z @3251 NONAME ?SetAt@?$PBaseArray@E@@QAEHHE@Z @3252 NONAME ?SetAt@?$PBaseArray@F@@QAEHHF@Z @3253 NONAME ?SetAt@?$PBaseArray@G@@QAEHHG@Z @3254 NONAME ?SetAt@?$PBaseArray@H@@QAEHHH@Z @3255 NONAME ?SetAt@?$PBaseArray@I@@QAEHHI@Z @3256 NONAME ?SetAt@?$PBaseArray@J@@QAEHHJ@Z @3257 NONAME ?SetAt@?$PBaseArray@K@@QAEHHK@Z @3258 NONAME ?SetAt@?$PBaseArray@PAVElement@PHashTable@@@@QAEHHPAVElement@PHashTable@@@Z @3259 NONAME ?SetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEHABVPCaselessString@@PAVPIPCacheData@@@Z @3260 NONAME ?SetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEHABVPIPCacheKey@@PAVPIPCacheData@@@Z @3261 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEHABVPOrdinalKey@@PAVNest@PReadWriteMutex@@@Z @3262 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEHABVPOrdinalKey@@PAVPPointer@@@Z @5677 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEHABVPOrdinalKey@@PAVPThread@@@Z @3263 NONAME ?SetAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEHABVPString@@PAVPDynaLink@@@Z @5577 NONAME ?SetAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@H@Z @3264 NONAME ?SetAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHABVPOrdinalKey@@ABVPString@@@Z @3265 NONAME ?SetAt@?$PStringDictionary@VPString@@@@UAEHABVPString@@0@Z @3266 NONAME ?SetAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @3267 NONAME ?SetAt@PAbstractList@@UAEHHPAVPObject@@@Z @3268 NONAME ?SetAt@PAbstractSet@@UAEHHPAVPObject@@@Z @3269 NONAME ?SetAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @3270 NONAME ?SetAt@PArrayObjects@@UAEHHPAVPObject@@@Z @3271 NONAME ?SetAt@PBitArray@@QAEHHH@Z @3272 NONAME ?SetAutoDelete@PThread@@UAEXW4AutoDeleteFlag@1@@Z @3273 NONAME ?SetAutoDeleteObjects@PSafeCollection@@UAEXXZ @3274 NONAME ?SetAvgBytesPerSec@PQoS@@QAEXK@Z @3579 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@0H@Z @3953 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@H@Z @3954 NONAME ?SetBreak@PSerialChannel@@QAEXH@Z @3277 NONAME ?SetBrightness@PVideoDevice@@UAEHI@Z @3278 NONAME ?SetBuffers@PSoundChannel@@UAEHHH@Z @3740 NONAME ?SetBuffers@PSoundChannelWin32@@UAEHHH@Z @3741 NONAME ?SetBufferSize@PChannel@@QAEHH@Z @3280 NONAME ?SetBufferSize@PChannelStreamBuffer@@IAEHH@Z @3281 NONAME ?SetChannel@PVideoDevice@@UAEHH@Z @3283 NONAME ?SetChannel@PVideoInputDevice_FakeVideo@@UAEHH@Z @3852 NONAME ?SetColour@PVideoDevice@@UAEHI@Z @3284 NONAME ?SetColourFormat@PVideoDevice@@UAEHABVPString@@@Z @3286 NONAME ?SetColourFormat@PVideoInputDevice_FakeVideo@@UAEHABVPString@@@Z @3853 NONAME ?SetColourFormat@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@@Z @3742 NONAME ?SetColourFormat@PVideoOutputDeviceRGB@@UAEHABVPString@@@Z @7704 NONAME ?SetColourFormat@PVideoOutputDevice_Window@@UAEHABVPString@@@Z @7705 NONAME ?SetColourFormatConverter@PVideoDevice@@UAEHABVPString@@@Z @3289 NONAME ?SetCommsParam@PSerialChannel@@AAEHKEW4Parity@1@EW4FlowControl@1@1@Z @3290 NONAME ?SetConfiguration@PRemoteConnection@@QAE?AW4Status@1@ABUConfiguration@1@H@Z @3291 NONAME ?SetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@ABUConfiguration@1@H@Z @3292 NONAME ?SetConfigurationPath@PProcess@@QAEXABVPString@@@Z @3293 NONAME ?SetContrast@PVideoDevice@@UAEHI@Z @3294 NONAME ?SetCurrent@PAbstractList@@IBEHH@Z @3295 NONAME ?SetDataAt@?$POrdinalDictionary@VPString@@@@UAEHHH@Z @3296 NONAME ?SetDataAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHHABVPString@@@Z @3297 NONAME ?SetDataAt@?$PStringDictionary@VPString@@@@UAEHHABVPString@@@Z @3298 NONAME ?SetDataAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @3299 NONAME ?SetDataBits@PSerialChannel@@QAEHE@Z @3300 NONAME ?SetDefaultIpAddressFamily@PIPSocket@@SAXH@Z @3301 NONAME ?SetDefaultIpAddressFamilyV4@PIPSocket@@SAXXZ @3302 NONAME ?SetDefaultIpAddressFamilyV6@PIPSocket@@SAXXZ @3904 NONAME ?SetDefaultSection@PConfig@@UAEXABVPString@@@Z @3955 NONAME ?SetDSCP@PQoS@@QAEXH@Z @3581 NONAME ?SetDSCPAlternative@PQoS@@SAXKI@Z @3582 NONAME ?SetDstFrameSize@PColourConverter@@UAEHIIH@Z @3304 NONAME ?SetDTR@PSerialChannel@@QAEXH@Z @3305 NONAME ?SetErrorValues@PChannel@@IAEHW4Errors@1@HW4ErrorGroup@1@@Z @3306 NONAME ?SetFilePath@PFile@@QAEXABVPString@@@Z @3307 NONAME ?setfill@@YA?AV__SMANIP_int@@H@Z @3308 NONAME ?SetFilter@PEthSocket@@QAEHIG@Z @3309 NONAME ?SetFormat@PSound@@QAEXIII@Z @3310 NONAME ?SetFormat@PSoundChannel@@UAEHIII@Z @3743 NONAME ?SetFormat@PSoundChannelWin32@@QAEHABVPWaveFormat@@@Z @3744 NONAME ?SetFormat@PSoundChannelWin32@@UAEHIII@Z @3745 NONAME ?SetFormat@PWaveFormat@@QAEXIII@Z @3313 NONAME ?SetFormat@PWaveFormat@@QAEXPBXH@Z @3314 NONAME ?SetFrameData@PVideoOutputDeviceRGB@@UAEHIIIIPBEH@Z @7706 NONAME ?SetFrameData@PVideoOutputDevice_NULLOutput@@UAEHIIIIPBEH@Z @3854 NONAME ?SetFrameRate@PVideoDevice@@UAEHI@Z @3318 NONAME ?SetFrameRate@PVideoInputDevice_FakeVideo@@UAEHI@Z @3855 NONAME ?SetFrameRate@PVideoInputDevice_VideoForWindows@@UAEHI@Z @3746 NONAME ?SetFrameSize@PColourConverter@@UAEHII@Z @3320 NONAME ?SetFrameSize@PVideoDevice@@UAEHII@Z @3322 NONAME ?SetFrameSize@PVideoInputDevice_FakeVideo@@UAEHII@Z @3856 NONAME ?SetFrameSize@PVideoInputDevice_VideoForWindows@@UAEHII@Z @3747 NONAME ?SetFrameSize@PVideoOutputDeviceRGB@@UAEHII@Z @7707 NONAME ?SetFrameSize@PVideoOutputDevice_Window@@UAEHII@Z @7708 NONAME ?SetFrameSizeConverter@PVideoDevice@@UAEHIIH@Z @3325 NONAME ?SetGrabberFrameSize@PVideoChannel@@UAEXHH@Z @3326 NONAME ?SetGroupName@PProcess@@QAEHABVPString@@H@Z @3327 NONAME ?SetHue@PVideoDevice@@UAEHI@Z @3328 NONAME ?SetInputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @3330 NONAME ?SetInt64@PConfig@@UAEXABVPString@@0_J@Z @3956 NONAME ?SetInt64@PConfig@@UAEXABVPString@@_J@Z @3957 NONAME ?SetInteger@PConfig@@UAEXABVPString@@0J@Z @3958 NONAME ?SetInteger@PConfig@@UAEXABVPString@@J@Z @3959 NONAME ?SetInterval@PTimeInterval@@UAEX_JJJJH@Z @3335 NONAME ?SetInterval@PTimer@@UAEX_JJJJH@Z @3336 NONAME ?SetLastElementAt@Table@PHashTable@@QAEHH@Z @3337 NONAME ?SetLength@PFile@@UAEHJ@Z @3338 NONAME ?SetLevel@PTrace@@SAXI@Z @3340 NONAME ?SetLogLevel@PServiceProcess@@QAEXW4Level@PSystemLog@@@Z @3341 NONAME ?SetMaxFrameBytes@PQoS@@QAEXK@Z @3583 NONAME ?SetMaxHandles@PProcess@@QAEHH@Z @3342 NONAME ?SetMinSize@PContainer@@QAEHH@Z @3343 NONAME ?SetNotifier@PTimer@@QAEXABVPNotifier@@@Z @3344 NONAME ?SetOid@PWin32PacketDriver@@QAEHIIPBE@Z @3345 NONAME ?SetOid@PWin32PacketDriver@@QAEHIK@Z @3346 NONAME ?SetOption@PSocket@@QAEHHHH@Z @3347 NONAME ?SetOption@PSocket@@QAEHHPBXHH@Z @3348 NONAME ?SetOptions@PTrace@@SAXI@Z @3349 NONAME ?SetOutputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @3350 NONAME ?SetPacketType@PIPXSocket@@QAEHH@Z @3351 NONAME ?SetParity@PSerialChannel@@QAEHW4Parity@1@@Z @3352 NONAME ?SetPeakBytesPerSec@PQoS@@QAEXK@Z @3584 NONAME ?SetPermissions@PFile@@QAEHH@Z @3353 NONAME ?SetPermissions@PFile@@SAHABVPFilePath@@H@Z @3354 NONAME ?SetPort@PSocket@@QAEXABVPString@@@Z @3355 NONAME ?SetPort@PSocket@@QAEXG@Z @3356 NONAME ?SetPosition@PFile@@UAEHJW4FilePositionOrigin@1@@Z @3357 NONAME ?setprecision@@YA?AV__SMANIP_int@@H@Z @3358 NONAME ?SetPriority@PThread@@UAEXW4Priority@1@@Z @3359 NONAME ?SetReadChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @3360 NONAME ?SetReadTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @3361 NONAME ?SetReal@PConfig@@UAEXABVPString@@0N@Z @3960 NONAME ?SetReal@PConfig@@UAEXABVPString@@N@Z @3961 NONAME ?SetRenderFrameSize@PVideoChannel@@UAEXHH@Z @3364 NONAME ?SetRTS@PSerialChannel@@QAEXH@Z @3365 NONAME ?SetSafetyMode@PSafePtrBase@@QAEHW4PSafetyMode@@@Z @3366 NONAME ?SetSendAddress@PUDPSocket@@QAEXABVAddress@PIPSocket@@G@Z @3367 NONAME ?SetSize@PAbstractArray@@UAEHH@Z @3368 NONAME ?SetSize@PAbstractList@@UAEHH@Z @3369 NONAME ?SetSize@PAbstractSortedList@@UAEHH@Z @3370 NONAME ?SetSize@PArrayObjects@@UAEHH@Z @3371 NONAME ?SetSize@PBitArray@@UAEHH@Z @3372 NONAME ?SetSize@PHashTable@@MAEHH@Z @3373 NONAME ?SetSize@PString@@UAEHH@Z @3374 NONAME ?SetSize@PWaveFormat@@QAEHH@Z @3375 NONAME ?SetSpeed@PSerialChannel@@QAEHK@Z @3376 NONAME ?SetSrcFrameSize@PColourConverter@@UAEHII@Z @3377 NONAME ?SetStopBits@PSerialChannel@@QAEHE@Z @3378 NONAME ?SetStream@PTrace@@SAXPAVostream@@@Z @3379 NONAME ?SetString@PConfig@@UAEXABVPString@@00@Z @3962 NONAME ?SetString@PConfig@@UAEXABVPString@@0@Z @3963 NONAME ?SetStructure@PStructuredFile@@QAEXPAUElement@1@H@Z @3382 NONAME ?SetTerminationValue@PProcess@@QAEXH@Z @3383 NONAME ?SetThreadName@PProcess@@UAEXABVPString@@@Z @3384 NONAME ?SetThreadName@PThread@@UAEXABVPString@@@Z @3385 NONAME ?SetTime@PConfig@@UAEXABVPString@@0ABVPTime@@@Z @3964 NONAME ?SetTime@PConfig@@UAEXABVPString@@ABVPTime@@@Z @3965 NONAME ?SetType@PFilePath@@QAEXABVPCaselessString@@@Z @3388 NONAME ?SetUserName@PProcess@@QAEHABVPString@@H@Z @3389 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@0@Z @3390 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@K@Z @3391 NONAME ?SetVFlipState@PColourConverter@@QAEXH@Z @3392 NONAME ?SetVFlipState@PVideoDevice@@UAEHH@Z @3393 NONAME ?SetVFlipState@PVideoOutputDevice_Window@@UAEHH@Z @7709 NONAME ?SetVideoChannelFormat@PVideoDevice@@UAEHHW4VideoFormat@1@@Z @3394 NONAME ?SetVideoFormat@PVideoDevice@@UAEHW4VideoFormat@1@@Z @3396 NONAME ?SetVideoFormat@PVideoInputDevice_FakeVideo@@UAEHW4VideoFormat@PVideoDevice@@@Z @3857 NONAME ?SetVolume@PSoundChannel@@UAEHI@Z @3748 NONAME ?SetVolume@PSoundChannelWin32@@UAEHI@Z @3749 NONAME ?setw@@YA?AV__SMANIP_int@@H@Z @3398 NONAME ?SetWhiteness@PVideoDevice@@UAEHI@Z @3399 NONAME ?SetWinDebugThreadName@@YAXPAUtagTHREADNAME_INFO@@@Z @3750 NONAME ?SetWinServiceType@PQoS@@QAEXK@Z @3585 NONAME ?SetWriteChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @3400 NONAME ?SetWriteTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @3401 NONAME ?Shift@PArgList@@QAEXH@Z @3402 NONAME ?Shutdown@PChannel@@UAEHW4ShutdownValue@1@@Z @3403 NONAME ?Shutdown@PIndirectChannel@@UAEHW4ShutdownValue@PChannel@@@Z @3404 NONAME ?Shutdown@PSocket@@UAEHW4ShutdownValue@PChannel@@@Z @3405 NONAME ?Signal@PCondMutex@@UAEXXZ @3406 NONAME ?Signal@PMutex@@UAEXXZ @3407 NONAME ?Signal@PSemaphore@@UAEXXZ @3408 NONAME ?Signal@PSyncPoint@@UAEXXZ @3409 NONAME ?Signal@PSyncPointAck@@QAEXABVPTimeInterval@@@Z @3410 NONAME ?Signal@PSyncPointAck@@UAEXXZ @3411 NONAME ?SignalTimerChange@PProcess@@QAEXXZ @3412 NONAME ?size@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@std@@QBEIXZ @5943 NONAME ?size@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @5944 NONAME ?size@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @5945 NONAME ?size@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEIXZ @6703 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEIXZ @5946 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEIXZ @7154 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEIXZ @6704 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEIXZ @6705 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBEIXZ @7155 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBEIXZ @7156 NONAME ?size@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBEIXZ @7157 NONAME ?Sleep@PThread@@SAXABVPTimeInterval@@@Z @3413 NONAME ?snmpLibrary@WinSNMPLoader@@1PAVPWin32SnmpLibrary@@A @6226 NONAME ?soundChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7158 NONAME ?Splice@PString@@QAEXABV1@HH@Z @3414 NONAME ?Splice@PString@@QAEXPBDHH@Z @3415 NONAME ?sprintf@PString@@QAAAAV1@PBDZZ @3416 NONAME ?Start@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3417 NONAME ?Start@PVideoDevice@@UAEHXZ @3419 NONAME ?Start@PVideoInputDevice_FakeVideo@@UAEHXZ @3858 NONAME ?Start@PVideoInputDevice_VideoForWindows@@UAEHXZ @3751 NONAME ?Start@PVideoOutputDevice@@UAEHXZ @3905 NONAME ?Start@PVideoOutputDevice_NULLOutput@@UAEHXZ @3859 NONAME ?Start@PVideoOutputDevice_Window@@UAEHXZ @7710 NONAME ?Start@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3421 NONAME ?StartNest@PReadWriteMutex@@IAEAAVNest@1@XZ @3422 NONAME ?StartRead@PReadWriteMutex@@QAEXXZ @3423 NONAME ?StartRecording@PSoundChannel@@UAEHXZ @3752 NONAME ?StartRecording@PSoundChannelWin32@@UAEHXZ @3753 NONAME ?StartRunning@PTimer@@AAEXH@Z @3425 NONAME ?StartWrite@PReadWriteMutex@@QAEXXZ @3426 NONAME ?StaticControlEntry@PServiceProcess@@CGXK@Z @3427 NONAME ?StaticMainEntry@PServiceProcess@@CGXKPAPAD@Z @3428 NONAME ?StaticThreadEntry@PServiceProcess@@CAXPAX@Z @3429 NONAME ?StaticWndProc@PServiceProcess@@CGJPAUHWND__@@IIJ@Z @3430 NONAME ?Stop@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3431 NONAME ?Stop@PTimer@@QAEXXZ @3433 NONAME ?Stop@PVideoDevice@@UAEHXZ @3434 NONAME ?Stop@PVideoInputDevice_FakeVideo@@UAEHXZ @3860 NONAME ?Stop@PVideoInputDevice_VideoForWindows@@UAEHXZ @3754 NONAME ?Stop@PVideoOutputDevice@@UAEHXZ @3906 NONAME ?Stop@PVideoOutputDevice_NULLOutput@@UAEHXZ @3861 NONAME ?Stop@PVideoOutputDevice_Window@@UAEHXZ @7711 NONAME ?Stop@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3436 NONAME ?Successor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @7712 NONAME ?SupportQoS@PUDPSocket@@SAHABVAddress@PIPSocket@@@Z @7713 NONAME ?Suspend@PThread@@UAEXH@Z @3438 NONAME ?swap@std@@YAXAAD0@Z @6307 NONAME ?SwapRedAndBlue@PStandardColourConverter@@IBEHPBEPAEPAHII@Z @7714 NONAME ?sync@Buffer@PDebugStream@@UAEHXZ @3439 NONAME ?sync@Buffer@PStringStream@@UAEHXZ @3440 NONAME ?sync@Buffer@PSystemLog@@UAEHXZ @3441 NONAME ?sync@PChannelStreamBuffer@@MAEHXZ @3442 NONAME ?Terminate@PProcess@@UAEXXZ @3443 NONAME ?Terminate@PThread@@UAEXXZ @3444 NONAME ?TestAllFormats@PVideoInputDevice_FakeVideo@@UAEHXZ @3862 NONAME ?TestAllFormats@PVideoInputDevice_VideoForWindows@@UAEHXZ @3755 NONAME ?ThreadEntry@PServiceProcess@@AAEXXZ @3447 NONAME ?Tick@PTimer@@SA?AVPTimeInterval@@XZ @3448 NONAME ?ToCharArray@PStringArray@@QBEPAPADPAVPCharArray@@@Z @3449 NONAME ?ToggleVFlipInput@PVideoChannel@@QAEHXZ @3450 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@ABV1@H@Z @3451 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@PBDH@Z @3452 NONAME ?ToLiteral@PString@@QBE?AV1@XZ @3453 NONAME ?ToLower@PString@@QBE?AV1@XZ @3454 NONAME ?ToPascal@PString@@QBE?AVPBYTEArray@@XZ @3455 NONAME ?ToUpper@PString@@QBE?AV1@XZ @3456 NONAME ?Trim@PString@@QBE?AV1@XZ @3457 NONAME ?underflow@Buffer@PDebugStream@@UAEHXZ @3458 NONAME ?underflow@Buffer@PStringStream@@UAEHXZ @3459 NONAME ?underflow@Buffer@PSystemLog@@UAEHXZ @3460 NONAME ?underflow@PChannelStreamBuffer@@MAEHXZ @3461 NONAME ?UnknownOption@PArgList@@UBEXABVPString@@@Z @3462 NONAME ?Unlock@PSafeLockReadOnly@@QAEXXZ @7309 NONAME ?Unlock@PSafeLockReadWrite@@QAEXXZ @7310 NONAME ?UnlockReadOnly@PSafeObject@@QBEXXZ @3463 NONAME ?UnlockReadWrite@PSafeObject@@QAEXXZ @3464 NONAME ?Unregister@?$PFactory@VPSoundChannel@@VPString@@@@SAXABVPString@@@Z @7715 NONAME ?Unregister@?$PFactory@VPVideoInputDevice@@VPString@@@@SAXABVPString@@@Z @7716 NONAME ?Unregister@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAXABVPString@@@Z @7717 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHI@Z @5678 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHPAX@Z @5679 NONAME ?Unregister_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@@Z @7718 NONAME ?Unregister_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@@Z @7719 NONAME ?Unregister_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@@Z @7720 NONAME ?upper_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7721 NONAME ?upper_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7722 NONAME ?upper_bound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAE?AViterator@12@ABVPString@@@Z @7723 NONAME ?ValidateDeviceName@PDevicePluginServiceDescriptor@@UBE_NABVPString@@H@Z @7724 NONAME ?ValidateDeviceName@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE_NABVPString@@H@Z @7725 NONAME ?ValueSelect@PAbstractSortedList@@IBEHPBUElement@1@ABVPObject@@PAPBU21@@Z @3981 NONAME ?VerifyHardwareFrameSize@PVideoInputDevice_VideoForWindows@@MAEHII@Z @3756 NONAME ?VideoHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@PAUvideohdr_tag@@@Z @3757 NONAME ?vidinChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7159 NONAME ?vidoutChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7160 NONAME ?vsprintf@PString@@QAEAAV1@ABV1@PAD@Z @3470 NONAME ?vsprintf@PString@@QAEAAV1@PBDPAD@Z @3471 NONAME ?Wait@PSemaphore@@UAEHABVPTimeInterval@@@Z @3472 NONAME ?Wait@PSemaphore@@UAEXXZ @3473 NONAME ?WaitCondition@PCondMutex@@UAEXXZ @3474 NONAME ?WaitForAllRecordBuffersFull@PSoundChannel@@UAEHXZ @3758 NONAME ?WaitForAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @3759 NONAME ?WaitForPlayCompletion@PSoundChannel@@UAEHXZ @3760 NONAME ?WaitForPlayCompletion@PSoundChannelWin32@@UAEHXZ @3761 NONAME ?WaitForRecordBufferFull@PSoundChannel@@UAEHXZ @3762 NONAME ?WaitForRecordBufferFull@PSoundChannelWin32@@UAEHXZ @3763 NONAME ?WaitForTermination@PPipeChannel@@QAEHABVPTimeInterval@@@Z @3479 NONAME ?WaitForTermination@PPipeChannel@@QAEHXZ @3480 NONAME ?WaitForTermination@PThread@@QBEHABVPTimeInterval@@@Z @3481 NONAME ?WaitForTermination@PThread@@QBEXXZ @3482 NONAME ?WillBlock@PSemaphore@@UBEHXZ @3483 NONAME ?WndProc@PServiceProcess@@AAEJPAUHWND__@@IIJ@Z @3484 NONAME ?WndProc@PVideoOutputDevice_Window@@QAEJIIJ@Z @7726 NONAME ?Write@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @7727 NONAME ?Write@PChannel@@UAEHPBXH@Z @3485 NONAME ?Write@PConsoleChannel@@UAEHPBXH@Z @3486 NONAME ?Write@PEthSocket@@UAEHPBXH@Z @3487 NONAME ?Write@PFile@@UAEHPBXH@Z @3488 NONAME ?Write@PIndirectChannel@@UAEHPBXH@Z @3489 NONAME ?Write@PMultiMediaFile@@QAEHPBXH@Z @3490 NONAME ?Write@PPipeChannel@@UAEHPBXH@Z @3491 NONAME ?Write@PSerialChannel@@UAEHPBXH@Z @3492 NONAME ?Write@PSocket@@UAEHPBXH@Z @3493 NONAME ?Write@PSoundChannel@@UAEHPBXH@Z @3494 NONAME ?Write@PSoundChannelWin32@@UAEHPBXH@Z @3764 NONAME ?Write@PStructuredFile@@EAEHPBXH@Z @3495 NONAME ?Write@PStructuredFile@@QAEHPBX@Z @3496 NONAME ?Write@PTCPSocket@@UAEHPBXH@Z @3497 NONAME ?Write@PUDPSocket@@UAEHPBXH@Z @3498 NONAME ?Write@PVideoChannel@@UAEHPBXH@Z @3499 NONAME ?WriteAsync@PChannel@@UAEHPBXH@Z @3500 NONAME ?WriteAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3501 NONAME ?WriteChar@PChannel@@QAEHH@Z @3502 NONAME ?WriteComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3503 NONAME ?WriteLine@PTextFile@@QAEHABVPString@@@Z @3504 NONAME ?WriteOutOfBand@PTCPSocket@@UAEHPBXH@Z @3505 NONAME ?WriteString@PChannel@@QAEHABVPString@@@Z @3506 NONAME ?WriteTo@PIPDatagramSocket@@UAEHPBXHABVAddress@PIPSocket@@G@Z @3507 NONAME ?WriteTo@PIPXSocket@@UAEHPBXHABVAddress@1@G@Z @3508 NONAME ?Yield@PThread@@SAXXZ @3509 NONAME ?YUV420PtoRGB@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @7728 NONAME ?Zero@P_fd_set@@QAEXXZ @3511 NONAME ?_Allocate@std@@YAPADHPAD@Z @5738 NONAME ?_Allocate@std@@YAPAPAVPPluginModuleManager@@HPAPAV2@@Z @5952 NONAME ?_Allocate@std@@YAPAVPString@@HPAV2@@Z @5953 NONAME ?_Buynode@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEPAU_Node@12@PAU312@D@Z @6706 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6309 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @7161 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6707 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @6708 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @7162 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @7163 NONAME ?_Buynode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@D@Z @7164 NONAME ?_Charalloc@?$allocator@PAVPFactoryBase@@@std@@QAEPADI@Z @6709 NONAME ?_Charalloc@?$allocator@PAVPProcessStartup@@@std@@QAEPADI@Z @5957 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAEPADI@Z @7165 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAEPADI@Z @6710 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAEPADI@Z @6711 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAEPADI@Z @7166 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAEPADI@Z @7167 NONAME ?_Charalloc@?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAEPADI@Z @7168 NONAME ?_Color@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAADPAU_Node@12@@Z @6712 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAADPAU_Node@12@@Z @6314 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7169 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @6713 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @6714 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7170 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7171 NONAME ?_Color@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7172 NONAME ?_Construct@std@@YAXPAPAVPPluginModuleManager@@ABQAV2@@Z @5963 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@1@ABU21@@Z @6715 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@1@ABU21@@Z @5964 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@ABU21@@Z @7173 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@ABU21@@Z @6716 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@1@ABU21@@Z @7174 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@1@ABU21@@Z @7175 NONAME ?_Construct@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@1@ABU21@@Z @7176 NONAME ?_Construct@std@@YAXPAVPString@@ABV2@@Z @5966 NONAME ?_Consval@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@ABU32@@Z @6717 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@ABU32@@Z @5967 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@ABU32@@Z @7177 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@ABU32@@Z @6718 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@ABU32@@Z @7178 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@ABU32@@Z @7179 NONAME ?_Consval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@ABU32@@Z @7180 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@0@Z @7729 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXABV12@@Z @7730 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@0@Z @7731 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXABV12@@Z @7732 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEPAU_Node@12@PAU312@0@Z @7733 NONAME ?_Copy@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXABV12@@Z @7734 NONAME ?_Dec@iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEXXZ @6719 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEXXZ @6320 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEXXZ @7181 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEXXZ @6720 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEXXZ @7182 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEXXZ @7183 NONAME ?_Dec@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEXXZ @7184 NONAME ?_Destroy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXPAPAVPPluginModuleManager@@0@Z @5971 NONAME ?_Destroy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXPAVPString@@0@Z @5972 NONAME ?_Destroy@std@@YAXPAPAVPPluginModuleManager@@@Z @5973 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@1@@Z @6721 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@1@@Z @5974 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@1@@Z @7185 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@1@@Z @6722 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@1@@Z @6723 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@1@@Z @7186 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@1@@Z @7187 NONAME ?_Destroy@std@@YAXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@1@@Z @7188 NONAME ?_Destroy@std@@YAXPAVPString@@@Z @5977 NONAME ?_Destval@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6724 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5978 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7189 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@@Z @6725 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6726 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7190 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7191 NONAME ?_Destval@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7192 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@1@0AAI@Z @7735 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@1@0AAIUbidirectional_iterator_tag@1@@Z @7736 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@1@0AAI@Z @7737 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@1@0AAIUbidirectional_iterator_tag@1@@Z @7738 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@1@0AAI@Z @7739 NONAME ?_Distance@std@@YAXViterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@1@0AAIUbidirectional_iterator_tag@1@@Z @7740 NONAME ?_Erase@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @6727 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @5981 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7193 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6728 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6729 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7194 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7195 NONAME ?_Erase@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7196 NONAME ?_Freenode@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @6730 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @5984 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7197 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6731 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6732 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7198 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7199 NONAME ?_Freenode@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7200 NONAME ?_Inc@iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QAEXXZ @6733 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QAEXXZ @6327 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QAEXXZ @7201 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QAEXXZ @6734 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QAEXXZ @6735 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QAEXXZ @7202 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QAEXXZ @7203 NONAME ?_Inc@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QAEXXZ @7204 NONAME ?_Init@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXXZ @6736 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXXZ @5990 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXXZ @7205 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXXZ @6737 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXXZ @6738 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXXZ @7206 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXXZ @7207 NONAME ?_Init@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXXZ @7208 NONAME ?_Insert@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6739 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @5993 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7209 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6740 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7210 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7211 NONAME ?_Insert@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAE?AViterator@12@PAU_Node@12@0ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7212 NONAME ?_Isnil@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAADPAU_Node@12@@Z @6741 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAADPAU_Node@12@@Z @6333 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7213 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @6742 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @6743 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7214 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7215 NONAME ?_Isnil@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAAADPAU_Node@12@@Z @7216 NONAME ?_Iter_cat@std@@YA?AUbidirectional_iterator_tag@1@ABU?$iterator@Ubidirectional_iterator_tag@std@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@H@1@@Z @7741 NONAME ?_Iter_cat@std@@YA?AUbidirectional_iterator_tag@1@ABU?$iterator@Ubidirectional_iterator_tag@std@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@H@1@@Z @7742 NONAME ?_Iter_cat@std@@YA?AUbidirectional_iterator_tag@1@ABU?$iterator@Ubidirectional_iterator_tag@std@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@H@1@@Z @7743 NONAME ?_Key@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PAU_Node@12@@Z @6744 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @5995 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @7217 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @6745 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @6746 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @7218 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @7219 NONAME ?_Key@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAABVPString@@PAU_Node@12@@Z @7220 NONAME ?_Lbound@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IBEPAU_Node@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6747 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7221 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @6748 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @6749 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7222 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7223 NONAME ?_Lbound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7224 NONAME ?_Left@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAPAU_Node@12@PAU312@@Z @6750 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6000 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7225 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6751 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6752 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7226 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7227 NONAME ?_Left@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7228 NONAME ?_Lmost@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEAAPAU_Node@12@XZ @6753 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEAAPAU_Node@12@XZ @6003 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7229 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6754 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6755 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7230 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7231 NONAME ?_Lmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7232 NONAME ?_Lrotate@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @6756 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @6006 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7233 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6757 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6758 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7234 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7235 NONAME ?_Lrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7236 NONAME ?_main@PProcess@@UAEHPAX@Z @3512 NONAME ?_main@PServiceProcess@@UAEHPAX@Z @3513 NONAME ?_Max@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAPAU_Node@12@PAU312@@Z @6759 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6009 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7237 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6760 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6761 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7238 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7239 NONAME ?_Max@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7240 NONAME ?_Min@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAPAU_Node@12@PAU312@@Z @6762 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6012 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7241 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6763 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @6764 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7242 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7243 NONAME ?_Min@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAPAU_Node@12@PAU312@@Z @7244 NONAME ?_Mynode@iterator@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@QBEPAU_Node@23@XZ @6765 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@QBEPAU_Node@23@XZ @6344 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @7245 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @6766 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @6767 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @7246 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @7247 NONAME ?_Mynode@iterator@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@QBEPAU_Node@23@XZ @7248 NONAME ?_Parent@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAPAU_Node@12@PAU312@@Z @6768 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6024 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7249 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6769 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6770 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7250 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7251 NONAME ?_Parent@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7252 NONAME ?_Right@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAPAU_Node@12@PAU312@@Z @6771 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6027 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7253 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6772 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @6773 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7254 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7255 NONAME ?_Right@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAAAPAU_Node@12@PAU312@@Z @7256 NONAME ?_Rmost@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEAAPAU_Node@12@XZ @6774 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEAAPAU_Node@12@XZ @6030 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7257 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6775 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6776 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7258 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7259 NONAME ?_Rmost@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7260 NONAME ?_Root@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEAAPAU_Node@12@XZ @6777 NONAME ?_Root@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IBEAAPAU_Node@12@XZ @6778 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEAAPAU_Node@12@XZ @6033 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7261 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @7262 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6779 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @6780 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @6781 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @6782 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7263 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @7264 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7265 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @7266 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEAAPAU_Node@12@XZ @7267 NONAME ?_Root@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IBEAAPAU_Node@12@XZ @7268 NONAME ?_Rrotate@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@IAEXPAU_Node@12@@Z @6783 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@IAEXPAU_Node@12@@Z @6038 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7269 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6784 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @6785 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7270 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7271 NONAME ?_Rrotate@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IAEXPAU_Node@12@@Z @7272 NONAME ?_Ubound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7744 NONAME ?_Ubound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7745 NONAME ?_Ubound@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@IBEPAU_Node@12@ABVPString@@@Z @7746 NONAME ?_Ucopy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEPAPAVPPluginModuleManager@@PBQAV3@0PAPAV3@@Z @6041 NONAME ?_Ucopy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@PBV3@0PAV3@@Z @6042 NONAME ?_Ufill@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXPAPAVPPluginModuleManager@@IABQAV3@@Z @6043 NONAME ?_Ufill@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXPAVPString@@IABV3@@Z @6044 NONAME ?_Value@?$_Tree@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@U_Kfn@?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@2@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@PAVPFactoryBase@@@2@@std@@KAAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@PAU_Node@12@@Z @6786 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@U_Kfn@?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@PAVPProcessStartup@@@4@@3@U?$less@VPString@@@3@V?$allocator@PAVPProcessStartup@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@PAU_Node@12@@Z @6045 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@PAU_Node@12@@Z @7273 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@PAU_Node@12@@Z @6787 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@PAU_Node@12@@Z @6788 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@PAU_Node@12@@Z @7274 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@PAU_Node@12@@Z @7275 NONAME ?_Value@?$_Tree@VPString@@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@U_Kfn@?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@5@@3@U?$less@VPString@@@3@V?$allocator@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@3@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@PAU_Node@12@@Z @7276 NONAME ?__setfill@@YAAAVios@@AAV1@H@Z @3514 NONAME ?__setprecision@@YAAAVios@@AAV1@H@Z @3515 NONAME ?__setw@@YAAAVios@@AAV1@H@Z @3516 NONAME _PTimeGetChar@4 @3517 NONAME _PTimeGetDateOrder@0 @3518 NONAME _PTimeIsDayName@12 @3519 NONAME _PTimeIsMonthName@12 @3520 NONAME _PTimeParse@12 @3521 NONAME _PTimeUngetChar@8 @3522 NONAME pwlib_v1_10_2/include/ptlib/msos/ptlibd_2003.dtf0100644000176200056700000217317510357202643021557 0ustar releasepostincrLIBRARY ptlibd EXPORTS ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6741 NONAME ??$?0U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6742 NONAME ??$?0U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @6168 NONAME ??$?0U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @6169 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @7067 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @7068 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6743 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6744 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6745 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6746 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @7069 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @7070 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @7071 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @7072 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @7073 NONAME ??$?0U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAE@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @7074 NONAME ??$?0VPString@@PAVPProcessStartup@@@?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU?$pair@VPString@@PAVPProcessStartup@@@1@@Z @6174 NONAME ??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @5516 NONAME ??$?5GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @5517 NONAME ??$?6DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABU?$_Fillobj@D@0@@Z @5518 NONAME ??$?6DU?$char_traits@D@std@@H@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABU?$_Smanip@H@0@@Z @5519 NONAME ??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @5520 NONAME ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @5521 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@0@Z @5522 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@D@Z @5523 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z @5524 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@DABV10@@Z @5525 NONAME ??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z @5526 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@0@Z @5527 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@G@Z @5528 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@ABV10@PBG@Z @5529 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@GABV10@@Z @5530 NONAME ??$?HGU?$char_traits@G@std@@V?$allocator@G@1@@std@@YA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@PBGABV10@@Z @5531 NONAME ??$copy@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00@Z @6701 NONAME ??$copy_backward@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00@Z @6175 NONAME ??$copy_backward@PAVPString@@PAV1@@std@@YAPAVPString@@PAV1@00@Z @6176 NONAME ??$fill@PAPAVPPluginModuleManager@@PAV1@@std@@YAXPAPAVPPluginModuleManager@@0ABQAV1@@Z @6177 NONAME ??$fill@PAVPString@@V1@@std@@YAXPAVPString@@0ABV1@@Z @6178 NONAME ??$fill_n@PAPAVPPluginModuleManager@@IPAV1@@std@@YAXPAPAVPPluginModuleManager@@IABQAV1@@Z @6179 NONAME ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z @5532 NONAME ??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@D@Z @5533 NONAME ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @5534 NONAME ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z @5535 NONAME ??$PAssertCast@$$CBVPSafePtrBase@@@@YAPBVPSafePtrBase@@PBV0@PBDH@Z @7044 NONAME ??$PAssertCast@VPSafeObject@@@@YAPAVPSafeObject@@PAV0@PBDH@Z @7045 NONAME ??$PLoadPluginDirectory@VPPluginManager@@@@YAXAAVPPluginManager@@ABVPDirectory@@PBD@Z @6740 NONAME ??$p_signed2string@H@@YAPADHHPAD@Z @5536 NONAME ??$p_signed2string@J@@YAPADJJPAD@Z @5537 NONAME ??$p_signed2string@_J@@YAPAD_J0PAD@Z @5538 NONAME ??$p_unsigned2string@H@@YAPADHHPAD@Z @5539 NONAME ??$p_unsigned2string@I@@YAPADIIPAD@Z @5540 NONAME ??$p_unsigned2string@J@@YAPADJJPAD@Z @5541 NONAME ??$p_unsigned2string@K@@YAPADKKPAD@Z @5542 NONAME ??$p_unsigned2string@_J@@YAPAD_J0PAD@Z @5543 NONAME ??$p_unsigned2string@_K@@YAPAD_K0PAD@Z @5544 NONAME ??$setfill@D@std@@YA?AU?$_Fillobj@D@0@D@Z @5545 NONAME ??$swap@D@std@@YAXAAD0@Z @6007 NONAME ??$use_facet@V?$ctype@D@std@@@std@@YAABV?$ctype@D@0@ABVlocale@0@@Z @5546 NONAME ??$use_facet@V?$ctype@G@std@@@std@@YAABV?$ctype@G@0@ABVlocale@0@@Z @5547 NONAME ??$_Allocate@PAVPPluginModuleManager@@@std@@YAPAPAVPPluginModuleManager@@IPAPAV1@@Z @6180 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@IPAU120@@Z @6747 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@IPAU120@@Z @6181 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @7075 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6748 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @6749 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @7076 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @7077 NONAME ??$_Allocate@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@IPAU120@@Z @7078 NONAME ??$_Allocate@VPString@@@std@@YAPAVPString@@IPAV1@@Z @6184 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@ABQAU120@@Z @6750 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@ABQAU120@@Z @6185 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @7079 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6751 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @6752 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @7080 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @7081 NONAME ??$_Construct@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@PAU123@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@ABQAU120@@Z @7082 NONAME ??$_Construct@VPString@@V1@@std@@YAXPAVPString@@ABV1@@Z @6188 NONAME ??$_Copy_backward_opt@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00U_Scalar_ptr_iterator_tag@0@@Z @6189 NONAME ??$_Copy_backward_opt@PAVPString@@PAV1@@std@@YAPAVPString@@PAV1@00U_Nonscalar_ptr_iterator_tag@0@@Z @6190 NONAME ??$_Copy_opt@PAPAVPPluginModuleManager@@PAPAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00U_Scalar_ptr_iterator_tag@0@@Z @6702 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@@Z @6753 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@@Z @6191 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7083 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6754 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6755 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7084 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7085 NONAME ??$_Destroy@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7086 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@0@@Z @6756 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@0@@Z @6194 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7087 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6757 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @6758 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7088 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7089 NONAME ??$_Destroy@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YAXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @7090 NONAME ??$_Destroy@VPString@@@std@@YAXPAVPString@@@Z @6197 NONAME ??$_Destroy_range@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAXPAPAVPPluginModuleManager@@0AAV?$allocator@PAVPPluginModuleManager@@@0@@Z @6198 NONAME ??$_Destroy_range@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAXPAPAVPPluginModuleManager@@0AAV?$allocator@PAVPPluginModuleManager@@@0@U_Scalar_ptr_iterator_tag@0@@Z @6199 NONAME ??$_Destroy_range@VPString@@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@0AAV?$allocator@VPString@@@0@@Z @6200 NONAME ??$_Destroy_range@VPString@@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@0AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @6201 NONAME ??$_Distance2@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAIUbidirectional_iterator_tag@0@@Z @16177 NONAME ??$_Distance2@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAIUbidirectional_iterator_tag@0@@Z @16178 NONAME ??$_Distance2@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAIUbidirectional_iterator_tag@0@@Z @16179 NONAME ??$_Distance@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAI@Z @16180 NONAME ??$_Distance@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAI@Z @16181 NONAME ??$_Distance@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@I@std@@YAXViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@0AAI@Z @16182 NONAME ??$_Iter_cat@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YA?AUbidirectional_iterator_tag@0@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @16183 NONAME ??$_Iter_cat@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YA?AUbidirectional_iterator_tag@0@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @16184 NONAME ??$_Iter_cat@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@YA?AUbidirectional_iterator_tag@0@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@0@@Z @16185 NONAME ??$_Ptr_cat@PAVPString@@PAV1@@std@@YA?AU_Nonscalar_ptr_iterator_tag@0@AAPAVPString@@0@Z @6202 NONAME ??$_Ptr_cat@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@PAVPString@@@std@@YA?AU_Nonscalar_ptr_iterator_tag@0@AAVconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@0@AAPAVPString@@@Z @6203 NONAME ??$_Ptr_cat@VPPluginModuleManager@@@std@@YA?AU_Scalar_ptr_iterator_tag@0@PAPAVPPluginModuleManager@@0@Z @6204 NONAME ??$_Ucopy@PAPAVPPluginModuleManager@@@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEPAPAVPPluginModuleManager@@PAPAV2@00@Z @6205 NONAME ??$_Ucopy@PAVPString@@@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@PAV2@00@Z @6206 NONAME ??$_Ucopy@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@Vconst_iterator@01@0PAV2@@Z @6207 NONAME ??$_Uninitialized_copy@PAPAVPPluginModuleManager@@PAPAV1@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00AAV?$allocator@PAVPPluginModuleManager@@@0@@Z @6208 NONAME ??$_Uninitialized_copy@PAVPString@@PAV1@V?$allocator@VPString@@@std@@@std@@YAPAVPString@@PAV1@00AAV?$allocator@VPString@@@0@@Z @6209 NONAME ??$_Uninitialized_copy@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@PAVPString@@V?$allocator@VPString@@@3@@std@@YAPAVPString@@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@0@0PAV1@AAV?$allocator@VPString@@@0@@Z @6210 NONAME ??$_Uninitialized_fill_n@PAPAVPPluginModuleManager@@IPAV1@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@YAXPAPAVPPluginModuleManager@@IABQAV1@AAV?$allocator@PAVPPluginModuleManager@@@0@@Z @6211 NONAME ??$_Uninitialized_fill_n@PAVPString@@IV1@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@IABV1@AAV?$allocator@VPString@@@0@@Z @6212 NONAME ??$_Uninit_copy@PAVPPluginModuleManager@@PAV1@@std@@YAPAPAVPPluginModuleManager@@PAPAV1@00AAV?$allocator@PAVPPluginModuleManager@@@0@U_Scalar_ptr_iterator_tag@0@@Z @6213 NONAME ??$_Uninit_copy@PAVPString@@PAV1@V?$allocator@VPString@@@std@@@std@@YAPAVPString@@PAV1@00AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @6214 NONAME ??$_Uninit_copy@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@PAVPString@@V?$allocator@VPString@@@3@@std@@YAPAVPString@@Vconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@0@0PAV1@AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @6215 NONAME ??$_Uninit_fill_n@PAVPPluginModuleManager@@IPAV1@@std@@YAXPAPAVPPluginModuleManager@@IABQAV1@AAV?$allocator@PAVPPluginModuleManager@@@0@U_Scalar_ptr_iterator_tag@0@@Z @6216 NONAME ??$_Uninit_fill_n@PAVPString@@IV1@V?$allocator@VPString@@@std@@@std@@YAXPAVPString@@IABV1@AAV?$allocator@VPString@@@0@U_Nonscalar_ptr_iterator_tag@0@@Z @6217 NONAME ??0?$allocator@PAVPPluginModuleManager@@@std@@QAE@ABV01@@Z @6218 NONAME ??0?$allocator@PAVPPluginModuleManager@@@std@@QAE@XZ @6219 NONAME ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@std@@QAE@ABV01@@Z @6759 NONAME ??0?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@std@@QAE@XZ @6760 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@std@@QAE@ABV01@@Z @6220 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@std@@QAE@XZ @6221 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @7091 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@std@@QAE@XZ @7092 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6761 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@std@@QAE@XZ @6762 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @6763 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@std@@QAE@XZ @6764 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @7093 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@std@@QAE@XZ @7094 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @7095 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@std@@QAE@XZ @7096 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@std@@QAE@ABV01@@Z @7097 NONAME ??0?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@std@@QAE@XZ @7098 NONAME ??0?$allocator@VPString@@@std@@QAE@ABV01@@Z @6226 NONAME ??0?$allocator@VPString@@@std@@QAE@XZ @6227 NONAME ??0?$fpos@H@std@@QAE@J@Z @5548 NONAME ??0?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@@std@@QAE@XZ @6765 NONAME ??0?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@@std@@QAE@XZ @6228 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@@std@@QAE@XZ @7099 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@@std@@QAE@XZ @6766 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@@std@@QAE@XZ @6767 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAE@ABV01@@Z @16186 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAE@XZ @7100 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAE@ABV01@@Z @16187 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @7101 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAE@ABV01@@Z @16188 NONAME ??0?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @7102 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABU01@@Z @6768 NONAME ??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@ABQAVPFactoryBase@@@Z @6769 NONAME ??0?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@ABU01@@Z @6232 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@ABU01@@Z @7103 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@Z @7104 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABU01@@Z @6770 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@Z @6771 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@ABU01@@Z @7105 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@Z @7106 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@ABU01@@Z @7107 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@Z @7108 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@ABU01@@Z @7109 NONAME ??0?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@ABVPString@@ABQAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@Z @7110 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@1@AB_N@Z @6772 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@1@AB_N@Z @6235 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @7111 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @6773 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@1@0@Z @16189 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @7112 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@0@Z @16190 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @7113 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@0@Z @16191 NONAME ??0?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@std@@QAE@ABViterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@1@AB_N@Z @7114 NONAME ??0?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@ABVPString@@ABQAVPProcessStartup@@@Z @6237 NONAME ??0?$PArray@VPString@@@@IAE@HPBV0@@Z @1 NONAME ??0?$PArray@VPString@@@@QAE@ABV0@@Z @2 NONAME ??0?$PArray@VPString@@@@QAE@H@Z @3 NONAME ??0?$PArray@VPWaveBuffer@@@@IAE@HPBV0@@Z @4 NONAME ??0?$PArray@VPWaveBuffer@@@@QAE@H@Z @5 NONAME ??0?$PArray@VPWin32PacketBuffer@@@@IAE@HPBV0@@Z @6 NONAME ??0?$PArray@VPWin32PacketBuffer@@@@QAE@H@Z @7 NONAME ??0?$PBaseArray@D@@QAE@ABV0@@Z @8 NONAME ??0?$PBaseArray@D@@QAE@H@Z @9 NONAME ??0?$PBaseArray@D@@QAE@PBDHH@Z @10 NONAME ??0?$PBaseArray@E@@QAE@ABV0@@Z @11 NONAME ??0?$PBaseArray@E@@QAE@H@Z @12 NONAME ??0?$PBaseArray@E@@QAE@PBEHH@Z @13 NONAME ??0?$PBaseArray@F@@QAE@H@Z @14 NONAME ??0?$PBaseArray@F@@QAE@PBFHH@Z @15 NONAME ??0?$PBaseArray@G@@QAE@ABV0@@Z @16 NONAME ??0?$PBaseArray@G@@QAE@H@Z @17 NONAME ??0?$PBaseArray@G@@QAE@PBGHH@Z @18 NONAME ??0?$PBaseArray@H@@QAE@ABV0@@Z @19 NONAME ??0?$PBaseArray@H@@QAE@H@Z @20 NONAME ??0?$PBaseArray@H@@QAE@PBHHH@Z @21 NONAME ??0?$PBaseArray@I@@QAE@H@Z @22 NONAME ??0?$PBaseArray@I@@QAE@PBIHH@Z @23 NONAME ??0?$PBaseArray@J@@QAE@H@Z @24 NONAME ??0?$PBaseArray@J@@QAE@PBJHH@Z @25 NONAME ??0?$PBaseArray@K@@QAE@H@Z @26 NONAME ??0?$PBaseArray@K@@QAE@PBKHH@Z @27 NONAME ??0?$PBaseArray@PAVElement@PHashTable@@@@QAE@H@Z @28 NONAME ??0?$PBaseArray@PAVElement@PHashTable@@@@QAE@PBQAVElement@PHashTable@@HH@Z @29 NONAME ??0?$PBaseArray@PAVPObject@@@@QAE@H@Z @30 NONAME ??0?$PBaseArray@PAVPObject@@@@QAE@PBQAVPObject@@HH@Z @31 NONAME ??0?$PDevicePluginAdapter@VPSoundChannel@@@@QAE@XZ @7115 NONAME ??0?$PDevicePluginAdapter@VPVideoInputDevice@@@@QAE@XZ @7116 NONAME ??0?$PDevicePluginAdapter@VPVideoOutputDevice@@@@QAE@XZ @7117 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@IAE@HPBV0@@Z @32 NONAME ??0?$PDictionary@VPCaselessString@@VPIPCacheData@@@@QAE@XZ @33 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@IAE@HPBV0@@Z @34 NONAME ??0?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@QAE@XZ @35 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@IAE@HPBV0@@Z @36 NONAME ??0?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@QAE@XZ @37 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@IAE@HPBV0@@Z @5939 NONAME ??0?$PDictionary@VPOrdinalKey@@VPPointer@@@@QAE@XZ @5940 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@IAE@HPBV0@@Z @38 NONAME ??0?$PDictionary@VPOrdinalKey@@VPThread@@@@QAE@XZ @39 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@IAE@HPBV0@@Z @5859 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@ABV0@@Z @5860 NONAME ??0?$PDictionary@VPString@@VPDynaLink@@@@QAE@XZ @5861 NONAME ??0?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@XZ @7118 NONAME ??0?$PFactory@VPPluginModuleManager@@VPString@@@@IAE@XZ @6774 NONAME ??0?$PFactory@VPProcessStartup@@VPString@@@@IAE@XZ @6775 NONAME ??0?$PFactory@VPSoundChannel@@VPString@@@@IAE@XZ @7119 NONAME ??0?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@XZ @7120 NONAME ??0?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@XZ @7121 NONAME ??0?$PList@VInterfaceEntry@PIPSocket@@@@IAE@HPBV0@@Z @7644 NONAME ??0?$PList@VInterfaceEntry@PIPSocket@@@@QAE@XZ @7645 NONAME ??0?$PList@VPDynaLink@@@@IAE@HPBV0@@Z @3986 NONAME ??0?$PList@VPDynaLink@@@@QAE@XZ @3987 NONAME ??0?$PList@VPNotifier@@@@IAE@HPBV0@@Z @3988 NONAME ??0?$PList@VPNotifier@@@@QAE@XZ @3989 NONAME ??0?$PList@VPPluginService@@@@IAE@HPBV0@@Z @3601 NONAME ??0?$PList@VPPluginService@@@@QAE@XZ @3602 NONAME ??0?$PList@VPSafeObject@@@@IAE@HPBV0@@Z @7050 NONAME ??0?$PList@VPSafeObject@@@@QAE@XZ @7051 NONAME ??0?$PList@VPSocket@@@@IAE@HPBV0@@Z @40 NONAME ??0?$PList@VPSocket@@@@QAE@XZ @41 NONAME ??0?$PList@VPString@@@@IAE@HPBV0@@Z @42 NONAME ??0?$PList@VPString@@@@QAE@ABV0@@Z @43 NONAME ??0?$PList@VPString@@@@QAE@XZ @44 NONAME ??0?$PList@VPThread@@@@IAE@HPBV0@@Z @45 NONAME ??0?$PList@VPThread@@@@QAE@XZ @46 NONAME ??0?$PList@VPTimer@@@@IAE@HPBV0@@Z @47 NONAME ??0?$PList@VPTimer@@@@QAE@XZ @48 NONAME ??0?$POrdinalDictionary@VPString@@@@IAE@HPBV0@@Z @49 NONAME ??0?$POrdinalDictionary@VPString@@@@QAE@XZ @50 NONAME ??0?$PScalarArray@F@@QAE@H@Z @51 NONAME ??0?$PScalarArray@G@@QAE@ABV0@@Z @52 NONAME ??0?$PScalarArray@G@@QAE@H@Z @53 NONAME ??0?$PScalarArray@H@@QAE@ABV0@@Z @54 NONAME ??0?$PScalarArray@H@@QAE@H@Z @55 NONAME ??0?$PScalarArray@I@@QAE@H@Z @56 NONAME ??0?$PScalarArray@J@@QAE@H@Z @57 NONAME ??0?$PScalarArray@K@@QAE@H@Z @58 NONAME ??0?$PSet@VPString@@@@IAE@HPBV0@@Z @59 NONAME ??0?$PSet@VPString@@@@QAE@H@Z @60 NONAME ??0?$PSortedList@VPString@@@@IAE@HPBV0@@Z @61 NONAME ??0?$PSortedList@VPString@@@@QAE@XZ @62 NONAME ??0?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@QAE@XZ @16234 NONAME ??0?$PStringDictionary@VPOrdinalKey@@@@IAE@HPBV0@@Z @63 NONAME ??0?$PStringDictionary@VPOrdinalKey@@@@QAE@XZ @64 NONAME ??0?$PStringDictionary@VPString@@@@IAE@HPBV0@@Z @65 NONAME ??0?$PStringDictionary@VPString@@@@QAE@ABV0@@Z @66 NONAME ??0?$PStringDictionary@VPString@@@@QAE@XZ @67 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@QAE@XZ @16235 NONAME ??0?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@QAE@XZ @16236 NONAME ??0?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@QAE@XZ @16237 NONAME ??0?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@XZ @6238 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@ABV01@@Z @6239 NONAME ??0?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @6240 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @7122 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @7123 NONAME ??0?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@QAE@ABVPString@@_N@Z @7124 NONAME ??0?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @6776 NONAME ??0?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@QAE@ABVPString@@_N@Z @6777 NONAME ??0?$_Fillobj@D@std@@QAE@D@Z @5549 NONAME ??0?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@QAE@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@@Z @6778 NONAME ??0?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6241 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @7125 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6779 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @6780 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @7126 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @7127 NONAME ??0?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@QAE@U?$less@VPString@@@1@@Z @7128 NONAME ??0?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@ABV?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6781 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @6244 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @7129 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6782 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6783 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @7130 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABV01@@Z @16192 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @7131 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABV01@@Z @16193 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABU?$less@VPString@@@1@ABV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @7132 NONAME ??0?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@ABV01@@Z @16194 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6784 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @6247 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @7133 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6785 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6786 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @7134 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @7135 NONAME ??0?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @7136 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6787 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @6250 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @7137 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6788 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6789 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @7138 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @7139 NONAME ??0?$_Tree_ptr@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @7140 NONAME ??0?$_Tree_val@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE@ABU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@1@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@1@@Z @6790 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@1@@Z @6253 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@1@@Z @7141 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@1@@Z @6791 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@1@@Z @6792 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@1@@Z @7142 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@1@@Z @7143 NONAME ??0?$_Tree_val@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE@ABU?$less@VPString@@@1@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@1@@Z @7144 NONAME ??0?$_Vector_val@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAE@V?$allocator@PAVPPluginModuleManager@@@1@@Z @6256 NONAME ??0?$_Vector_val@VPString@@V?$allocator@VPString@@@std@@@std@@IAE@V?$allocator@VPString@@@1@@Z @6257 NONAME ??0Address@PEthSocket@@QAE@ABT01@@Z @68 NONAME ??0Address@PEthSocket@@QAE@ABVPString@@@Z @69 NONAME ??0Address@PEthSocket@@QAE@PBE@Z @70 NONAME ??0Address@PEthSocket@@QAE@XZ @71 NONAME ??0Address@PIPSocket@@QAE@ABUin6_addr@@@Z @3864 NONAME ??0Address@PIPSocket@@QAE@ABUin_addr@@@Z @72 NONAME ??0Address@PIPSocket@@QAE@ABV01@@Z @73 NONAME ??0Address@PIPSocket@@QAE@ABVPString@@@Z @74 NONAME ??0Address@PIPSocket@@QAE@EEEE@Z @75 NONAME ??0Address@PIPSocket@@QAE@HHPAUsockaddr@@@Z @3865 NONAME ??0Address@PIPSocket@@QAE@HPBE@Z @76 NONAME ??0Address@PIPSocket@@QAE@K@Z @77 NONAME ??0Address@PIPSocket@@QAE@XZ @78 NONAME ??0Address@PIPXSocket@@QAE@ABV01@@Z @79 NONAME ??0Address@PIPXSocket@@QAE@ABVPString@@@Z @80 NONAME ??0Address@PIPXSocket@@QAE@KPBD@Z @81 NONAME ??0Address@PIPXSocket@@QAE@XZ @82 NONAME ??0Block@PTrace@@QAE@PBDH0@Z @83 NONAME ??0Buffer@PDebugStream@@QAE@XZ @84 NONAME ??0Buffer@PStringStream@@QAE@AAV1@H@Z @85 NONAME ??0Buffer@PStringStream@@QAE@ABV01@@Z @86 NONAME ??0Buffer@PSystemLog@@QAE@XZ @87 NONAME ??0CMCDLL@PMail@@QAE@XZ @88 NONAME ??0CMC_message_reference_ptr@@QAE@ABVPString@@@Z @89 NONAME ??0const_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@PAPAVPPluginModuleManager@@@Z @6258 NONAME ??0const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QAE@PAUSlice@PChannel@@@Z @16238 NONAME ??0const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QAE@XZ @16239 NONAME ??0const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@PAVPString@@@Z @6259 NONAME ??0const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @6260 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6793 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6794 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6261 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7145 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7146 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6795 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6796 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6797 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6798 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7147 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7148 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7149 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7150 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7151 NONAME ??0const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7152 NONAME ??0DeleteObjectsTimeout_PNotifier@PSafeCollection@@QAE@PAV1@@Z @90 NONAME ??0Element@PAbstractList@@QAE@PAVPObject@@@Z @91 NONAME ??0FactoryMap@PFactoryBase@@QAE@XZ @6799 NONAME ??0HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@QAE@PAV1@@Z @16240 NONAME ??0HandleDisplay_PNotifier@PVideoOutputDevice_Window@@QAE@PAV1@@Z @16241 NONAME ??0HouseKeepingThread@PProcess@@QAE@XZ @93 NONAME ??0Info@PAbstractList@@QAE@XZ @94 NONAME ??0Info@PAbstractSortedList@@QAE@XZ @7665 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABV01@@Z @16242 NONAME ??0InterfaceEntry@PIPSocket@@QAE@ABVPString@@ABVAddress@1@100@Z @7676 NONAME ??0iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@PAPAVPPluginModuleManager@@@Z @6266 NONAME ??0iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@PAVPString@@@Z @6267 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6800 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6801 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6268 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7153 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7154 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6802 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6803 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6804 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7155 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7156 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7157 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7158 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7159 NONAME ??0iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7160 NONAME ??0length_error@std@@QAE@ABV01@@Z @6042 NONAME ??0length_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @6043 NONAME ??0logic_error@std@@QAE@ABV01@@Z @6044 NONAME ??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @6045 NONAME ??0MAPIDLL@PMail@@QAE@XZ @97 NONAME ??0Nest@PReadWriteMutex@@QAE@XZ @98 NONAME ??0NT_ServiceManager@@QAE@XZ @99 NONAME ??0ostrstream@std@@QAE@XZ @5550 NONAME ??0out_of_range@std@@QAE@ABV01@@Z @6046 NONAME ??0out_of_range@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @6047 NONAME ??0PAbstractArray@@QAE@ABV0@@Z @100 NONAME ??0PAbstractArray@@QAE@HH@Z @101 NONAME ??0PAbstractArray@@QAE@HPBXHH@Z @102 NONAME ??0PAbstractDictionary@@IAE@HPBV0@@Z @103 NONAME ??0PAbstractDictionary@@QAE@ABV0@@Z @104 NONAME ??0PAbstractDictionary@@QAE@XZ @105 NONAME ??0PAbstractList@@IAE@HPBV0@@Z @106 NONAME ??0PAbstractList@@QAE@ABV0@@Z @107 NONAME ??0PAbstractList@@QAE@XZ @108 NONAME ??0PAbstractSet@@IAE@HPBV0@@Z @109 NONAME ??0PAbstractSet@@QAE@XZ @110 NONAME ??0PAbstractSortedList@@IAE@HPBV0@@Z @111 NONAME ??0PAbstractSortedList@@QAE@XZ @112 NONAME ??0PArgList@@QAE@ABV0@@Z @113 NONAME ??0PArgList@@QAE@ABVPString@@0H@Z @114 NONAME ??0PArgList@@QAE@ABVPString@@PBDH@Z @115 NONAME ??0PArgList@@QAE@HPAPADABVPString@@H@Z @116 NONAME ??0PArgList@@QAE@HPAPADPBDH@Z @117 NONAME ??0PArgList@@QAE@PBD0H@Z @118 NONAME ??0PArrayObjects@@IAE@HPBV0@@Z @119 NONAME ??0PArrayObjects@@QAE@ABV0@@Z @120 NONAME ??0PArrayObjects@@QAE@H@Z @121 NONAME ??0PAtomicInteger@@QAE@J@Z @5834 NONAME ??0PBitArray@@QAE@ABV0@@Z @122 NONAME ??0PBitArray@@QAE@H@Z @123 NONAME ??0PBitArray@@QAE@PBXHH@Z @124 NONAME ??0PBYTEArray@@QAE@ABV0@@Z @125 NONAME ??0PBYTEArray@@QAE@H@Z @126 NONAME ??0PBYTEArray@@QAE@PBEHH@Z @127 NONAME ??0PCapStatus@@QAE@PAUHWND__@@@Z @128 NONAME ??0PCaselessString@@IAE@HPBV0@@Z @129 NONAME ??0PCaselessString@@QAE@ABV0@@Z @130 NONAME ??0PCaselessString@@QAE@ABVPString@@@Z @131 NONAME ??0PCaselessString@@QAE@PBD@Z @132 NONAME ??0PCaselessString@@QAE@XZ @133 NONAME ??0PChannel@@IAE@ABV0@@Z @134 NONAME ??0PChannel@@QAE@XZ @135 NONAME ??0PChannelStreamBuffer@@IAE@PAVPChannel@@@Z @136 NONAME ??0PChannelStreamBuffer@@QAE@ABV0@@Z @137 NONAME ??0PCharArray@@QAE@ABV0@@Z @138 NONAME ??0PCharArray@@QAE@H@Z @139 NONAME ??0PCharArray@@QAE@PBDHH@Z @140 NONAME ??0PCollection@@IAE@HPBV0@@Z @141 NONAME ??0PCollection@@QAE@ABV0@@Z @142 NONAME ??0PCollection@@QAE@H@Z @143 NONAME ??0PColourConverter@@QAE@ABVPString@@0II@Z @144 NONAME ??0PColourConverterRegistration@@QAE@ABVPString@@0@Z @145 NONAME ??0PCondMutex@@QAE@XZ @146 NONAME ??0PConfig@@QAE@ABVPFilePath@@ABVPString@@@Z @147 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@00@Z @148 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@0@Z @149 NONAME ??0PConfig@@QAE@ABVPString@@W4Source@0@@Z @150 NONAME ??0PConfig@@QAE@W4Source@0@@Z @151 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@1@Z @152 NONAME ??0PConfig@@QAE@W4Source@0@ABVPString@@@Z @153 NONAME ??0PConfigArgs@@QAE@ABVPArgList@@@Z @154 NONAME ??0PConsoleChannel@@QAE@W4ConsoleType@0@@Z @155 NONAME ??0PConsoleChannel@@QAE@XZ @156 NONAME ??0PContainer@@IAE@HPBV0@@Z @157 NONAME ??0PContainer@@QAE@ABV0@@Z @158 NONAME ??0PContainer@@QAE@H@Z @159 NONAME ??0PCriticalSection@@QAE@XZ @5835 NONAME ??0PDebugStream@@QAE@XZ @160 NONAME ??0PDevicePluginAdapterBase@@QAE@XZ @7161 NONAME ??0PDevicePluginServiceDescriptor@@QAE@XZ @16243 NONAME ??0PDirectory@@QAE@ABV0@@Z @161 NONAME ??0PDirectory@@QAE@ABVPString@@@Z @162 NONAME ??0PDirectory@@QAE@PBD@Z @163 NONAME ??0PDirectory@@QAE@XZ @164 NONAME ??0PDynaLink@@QAE@ABVPString@@@Z @165 NONAME ??0PDynaLink@@QAE@XZ @166 NONAME ??0PEthSocket@@QAE@HHH@Z @167 NONAME ??0PFactoryBase@@IAE@XZ @6805 NONAME ??0PFile@@QAE@ABVPFilePath@@W4OpenMode@0@H@Z @169 NONAME ??0PFile@@QAE@W4OpenMode@0@H@Z @170 NONAME ??0PFile@@QAE@XZ @171 NONAME ??0PFileInfo@@QAE@XZ @172 NONAME ??0PFilePath@@QAE@ABV0@@Z @173 NONAME ??0PFilePath@@QAE@ABVPString@@@Z @174 NONAME ??0PFilePath@@QAE@PBD0@Z @175 NONAME ??0PFilePath@@QAE@PBD@Z @176 NONAME ??0PFilePath@@QAE@XZ @177 NONAME ??0PHashTable@@IAE@HPBV0@@Z @178 NONAME ??0PHashTable@@QAE@ABV0@@Z @179 NONAME ??0PHashTable@@QAE@XZ @180 NONAME ??0PHostByAddr@@QAE@XZ @181 NONAME ??0PHostByName@@QAE@XZ @182 NONAME ??0PICMPDLL@@QAE@XZ @183 NONAME ??0PICMPSocket@@QAE@XZ @184 NONAME ??0PImageDLL@@QAE@XZ @185 NONAME ??0PIndirectChannel@@QAE@XZ @186 NONAME ??0PingInfo@PICMPSocket@@QAE@G@Z @187 NONAME ??0PInstantiateMe@@QAE@XZ @7663 NONAME ??0PIntCondMutex@@QAE@HHW4Operation@0@@Z @188 NONAME ??0PIPCacheData@@QAE@PAUaddrinfo@@PBD@Z @3866 NONAME ??0PIPCacheData@@QAE@PAUhostent@@PBD@Z @189 NONAME ??0PIPCacheKey@@QAE@ABV0@@Z @190 NONAME ??0PIPCacheKey@@QAE@ABVAddress@PIPSocket@@@Z @191 NONAME ??0PIPDatagramSocket@@IAE@XZ @192 NONAME ??0PIPSocket@@IAE@XZ @193 NONAME ??0PIPXSocket@@QAE@G@Z @194 NONAME ??0PluginLoaderStartup@@QAE@XZ @6272 NONAME ??0PMail@@QAE@ABVPString@@00@Z @195 NONAME ??0PMail@@QAE@ABVPString@@0@Z @196 NONAME ??0PMail@@QAE@XZ @197 NONAME ??0PMultiMediaFile@@QAE@XZ @199 NONAME ??0PNotifier@@QAE@ABV0@@Z @202 NONAME ??0PNotifier@@QAE@PAVPNotifierFunction@@@Z @203 NONAME ??0PNotifierFunction@@QAE@PAX@Z @204 NONAME ??0PNotifyIconData@@QAE@PAUHWND__@@IPBD@Z @205 NONAME ??0PObject@@IAE@XZ @206 NONAME ??0PObject@@QAE@ABV0@@Z @207 NONAME ??0POrdinalKey@@QAE@H@Z @208 NONAME ??0POrdinalToString@@IAE@HPBV0@@Z @209 NONAME ??0POrdinalToString@@QAE@HPBUInitialiser@0@@Z @210 NONAME ??0POrdinalToString@@QAE@XZ @211 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@0@HH@Z @212 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringArray@@W4OpenMode@0@HH@Z @213 NONAME ??0PPipeChannel@@QAE@ABVPString@@ABVPStringToString@@W4OpenMode@0@HH@Z @214 NONAME ??0PPipeChannel@@QAE@ABVPString@@W4OpenMode@0@HH@Z @215 NONAME ??0PPipeChannel@@QAE@XZ @216 NONAME ??0PPluginManager@@QAE@XZ @3604 NONAME ??0PPluginModuleManager@@QAE@PBDPAVPPluginManager@@@Z @5863 NONAME ??0PPluginService@@QAE@ABVPString@@0PAVPPluginServiceDescriptor@@@Z @3605 NONAME ??0PPluginServiceDescriptor@@QAE@XZ @16244 NONAME ??0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z @3607 NONAME ??0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z @3765 NONAME ??0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z @3608 NONAME ??0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z @3766 NONAME ??0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z @16245 NONAME ??0PPointer@@QAE@PAX@Z @5941 NONAME ??0PProcess@@QAE@PBD0GGW4CodeStatus@0@G@Z @217 NONAME ??0PProcessStartup@@QAE@XZ @6273 NONAME ??0PQoS@@QAE@H@Z @3526 NONAME ??0PQoS@@QAE@KKHKK@Z @3527 NONAME ??0PQoS@@QAE@XZ @3528 NONAME ??0PRASDLL@@QAE@XZ @218 NONAME ??0PReadWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3982 NONAME ??0PReadWriteMutex@@QAE@XZ @219 NONAME ??0PRegularExpression@@QAE@ABV0@@Z @3920 NONAME ??0PRegularExpression@@QAE@ABVPString@@H@Z @220 NONAME ??0PRegularExpression@@QAE@PBDH@Z @221 NONAME ??0PRegularExpression@@QAE@XZ @222 NONAME ??0PRemoteConnection@@QAE@ABVPString@@@Z @223 NONAME ??0PRemoteConnection@@QAE@XZ @224 NONAME ??0PSafeCollection@@QAE@PAVPCollection@@@Z @225 NONAME ??0PSafeLockReadOnly@@QAE@ABVPSafeObject@@@Z @7608 NONAME ??0PSafeLockReadWrite@@QAE@ABVPSafeObject@@@Z @7609 NONAME ??0PSafeObject@@QAE@XZ @226 NONAME ??0PSafePtrBase@@IAE@ABV0@@Z @229 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@H@Z @7046 NONAME ??0PSafePtrBase@@IAE@ABVPSafeCollection@@W4PSafetyMode@@PAVPSafeObject@@@Z @7047 NONAME ??0PSafePtrBase@@IAE@PAVPSafeObject@@W4PSafetyMode@@@Z @230 NONAME ??0PSemaphore@@IAE@PAX@Z @231 NONAME ??0PSemaphore@@QAE@ABV0@@Z @232 NONAME ??0PSemaphore@@QAE@II@Z @233 NONAME ??0PSerialChannel@@QAE@AAVPConfig@@@Z @234 NONAME ??0PSerialChannel@@QAE@ABVPString@@KEW4Parity@0@EW4FlowControl@0@2@Z @235 NONAME ??0PSerialChannel@@QAE@XZ @236 NONAME ??0PServiceProcess@@QAE@PBD0GGW4CodeStatus@PProcess@@G@Z @237 NONAME ??0PSimpleThread@@QAE@ABVPNotifier@@HW4AutoDeleteFlag@PThread@@W4Priority@3@ABVPString@@H@Z @238 NONAME ??0PSmartObject@@QAE@XZ @239 NONAME ??0PSmartPointer@@QAE@ABV0@@Z @240 NONAME ??0PSmartPointer@@QAE@PAVPSmartObject@@@Z @241 NONAME ??0PSmartPtrInspector@@QAE@ABVPNotifier@@@Z @5942 NONAME ??0Psockaddr@@QAE@ABVAddress@PIPSocket@@G@Z @3867 NONAME ??0Psockaddr@@QAE@XZ @3868 NONAME ??0PSocket@@IAE@XZ @242 NONAME ??0PSortedStringList@@IAE@HPBV0@@Z @243 NONAME ??0PSortedStringList@@QAE@ABVPString@@@Z @244 NONAME ??0PSortedStringList@@QAE@ABVPStringArray@@@Z @245 NONAME ??0PSortedStringList@@QAE@ABVPStringList@@@Z @246 NONAME ??0PSortedStringList@@QAE@HPBQBDH@Z @247 NONAME ??0PSound@@QAE@ABVPFilePath@@@Z @248 NONAME ??0PSound@@QAE@IIIHPBE@Z @249 NONAME ??0PSoundChannel@@QAE@ABVPString@@W4Directions@0@III@Z @250 NONAME ??0PSoundChannel@@QAE@XZ @251 NONAME ??0PSoundChannelWin32@@QAE@ABVPString@@W4Directions@PSoundChannel@@III@Z @3610 NONAME ??0PSoundChannelWin32@@QAE@XZ @3611 NONAME ??0PSPXSocket@@QAE@G@Z @252 NONAME ??0PStandardColourConverter@@IAE@ABVPString@@0II@Z @253 NONAME ??0PString@@IAE@HPBV0@@Z @254 NONAME ??0PString@@QAA@W4ConversionType@0@PBDZZ @255 NONAME ??0PString@@QAE@ABV0@@Z @256 NONAME ??0PString@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z @6705 NONAME ??0PString@@QAE@ABV?$PScalarArray@G@@@Z @257 NONAME ??0PString@@QAE@D@Z @258 NONAME ??0PString@@QAE@F@Z @259 NONAME ??0PString@@QAE@G@Z @260 NONAME ??0PString@@QAE@H@Z @261 NONAME ??0PString@@QAE@I@Z @262 NONAME ??0PString@@QAE@J@Z @263 NONAME ??0PString@@QAE@K@Z @264 NONAME ??0PString@@QAE@PBD@Z @265 NONAME ??0PString@@QAE@PBDH@Z @266 NONAME ??0PString@@QAE@PBG@Z @267 NONAME ??0PString@@QAE@PBGH@Z @268 NONAME ??0PString@@QAE@W4ConversionType@0@JI@Z @269 NONAME ??0PString@@QAE@W4ConversionType@0@NI@Z @270 NONAME ??0PString@@QAE@XZ @271 NONAME ??0PString@@QAE@_J@Z @272 NONAME ??0PString@@QAE@_K@Z @273 NONAME ??0PStringArray@@IAE@HPBV0@@Z @274 NONAME ??0PStringArray@@QAE@ABV0@@Z @275 NONAME ??0PStringArray@@QAE@ABVPSortedStringList@@@Z @276 NONAME ??0PStringArray@@QAE@ABVPString@@@Z @277 NONAME ??0PStringArray@@QAE@ABVPStringList@@@Z @278 NONAME ??0PStringArray@@QAE@H@Z @279 NONAME ??0PStringArray@@QAE@HPBQBDH@Z @280 NONAME ??0PStringList@@IAE@HPBV0@@Z @281 NONAME ??0PStringList@@QAE@ABV0@@Z @282 NONAME ??0PStringList@@QAE@ABVPSortedStringList@@@Z @283 NONAME ??0PStringList@@QAE@ABVPString@@@Z @284 NONAME ??0PStringList@@QAE@ABVPStringArray@@@Z @285 NONAME ??0PStringList@@QAE@HPBQBDH@Z @286 NONAME ??0PStringList@@QAE@XZ @287 NONAME ??0PStringSet@@IAE@HPBV0@@Z @288 NONAME ??0PStringSet@@QAE@ABVPString@@@Z @289 NONAME ??0PStringSet@@QAE@H@Z @290 NONAME ??0PStringSet@@QAE@HPBQBDH@Z @291 NONAME ??0PStringStream@@QAE@ABVPString@@@Z @292 NONAME ??0PStringStream@@QAE@H@Z @293 NONAME ??0PStringStream@@QAE@PBD@Z @294 NONAME ??0PStringStream@@QAE@XZ @295 NONAME ??0PStringToOrdinal@@IAE@HPBV0@@Z @296 NONAME ??0PStringToOrdinal@@QAE@HPBUInitialiser@0@H@Z @297 NONAME ??0PStringToOrdinal@@QAE@XZ @298 NONAME ??0PStringToString@@IAE@HPBV0@@Z @299 NONAME ??0PStringToString@@QAE@ABV0@@Z @300 NONAME ??0PStringToString@@QAE@HPBUInitialiser@0@HH@Z @301 NONAME ??0PStringToString@@QAE@XZ @302 NONAME ??0PStructuredFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @303 NONAME ??0PStructuredFile@@QAE@W4OpenMode@PFile@@H@Z @304 NONAME ??0PStructuredFile@@QAE@XZ @305 NONAME ??0PSync@@QAE@XZ @16569 NONAME ??0PSyncPoint@@QAE@ABV0@@Z @306 NONAME ??0PSyncPoint@@QAE@XZ @307 NONAME ??0PSynonymColour@@QAE@ABVPString@@0II@Z @308 NONAME ??0PSynonymColourRegistration@@QAE@PBD0@Z @309 NONAME ??0PSystemLog@@QAE@W4Level@0@@Z @310 NONAME ??0PTCPSocket@@QAE@AAV0@@Z @311 NONAME ??0PTCPSocket@@QAE@AAVPSocket@@@Z @312 NONAME ??0PTCPSocket@@QAE@ABVPString@@0@Z @313 NONAME ??0PTCPSocket@@QAE@ABVPString@@@Z @314 NONAME ??0PTCPSocket@@QAE@ABVPString@@G@Z @315 NONAME ??0PTCPSocket@@QAE@G@Z @316 NONAME ??0PTextFile@@QAE@ABVPFilePath@@W4OpenMode@PFile@@H@Z @317 NONAME ??0PTextFile@@QAE@W4OpenMode@PFile@@H@Z @318 NONAME ??0PTextFile@@QAE@XZ @319 NONAME ??0PThread@@AAE@XZ @320 NONAME ??0PThread@@QAE@HW4AutoDeleteFlag@0@W4Priority@0@ABVPString@@@Z @321 NONAME ??0PTime@@QAE@ABV0@@Z @322 NONAME ??0PTime@@QAE@ABVPString@@@Z @323 NONAME ??0PTime@@QAE@HHHHHHH@Z @324 NONAME ??0PTime@@QAE@JJ@Z @325 NONAME ??0PTime@@QAE@XZ @326 NONAME ??0PTimedMutex@@QAE@ABV0@@Z @16570 NONAME ??0PTimedMutex@@QAE@XZ @16571 NONAME ??0PTimeInterval@@QAE@ABV0@@Z @327 NONAME ??0PTimeInterval@@QAE@ABVPString@@@Z @328 NONAME ??0PTimeInterval@@QAE@JJJJH@Z @329 NONAME ??0PTimeInterval@@QAE@_J@Z @330 NONAME ??0PTimer@@QAE@ABVPTimeInterval@@@Z @331 NONAME ??0PTimer@@QAE@JHHHH@Z @332 NONAME ??0PTimerList@@QAE@XZ @333 NONAME ??0PUDPSocket@@QAE@ABVPString@@0@Z @334 NONAME ??0PUDPSocket@@QAE@ABVPString@@G@Z @336 NONAME ??0PUDPSocket@@QAE@ABVPString@@PAVPQoS@@@Z @3531 NONAME ??0PUDPSocket@@QAE@G@Z @337 NONAME ??0PUDPSocket@@QAE@PAVPQoS@@G@Z @3532 NONAME ??0PVideoChannel@@QAE@ABVPString@@W4Directions@0@@Z @338 NONAME ??0PVideoChannel@@QAE@XZ @339 NONAME ??0PVideoDevice@@IAE@XZ @340 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@@Z @341 NONAME ??0PVideoDeviceBitmap@@QAE@PAUHWND__@@G@Z @342 NONAME ??0PVideoInputDevice@@QAE@XZ @343 NONAME ??0PVideoInputDevice_FakeVideo@@QAE@XZ @3767 NONAME ??0PVideoInputDevice_VideoForWindows@@QAE@XZ @3613 NONAME ??0PVideoOutputDevice@@QAE@XZ @345 NONAME ??0PVideoOutputDeviceRGB@@QAE@XZ @16246 NONAME ??0PVideoOutputDevice_NULLOutput@@QAE@XZ @3769 NONAME ??0PVideoOutputDevice_Window@@QAE@XZ @16247 NONAME ??0PVideoOutputDevice_Window_PluginServiceDescriptor@@QAE@XZ @16248 NONAME ??0PWaitAndSignal@@QAE@ABVPSync@@H@Z @16572 NONAME ??0PWaveBuffer@@AAE@H@Z @350 NONAME ??0PWaveFormat@@QAE@ABV0@@Z @351 NONAME ??0PWaveFormat@@QAE@XZ @352 NONAME ??0PWin32AsnAny@@QAE@XZ @353 NONAME ??0PWin32AsnOid@@QAE@ABV0@@Z @354 NONAME ??0PWin32AsnOid@@QAE@PBD@Z @355 NONAME ??0PWin32AsnOid@@QAE@XZ @356 NONAME ??0PWin32OidBuffer@@QAE@IIPBE@Z @357 NONAME ??0PWin32Overlapped@@QAE@XZ @358 NONAME ??0PWin32PacketBuffer@@QAE@H@Z @359 NONAME ??0PWin32PacketDriver@@IAE@XZ @360 NONAME ??0PWin32PacketSYS@@QAE@XZ @361 NONAME ??0PWin32PacketVxD@@QAE@XZ @362 NONAME ??0PWin32SnmpLibrary@@QAE@XZ @363 NONAME ??0PWinQoS@@QAE@AAVPQoS@@PAUsockaddr@@PADAAK@Z @3869 NONAME ??0PWinSock@@QAE@XZ @364 NONAME ??0PWriteWaitAndSignal@@QAE@ABVPReadWriteMutex@@H@Z @3983 NONAME ??0P_BGR24_RGB24@@QAE@ABVPString@@0II@Z @16249 NONAME ??0P_BGR24_RGB24_Registration@@QAE@XZ @16250 NONAME ??0P_BGR24_RGB32@@QAE@ABVPString@@0II@Z @16251 NONAME ??0P_BGR24_RGB32_Registration@@QAE@XZ @16252 NONAME ??0P_BGR24_YUV420P@@QAE@ABVPString@@0II@Z @3770 NONAME ??0P_BGR24_YUV420P_Registration@@QAE@XZ @3771 NONAME ??0P_BGR32_RGB24@@QAE@ABVPString@@0II@Z @16253 NONAME ??0P_BGR32_RGB24_Registration@@QAE@XZ @16254 NONAME ??0P_BGR32_RGB32@@QAE@ABVPString@@0II@Z @16255 NONAME ??0P_BGR32_RGB32_Registration@@QAE@XZ @16256 NONAME ??0P_BGR32_YUV420P@@QAE@ABVPString@@0II@Z @3772 NONAME ??0P_BGR32_YUV420P_Registration@@QAE@XZ @3773 NONAME ??0P_fd_set@@QAE@I@Z @365 NONAME ??0P_fd_set@@QAE@XZ @366 NONAME ??0P_Grey_YUV420P@@QAE@ABVPString@@0II@Z @369 NONAME ??0P_Grey_YUV420P_Registration@@QAE@XZ @370 NONAME ??0P_RGB24_BGR24@@QAE@ABVPString@@0II@Z @16257 NONAME ??0P_RGB24_BGR24_Registration@@QAE@XZ @16258 NONAME ??0P_RGB24_BGR32@@QAE@ABVPString@@0II@Z @16259 NONAME ??0P_RGB24_BGR32_Registration@@QAE@XZ @16260 NONAME ??0P_RGB24_RGB32@@QAE@ABVPString@@0II@Z @373 NONAME ??0P_RGB24_RGB32_Registration@@QAE@XZ @374 NONAME ??0P_RGB24_YUV420P@@QAE@ABVPString@@0II@Z @375 NONAME ??0P_RGB24_YUV420P_Registration@@QAE@XZ @376 NONAME ??0P_RGB32_BGR24@@QAE@ABVPString@@0II@Z @16261 NONAME ??0P_RGB32_BGR24_Registration@@QAE@XZ @16262 NONAME ??0P_RGB32_BGR32@@QAE@ABVPString@@0II@Z @16263 NONAME ??0P_RGB32_BGR32_Registration@@QAE@XZ @16264 NONAME ??0P_RGB32_RGB24@@QAE@ABVPString@@0II@Z @379 NONAME ??0P_RGB32_RGB24_Registration@@QAE@XZ @380 NONAME ??0P_RGB32_YUV420P@@QAE@ABVPString@@0II@Z @381 NONAME ??0P_RGB32_YUV420P_Registration@@QAE@XZ @382 NONAME ??0P_SBGGR8_RGB24@@QAE@ABVPString@@0II@Z @7589 NONAME ??0P_SBGGR8_RGB24_Registration@@QAE@XZ @7590 NONAME ??0P_SBGGR8_YUV420P@@QAE@ABVPString@@0II@Z @7619 NONAME ??0P_SBGGR8_YUV420P_Registration@@QAE@XZ @7620 NONAME ??0P_timeval@@QAE@ABVPTimeInterval@@@Z @383 NONAME ??0P_timeval@@QAE@XZ @384 NONAME ??0P_UYV444_YUV420P@@QAE@ABVPString@@0II@Z @385 NONAME ??0P_UYV444_YUV420P_Registration@@QAE@XZ @386 NONAME ??0P_UYVY422_YUV420P@@QAE@ABVPString@@0II@Z @387 NONAME ??0P_UYVY422_YUV420P_Registration@@QAE@XZ @388 NONAME ??0P_YUV411P_YUV420P@@QAE@ABVPString@@0II@Z @389 NONAME ??0P_YUV411P_YUV420P_Registration@@QAE@XZ @390 NONAME ??0P_YUV420P_BGR24@@QAE@ABVPString@@0II@Z @391 NONAME ??0P_YUV420P_BGR24_Registration@@QAE@XZ @394 NONAME ??0P_YUV420P_BGR32@@QAE@ABVPString@@0II@Z @3774 NONAME ??0P_YUV420P_BGR32_Registration@@QAE@XZ @3775 NONAME ??0P_YUV420P_RGB24@@QAE@ABVPString@@0II@Z @395 NONAME ??0P_YUV420P_RGB24_Registration@@QAE@XZ @398 NONAME ??0P_YUV420P_RGB32@@QAE@ABVPString@@0II@Z @399 NONAME ??0P_YUV420P_RGB32_Registration@@QAE@XZ @402 NONAME ??0P_YUV420P_YUV411P@@QAE@ABVPString@@0II@Z @403 NONAME ??0P_YUV420P_YUV411P_Registration@@QAE@XZ @404 NONAME ??0P_YUV422_YUV420P@@QAE@ABVPString@@0II@Z @405 NONAME ??0P_YUV422_YUV420P_Registration@@QAE@XZ @406 NONAME ??0P_YUV422_YUV422@@QAE@ABVPString@@0II@Z @407 NONAME ??0P_YUV422_YUV422_Registration@@QAE@XZ @408 NONAME ??0Reference@PContainer@@QAE@ABV01@@Z @5837 NONAME ??0Reference@PContainer@@QAE@H@Z @409 NONAME ??0RegistryKey@@QAE@ABVPString@@W4OpenMode@0@@Z @410 NONAME ??0RouteEntry@PIPSocket@@QAE@ABVAddress@1@@Z @411 NONAME ??0SecurityID@@QAE@PAU_SID_IDENTIFIER_AUTHORITY@@EKKKKKKKK@Z @412 NONAME ??0SecurityID@@QAE@PBD0PADPAKPAW4_SID_NAME_USE@@@Z @413 NONAME ??0SelectList@PSocket@@QAE@XZ @414 NONAME ??0sentry@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@AAV12@_N@Z @5551 NONAME ??0sentry@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@AAV12@_N@Z @5552 NONAME ??0sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z @5553 NONAME ??0sentry@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@AAV12@@Z @5554 NONAME ??0ServiceManager@@QAE@XZ @415 NONAME ??0strstreambuf@std@@QAE@H@Z @5555 NONAME ??0Table@PHashTable@@QAE@H@Z @416 NONAME ??0Table@PHashTable@@QAE@PBQAVElement@1@HH@Z @417 NONAME ??0Win95_ServiceManager@@QAE@XZ @418 NONAME ??0WinSNMPLoader@@QAE@XZ @6706 NONAME ??0Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@QAE@ABVPString@@_N@Z @7162 NONAME ??0Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@QAE@ABVPString@@_N@Z @7163 NONAME ??0Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@QAE@ABVPString@@_N@Z @7164 NONAME ??0WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAE@_N@Z @7165 NONAME ??0WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAE@_N@Z @6806 NONAME ??0WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@IAE@_N@Z @7166 NONAME ??0WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@IAE@_N@Z @7167 NONAME ??0WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE@_N@Z @7168 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@D@Z @6807 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@D@Z @6274 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@D@Z @7169 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@D@Z @6808 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@D@Z @7170 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@D@Z @7171 NONAME ??0_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@D@Z @7172 NONAME ??0_Sentry_base@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z @5556 NONAME ??0_Sentry_base@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@AAV12@@Z @5557 NONAME ??0_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@AAV12@@Z @5558 NONAME ??0_Sentry_base@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@AAV12@@Z @5559 NONAME ??1?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@@std@@QAE@XZ @6809 NONAME ??1?$map@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@@std@@QAE@XZ @6276 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@@std@@QAE@XZ @7173 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@@std@@QAE@XZ @6810 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@@std@@QAE@XZ @6811 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAE@XZ @7174 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @7175 NONAME ??1?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAE@XZ @7176 NONAME ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@QAE@XZ @6812 NONAME ??1?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@QAE@XZ @6279 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@QAE@XZ @7177 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@QAE@XZ @6813 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@QAE@XZ @6814 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@QAE@XZ @7178 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@QAE@XZ @7179 NONAME ??1?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@QAE@XZ @7180 NONAME ??1?$pair@VPString@@PAVPProcessStartup@@@std@@QAE@XZ @6282 NONAME ??1?$PArray@VPString@@@@UAE@XZ @421 NONAME ??1?$PArray@VPWaveBuffer@@@@UAE@XZ @422 NONAME ??1?$PArray@VPWin32PacketBuffer@@@@UAE@XZ @423 NONAME ??1?$PBaseArray@D@@UAE@XZ @424 NONAME ??1?$PBaseArray@E@@UAE@XZ @425 NONAME ??1?$PBaseArray@F@@UAE@XZ @426 NONAME ??1?$PBaseArray@G@@UAE@XZ @427 NONAME ??1?$PBaseArray@H@@UAE@XZ @428 NONAME ??1?$PBaseArray@I@@UAE@XZ @429 NONAME ??1?$PBaseArray@J@@UAE@XZ @430 NONAME ??1?$PBaseArray@K@@UAE@XZ @431 NONAME ??1?$PBaseArray@PAVElement@PHashTable@@@@UAE@XZ @432 NONAME ??1?$PBaseArray@PAVPObject@@@@UAE@XZ @433 NONAME ??1?$PDevicePluginAdapter@VPSoundChannel@@@@UAE@XZ @7578 NONAME ??1?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAE@XZ @7579 NONAME ??1?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAE@XZ @7580 NONAME ??1?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAE@XZ @434 NONAME ??1?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAE@XZ @435 NONAME ??1?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAE@XZ @436 NONAME ??1?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAE@XZ @5943 NONAME ??1?$PDictionary@VPOrdinalKey@@VPThread@@@@UAE@XZ @437 NONAME ??1?$PDictionary@VPString@@VPDynaLink@@@@UAE@XZ @5864 NONAME ??1?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @7181 NONAME ??1?$PFactory@VPPluginModuleManager@@VPString@@@@MAE@XZ @6815 NONAME ??1?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @6816 NONAME ??1?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @7182 NONAME ??1?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @7183 NONAME ??1?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @7184 NONAME ??1?$PList@VInterfaceEntry@PIPSocket@@@@UAE@XZ @7646 NONAME ??1?$PList@VPDynaLink@@@@UAE@XZ @3990 NONAME ??1?$PList@VPNotifier@@@@UAE@XZ @3991 NONAME ??1?$PList@VPPluginService@@@@UAE@XZ @3616 NONAME ??1?$PList@VPSafeObject@@@@UAE@XZ @7052 NONAME ??1?$PList@VPSocket@@@@UAE@XZ @438 NONAME ??1?$PList@VPString@@@@UAE@XZ @439 NONAME ??1?$PList@VPThread@@@@UAE@XZ @440 NONAME ??1?$PList@VPTimer@@@@UAE@XZ @441 NONAME ??1?$POrdinalDictionary@VPString@@@@UAE@XZ @442 NONAME ??1?$PScalarArray@F@@UAE@XZ @443 NONAME ??1?$PScalarArray@G@@UAE@XZ @444 NONAME ??1?$PScalarArray@H@@UAE@XZ @445 NONAME ??1?$PScalarArray@I@@UAE@XZ @446 NONAME ??1?$PScalarArray@J@@UAE@XZ @447 NONAME ??1?$PScalarArray@K@@UAE@XZ @448 NONAME ??1?$PSet@VPString@@@@UAE@XZ @449 NONAME ??1?$PSortedList@VPString@@@@UAE@XZ @450 NONAME ??1?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UAE@XZ @16265 NONAME ??1?$PStringDictionary@VPOrdinalKey@@@@UAE@XZ @451 NONAME ??1?$PStringDictionary@VPString@@@@UAE@XZ @452 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UAE@XZ @16266 NONAME ??1?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UAE@XZ @16267 NONAME ??1?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UAE@XZ @16268 NONAME ??1?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE@XZ @6283 NONAME ??1?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE@XZ @6284 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @7185 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @7186 NONAME ??1?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@UAE@XZ @7187 NONAME ??1?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @6817 NONAME ??1?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@UAE@XZ @6818 NONAME ??1?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6819 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@XZ @6285 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7188 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6820 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6821 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7189 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7190 NONAME ??1?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7191 NONAME ??1Address@PIPSocket@@UAE@XZ @453 NONAME ??1Block@PTrace@@QAE@XZ @454 NONAME ??1Buffer@PDebugStream@@UAE@XZ @455 NONAME ??1Buffer@PStringStream@@UAE@XZ @456 NONAME ??1Buffer@PSystemLog@@UAE@XZ @457 NONAME ??1CMCDLL@PMail@@UAE@XZ @458 NONAME ??1CMC_message_reference_ptr@@QAE@XZ @459 NONAME ??1DeleteObjectsTimeout_PNotifier@PSafeCollection@@UAE@XZ @460 NONAME ??1FactoryMap@PFactoryBase@@QAE@XZ @6822 NONAME ??1HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UAE@XZ @16269 NONAME ??1HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UAE@XZ @16270 NONAME ??1HouseKeepingThread@PProcess@@UAE@XZ @461 NONAME ??1InterfaceEntry@PIPSocket@@UAE@XZ @462 NONAME ??1length_error@std@@UAE@XZ @6053 NONAME ??1logic_error@std@@UAE@XZ @6054 NONAME ??1MAPIDLL@PMail@@UAE@XZ @463 NONAME ??1Nest@PReadWriteMutex@@UAE@XZ @464 NONAME ??1NT_ServiceManager@@QAE@XZ @465 NONAME ??1out_of_range@std@@UAE@XZ @6055 NONAME ??1PAbstractArray@@UAE@XZ @466 NONAME ??1PAbstractDictionary@@UAE@XZ @467 NONAME ??1PAbstractList@@UAE@XZ @468 NONAME ??1PAbstractSet@@UAE@XZ @469 NONAME ??1PAbstractSortedList@@UAE@XZ @470 NONAME ??1PArgList@@UAE@XZ @471 NONAME ??1PArrayObjects@@UAE@XZ @472 NONAME ??1PBitArray@@UAE@XZ @473 NONAME ??1PBYTEArray@@UAE@XZ @474 NONAME ??1PCaselessString@@UAE@XZ @475 NONAME ??1PChannel@@UAE@XZ @476 NONAME ??1PChannelStreamBuffer@@UAE@XZ @477 NONAME ??1PCharArray@@UAE@XZ @478 NONAME ??1PCollection@@UAE@XZ @479 NONAME ??1PColourConverter@@UAE@XZ @480 NONAME ??1PColourConverterRegistration@@UAE@XZ @481 NONAME ??1PCondMutex@@UAE@XZ @482 NONAME ??1PConfig@@UAE@XZ @483 NONAME ??1PConfigArgs@@UAE@XZ @484 NONAME ??1PConsoleChannel@@UAE@XZ @485 NONAME ??1PContainer@@UAE@XZ @486 NONAME ??1PCriticalSection@@UAE@XZ @5838 NONAME ??1PDebugStream@@UAE@XZ @487 NONAME ??1PDevicePluginAdapterBase@@UAE@XZ @7581 NONAME ??1PDevicePluginServiceDescriptor@@UAE@XZ @16271 NONAME ??1PDirectory@@UAE@XZ @488 NONAME ??1PDynaLink@@UAE@XZ @489 NONAME ??1PEthSocket@@UAE@XZ @490 NONAME ??1PFactoryBase@@UAE@XZ @6823 NONAME ??1PFile@@UAE@XZ @492 NONAME ??1PFileInfo@@UAE@XZ @493 NONAME ??1PFilePath@@UAE@XZ @494 NONAME ??1PHashTable@@UAE@XZ @495 NONAME ??1PHostByAddr@@UAE@XZ @496 NONAME ??1PHostByName@@UAE@XZ @497 NONAME ??1PICMPDLL@@UAE@XZ @498 NONAME ??1PICMPSocket@@UAE@XZ @499 NONAME ??1PImageDLL@@UAE@XZ @500 NONAME ??1PIndirectChannel@@UAE@XZ @501 NONAME ??1PingInfo@PICMPSocket@@QAE@XZ @502 NONAME ??1PIntCondMutex@@UAE@XZ @503 NONAME ??1PIPCacheData@@UAE@XZ @504 NONAME ??1PIPCacheKey@@UAE@XZ @505 NONAME ??1PIPDatagramSocket@@UAE@XZ @506 NONAME ??1PIPSocket@@UAE@XZ @507 NONAME ??1PIPXSocket@@UAE@XZ @508 NONAME ??1PluginLoaderStartup@@UAE@XZ @6288 NONAME ??1PMail@@UAE@XZ @509 NONAME ??1PMultiMediaFile@@QAE@XZ @511 NONAME ??1PNotifier@@UAE@XZ @513 NONAME ??1PNotifierFunction@@UAE@XZ @514 NONAME ??1PObject@@UAE@XZ @515 NONAME ??1POrdinalKey@@UAE@XZ @516 NONAME ??1POrdinalToString@@UAE@XZ @517 NONAME ??1PPipeChannel@@UAE@XZ @518 NONAME ??1PPluginManager@@UAE@XZ @3618 NONAME ??1PPluginModuleManager@@UAE@XZ @5866 NONAME ??1PPluginService@@UAE@XZ @3619 NONAME ??1PPluginServiceDescriptor@@UAE@XZ @16272 NONAME ??1PPointer@@UAE@XZ @5944 NONAME ??1PProcess@@UAE@XZ @519 NONAME ??1PProcessStartup@@UAE@XZ @6289 NONAME ??1PQoS@@UAE@XZ @3534 NONAME ??1PRASDLL@@UAE@XZ @520 NONAME ??1PReadWaitAndSignal@@QAE@XZ @3984 NONAME ??1PReadWriteMutex@@UAE@XZ @521 NONAME ??1PRegularExpression@@UAE@XZ @522 NONAME ??1PRemoteConnection@@UAE@XZ @523 NONAME ??1PSafeCollection@@UAE@XZ @524 NONAME ??1PSafeLockReadOnly@@QAE@XZ @7610 NONAME ??1PSafeLockReadWrite@@QAE@XZ @7611 NONAME ??1PSafeObject@@UAE@XZ @525 NONAME ??1PSafePtrBase@@UAE@XZ @526 NONAME ??1PSemaphore@@UAE@XZ @527 NONAME ??1PSerialChannel@@UAE@XZ @528 NONAME ??1PServiceProcess@@UAE@XZ @529 NONAME ??1PSimpleThread@@UAE@XZ @530 NONAME ??1PSmartObject@@UAE@XZ @531 NONAME ??1PSmartPointer@@UAE@XZ @532 NONAME ??1PSmartPtrInspector@@UAE@XZ @5945 NONAME ??1PSocket@@UAE@XZ @533 NONAME ??1PSortedStringList@@UAE@XZ @534 NONAME ??1PSound@@UAE@XZ @535 NONAME ??1PSoundChannel@@UAE@XZ @536 NONAME ??1PSoundChannelWin32@@UAE@XZ @3620 NONAME ??1PSPXSocket@@UAE@XZ @537 NONAME ??1PStandardColourConverter@@UAE@XZ @538 NONAME ??1PString@@UAE@XZ @539 NONAME ??1PStringArray@@UAE@XZ @540 NONAME ??1PStringList@@UAE@XZ @541 NONAME ??1PStringSet@@UAE@XZ @542 NONAME ??1PStringStream@@UAE@XZ @543 NONAME ??1PStringToOrdinal@@UAE@XZ @544 NONAME ??1PStringToString@@UAE@XZ @545 NONAME ??1PStructuredFile@@UAE@XZ @546 NONAME ??1PSync@@UAE@XZ @16573 NONAME ??1PSyncPoint@@UAE@XZ @547 NONAME ??1PSynonymColour@@UAE@XZ @548 NONAME ??1PSynonymColourRegistration@@UAE@XZ @549 NONAME ??1PSystemLog@@UAE@XZ @550 NONAME ??1PTCPSocket@@UAE@XZ @551 NONAME ??1PTextFile@@UAE@XZ @552 NONAME ??1PThread@@UAE@XZ @553 NONAME ??1PTime@@UAE@XZ @554 NONAME ??1PTimedMutex@@UAE@XZ @16574 NONAME ??1PTimeInterval@@UAE@XZ @555 NONAME ??1PTimer@@UAE@XZ @556 NONAME ??1PTimerList@@UAE@XZ @557 NONAME ??1PUDPSocket@@UAE@XZ @558 NONAME ??1PVideoChannel@@UAE@XZ @559 NONAME ??1PVideoDevice@@UAE@XZ @560 NONAME ??1PVideoDeviceBitmap@@UAE@XZ @561 NONAME ??1PVideoInputDevice@@UAE@XZ @562 NONAME ??1PVideoInputDevice_FakeVideo@@UAE@XZ @3776 NONAME ??1PVideoInputDevice_VideoForWindows@@UAE@XZ @3621 NONAME ??1PVideoOutputDevice@@UAE@XZ @564 NONAME ??1PVideoOutputDeviceRGB@@UAE@XZ @16273 NONAME ??1PVideoOutputDevice_NULLOutput@@UAE@XZ @3777 NONAME ??1PVideoOutputDevice_Window@@UAE@XZ @16274 NONAME ??1PVideoOutputDevice_Window_PluginServiceDescriptor@@UAE@XZ @16275 NONAME ??1PWaitAndSignal@@QAE@XZ @568 NONAME ??1PWaveBuffer@@EAE@XZ @569 NONAME ??1PWaveFormat@@UAE@XZ @570 NONAME ??1PWin32AsnAny@@QAE@XZ @571 NONAME ??1PWin32AsnOid@@QAE@XZ @572 NONAME ??1PWin32OidBuffer@@QAE@XZ @573 NONAME ??1PWin32Overlapped@@QAE@XZ @574 NONAME ??1PWin32PacketBuffer@@UAE@XZ @575 NONAME ??1PWin32PacketDriver@@UAE@XZ @576 NONAME ??1PWin32PacketSYS@@UAE@XZ @577 NONAME ??1PWin32PacketVxD@@UAE@XZ @578 NONAME ??1PWin32SnmpLibrary@@UAE@XZ @579 NONAME ??1PWinQoS@@UAE@XZ @3870 NONAME ??1PWinSock@@UAE@XZ @580 NONAME ??1PWriteWaitAndSignal@@QAE@XZ @3985 NONAME ??1P_BGR24_RGB24@@UAE@XZ @16276 NONAME ??1P_BGR24_RGB24_Registration@@UAE@XZ @16277 NONAME ??1P_BGR24_RGB32@@UAE@XZ @16278 NONAME ??1P_BGR24_RGB32_Registration@@UAE@XZ @16279 NONAME ??1P_BGR24_YUV420P@@UAE@XZ @3778 NONAME ??1P_BGR24_YUV420P_Registration@@UAE@XZ @3779 NONAME ??1P_BGR32_RGB24@@UAE@XZ @16280 NONAME ??1P_BGR32_RGB24_Registration@@UAE@XZ @16281 NONAME ??1P_BGR32_RGB32@@UAE@XZ @16282 NONAME ??1P_BGR32_RGB32_Registration@@UAE@XZ @16283 NONAME ??1P_BGR32_YUV420P@@UAE@XZ @3780 NONAME ??1P_BGR32_YUV420P_Registration@@UAE@XZ @3781 NONAME ??1P_fd_set@@QAE@XZ @581 NONAME ??1P_Grey_YUV420P@@UAE@XZ @584 NONAME ??1P_Grey_YUV420P_Registration@@UAE@XZ @585 NONAME ??1P_RGB24_BGR24@@UAE@XZ @16284 NONAME ??1P_RGB24_BGR24_Registration@@UAE@XZ @16285 NONAME ??1P_RGB24_BGR32@@UAE@XZ @16286 NONAME ??1P_RGB24_BGR32_Registration@@UAE@XZ @16287 NONAME ??1P_RGB24_RGB32@@UAE@XZ @588 NONAME ??1P_RGB24_RGB32_Registration@@UAE@XZ @589 NONAME ??1P_RGB24_YUV420P@@UAE@XZ @590 NONAME ??1P_RGB24_YUV420P_Registration@@UAE@XZ @591 NONAME ??1P_RGB32_BGR24@@UAE@XZ @16288 NONAME ??1P_RGB32_BGR24_Registration@@UAE@XZ @16289 NONAME ??1P_RGB32_BGR32@@UAE@XZ @16290 NONAME ??1P_RGB32_BGR32_Registration@@UAE@XZ @16291 NONAME ??1P_RGB32_RGB24@@UAE@XZ @594 NONAME ??1P_RGB32_RGB24_Registration@@UAE@XZ @595 NONAME ??1P_RGB32_YUV420P@@UAE@XZ @596 NONAME ??1P_RGB32_YUV420P_Registration@@UAE@XZ @597 NONAME ??1P_SBGGR8_RGB24@@UAE@XZ @7591 NONAME ??1P_SBGGR8_RGB24_Registration@@UAE@XZ @7592 NONAME ??1P_SBGGR8_YUV420P@@UAE@XZ @7621 NONAME ??1P_SBGGR8_YUV420P_Registration@@UAE@XZ @7622 NONAME ??1P_UYV444_YUV420P@@UAE@XZ @598 NONAME ??1P_UYV444_YUV420P_Registration@@UAE@XZ @599 NONAME ??1P_UYVY422_YUV420P@@UAE@XZ @600 NONAME ??1P_UYVY422_YUV420P_Registration@@UAE@XZ @601 NONAME ??1P_YUV411P_YUV420P@@UAE@XZ @602 NONAME ??1P_YUV411P_YUV420P_Registration@@UAE@XZ @603 NONAME ??1P_YUV420P_BGR24@@UAE@XZ @604 NONAME ??1P_YUV420P_BGR24_Registration@@UAE@XZ @607 NONAME ??1P_YUV420P_BGR32@@UAE@XZ @3782 NONAME ??1P_YUV420P_BGR32_Registration@@UAE@XZ @3783 NONAME ??1P_YUV420P_RGB24@@UAE@XZ @608 NONAME ??1P_YUV420P_RGB24_Registration@@UAE@XZ @611 NONAME ??1P_YUV420P_RGB32@@UAE@XZ @612 NONAME ??1P_YUV420P_RGB32_Registration@@UAE@XZ @615 NONAME ??1P_YUV420P_YUV411P@@UAE@XZ @616 NONAME ??1P_YUV420P_YUV411P_Registration@@UAE@XZ @617 NONAME ??1P_YUV422_YUV420P@@UAE@XZ @618 NONAME ??1P_YUV422_YUV420P_Registration@@UAE@XZ @619 NONAME ??1P_YUV422_YUV422@@UAE@XZ @620 NONAME ??1P_YUV422_YUV422_Registration@@UAE@XZ @621 NONAME ??1RegistryKey@@QAE@XZ @622 NONAME ??1RouteEntry@PIPSocket@@UAE@XZ @623 NONAME ??1SecurityID@@QAE@XZ @624 NONAME ??1SelectList@PSocket@@UAE@XZ @625 NONAME ??1sentry@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@XZ @5560 NONAME ??1sentry@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@XZ @5561 NONAME ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@XZ @5562 NONAME ??1sentry@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@XZ @5563 NONAME ??1Table@PHashTable@@UAE@XZ @626 NONAME ??1WinSNMPLoader@@UAE@XZ @6707 NONAME ??1Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@UAE@XZ @7192 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@UAE@XZ @7193 NONAME ??1Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@UAE@XZ @7194 NONAME ??1WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MAE@XZ @7195 NONAME ??1WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MAE@XZ @6824 NONAME ??1WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MAE@XZ @7196 NONAME ??1WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MAE@XZ @7197 NONAME ??1WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MAE@XZ @7198 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE@XZ @6825 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE@XZ @6290 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7199 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6826 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @6827 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7200 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7201 NONAME ??1_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE@XZ @7202 NONAME ??1_Sentry_base@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@XZ @5564 NONAME ??1_Sentry_base@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@XZ @5565 NONAME ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@XZ @5566 NONAME ??1_Sentry_base@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@XZ @5567 NONAME ??2@YAPAXIPAX@Z @6057 NONAME ??3@YAXPAX0@Z @6293 NONAME ??4?$PArray@VPString@@@@QAEAAV0@ABV0@@Z @872 NONAME ??4?$PBaseArray@D@@QAEAAV0@ABV0@@Z @873 NONAME ??4?$PBaseArray@E@@QAEAAV0@ABV0@@Z @874 NONAME ??4?$PBaseArray@F@@QAEAAV0@ABV0@@Z @875 NONAME ??4?$PBaseArray@G@@QAEAAV0@ABV0@@Z @876 NONAME ??4?$PBaseArray@H@@QAEAAV0@ABV0@@Z @877 NONAME ??4?$PBaseArray@I@@QAEAAV0@ABV0@@Z @878 NONAME ??4?$PBaseArray@J@@QAEAAV0@ABV0@@Z @879 NONAME ??4?$PBaseArray@K@@QAEAAV0@ABV0@@Z @880 NONAME ??4?$PList@VPString@@@@QAEAAV0@ABV0@@Z @881 NONAME ??4?$POrdinalDictionary@VPString@@@@QAEAAV0@ABV0@@Z @882 NONAME ??4?$PScalarArray@F@@QAEAAV0@ABV0@@Z @883 NONAME ??4?$PScalarArray@G@@QAEAAV0@ABV0@@Z @884 NONAME ??4?$PScalarArray@H@@QAEAAV0@ABV0@@Z @885 NONAME ??4?$PScalarArray@I@@QAEAAV0@ABV0@@Z @886 NONAME ??4?$PScalarArray@J@@QAEAAV0@ABV0@@Z @887 NONAME ??4?$PScalarArray@K@@QAEAAV0@ABV0@@Z @888 NONAME ??4?$PSet@VPString@@@@QAEAAV0@ABV0@@Z @889 NONAME ??4?$PStringDictionary@VPOrdinalKey@@@@QAEAAV0@ABV0@@Z @890 NONAME ??4?$PStringDictionary@VPString@@@@QAEAAV0@ABV0@@Z @891 NONAME ??4Address@PEthSocket@@QAEAAT01@ABT01@@Z @892 NONAME ??4Address@PEthSocket@@QAEAAT01@ABVPString@@@Z @893 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin6_addr@@@Z @3871 NONAME ??4Address@PIPSocket@@QAEAAV01@ABUin_addr@@@Z @894 NONAME ??4Address@PIPSocket@@QAEAAV01@ABV01@@Z @895 NONAME ??4Address@PIPSocket@@QAEAAV01@ABVPString@@@Z @896 NONAME ??4Address@PIPSocket@@QAEAAV01@K@Z @897 NONAME ??4Address@PIPXSocket@@QAEAAV01@ABV01@@Z @898 NONAME ??4Buffer@PStringStream@@QAEAAV01@ABV01@@Z @899 NONAME ??4PAbstractArray@@QAEAAV0@ABV0@@Z @900 NONAME ??4PAbstractDictionary@@QAEAAV0@ABV0@@Z @901 NONAME ??4PAbstractList@@QAEAAV0@ABV0@@Z @902 NONAME ??4PAbstractSet@@QAEAAV0@ABV0@@Z @903 NONAME ??4PArrayObjects@@QAEAAV0@ABV0@@Z @904 NONAME ??4PBYTEArray@@QAEAAV0@ABV0@@Z @905 NONAME ??4PCaselessString@@QAEAAV0@ABVPString@@@Z @906 NONAME ??4PCaselessString@@QAEAAV0@D@Z @907 NONAME ??4PCaselessString@@QAEAAV0@PBD@Z @908 NONAME ??4PChannel@@IAEAAV0@ABV0@@Z @909 NONAME ??4PChannelStreamBuffer@@QAEAAV0@ABV0@@Z @910 NONAME ??4PCharArray@@QAEAAV0@ABV0@@Z @911 NONAME ??4PContainer@@QAEAAV0@ABV0@@Z @912 NONAME ??4PDirectory@@QAEAAV0@ABVPString@@@Z @913 NONAME ??4PDirectory@@QAEAAV0@PBD@Z @914 NONAME ??4PFilePath@@QAEAAV0@ABV0@@Z @915 NONAME ??4PFilePath@@QAEAAV0@ABVPString@@@Z @916 NONAME ??4PFilePath@@QAEAAV0@PBD@Z @917 NONAME ??4PHashTable@@QAEAAV0@ABV0@@Z @918 NONAME ??4PIntCondMutex@@QAEAAV0@H@Z @919 NONAME ??4PNotifier@@QAEAAV0@ABV0@@Z @920 NONAME ??4PObject@@QAEAAV0@ABV0@@Z @921 NONAME ??4POrdinalKey@@QAEAAV0@H@Z @922 NONAME ??4POrdinalToString@@QAEAAV0@ABV0@@Z @923 NONAME ??4PQoS@@QAEAAV0@ABV0@@Z @3537 NONAME ??4PRegularExpression@@QAEAAV0@ABV0@@Z @3921 NONAME ??4PSmartPointer@@QAEAAV0@ABV0@@Z @924 NONAME ??4PSound@@QAEAAV0@ABVPBYTEArray@@@Z @925 NONAME ??4PString@@QAEAAV0@ABV0@@Z @926 NONAME ??4PString@@QAEAAV0@D@Z @927 NONAME ??4PString@@QAEAAV0@F@Z @928 NONAME ??4PString@@QAEAAV0@G@Z @929 NONAME ??4PString@@QAEAAV0@H@Z @930 NONAME ??4PString@@QAEAAV0@I@Z @931 NONAME ??4PString@@QAEAAV0@J@Z @932 NONAME ??4PString@@QAEAAV0@K@Z @933 NONAME ??4PString@@QAEAAV0@PBD@Z @934 NONAME ??4PString@@QAEAAV0@_J@Z @935 NONAME ??4PString@@QAEAAV0@_K@Z @936 NONAME ??4PStringArray@@QAEAAV0@ABV0@@Z @937 NONAME ??4PStringList@@QAEAAV0@ABV0@@Z @938 NONAME ??4PStringSet@@QAEAAV0@ABV0@@Z @939 NONAME ??4PStringStream@@QAEAAV0@ABV0@@Z @940 NONAME ??4PStringStream@@QAEAAV0@ABVPString@@@Z @941 NONAME ??4PStringStream@@QAEAAV0@D@Z @942 NONAME ??4PStringStream@@QAEAAV0@PBD@Z @943 NONAME ??4PStringToOrdinal@@QAEAAV0@ABV0@@Z @944 NONAME ??4PStringToString@@QAEAAV0@ABV0@@Z @945 NONAME ??4PTime@@QAEAAV0@ABV0@@Z @946 NONAME ??4PTimeInterval@@QAEAAV0@ABV0@@Z @947 NONAME ??4PTimer@@QAEAAV0@ABVPTimeInterval@@@Z @948 NONAME ??4PTimer@@QAEAAV0@K@Z @949 NONAME ??4PWaveBuffer@@AAEAAV0@ABVPSound@@@Z @950 NONAME ??4PWaveFormat@@QAEAAV0@ABV0@@Z @951 NONAME ??4PWin32AsnOid@@QAEAAV0@ABUAsnObjectIdentifier@@@Z @952 NONAME ??4P_fd_set@@QAEAAV0@I@Z @953 NONAME ??4P_timeval@@QAEAAV0@ABVPTimeInterval@@@Z @954 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAVAddress@PIPSocket@@@Z @5568 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAVPObject@@@Z @5569 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AA_J@Z @5570 NONAME ??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AA_K@Z @5571 NONAME ??5PArgList@@QAEAAV0@H@Z @959 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVAddress@PIPSocket@@@Z @5572 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVPObject@@@Z @5573 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVPString@@@Z @9205 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@W4VideoFormat@PVideoDevice@@@Z @5574 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@_J@Z @5575 NONAME ??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@_K@Z @5576 NONAME ??6PArgList@@QAEAAV0@H@Z @966 NONAME ??7PString@@QBE_NXZ @5896 NONAME ??8Address@PEthSocket@@QBE_NABT01@@Z @5897 NONAME ??8Address@PEthSocket@@QBE_NPBE@Z @5898 NONAME ??8Address@PIPSocket@@QBE_NAAUin6_addr@@@Z @5899 NONAME ??8Address@PIPSocket@@QBE_NAAUin_addr@@@Z @5900 NONAME ??8Address@PIPSocket@@QBE_NABV01@@Z @5901 NONAME ??8Address@PIPSocket@@QBE_NH@Z @5902 NONAME ??8Address@PIPSocket@@QBE_NK@Z @5903 NONAME ??8const_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBE_NABV012@@Z @6708 NONAME ??8const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE_NABV012@@Z @16292 NONAME ??8const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE_NABV012@@Z @6294 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBE_NABV012@@Z @6828 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBE_NABV012@@Z @6295 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7203 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6829 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6830 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7204 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7205 NONAME ??8const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7206 NONAME ??8PObject@@QBE_NABV0@@Z @5904 NONAME ??8PString@@QBE_NABVPObject@@@Z @5905 NONAME ??8PString@@QBE_NPBD@Z @5906 NONAME ??8PTimeInterval@@QBE_NABV0@@Z @5907 NONAME ??8PTimeInterval@@QBE_NJ@Z @5908 NONAME ??9Address@PEthSocket@@QBE_NPBE@Z @5909 NONAME ??9Address@PIPSocket@@QBE_NH@Z @5910 NONAME ??9const_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBE_NABV012@@Z @6709 NONAME ??9const_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE_NABV012@@Z @16293 NONAME ??9const_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE_NABV012@@Z @6298 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBE_NABV012@@Z @6831 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBE_NABV012@@Z @6299 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7207 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6832 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @6833 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7208 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7209 NONAME ??9const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE_NABV012@@Z @7210 NONAME ??9PObject@@QBE_NABV0@@Z @5911 NONAME ??9PString@@QBE_NABVPObject@@@Z @5912 NONAME ??9PString@@QBE_NPBD@Z @5913 NONAME ??9PTimeInterval@@QBE_NABV0@@Z @5914 NONAME ??9PTimeInterval@@QBE_NJ@Z @5915 NONAME ??A?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@@std@@QAEAAPAVPFactoryBase@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z @6834 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@ABVPString@@@Z @7211 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@ABVPString@@@Z @6835 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@ABVPString@@@Z @7212 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@ABVPString@@@Z @7213 NONAME ??A?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@QAEAAPAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@ABVPString@@@Z @7214 NONAME ??A?$PArray@VPWaveBuffer@@@@QBEAAVPWaveBuffer@@H@Z @987 NONAME ??A?$PArray@VPWin32PacketBuffer@@@@QBEAAVPWin32PacketBuffer@@H@Z @988 NONAME ??A?$PBaseArray@D@@QAEAADH@Z @989 NONAME ??A?$PBaseArray@D@@QBEDH@Z @990 NONAME ??A?$PBaseArray@E@@QAEAAEH@Z @991 NONAME ??A?$PBaseArray@F@@QAEAAFH@Z @992 NONAME ??A?$PBaseArray@G@@QAEAAGH@Z @993 NONAME ??A?$PBaseArray@H@@QAEAAHH@Z @994 NONAME ??A?$PBaseArray@H@@QBEHH@Z @995 NONAME ??A?$PBaseArray@I@@QAEAAIH@Z @996 NONAME ??A?$PBaseArray@J@@QAEAAJH@Z @997 NONAME ??A?$PBaseArray@K@@QAEAAKH@Z @998 NONAME ??A?$PBaseArray@PAVElement@PHashTable@@@@QAEAAPAVElement@PHashTable@@H@Z @999 NONAME ??A?$PBaseArray@PAVElement@PHashTable@@@@QBEPAVElement@PHashTable@@H@Z @1000 NONAME ??A?$PBaseArray@PAVPObject@@@@QAEAAPAVPObject@@H@Z @1001 NONAME ??A?$PList@VInterfaceEntry@PIPSocket@@@@QBEAAVInterfaceEntry@PIPSocket@@H@Z @7647 NONAME ??A?$PList@VPDynaLink@@@@QBEAAVPDynaLink@@H@Z @3992 NONAME ??A?$PList@VPNotifier@@@@QBEAAVPNotifier@@H@Z @3993 NONAME ??A?$PList@VPPluginService@@@@QBEAAVPPluginService@@H@Z @3622 NONAME ??A?$PList@VPSafeObject@@@@QBEAAVPSafeObject@@H@Z @7053 NONAME ??A?$PList@VPSocket@@@@QBEAAVPSocket@@H@Z @1002 NONAME ??A?$PList@VPString@@@@QBEAAVPString@@H@Z @1003 NONAME ??A?$PList@VPThread@@@@QBEAAVPThread@@H@Z @1004 NONAME ??A?$PList@VRouteEntry@PIPSocket@@@@QBEAAVRouteEntry@PIPSocket@@H@Z @1005 NONAME ??A?$PSortedList@VPString@@@@QBEAAVPString@@H@Z @1006 NONAME ??A?$PStringDictionary@VPString@@@@QBEABVPString@@ABV1@@Z @16294 NONAME ??AAddress@PIPSocket@@QBEEH@Z @1007 NONAME ??APArgList@@QBE?AVPString@@H@Z @1008 NONAME ??APStringArray@@QAEAAVPString@@H@Z @1009 NONAME ??APStringArray@@QBE?AVPString@@H@Z @7618 NONAME ??APWin32AsnOid@@QAEAAIH@Z @1011 NONAME ??B?$fpos@H@std@@QBEJXZ @5577 NONAME ??B?$PBaseArray@D@@QBEPBDXZ @1012 NONAME ??B?$PBaseArray@E@@QBEPBEXZ @1013 NONAME ??B?$PBaseArray@F@@QBEPBFXZ @1014 NONAME ??B?$PBaseArray@G@@QBEPBGXZ @1015 NONAME ??B?$PBaseArray@H@@QBEPBHXZ @1016 NONAME ??B?$PBaseArray@I@@QBEPBIXZ @1017 NONAME ??B?$PBaseArray@J@@QBEPBJXZ @1018 NONAME ??B?$PBaseArray@K@@QBEPBKXZ @1019 NONAME ??B?$PBaseArray@PAVElement@PHashTable@@@@QBEPBQAVElement@PHashTable@@XZ @1020 NONAME ??B?$PBaseArray@PAVPObject@@@@QBEPBQAVPObject@@XZ @1021 NONAME ??BAddress@PEthSocket@@QBE?AVPString@@XZ @1022 NONAME ??BAddress@PIPSocket@@QBE?AUin6_addr@@XZ @3873 NONAME ??BAddress@PIPSocket@@QBE?AUin_addr@@XZ @1023 NONAME ??BAddress@PIPSocket@@QBE?AVPString@@XZ @1024 NONAME ??BAddress@PIPSocket@@QBEKXZ @1025 NONAME ??BAddress@PIPXSocket@@QBE?AVPString@@XZ @1026 NONAME ??BCMC_message_reference_ptr@@QAEPAUCMC_counted_string@@XZ @1027 NONAME ??BPAtomicInteger@@QBEJXZ @5842 NONAME ??BPOrdinalKey@@QBEHXZ @1028 NONAME ??BPsockaddr@@QBEPAUsockaddr@@XZ @3874 NONAME ??BPString@@QBEPBEXZ @1029 NONAME ??BPWaveFormat@@QBEPAUtWAVEFORMATEX@@XZ @1030 NONAME ??BPWin32OidBuffer@@QAEKXZ @1031 NONAME ??BPWin32OidBuffer@@QAEPAXXZ @1032 NONAME ??BP_fd_set@@QBEPAUfd_set@@XZ @1033 NONAME ??BP_timeval@@QAEPAUtimeval@@XZ @1034 NONAME ??BSecurityID@@QBEPAXXZ @1035 NONAME ??Bsentry@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_NXZ @5578 NONAME ??Bsentry@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_NXZ @5579 NONAME ??Bsentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QBE_NXZ @5580 NONAME ??Bsentry@?$basic_ostream@GU?$char_traits@G@std@@@std@@QBE_NXZ @5581 NONAME ??Cconst_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBEPBUSlice@PChannel@@XZ @16295 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEPBU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6836 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @7215 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @6837 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6838 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @7216 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @7217 NONAME ??Cconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPBU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @7218 NONAME ??Citerator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEPAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @6305 NONAME ??CPsockaddr@@QBEPAUsockaddr@@XZ @3875 NONAME ??CPVideoDeviceBitmap@@QBEPAUtagBITMAPINFO@@XZ @1036 NONAME ??CPWaveFormat@@QBEPAUtWAVEFORMATEX@@XZ @1037 NONAME ??Dconst_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEABQAVPPluginModuleManager@@XZ @6710 NONAME ??Dconst_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBEABUSlice@PChannel@@XZ @16296 NONAME ??Dconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEABVPString@@XZ @6306 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6839 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @6307 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @7219 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@XZ @6840 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6841 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @7220 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @7221 NONAME ??Dconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @7222 NONAME ??Diterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEAAPAVPPluginModuleManager@@XZ @6711 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@XZ @6842 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@XZ @6310 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@XZ @7223 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@XZ @6843 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@XZ @7224 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@XZ @7225 NONAME ??Diterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@XZ @7226 NONAME ??DPTimeInterval@@QBE?AV0@H@Z @1039 NONAME ??Econst_iterator@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QAEAAV012@XZ @16297 NONAME ??Econst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEAAV012@XZ @6312 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6844 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6313 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7227 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6845 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6846 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7228 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7229 NONAME ??Econst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7230 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AV012@H@Z @6847 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6848 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AV012@H@Z @6316 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6317 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @7231 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7232 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6849 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6850 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @6851 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6852 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @7233 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7234 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @7235 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7236 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AV012@H@Z @7237 NONAME ??Eiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7238 NONAME ??EPAtomicInteger@@QAEJXZ @5843 NONAME ??EPIntCondMutex@@QAEAAV0@XZ @1040 NONAME ??EPOrdinalKey@@QAEHH@Z @1041 NONAME ??EPOrdinalKey@@QAEHXZ @1042 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6853 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6322 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7239 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6854 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7240 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7241 NONAME ??Fconst_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7242 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEAAV012@XZ @6855 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEAAV012@XZ @6324 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7243 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @6856 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7244 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7245 NONAME ??Fiterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEAAV012@XZ @7246 NONAME ??FPAtomicInteger@@QAEJXZ @5844 NONAME ??FPIntCondMutex@@QAEAAV0@XZ @1043 NONAME ??FPOrdinalKey@@QAEHH@Z @1044 NONAME ??FPOrdinalKey@@QAEHXZ @1045 NONAME ??Gconst_iterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEHABV012@@Z @6326 NONAME ??Gconst_iterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEHABV012@@Z @6327 NONAME ??Giterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEHABVconst_iterator@12@@Z @6328 NONAME ??Giterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEHABVconst_iterator@12@@Z @6329 NONAME ??GPTime@@QBE?AV0@ABVPTimeInterval@@@Z @1046 NONAME ??GPTime@@QBE?AVPTimeInterval@@ABV0@@Z @1047 NONAME ??GPTimeInterval@@QBE?AV0@ABV0@@Z @1048 NONAME ??GPTimeInterval@@QBE?AV0@XZ @1049 NONAME ??H@YA?AVPString@@DABV0@@Z @1050 NONAME ??H@YA?AVPString@@PBDABV0@@Z @1051 NONAME ??Hiterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBE?AV012@H@Z @6330 NONAME ??Hiterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE?AV012@H@Z @6331 NONAME ??HPString@@QBE?AV0@ABV0@@Z @1052 NONAME ??HPString@@QBE?AV0@D@Z @1053 NONAME ??HPString@@QBE?AV0@PBD@Z @1054 NONAME ??HPStringArray@@QAE?AV0@ABV0@@Z @1055 NONAME ??HPStringArray@@QAE?AV0@ABVPString@@@Z @1056 NONAME ??HPStringList@@QAE?AV0@ABV0@@Z @1057 NONAME ??HPStringList@@QAE?AV0@ABVPString@@@Z @1058 NONAME ??HPTime@@QBE?AV0@ABVPTimeInterval@@@Z @1059 NONAME ??HPTimeInterval@@QBE?AV0@ABV0@@Z @1060 NONAME ??I@YA?AVPString@@DABV0@@Z @1061 NONAME ??I@YA?AVPString@@PBDABV0@@Z @1062 NONAME ??IPString@@QBE?AV0@ABV0@@Z @1063 NONAME ??IPString@@QBE?AV0@D@Z @1064 NONAME ??IPString@@QBE?AV0@PBD@Z @1065 NONAME ??KPTimeInterval@@QBE?AV0@H@Z @1066 NONAME ??MPObject@@QBE_NABV0@@Z @5916 NONAME ??MPString@@QBE_NABVPObject@@@Z @5917 NONAME ??MPString@@QBE_NPBD@Z @5918 NONAME ??MPTimeInterval@@QBE_NABV0@@Z @5919 NONAME ??MPTimeInterval@@QBE_NJ@Z @5920 NONAME ??NPObject@@QBE_NABV0@@Z @5921 NONAME ??NPString@@QBE_NABVPObject@@@Z @5922 NONAME ??NPString@@QBE_NPBD@Z @5923 NONAME ??NPTimeInterval@@QBE_NABV0@@Z @5924 NONAME ??NPTimeInterval@@QBE_NJ@Z @5925 NONAME ??OPObject@@QBE_NABV0@@Z @5926 NONAME ??OPString@@QBE_NABVPObject@@@Z @5927 NONAME ??OPString@@QBE_NPBD@Z @5928 NONAME ??OPTimeInterval@@QBE_NABV0@@Z @5929 NONAME ??OPTimeInterval@@QBE_NJ@Z @5930 NONAME ??PPObject@@QBE_NABV0@@Z @5931 NONAME ??PPString@@QBE_NABVPObject@@@Z @5932 NONAME ??PPString@@QBE_NPBD@Z @5933 NONAME ??PPTimeInterval@@QBE_NABV0@@Z @5934 NONAME ??PPTimeInterval@@QBE_NJ@Z @5935 NONAME ??R?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@std@@QBE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@0@Z @6857 NONAME ??R?$less@VPString@@@std@@QBE_NABVPString@@0@Z @6332 NONAME ??RPNotifier@@UBEXAAVPObject@@H@Z @1087 NONAME ??RPString@@QBE?AV0@HH@Z @1088 NONAME ??XAddress@PIPSocket@@QBE_NABV01@@Z @7662 NONAME ??XPString@@QBE_NABV0@@Z @5936 NONAME ??XPString@@QBE_NPBD@Z @5937 NONAME ??XPTimeInterval@@QAEAAV0@H@Z @1091 NONAME ??XPWin32AsnOid@@QAE_NABV0@@Z @1092 NONAME ??Yiterator@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEAAV012@H@Z @6333 NONAME ??Yiterator@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEAAV012@H@Z @6334 NONAME ??YPFilePath@@QAEAAV0@ABVPString@@@Z @1093 NONAME ??YPFilePath@@QAEAAV0@PBD@Z @1094 NONAME ??YPIntCondMutex@@QAEAAV0@H@Z @1095 NONAME ??YPOrdinalKey@@QAEAAV0@H@Z @1096 NONAME ??YPString@@QAEAAV0@ABV0@@Z @1097 NONAME ??YPString@@QAEAAV0@D@Z @1098 NONAME ??YPString@@QAEAAV0@PBD@Z @1099 NONAME ??YPStringArray@@QAEAAV0@ABV0@@Z @1100 NONAME ??YPStringArray@@QAEAAV0@ABVPString@@@Z @1101 NONAME ??YPStringList@@QAEAAV0@ABV0@@Z @1102 NONAME ??YPStringList@@QAEAAV0@ABVPString@@@Z @1103 NONAME ??YPStringSet@@QAEAAV0@ABVPString@@@Z @1104 NONAME ??YPTime@@QAEAAV0@ABVPTimeInterval@@@Z @1105 NONAME ??YPTimeInterval@@QAEAAV0@ABV0@@Z @1106 NONAME ??YP_fd_set@@QAEAAV0@I@Z @1107 NONAME ??YSelectList@PSocket@@QAEXAAV1@@Z @5998 NONAME ??ZPIntCondMutex@@QAEAAV0@H@Z @1108 NONAME ??ZPOrdinalKey@@QAEAAV0@H@Z @1109 NONAME ??ZPStringSet@@QAEAAV0@ABVPString@@@Z @1110 NONAME ??ZPTime@@QAEAAV0@ABVPTimeInterval@@@Z @1111 NONAME ??ZPTimeInterval@@QAEAAV0@ABV0@@Z @1112 NONAME ??ZP_fd_set@@QAEAAV0@I@Z @1113 NONAME ??_0PTimeInterval@@QAEAAV0@H@Z @1114 NONAME ??_4PString@@QAEAAV0@ABV0@@Z @1115 NONAME ??_4PString@@QAEAAV0@D@Z @1116 NONAME ??_4PString@@QAEAAV0@PBD@Z @1117 NONAME ??_7?$PArray@VPString@@@@6B@ @1118 NONAME ??_7?$PArray@VPWaveBuffer@@@@6B@ @1119 NONAME ??_7?$PArray@VPWin32PacketBuffer@@@@6B@ @1120 NONAME ??_7?$PBaseArray@D@@6B@ @1121 NONAME ??_7?$PBaseArray@E@@6B@ @1122 NONAME ??_7?$PBaseArray@F@@6B@ @1123 NONAME ??_7?$PBaseArray@G@@6B@ @1124 NONAME ??_7?$PBaseArray@H@@6B@ @1125 NONAME ??_7?$PBaseArray@I@@6B@ @1126 NONAME ??_7?$PBaseArray@J@@6B@ @1127 NONAME ??_7?$PBaseArray@K@@6B@ @1128 NONAME ??_7?$PBaseArray@PAVElement@PHashTable@@@@6B@ @1129 NONAME ??_7?$PBaseArray@PAVPObject@@@@6B@ @1130 NONAME ??_7?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @7247 NONAME ??_7?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @7248 NONAME ??_7?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @7249 NONAME ??_7?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @1131 NONAME ??_7?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @1132 NONAME ??_7?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @1133 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @5946 NONAME ??_7?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @1134 NONAME ??_7?$PDictionary@VPString@@VPDynaLink@@@@6B@ @5867 NONAME ??_7?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7250 NONAME ??_7?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @6858 NONAME ??_7?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6859 NONAME ??_7?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7251 NONAME ??_7?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7252 NONAME ??_7?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7253 NONAME ??_7?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @7648 NONAME ??_7?$PList@VPDynaLink@@@@6B@ @3994 NONAME ??_7?$PList@VPNotifier@@@@6B@ @3995 NONAME ??_7?$PList@VPPluginService@@@@6B@ @3624 NONAME ??_7?$PList@VPSafeObject@@@@6B@ @7054 NONAME ??_7?$PList@VPSocket@@@@6B@ @1135 NONAME ??_7?$PList@VPString@@@@6B@ @1136 NONAME ??_7?$PList@VPThread@@@@6B@ @1137 NONAME ??_7?$PList@VPTimer@@@@6B@ @1138 NONAME ??_7?$POrdinalDictionary@VPString@@@@6B@ @1139 NONAME ??_7?$PScalarArray@F@@6B@ @1140 NONAME ??_7?$PScalarArray@G@@6B@ @1141 NONAME ??_7?$PScalarArray@H@@6B@ @1142 NONAME ??_7?$PScalarArray@I@@6B@ @1143 NONAME ??_7?$PScalarArray@J@@6B@ @1144 NONAME ??_7?$PScalarArray@K@@6B@ @1145 NONAME ??_7?$PSet@VPString@@@@6B@ @1146 NONAME ??_7?$PSortedList@VPString@@@@6B@ @1147 NONAME ??_7?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @16298 NONAME ??_7?$PStringDictionary@VPOrdinalKey@@@@6B@ @1148 NONAME ??_7?$PStringDictionary@VPString@@@@6B@ @1149 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @16299 NONAME ??_7?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @16300 NONAME ??_7?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @16301 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7254 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7255 NONAME ??_7?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7256 NONAME ??_7?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6860 NONAME ??_7?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6861 NONAME ??_7Address@PIPSocket@@6B@ @1150 NONAME ??_7Buffer@PDebugStream@@6B@ @1151 NONAME ??_7Buffer@PStringStream@@6B@ @1152 NONAME ??_7Buffer@PSystemLog@@6B@ @1153 NONAME ??_7CMCDLL@PMail@@6B@ @1154 NONAME ??_7DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @1155 NONAME ??_7HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @16302 NONAME ??_7HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @16303 NONAME ??_7HouseKeepingThread@PProcess@@6B@ @1156 NONAME ??_7InterfaceEntry@PIPSocket@@6B@ @1157 NONAME ??_7length_error@std@@6B@ @6075 NONAME ??_7logic_error@std@@6B@ @6076 NONAME ??_7MAPIDLL@PMail@@6B@ @1158 NONAME ??_7Nest@PReadWriteMutex@@6B@ @1159 NONAME ??_7NT_ServiceManager@@6B@ @1160 NONAME ??_7ostrstream@std@@6B@ @5582 NONAME ??_7out_of_range@std@@6B@ @6077 NONAME ??_7PAbstractArray@@6B@ @1161 NONAME ??_7PAbstractDictionary@@6B@ @1162 NONAME ??_7PAbstractList@@6B@ @1163 NONAME ??_7PAbstractSet@@6B@ @1164 NONAME ??_7PAbstractSortedList@@6B@ @1165 NONAME ??_7PArgList@@6B@ @1166 NONAME ??_7PArrayObjects@@6B@ @1167 NONAME ??_7PBitArray@@6B@ @1168 NONAME ??_7PBYTEArray@@6B@ @1169 NONAME ??_7PCaselessString@@6B@ @1170 NONAME ??_7PChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5583 NONAME ??_7PChannel@@6BPObject@@@ @1172 NONAME ??_7PChannelStreamBuffer@@6B@ @1173 NONAME ??_7PCharArray@@6B@ @1174 NONAME ??_7PCollection@@6B@ @1175 NONAME ??_7PColourConverter@@6B@ @1176 NONAME ??_7PColourConverterRegistration@@6B@ @1177 NONAME ??_7PCondMutex@@6B@ @1178 NONAME ??_7PConfig@@6B@ @1179 NONAME ??_7PConfigArgs@@6B@ @1180 NONAME ??_7PConsoleChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5584 NONAME ??_7PConsoleChannel@@6BPObject@@@ @1182 NONAME ??_7PContainer@@6B@ @1183 NONAME ??_7PCriticalSection@@6B@ @5845 NONAME ??_7PDebugStream@@6B@ @1184 NONAME ??_7PDevicePluginAdapterBase@@6B@ @7257 NONAME ??_7PDevicePluginServiceDescriptor@@6B@ @16304 NONAME ??_7PDirectory@@6B@ @1185 NONAME ??_7PDynaLink@@6B@ @1186 NONAME ??_7PEthSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5585 NONAME ??_7PEthSocket@@6BPObject@@@ @1188 NONAME ??_7PFactoryBase@@6B@ @6862 NONAME ??_7PFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5586 NONAME ??_7PFile@@6BPObject@@@ @1191 NONAME ??_7PFileInfo@@6B@ @1192 NONAME ??_7PFilePath@@6B@ @1193 NONAME ??_7PHashTable@@6B@ @1194 NONAME ??_7PHostByAddr@@6B@ @1195 NONAME ??_7PHostByName@@6B@ @1196 NONAME ??_7PICMPDLL@@6B@ @1197 NONAME ??_7PICMPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5587 NONAME ??_7PICMPSocket@@6BPObject@@@ @1199 NONAME ??_7PImageDLL@@6B@ @1200 NONAME ??_7PIndirectChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5588 NONAME ??_7PIndirectChannel@@6BPObject@@@ @1202 NONAME ??_7PIntCondMutex@@6B@ @1203 NONAME ??_7PIPCacheData@@6B@ @1204 NONAME ??_7PIPCacheKey@@6B@ @1205 NONAME ??_7PIPDatagramSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5589 NONAME ??_7PIPDatagramSocket@@6BPObject@@@ @1207 NONAME ??_7PIPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5590 NONAME ??_7PIPSocket@@6BPObject@@@ @1209 NONAME ??_7PIPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5591 NONAME ??_7PIPXSocket@@6BPObject@@@ @1211 NONAME ??_7PluginLoaderStartup@@6B@ @6335 NONAME ??_7PMail@@6B@ @1212 NONAME ??_7PNotifier@@6B@ @1214 NONAME ??_7PNotifierFunction@@6B@ @1215 NONAME ??_7PObject@@6B@ @1216 NONAME ??_7POrdinalKey@@6B@ @1217 NONAME ??_7POrdinalToString@@6B@ @1218 NONAME ??_7PPipeChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5592 NONAME ??_7PPipeChannel@@6BPObject@@@ @1220 NONAME ??_7PPluginManager@@6B@ @3626 NONAME ??_7PPluginModuleManager@@6B@ @5869 NONAME ??_7PPluginService@@6B@ @3627 NONAME ??_7PPluginServiceDescriptor@@6B@ @16305 NONAME ??_7PPointer@@6B@ @5947 NONAME ??_7PProcess@@6B@ @1221 NONAME ??_7PProcessStartup@@6B@ @6336 NONAME ??_7PQoS@@6B@ @3542 NONAME ??_7PRASDLL@@6B@ @1222 NONAME ??_7PReadWriteMutex@@6B@ @1223 NONAME ??_7PRegularExpression@@6B@ @1224 NONAME ??_7PRemoteConnection@@6B@ @1225 NONAME ??_7PSafeCollection@@6B@ @1226 NONAME ??_7PSafeObject@@6B@ @1227 NONAME ??_7PSafePtrBase@@6B@ @1228 NONAME ??_7PSemaphore@@6B@ @1229 NONAME ??_7PSerialChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5593 NONAME ??_7PSerialChannel@@6BPObject@@@ @1231 NONAME ??_7PServiceProcess@@6B@ @1232 NONAME ??_7PSimpleThread@@6B@ @1233 NONAME ??_7PSmartObject@@6B@ @1234 NONAME ??_7PSmartPointer@@6B@ @1235 NONAME ??_7PSmartPtrInspector@@6B@ @5948 NONAME ??_7PSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5594 NONAME ??_7PSocket@@6BPObject@@@ @1237 NONAME ??_7PSortedStringList@@6B@ @1238 NONAME ??_7PSound@@6B@ @1239 NONAME ??_7PSoundChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5595 NONAME ??_7PSoundChannel@@6BPObject@@@ @1241 NONAME ??_7PSoundChannelWin32@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5596 NONAME ??_7PSoundChannelWin32@@6BPObject@@@ @3629 NONAME ??_7PSPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5597 NONAME ??_7PSPXSocket@@6BPObject@@@ @1243 NONAME ??_7PStandardColourConverter@@6B@ @1244 NONAME ??_7PString@@6B@ @1245 NONAME ??_7PStringArray@@6B@ @1246 NONAME ??_7PStringList@@6B@ @1247 NONAME ??_7PStringSet@@6B@ @1248 NONAME ??_7PStringStream@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5598 NONAME ??_7PStringStream@@6BPString@@@ @1250 NONAME ??_7PStringToOrdinal@@6B@ @1251 NONAME ??_7PStringToString@@6B@ @1252 NONAME ??_7PStructuredFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5599 NONAME ??_7PStructuredFile@@6BPObject@@@ @1254 NONAME ??_7PSync@@6B@ @16575 NONAME ??_7PSyncPoint@@6B@ @1255 NONAME ??_7PSynonymColour@@6B@ @1256 NONAME ??_7PSynonymColourRegistration@@6B@ @1257 NONAME ??_7PSystemLog@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5600 NONAME ??_7PSystemLog@@6BPObject@@@ @1259 NONAME ??_7PTCPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5601 NONAME ??_7PTCPSocket@@6BPObject@@@ @1261 NONAME ??_7PTextFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5602 NONAME ??_7PTextFile@@6BPObject@@@ @1263 NONAME ??_7PThread@@6B@ @1264 NONAME ??_7PTime@@6B@ @1265 NONAME ??_7PTimedMutex@@6B@ @16576 NONAME ??_7PTimeInterval@@6B@ @1266 NONAME ??_7PTimer@@6B@ @1267 NONAME ??_7PTimerList@@6B@ @1268 NONAME ??_7PUDPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5603 NONAME ??_7PUDPSocket@@6BPObject@@@ @1270 NONAME ??_7PVideoChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5604 NONAME ??_7PVideoChannel@@6BPObject@@@ @1272 NONAME ??_7PVideoDevice@@6B@ @1273 NONAME ??_7PVideoDeviceBitmap@@6B@ @1274 NONAME ??_7PVideoInputDevice@@6B@ @1275 NONAME ??_7PVideoInputDevice_FakeVideo@@6B@ @3784 NONAME ??_7PVideoInputDevice_VideoForWindows@@6B@ @3630 NONAME ??_7PVideoOutputDevice@@6B@ @1277 NONAME ??_7PVideoOutputDeviceRGB@@6B@ @16306 NONAME ??_7PVideoOutputDevice_NULLOutput@@6B@ @3785 NONAME ??_7PVideoOutputDevice_Window@@6B@ @16307 NONAME ??_7PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @16308 NONAME ??_7PWaveBuffer@@6B@ @1281 NONAME ??_7PWaveFormat@@6B@ @1282 NONAME ??_7PWin32PacketBuffer@@6B@ @1283 NONAME ??_7PWin32PacketDriver@@6B@ @1284 NONAME ??_7PWin32PacketSYS@@6B@ @1285 NONAME ??_7PWin32PacketVxD@@6B@ @1286 NONAME ??_7PWin32SnmpLibrary@@6B@ @1287 NONAME ??_7PWinQoS@@6B@ @3876 NONAME ??_7PWinSock@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5605 NONAME ??_7PWinSock@@6BPObject@@@ @1289 NONAME ??_7P_BGR24_RGB24@@6B@ @16309 NONAME ??_7P_BGR24_RGB24_Registration@@6B@ @16310 NONAME ??_7P_BGR24_RGB32@@6B@ @16311 NONAME ??_7P_BGR24_RGB32_Registration@@6B@ @16312 NONAME ??_7P_BGR24_YUV420P@@6B@ @3786 NONAME ??_7P_BGR24_YUV420P_Registration@@6B@ @3787 NONAME ??_7P_BGR32_RGB24@@6B@ @16313 NONAME ??_7P_BGR32_RGB24_Registration@@6B@ @16314 NONAME ??_7P_BGR32_RGB32@@6B@ @16315 NONAME ??_7P_BGR32_RGB32_Registration@@6B@ @16316 NONAME ??_7P_BGR32_YUV420P@@6B@ @3788 NONAME ??_7P_BGR32_YUV420P_Registration@@6B@ @3789 NONAME ??_7P_Grey_YUV420P@@6B@ @1292 NONAME ??_7P_Grey_YUV420P_Registration@@6B@ @1293 NONAME ??_7P_RGB24_BGR24@@6B@ @16317 NONAME ??_7P_RGB24_BGR24_Registration@@6B@ @16318 NONAME ??_7P_RGB24_BGR32@@6B@ @16319 NONAME ??_7P_RGB24_BGR32_Registration@@6B@ @16320 NONAME ??_7P_RGB24_RGB32@@6B@ @1296 NONAME ??_7P_RGB24_RGB32_Registration@@6B@ @1297 NONAME ??_7P_RGB24_YUV420P@@6B@ @1298 NONAME ??_7P_RGB24_YUV420P_Registration@@6B@ @1299 NONAME ??_7P_RGB32_BGR24@@6B@ @16321 NONAME ??_7P_RGB32_BGR24_Registration@@6B@ @16322 NONAME ??_7P_RGB32_BGR32@@6B@ @16323 NONAME ??_7P_RGB32_BGR32_Registration@@6B@ @16324 NONAME ??_7P_RGB32_RGB24@@6B@ @1302 NONAME ??_7P_RGB32_RGB24_Registration@@6B@ @1303 NONAME ??_7P_RGB32_YUV420P@@6B@ @1304 NONAME ??_7P_RGB32_YUV420P_Registration@@6B@ @1305 NONAME ??_7P_SBGGR8_RGB24@@6B@ @7593 NONAME ??_7P_SBGGR8_RGB24_Registration@@6B@ @7594 NONAME ??_7P_SBGGR8_YUV420P@@6B@ @7623 NONAME ??_7P_SBGGR8_YUV420P_Registration@@6B@ @7624 NONAME ??_7P_UYV444_YUV420P@@6B@ @1306 NONAME ??_7P_UYV444_YUV420P_Registration@@6B@ @1307 NONAME ??_7P_UYVY422_YUV420P@@6B@ @1308 NONAME ??_7P_UYVY422_YUV420P_Registration@@6B@ @1309 NONAME ??_7P_YUV411P_YUV420P@@6B@ @1310 NONAME ??_7P_YUV411P_YUV420P_Registration@@6B@ @1311 NONAME ??_7P_YUV420P_BGR24@@6B@ @1312 NONAME ??_7P_YUV420P_BGR24_Registration@@6B@ @1315 NONAME ??_7P_YUV420P_BGR32@@6B@ @3790 NONAME ??_7P_YUV420P_BGR32_Registration@@6B@ @3791 NONAME ??_7P_YUV420P_RGB24@@6B@ @1316 NONAME ??_7P_YUV420P_RGB24_Registration@@6B@ @1319 NONAME ??_7P_YUV420P_RGB32@@6B@ @1320 NONAME ??_7P_YUV420P_RGB32_Registration@@6B@ @1323 NONAME ??_7P_YUV420P_YUV411P@@6B@ @1324 NONAME ??_7P_YUV420P_YUV411P_Registration@@6B@ @1325 NONAME ??_7P_YUV422_YUV420P@@6B@ @1326 NONAME ??_7P_YUV422_YUV420P_Registration@@6B@ @1327 NONAME ??_7P_YUV422_YUV422@@6B@ @1328 NONAME ??_7P_YUV422_YUV422_Registration@@6B@ @1329 NONAME ??_7RouteEntry@PIPSocket@@6B@ @1330 NONAME ??_7SelectList@PSocket@@6B@ @1331 NONAME ??_7ServiceManager@@6B@ @1332 NONAME ??_7strstreambuf@std@@6B@ @5606 NONAME ??_7Table@PHashTable@@6B@ @1333 NONAME ??_7Win95_ServiceManager@@6B@ @1334 NONAME ??_7WinSNMPLoader@@6B@ @6712 NONAME ??_7Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @7258 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @7259 NONAME ??_7Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7260 NONAME ??_7WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7261 NONAME ??_7WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6863 NONAME ??_7WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7262 NONAME ??_7WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7263 NONAME ??_7WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7264 NONAME ??_8ostrstream@std@@7B@ @5607 NONAME ??_8PChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5608 NONAME ??_8PChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5609 NONAME ??_8PConsoleChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5610 NONAME ??_8PConsoleChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5611 NONAME ??_8PDebugStream@@7B@ @1339 NONAME ??_8PEthSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5612 NONAME ??_8PEthSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5613 NONAME ??_8PFile@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5614 NONAME ??_8PFile@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5615 NONAME ??_8PICMPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5616 NONAME ??_8PICMPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5617 NONAME ??_8PIndirectChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5618 NONAME ??_8PIndirectChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5619 NONAME ??_8PIPDatagramSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5620 NONAME ??_8PIPDatagramSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5621 NONAME ??_8PIPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5622 NONAME ??_8PIPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5623 NONAME ??_8PIPXSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5624 NONAME ??_8PIPXSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5625 NONAME ??_8PPipeChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5626 NONAME ??_8PPipeChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5627 NONAME ??_8PSerialChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5628 NONAME ??_8PSerialChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5629 NONAME ??_8PSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5630 NONAME ??_8PSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5631 NONAME ??_8PSoundChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5632 NONAME ??_8PSoundChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5633 NONAME ??_8PSoundChannelWin32@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5634 NONAME ??_8PSoundChannelWin32@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5635 NONAME ??_8PSPXSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5636 NONAME ??_8PSPXSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5637 NONAME ??_8PStringStream@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5638 NONAME ??_8PStringStream@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5639 NONAME ??_8PStructuredFile@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5640 NONAME ??_8PStructuredFile@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5641 NONAME ??_8PSystemLog@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5642 NONAME ??_8PSystemLog@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5643 NONAME ??_8PTCPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5644 NONAME ??_8PTCPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5645 NONAME ??_8PTextFile@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5646 NONAME ??_8PTextFile@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5647 NONAME ??_8PUDPSocket@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5648 NONAME ??_8PUDPSocket@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5649 NONAME ??_8PVideoChannel@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5650 NONAME ??_8PVideoChannel@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5651 NONAME ??_8PWinSock@@7B?$basic_istream@DU?$char_traits@D@std@@@std@@@ @5652 NONAME ??_8PWinSock@@7B?$basic_ostream@DU?$char_traits@D@std@@@std@@@ @5653 NONAME ??_B?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@51 @7265 NONAME ??_B?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@51 @7266 NONAME ??_B?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@51 @7267 NONAME ??_B?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@51 @7268 NONAME ??_B?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@51 @16325 NONAME ??_Dostrstream@std@@QAEXXZ @5654 NONAME ??_DPChannel@@QAEXXZ @1380 NONAME ??_DPConsoleChannel@@QAEXXZ @1381 NONAME ??_DPDebugStream@@QAEXXZ @1382 NONAME ??_DPEthSocket@@QAEXXZ @1383 NONAME ??_DPFile@@QAEXXZ @1384 NONAME ??_DPICMPSocket@@QAEXXZ @1385 NONAME ??_DPIndirectChannel@@QAEXXZ @1386 NONAME ??_DPIPDatagramSocket@@QAEXXZ @1387 NONAME ??_DPIPSocket@@QAEXXZ @1388 NONAME ??_DPIPXSocket@@QAEXXZ @1389 NONAME ??_DPPipeChannel@@QAEXXZ @1390 NONAME ??_DPSerialChannel@@QAEXXZ @1391 NONAME ??_DPSocket@@QAEXXZ @1392 NONAME ??_DPSoundChannel@@QAEXXZ @1393 NONAME ??_DPSoundChannelWin32@@QAEXXZ @3633 NONAME ??_DPSPXSocket@@QAEXXZ @1394 NONAME ??_DPStringStream@@QAEXXZ @1395 NONAME ??_DPStructuredFile@@QAEXXZ @1396 NONAME ??_DPSystemLog@@QAEXXZ @1397 NONAME ??_DPTCPSocket@@QAEXXZ @1398 NONAME ??_DPTextFile@@QAEXXZ @1399 NONAME ??_DPUDPSocket@@QAEXXZ @1400 NONAME ??_DPVideoChannel@@QAEXXZ @1401 NONAME ??_DPWinSock@@QAEXXZ @1402 NONAME ??_R0?AV?$basic_ios@DU?$char_traits@D@std@@@std@@@8 @5655 NONAME ??_R0?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@@8 @5656 NONAME ??_R0?AV?$basic_istream@DU?$char_traits@D@std@@@std@@@8 @5657 NONAME ??_R0?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@@8 @5658 NONAME ??_R0?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@@8 @5659 NONAME ??_R0?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@@8 @5660 NONAME ??_R0?AV?$PArray@VPString@@@@@8 @4011 NONAME ??_R0?AV?$PArray@VPWaveBuffer@@@@@8 @4012 NONAME ??_R0?AV?$PArray@VPWin32PacketBuffer@@@@@8 @4013 NONAME ??_R0?AV?$PBaseArray@D@@@8 @4014 NONAME ??_R0?AV?$PBaseArray@E@@@8 @4015 NONAME ??_R0?AV?$PBaseArray@F@@@8 @4016 NONAME ??_R0?AV?$PBaseArray@G@@@8 @4017 NONAME ??_R0?AV?$PBaseArray@H@@@8 @4018 NONAME ??_R0?AV?$PBaseArray@I@@@8 @4019 NONAME ??_R0?AV?$PBaseArray@J@@@8 @4020 NONAME ??_R0?AV?$PBaseArray@K@@@8 @4021 NONAME ??_R0?AV?$PBaseArray@PAVElement@PHashTable@@@@@8 @4022 NONAME ??_R0?AV?$PBaseArray@PAVPObject@@@@@8 @4023 NONAME ??_R0?AV?$PDevicePluginAdapter@VPSoundChannel@@@@@8 @7269 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoInputDevice@@@@@8 @7270 NONAME ??_R0?AV?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@8 @7271 NONAME ??_R0?AV?$PDictionary@VPCaselessString@@VPIPCacheData@@@@@8 @4024 NONAME ??_R0?AV?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@@8 @4025 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@@8 @4026 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPPointer@@@@@8 @5949 NONAME ??_R0?AV?$PDictionary@VPOrdinalKey@@VPThread@@@@@8 @4027 NONAME ??_R0?AV?$PDictionary@VPString@@VPDynaLink@@@@@8 @5870 NONAME ??_R0?AV?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @7272 NONAME ??_R0?AV?$PFactory@VPPluginModuleManager@@VPString@@@@@8 @6864 NONAME ??_R0?AV?$PFactory@VPProcessStartup@@VPString@@@@@8 @6865 NONAME ??_R0?AV?$PFactory@VPSoundChannel@@VPString@@@@@8 @7273 NONAME ??_R0?AV?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @7274 NONAME ??_R0?AV?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @7275 NONAME ??_R0?AV?$PList@VInterfaceEntry@PIPSocket@@@@@8 @7649 NONAME ??_R0?AV?$PList@VPDynaLink@@@@@8 @4028 NONAME ??_R0?AV?$PList@VPNotifier@@@@@8 @4029 NONAME ??_R0?AV?$PList@VPPluginService@@@@@8 @4030 NONAME ??_R0?AV?$PList@VPSafeObject@@@@@8 @7055 NONAME ??_R0?AV?$PList@VPSocket@@@@@8 @4031 NONAME ??_R0?AV?$PList@VPString@@@@@8 @4032 NONAME ??_R0?AV?$PList@VPThread@@@@@8 @4033 NONAME ??_R0?AV?$PList@VPTimer@@@@@8 @4034 NONAME ??_R0?AV?$POrdinalDictionary@VPString@@@@@8 @4035 NONAME ??_R0?AV?$PScalarArray@F@@@8 @4036 NONAME ??_R0?AV?$PScalarArray@G@@@8 @4037 NONAME ??_R0?AV?$PScalarArray@H@@@8 @4038 NONAME ??_R0?AV?$PScalarArray@I@@@8 @4039 NONAME ??_R0?AV?$PScalarArray@J@@@8 @4040 NONAME ??_R0?AV?$PScalarArray@K@@@8 @4041 NONAME ??_R0?AV?$PSet@VPString@@@@@8 @4042 NONAME ??_R0?AV?$PSortedList@VPString@@@@@8 @4043 NONAME ??_R0?AV?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@@8 @16326 NONAME ??_R0?AV?$PStringDictionary@VPOrdinalKey@@@@@8 @4044 NONAME ??_R0?AV?$PStringDictionary@VPString@@@@@8 @4045 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@@8 @16327 NONAME ??_R0?AV?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@@8 @16328 NONAME ??_R0?AV?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@@8 @16329 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @7276 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @7277 NONAME ??_R0?AV?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @7278 NONAME ??_R0?AV?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6866 NONAME ??_R0?AV?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6867 NONAME ??_R0?AV?$_Iosb@H@std@@@8 @5661 NONAME ??_R0?AVAddress@PIPSocket@@@8 @4046 NONAME ??_R0?AVbad_cast@@@8 @5662 NONAME ??_R0?AVBuffer@PDebugStream@@@8 @4047 NONAME ??_R0?AVBuffer@PStringStream@@@8 @4048 NONAME ??_R0?AVBuffer@PSystemLog@@@8 @4049 NONAME ??_R0?AVCMCDLL@PMail@@@8 @4050 NONAME ??_R0?AVDeleteObjectsTimeout_PNotifier@PSafeCollection@@@8 @4051 NONAME ??_R0?AVexception@@@8 @5663 NONAME ??_R0?AVHandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@@8 @16330 NONAME ??_R0?AVHandleDisplay_PNotifier@PVideoOutputDevice_Window@@@8 @16331 NONAME ??_R0?AVHouseKeepingThread@PProcess@@@8 @4052 NONAME ??_R0?AVInterfaceEntry@PIPSocket@@@8 @4053 NONAME ??_R0?AVios_base@std@@@8 @5664 NONAME ??_R0?AVlength_error@std@@@8 @6078 NONAME ??_R0?AVlogic_error@std@@@8 @6079 NONAME ??_R0?AVMAPIDLL@PMail@@@8 @4057 NONAME ??_R0?AVNest@PReadWriteMutex@@@8 @4058 NONAME ??_R0?AVNT_ServiceManager@@@8 @4059 NONAME ??_R0?AVostrstream@std@@@8 @5665 NONAME ??_R0?AVout_of_range@std@@@8 @6080 NONAME ??_R0?AVPAbstractArray@@@8 @4062 NONAME ??_R0?AVPAbstractDictionary@@@8 @4063 NONAME ??_R0?AVPAbstractList@@@8 @4064 NONAME ??_R0?AVPAbstractSet@@@8 @4065 NONAME ??_R0?AVPAbstractSortedList@@@8 @4066 NONAME ??_R0?AVPArgList@@@8 @4067 NONAME ??_R0?AVPArrayObjects@@@8 @4068 NONAME ??_R0?AVPBitArray@@@8 @4069 NONAME ??_R0?AVPBYTEArray@@@8 @4070 NONAME ??_R0?AVPCaselessString@@@8 @4071 NONAME ??_R0?AVPChannel@@@8 @4072 NONAME ??_R0?AVPChannelStreamBuffer@@@8 @4073 NONAME ??_R0?AVPCharArray@@@8 @4074 NONAME ??_R0?AVPCollection@@@8 @4075 NONAME ??_R0?AVPColourConverter@@@8 @4076 NONAME ??_R0?AVPColourConverterRegistration@@@8 @4077 NONAME ??_R0?AVPCondMutex@@@8 @4078 NONAME ??_R0?AVPConfig@@@8 @4079 NONAME ??_R0?AVPConfigArgs@@@8 @4080 NONAME ??_R0?AVPConsoleChannel@@@8 @4081 NONAME ??_R0?AVPContainer@@@8 @4082 NONAME ??_R0?AVPCriticalSection@@@8 @5846 NONAME ??_R0?AVPDebugStream@@@8 @4083 NONAME ??_R0?AVPDevicePluginAdapterBase@@@8 @7279 NONAME ??_R0?AVPDevicePluginServiceDescriptor@@@8 @16332 NONAME ??_R0?AVPDirectory@@@8 @4084 NONAME ??_R0?AVPDynaLink@@@8 @4085 NONAME ??_R0?AVPEthSocket@@@8 @4086 NONAME ??_R0?AVPFactoryBase@@@8 @6868 NONAME ??_R0?AVPFile@@@8 @4087 NONAME ??_R0?AVPFileInfo@@@8 @4088 NONAME ??_R0?AVPFilePath@@@8 @4089 NONAME ??_R0?AVPHashTable@@@8 @4090 NONAME ??_R0?AVPHostByAddr@@@8 @4091 NONAME ??_R0?AVPHostByName@@@8 @4092 NONAME ??_R0?AVPICMPDLL@@@8 @4093 NONAME ??_R0?AVPICMPSocket@@@8 @4094 NONAME ??_R0?AVPImageDLL@@@8 @4095 NONAME ??_R0?AVPIndirectChannel@@@8 @4096 NONAME ??_R0?AVPIntCondMutex@@@8 @4097 NONAME ??_R0?AVPIPCacheData@@@8 @4098 NONAME ??_R0?AVPIPCacheKey@@@8 @4099 NONAME ??_R0?AVPIPDatagramSocket@@@8 @4100 NONAME ??_R0?AVPIPSocket@@@8 @4101 NONAME ??_R0?AVPIPXSocket@@@8 @4102 NONAME ??_R0?AVPluginLoaderStartup@@@8 @6337 NONAME ??_R0?AVPMail@@@8 @4103 NONAME ??_R0?AVPNotifier@@@8 @4105 NONAME ??_R0?AVPNotifierFunction@@@8 @4106 NONAME ??_R0?AVPObject@@@8 @4107 NONAME ??_R0?AVPOrdinalKey@@@8 @4108 NONAME ??_R0?AVPOrdinalToString@@@8 @4109 NONAME ??_R0?AVPPipeChannel@@@8 @4110 NONAME ??_R0?AVPPluginManager@@@8 @4111 NONAME ??_R0?AVPPluginModuleManager@@@8 @5872 NONAME ??_R0?AVPPluginService@@@8 @4112 NONAME ??_R0?AVPPluginServiceDescriptor@@@8 @16333 NONAME ??_R0?AVPPointer@@@8 @5950 NONAME ??_R0?AVPProcess@@@8 @4113 NONAME ??_R0?AVPProcessStartup@@@8 @6338 NONAME ??_R0?AVPQoS@@@8 @4114 NONAME ??_R0?AVPRASDLL@@@8 @4115 NONAME ??_R0?AVPReadWriteMutex@@@8 @4116 NONAME ??_R0?AVPRegularExpression@@@8 @4117 NONAME ??_R0?AVPRemoteConnection@@@8 @4118 NONAME ??_R0?AVPSafeCollection@@@8 @4119 NONAME ??_R0?AVPSafeObject@@@8 @4120 NONAME ??_R0?AVPSafePtrBase@@@8 @4121 NONAME ??_R0?AVPSemaphore@@@8 @4122 NONAME ??_R0?AVPSerialChannel@@@8 @4123 NONAME ??_R0?AVPServiceProcess@@@8 @4124 NONAME ??_R0?AVPSimpleThread@@@8 @4125 NONAME ??_R0?AVPSmartNotifierFunction@@@8 @5951 NONAME ??_R0?AVPSmartObject@@@8 @4126 NONAME ??_R0?AVPSmartPointer@@@8 @4127 NONAME ??_R0?AVPSmartPtrInspector@@@8 @5952 NONAME ??_R0?AVPSocket@@@8 @4128 NONAME ??_R0?AVPSortedStringList@@@8 @4129 NONAME ??_R0?AVPSound@@@8 @4130 NONAME ??_R0?AVPSoundChannel@@@8 @4131 NONAME ??_R0?AVPSoundChannelWin32@@@8 @4132 NONAME ??_R0?AVPSPXSocket@@@8 @4133 NONAME ??_R0?AVPStandardColourConverter@@@8 @4134 NONAME ??_R0?AVPString@@@8 @4135 NONAME ??_R0?AVPStringArray@@@8 @4136 NONAME ??_R0?AVPStringList@@@8 @4137 NONAME ??_R0?AVPStringSet@@@8 @4138 NONAME ??_R0?AVPStringStream@@@8 @4139 NONAME ??_R0?AVPStringToOrdinal@@@8 @4140 NONAME ??_R0?AVPStringToString@@@8 @4141 NONAME ??_R0?AVPStructuredFile@@@8 @4142 NONAME ??_R0?AVPSync@@@8 @16577 NONAME ??_R0?AVPSyncPoint@@@8 @4143 NONAME ??_R0?AVPSynonymColour@@@8 @4144 NONAME ??_R0?AVPSynonymColourRegistration@@@8 @4145 NONAME ??_R0?AVPSystemLog@@@8 @4146 NONAME ??_R0?AVPTCPSocket@@@8 @4147 NONAME ??_R0?AVPTextFile@@@8 @4148 NONAME ??_R0?AVPThread@@@8 @4149 NONAME ??_R0?AVPTime@@@8 @4150 NONAME ??_R0?AVPTimedMutex@@@8 @16578 NONAME ??_R0?AVPTimeInterval@@@8 @4151 NONAME ??_R0?AVPTimer@@@8 @4152 NONAME ??_R0?AVPTimerList@@@8 @4153 NONAME ??_R0?AVPUDPSocket@@@8 @4154 NONAME ??_R0?AVPVideoChannel@@@8 @4155 NONAME ??_R0?AVPVideoDevice@@@8 @4156 NONAME ??_R0?AVPVideoDeviceBitmap@@@8 @4157 NONAME ??_R0?AVPVideoInputDevice@@@8 @4158 NONAME ??_R0?AVPVideoInputDevice_FakeVideo@@@8 @4159 NONAME ??_R0?AVPVideoInputDevice_VideoForWindows@@@8 @4160 NONAME ??_R0?AVPVideoOutputDevice@@@8 @4162 NONAME ??_R0?AVPVideoOutputDeviceRGB@@@8 @16334 NONAME ??_R0?AVPVideoOutputDevice_NULLOutput@@@8 @4163 NONAME ??_R0?AVPVideoOutputDevice_Window@@@8 @16335 NONAME ??_R0?AVPVideoOutputDevice_Window_PluginServiceDescriptor@@@8 @16336 NONAME ??_R0?AVPWaveBuffer@@@8 @4164 NONAME ??_R0?AVPWaveFormat@@@8 @4165 NONAME ??_R0?AVPWin32PacketBuffer@@@8 @4166 NONAME ??_R0?AVPWin32PacketDriver@@@8 @4167 NONAME ??_R0?AVPWin32PacketSYS@@@8 @4168 NONAME ??_R0?AVPWin32PacketVxD@@@8 @4169 NONAME ??_R0?AVPWin32SnmpLibrary@@@8 @4170 NONAME ??_R0?AVPWinQoS@@@8 @4171 NONAME ??_R0?AVPWinSock@@@8 @4172 NONAME ??_R0?AVP_BGR24_RGB24@@@8 @16337 NONAME ??_R0?AVP_BGR24_RGB24_Registration@@@8 @16338 NONAME ??_R0?AVP_BGR24_RGB32@@@8 @16339 NONAME ??_R0?AVP_BGR24_RGB32_Registration@@@8 @16340 NONAME ??_R0?AVP_BGR24_YUV420P@@@8 @4173 NONAME ??_R0?AVP_BGR24_YUV420P_Registration@@@8 @4174 NONAME ??_R0?AVP_BGR32_RGB24@@@8 @16341 NONAME ??_R0?AVP_BGR32_RGB24_Registration@@@8 @16342 NONAME ??_R0?AVP_BGR32_RGB32@@@8 @16343 NONAME ??_R0?AVP_BGR32_RGB32_Registration@@@8 @16344 NONAME ??_R0?AVP_BGR32_YUV420P@@@8 @4175 NONAME ??_R0?AVP_BGR32_YUV420P_Registration@@@8 @4176 NONAME ??_R0?AVP_Grey_YUV420P@@@8 @4179 NONAME ??_R0?AVP_Grey_YUV420P_Registration@@@8 @4180 NONAME ??_R0?AVP_RGB24_BGR24@@@8 @16345 NONAME ??_R0?AVP_RGB24_BGR24_Registration@@@8 @16346 NONAME ??_R0?AVP_RGB24_BGR32@@@8 @16347 NONAME ??_R0?AVP_RGB24_BGR32_Registration@@@8 @16348 NONAME ??_R0?AVP_RGB24_RGB32@@@8 @4183 NONAME ??_R0?AVP_RGB24_RGB32_Registration@@@8 @4184 NONAME ??_R0?AVP_RGB24_YUV420P@@@8 @4185 NONAME ??_R0?AVP_RGB24_YUV420P_Registration@@@8 @4186 NONAME ??_R0?AVP_RGB32_BGR24@@@8 @16349 NONAME ??_R0?AVP_RGB32_BGR24_Registration@@@8 @16350 NONAME ??_R0?AVP_RGB32_BGR32@@@8 @16351 NONAME ??_R0?AVP_RGB32_BGR32_Registration@@@8 @16352 NONAME ??_R0?AVP_RGB32_RGB24@@@8 @4189 NONAME ??_R0?AVP_RGB32_RGB24_Registration@@@8 @4190 NONAME ??_R0?AVP_RGB32_YUV420P@@@8 @4191 NONAME ??_R0?AVP_RGB32_YUV420P_Registration@@@8 @4192 NONAME ??_R0?AVP_SBGGR8_RGB24@@@8 @7595 NONAME ??_R0?AVP_SBGGR8_RGB24_Registration@@@8 @7596 NONAME ??_R0?AVP_SBGGR8_YUV420P@@@8 @7625 NONAME ??_R0?AVP_SBGGR8_YUV420P_Registration@@@8 @7626 NONAME ??_R0?AVP_UYV444_YUV420P@@@8 @4193 NONAME ??_R0?AVP_UYV444_YUV420P_Registration@@@8 @4194 NONAME ??_R0?AVP_UYVY422_YUV420P@@@8 @4195 NONAME ??_R0?AVP_UYVY422_YUV420P_Registration@@@8 @4196 NONAME ??_R0?AVP_YUV411P_YUV420P@@@8 @4197 NONAME ??_R0?AVP_YUV411P_YUV420P_Registration@@@8 @4198 NONAME ??_R0?AVP_YUV420P_BGR24@@@8 @4199 NONAME ??_R0?AVP_YUV420P_BGR24_Registration@@@8 @4202 NONAME ??_R0?AVP_YUV420P_BGR32@@@8 @4203 NONAME ??_R0?AVP_YUV420P_BGR32_Registration@@@8 @4204 NONAME ??_R0?AVP_YUV420P_RGB24@@@8 @4205 NONAME ??_R0?AVP_YUV420P_RGB24_Registration@@@8 @4208 NONAME ??_R0?AVP_YUV420P_RGB32@@@8 @4209 NONAME ??_R0?AVP_YUV420P_RGB32_Registration@@@8 @4212 NONAME ??_R0?AVP_YUV420P_YUV411P@@@8 @4213 NONAME ??_R0?AVP_YUV420P_YUV411P_Registration@@@8 @4214 NONAME ??_R0?AVP_YUV422_YUV420P@@@8 @4215 NONAME ??_R0?AVP_YUV422_YUV420P_Registration@@@8 @4216 NONAME ??_R0?AVP_YUV422_YUV422@@@8 @4217 NONAME ??_R0?AVP_YUV422_YUV422_Registration@@@8 @4218 NONAME ??_R0?AVRouteEntry@PIPSocket@@@8 @4219 NONAME ??_R0?AVSelectList@PSocket@@@8 @4220 NONAME ??_R0?AVServiceManager@@@8 @4221 NONAME ??_R0?AVstrstreambuf@std@@@8 @5666 NONAME ??_R0?AVTable@PHashTable@@@8 @4223 NONAME ??_R0?AVWin95_ServiceManager@@@8 @4224 NONAME ??_R0?AVWinSNMPLoader@@@8 @6713 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@@8 @7280 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@@8 @7281 NONAME ??_R0?AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@@8 @7282 NONAME ??_R0?AVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@8 @7283 NONAME ??_R0?AVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@8 @6869 NONAME ??_R0?AVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@8 @7284 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@8 @7285 NONAME ??_R0?AVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@8 @7286 NONAME ??_R1333A@?$_Iosb@H@std@@8 @5667 NONAME ??_R13?0A@A@?$basic_iostream@DU?$char_traits@D@std@@@std@@8 @5668 NONAME ??_R13?0A@A@?$basic_istream@DU?$char_traits@D@std@@@std@@8 @5669 NONAME ??_R13A@3A@?$_Iosb@H@std@@8 @5670 NONAME ??_R13BE@3A@?$_Iosb@H@std@@8 @5671 NONAME ??_R1A@33A@ios_base@std@@8 @5672 NONAME ??_R1A@33BA@?$basic_ios@DU?$char_traits@D@std@@@std@@8 @5673 NONAME ??_R1A@?0A@8?$PBaseArray@E@@8 @4228 NONAME ??_R1A@?0A@8?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4229 NONAME ??_R1A@?0A@8?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4230 NONAME ??_R1A@?0A@8?$PList@VPTimer@@@@8 @4231 NONAME ??_R1A@?0A@8PAbstractArray@@8 @4232 NONAME ??_R1A@?0A@8PAbstractDictionary@@8 @4233 NONAME ??_R1A@?0A@8PAbstractList@@8 @4234 NONAME ??_R1A@?0A@8PBYTEArray@@8 @4235 NONAME ??_R1A@?0A@8PCollection@@8 @4236 NONAME ??_R1A@?0A@8PContainer@@8 @4237 NONAME ??_R1A@?0A@8PFactoryBase@@8 @6870 NONAME ??_R1A@?0A@8PHashTable@@8 @4238 NONAME ??_R1A@?0A@8PObject@@8 @4239 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7287 NONAME ??_R1A@?0A@8WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6871 NONAME ??_R1A@?0A@A@?$basic_ofstream@DU?$char_traits@D@std@@@std@@8 @5674 NONAME ??_R1A@?0A@A@?$basic_ostream@DU?$char_traits@D@std@@@std@@8 @5675 NONAME ??_R1A@?0A@A@?$basic_streambuf@DU?$char_traits@D@std@@@std@@8 @5676 NONAME ??_R1A@?0A@A@?$PArray@VPString@@@@8 @4240 NONAME ??_R1A@?0A@A@?$PArray@VPWaveBuffer@@@@8 @4241 NONAME ??_R1A@?0A@A@?$PArray@VPWin32PacketBuffer@@@@8 @4242 NONAME ??_R1A@?0A@A@?$PBaseArray@D@@8 @4243 NONAME ??_R1A@?0A@A@?$PBaseArray@E@@8 @4244 NONAME ??_R1A@?0A@A@?$PBaseArray@F@@8 @4245 NONAME ??_R1A@?0A@A@?$PBaseArray@G@@8 @4246 NONAME ??_R1A@?0A@A@?$PBaseArray@H@@8 @4247 NONAME ??_R1A@?0A@A@?$PBaseArray@I@@8 @4248 NONAME ??_R1A@?0A@A@?$PBaseArray@J@@8 @4249 NONAME ??_R1A@?0A@A@?$PBaseArray@K@@8 @4250 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVElement@PHashTable@@@@8 @4251 NONAME ??_R1A@?0A@A@?$PBaseArray@PAVPObject@@@@8 @4252 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPSoundChannel@@@@8 @7288 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @7289 NONAME ??_R1A@?0A@A@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @7290 NONAME ??_R1A@?0A@A@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4253 NONAME ??_R1A@?0A@A@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4254 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @4255 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5953 NONAME ??_R1A@?0A@A@?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @4256 NONAME ??_R1A@?0A@A@?$PDictionary@VPString@@VPDynaLink@@@@8 @5873 NONAME ??_R1A@?0A@A@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7291 NONAME ??_R1A@?0A@A@?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6872 NONAME ??_R1A@?0A@A@?$PFactory@VPProcessStartup@@VPString@@@@8 @6873 NONAME ??_R1A@?0A@A@?$PFactory@VPSoundChannel@@VPString@@@@8 @7292 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7293 NONAME ??_R1A@?0A@A@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7294 NONAME ??_R1A@?0A@A@?$PList@VInterfaceEntry@PIPSocket@@@@8 @7650 NONAME ??_R1A@?0A@A@?$PList@VPDynaLink@@@@8 @4257 NONAME ??_R1A@?0A@A@?$PList@VPNotifier@@@@8 @4258 NONAME ??_R1A@?0A@A@?$PList@VPPluginService@@@@8 @4259 NONAME ??_R1A@?0A@A@?$PList@VPSafeObject@@@@8 @7056 NONAME ??_R1A@?0A@A@?$PList@VPSocket@@@@8 @4260 NONAME ??_R1A@?0A@A@?$PList@VPString@@@@8 @4261 NONAME ??_R1A@?0A@A@?$PList@VPThread@@@@8 @4262 NONAME ??_R1A@?0A@A@?$PList@VPTimer@@@@8 @4263 NONAME ??_R1A@?0A@A@?$POrdinalDictionary@VPString@@@@8 @4264 NONAME ??_R1A@?0A@A@?$PScalarArray@F@@8 @4265 NONAME ??_R1A@?0A@A@?$PScalarArray@G@@8 @4266 NONAME ??_R1A@?0A@A@?$PScalarArray@H@@8 @4267 NONAME ??_R1A@?0A@A@?$PScalarArray@I@@8 @4268 NONAME ??_R1A@?0A@A@?$PScalarArray@J@@8 @4269 NONAME ??_R1A@?0A@A@?$PScalarArray@K@@8 @4270 NONAME ??_R1A@?0A@A@?$PSet@VPString@@@@8 @4271 NONAME ??_R1A@?0A@A@?$PSortedList@VPString@@@@8 @4272 NONAME ??_R1A@?0A@A@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @16353 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPOrdinalKey@@@@8 @4273 NONAME ??_R1A@?0A@A@?$PStringDictionary@VPString@@@@8 @4274 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @16354 NONAME ??_R1A@?0A@A@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @16355 NONAME ??_R1A@?0A@A@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @16356 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7295 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7296 NONAME ??_R1A@?0A@A@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7297 NONAME ??_R1A@?0A@A@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6874 NONAME ??_R1A@?0A@A@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6875 NONAME ??_R1A@?0A@A@Address@PIPSocket@@8 @4275 NONAME ??_R1A@?0A@A@Buffer@PDebugStream@@8 @4276 NONAME ??_R1A@?0A@A@Buffer@PStringStream@@8 @4277 NONAME ??_R1A@?0A@A@Buffer@PSystemLog@@8 @4278 NONAME ??_R1A@?0A@A@CMCDLL@PMail@@8 @4279 NONAME ??_R1A@?0A@A@DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @4280 NONAME ??_R1A@?0A@A@exception@@8 @6081 NONAME ??_R1A@?0A@A@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @16357 NONAME ??_R1A@?0A@A@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @16358 NONAME ??_R1A@?0A@A@HouseKeepingThread@PProcess@@8 @4281 NONAME ??_R1A@?0A@A@InterfaceEntry@PIPSocket@@8 @4282 NONAME ??_R1A@?0A@A@length_error@std@@8 @6082 NONAME ??_R1A@?0A@A@logic_error@std@@8 @6083 NONAME ??_R1A@?0A@A@MAPIDLL@PMail@@8 @4283 NONAME ??_R1A@?0A@A@Nest@PReadWriteMutex@@8 @4284 NONAME ??_R1A@?0A@A@NT_ServiceManager@@8 @4285 NONAME ??_R1A@?0A@A@ostrstream@std@@8 @5677 NONAME ??_R1A@?0A@A@out_of_range@std@@8 @6084 NONAME ??_R1A@?0A@A@PAbstractArray@@8 @4288 NONAME ??_R1A@?0A@A@PAbstractDictionary@@8 @4289 NONAME ??_R1A@?0A@A@PAbstractList@@8 @4290 NONAME ??_R1A@?0A@A@PAbstractSet@@8 @4291 NONAME ??_R1A@?0A@A@PAbstractSortedList@@8 @4292 NONAME ??_R1A@?0A@A@PArgList@@8 @4293 NONAME ??_R1A@?0A@A@PArrayObjects@@8 @4294 NONAME ??_R1A@?0A@A@PBitArray@@8 @4295 NONAME ??_R1A@?0A@A@PBYTEArray@@8 @4296 NONAME ??_R1A@?0A@A@PCaselessString@@8 @4297 NONAME ??_R1A@?0A@A@PChannel@@8 @4298 NONAME ??_R1A@?0A@A@PChannelStreamBuffer@@8 @4299 NONAME ??_R1A@?0A@A@PCharArray@@8 @4300 NONAME ??_R1A@?0A@A@PCollection@@8 @4301 NONAME ??_R1A@?0A@A@PColourConverter@@8 @4302 NONAME ??_R1A@?0A@A@PColourConverterRegistration@@8 @4303 NONAME ??_R1A@?0A@A@PCondMutex@@8 @4304 NONAME ??_R1A@?0A@A@PConfig@@8 @4305 NONAME ??_R1A@?0A@A@PConfigArgs@@8 @4306 NONAME ??_R1A@?0A@A@PConsoleChannel@@8 @4307 NONAME ??_R1A@?0A@A@PContainer@@8 @4308 NONAME ??_R1A@?0A@A@PCriticalSection@@8 @5847 NONAME ??_R1A@?0A@A@PDebugStream@@8 @4309 NONAME ??_R1A@?0A@A@PDevicePluginAdapterBase@@8 @7298 NONAME ??_R1A@?0A@A@PDevicePluginServiceDescriptor@@8 @16359 NONAME ??_R1A@?0A@A@PDirectory@@8 @4310 NONAME ??_R1A@?0A@A@PDynaLink@@8 @4311 NONAME ??_R1A@?0A@A@PEthSocket@@8 @4312 NONAME ??_R1A@?0A@A@PFactoryBase@@8 @6876 NONAME ??_R1A@?0A@A@PFile@@8 @4313 NONAME ??_R1A@?0A@A@PFileInfo@@8 @4314 NONAME ??_R1A@?0A@A@PFilePath@@8 @4315 NONAME ??_R1A@?0A@A@PHashTable@@8 @4316 NONAME ??_R1A@?0A@A@PHostByAddr@@8 @4317 NONAME ??_R1A@?0A@A@PHostByName@@8 @4318 NONAME ??_R1A@?0A@A@PICMPDLL@@8 @4319 NONAME ??_R1A@?0A@A@PICMPSocket@@8 @4320 NONAME ??_R1A@?0A@A@PImageDLL@@8 @4321 NONAME ??_R1A@?0A@A@PIndirectChannel@@8 @4322 NONAME ??_R1A@?0A@A@PIntCondMutex@@8 @4323 NONAME ??_R1A@?0A@A@PIPCacheData@@8 @4324 NONAME ??_R1A@?0A@A@PIPCacheKey@@8 @4325 NONAME ??_R1A@?0A@A@PIPDatagramSocket@@8 @4326 NONAME ??_R1A@?0A@A@PIPSocket@@8 @4327 NONAME ??_R1A@?0A@A@PIPXSocket@@8 @4328 NONAME ??_R1A@?0A@A@PluginLoaderStartup@@8 @6339 NONAME ??_R1A@?0A@A@PMail@@8 @4329 NONAME ??_R1A@?0A@A@PNotifier@@8 @4331 NONAME ??_R1A@?0A@A@PNotifierFunction@@8 @4332 NONAME ??_R1A@?0A@A@PObject@@8 @4333 NONAME ??_R1A@?0A@A@POrdinalKey@@8 @4334 NONAME ??_R1A@?0A@A@POrdinalToString@@8 @4335 NONAME ??_R1A@?0A@A@PPipeChannel@@8 @4336 NONAME ??_R1A@?0A@A@PPluginManager@@8 @4337 NONAME ??_R1A@?0A@A@PPluginModuleManager@@8 @5875 NONAME ??_R1A@?0A@A@PPluginService@@8 @4338 NONAME ??_R1A@?0A@A@PPluginServiceDescriptor@@8 @16360 NONAME ??_R1A@?0A@A@PPointer@@8 @5954 NONAME ??_R1A@?0A@A@PProcess@@8 @4339 NONAME ??_R1A@?0A@A@PProcessStartup@@8 @6340 NONAME ??_R1A@?0A@A@PQoS@@8 @4340 NONAME ??_R1A@?0A@A@PRASDLL@@8 @4341 NONAME ??_R1A@?0A@A@PReadWriteMutex@@8 @4342 NONAME ??_R1A@?0A@A@PRegularExpression@@8 @4343 NONAME ??_R1A@?0A@A@PRemoteConnection@@8 @4344 NONAME ??_R1A@?0A@A@PSafeCollection@@8 @4345 NONAME ??_R1A@?0A@A@PSafeObject@@8 @4346 NONAME ??_R1A@?0A@A@PSafePtrBase@@8 @4347 NONAME ??_R1A@?0A@A@PSemaphore@@8 @4348 NONAME ??_R1A@?0A@A@PSerialChannel@@8 @4349 NONAME ??_R1A@?0A@A@PServiceProcess@@8 @4350 NONAME ??_R1A@?0A@A@PSimpleThread@@8 @4351 NONAME ??_R1A@?0A@A@PSmartObject@@8 @4352 NONAME ??_R1A@?0A@A@PSmartPointer@@8 @4353 NONAME ??_R1A@?0A@A@PSmartPtrInspector@@8 @5955 NONAME ??_R1A@?0A@A@PSocket@@8 @4354 NONAME ??_R1A@?0A@A@PSortedStringList@@8 @4355 NONAME ??_R1A@?0A@A@PSound@@8 @4356 NONAME ??_R1A@?0A@A@PSoundChannel@@8 @4357 NONAME ??_R1A@?0A@A@PSoundChannelWin32@@8 @4358 NONAME ??_R1A@?0A@A@PSPXSocket@@8 @4359 NONAME ??_R1A@?0A@A@PStandardColourConverter@@8 @4360 NONAME ??_R1A@?0A@A@PString@@8 @4361 NONAME ??_R1A@?0A@A@PStringArray@@8 @4362 NONAME ??_R1A@?0A@A@PStringList@@8 @4363 NONAME ??_R1A@?0A@A@PStringSet@@8 @4364 NONAME ??_R1A@?0A@A@PStringStream@@8 @4365 NONAME ??_R1A@?0A@A@PStringToOrdinal@@8 @4366 NONAME ??_R1A@?0A@A@PStringToString@@8 @4367 NONAME ??_R1A@?0A@A@PStructuredFile@@8 @4368 NONAME ??_R1A@?0A@A@PSync@@8 @16579 NONAME ??_R1A@?0A@A@PSyncPoint@@8 @4369 NONAME ??_R1A@?0A@A@PSynonymColour@@8 @4370 NONAME ??_R1A@?0A@A@PSynonymColourRegistration@@8 @4371 NONAME ??_R1A@?0A@A@PSystemLog@@8 @4372 NONAME ??_R1A@?0A@A@PTCPSocket@@8 @4373 NONAME ??_R1A@?0A@A@PTextFile@@8 @4374 NONAME ??_R1A@?0A@A@PThread@@8 @4375 NONAME ??_R1A@?0A@A@PTime@@8 @4376 NONAME ??_R1A@?0A@A@PTimedMutex@@8 @16580 NONAME ??_R1A@?0A@A@PTimeInterval@@8 @4377 NONAME ??_R1A@?0A@A@PTimer@@8 @4378 NONAME ??_R1A@?0A@A@PTimerList@@8 @4379 NONAME ??_R1A@?0A@A@PUDPSocket@@8 @4380 NONAME ??_R1A@?0A@A@PVideoChannel@@8 @4381 NONAME ??_R1A@?0A@A@PVideoDevice@@8 @4382 NONAME ??_R1A@?0A@A@PVideoDeviceBitmap@@8 @4383 NONAME ??_R1A@?0A@A@PVideoInputDevice@@8 @4384 NONAME ??_R1A@?0A@A@PVideoInputDevice_FakeVideo@@8 @4385 NONAME ??_R1A@?0A@A@PVideoInputDevice_VideoForWindows@@8 @4386 NONAME ??_R1A@?0A@A@PVideoOutputDevice@@8 @4388 NONAME ??_R1A@?0A@A@PVideoOutputDeviceRGB@@8 @16361 NONAME ??_R1A@?0A@A@PVideoOutputDevice_NULLOutput@@8 @4389 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window@@8 @16362 NONAME ??_R1A@?0A@A@PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @16363 NONAME ??_R1A@?0A@A@PWaveBuffer@@8 @4390 NONAME ??_R1A@?0A@A@PWaveFormat@@8 @4391 NONAME ??_R1A@?0A@A@PWin32PacketBuffer@@8 @4392 NONAME ??_R1A@?0A@A@PWin32PacketDriver@@8 @4393 NONAME ??_R1A@?0A@A@PWin32PacketSYS@@8 @4394 NONAME ??_R1A@?0A@A@PWin32PacketVxD@@8 @4395 NONAME ??_R1A@?0A@A@PWin32SnmpLibrary@@8 @4396 NONAME ??_R1A@?0A@A@PWinQoS@@8 @4397 NONAME ??_R1A@?0A@A@PWinSock@@8 @4398 NONAME ??_R1A@?0A@A@P_BGR24_RGB24@@8 @16364 NONAME ??_R1A@?0A@A@P_BGR24_RGB24_Registration@@8 @16365 NONAME ??_R1A@?0A@A@P_BGR24_RGB32@@8 @16366 NONAME ??_R1A@?0A@A@P_BGR24_RGB32_Registration@@8 @16367 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P@@8 @4399 NONAME ??_R1A@?0A@A@P_BGR24_YUV420P_Registration@@8 @4400 NONAME ??_R1A@?0A@A@P_BGR32_RGB24@@8 @16368 NONAME ??_R1A@?0A@A@P_BGR32_RGB24_Registration@@8 @16369 NONAME ??_R1A@?0A@A@P_BGR32_RGB32@@8 @16370 NONAME ??_R1A@?0A@A@P_BGR32_RGB32_Registration@@8 @16371 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P@@8 @4401 NONAME ??_R1A@?0A@A@P_BGR32_YUV420P_Registration@@8 @4402 NONAME ??_R1A@?0A@A@P_Grey_YUV420P@@8 @4405 NONAME ??_R1A@?0A@A@P_Grey_YUV420P_Registration@@8 @4406 NONAME ??_R1A@?0A@A@P_RGB24_BGR24@@8 @16372 NONAME ??_R1A@?0A@A@P_RGB24_BGR24_Registration@@8 @16373 NONAME ??_R1A@?0A@A@P_RGB24_BGR32@@8 @16374 NONAME ??_R1A@?0A@A@P_RGB24_BGR32_Registration@@8 @16375 NONAME ??_R1A@?0A@A@P_RGB24_RGB32@@8 @4409 NONAME ??_R1A@?0A@A@P_RGB24_RGB32_Registration@@8 @4410 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P@@8 @4411 NONAME ??_R1A@?0A@A@P_RGB24_YUV420P_Registration@@8 @4412 NONAME ??_R1A@?0A@A@P_RGB32_BGR24@@8 @16376 NONAME ??_R1A@?0A@A@P_RGB32_BGR24_Registration@@8 @16377 NONAME ??_R1A@?0A@A@P_RGB32_BGR32@@8 @16378 NONAME ??_R1A@?0A@A@P_RGB32_BGR32_Registration@@8 @16379 NONAME ??_R1A@?0A@A@P_RGB32_RGB24@@8 @4415 NONAME ??_R1A@?0A@A@P_RGB32_RGB24_Registration@@8 @4416 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P@@8 @4417 NONAME ??_R1A@?0A@A@P_RGB32_YUV420P_Registration@@8 @4418 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24@@8 @7597 NONAME ??_R1A@?0A@A@P_SBGGR8_RGB24_Registration@@8 @7598 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P@@8 @7627 NONAME ??_R1A@?0A@A@P_SBGGR8_YUV420P_Registration@@8 @7628 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P@@8 @4419 NONAME ??_R1A@?0A@A@P_UYV444_YUV420P_Registration@@8 @4420 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P@@8 @4421 NONAME ??_R1A@?0A@A@P_UYVY422_YUV420P_Registration@@8 @4422 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P@@8 @4423 NONAME ??_R1A@?0A@A@P_YUV411P_YUV420P_Registration@@8 @4424 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24@@8 @4425 NONAME ??_R1A@?0A@A@P_YUV420P_BGR24_Registration@@8 @4428 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32@@8 @4429 NONAME ??_R1A@?0A@A@P_YUV420P_BGR32_Registration@@8 @4430 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24@@8 @4431 NONAME ??_R1A@?0A@A@P_YUV420P_RGB24_Registration@@8 @4434 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32@@8 @4435 NONAME ??_R1A@?0A@A@P_YUV420P_RGB32_Registration@@8 @4438 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P@@8 @4439 NONAME ??_R1A@?0A@A@P_YUV420P_YUV411P_Registration@@8 @4440 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P@@8 @4441 NONAME ??_R1A@?0A@A@P_YUV422_YUV420P_Registration@@8 @4442 NONAME ??_R1A@?0A@A@P_YUV422_YUV422@@8 @4443 NONAME ??_R1A@?0A@A@P_YUV422_YUV422_Registration@@8 @4444 NONAME ??_R1A@?0A@A@RouteEntry@PIPSocket@@8 @4445 NONAME ??_R1A@?0A@A@SelectList@PSocket@@8 @4446 NONAME ??_R1A@?0A@A@ServiceManager@@8 @4447 NONAME ??_R1A@?0A@A@strstreambuf@std@@8 @5678 NONAME ??_R1A@?0A@A@Table@PHashTable@@8 @4449 NONAME ??_R1A@?0A@A@Win95_ServiceManager@@8 @4450 NONAME ??_R1A@?0A@A@WinSNMPLoader@@8 @6714 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7299 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7300 NONAME ??_R1A@?0A@A@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7301 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7302 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6877 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7303 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7304 NONAME ??_R1A@?0A@A@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7305 NONAME ??_R1A@A@3A@ios_base@std@@8 @5679 NONAME ??_R1A@A@3BA@?$basic_ios@DU?$char_traits@D@std@@@std@@8 @5680 NONAME ??_R1A@BE@3A@ios_base@std@@8 @5681 NONAME ??_R1A@BE@3BA@?$basic_ios@DU?$char_traits@D@std@@@std@@8 @5682 NONAME ??_R1BE@?0A@A@?$basic_iostream@DU?$char_traits@D@std@@@std@@8 @5683 NONAME ??_R1BE@?0A@A@?$basic_istream@DU?$char_traits@D@std@@@std@@8 @5684 NONAME ??_R1BM@?0A@A@?$basic_ostream@DU?$char_traits@D@std@@@std@@8 @5685 NONAME ??_R1M@?0A@A@?$basic_ostream@DU?$char_traits@D@std@@@std@@8 @5686 NONAME ??_R2?$basic_ofstream@DU?$char_traits@D@std@@@std@@8 @5687 NONAME ??_R2?$PArray@VPString@@@@8 @4457 NONAME ??_R2?$PArray@VPWaveBuffer@@@@8 @4458 NONAME ??_R2?$PArray@VPWin32PacketBuffer@@@@8 @4459 NONAME ??_R2?$PBaseArray@D@@8 @4460 NONAME ??_R2?$PBaseArray@E@@8 @4461 NONAME ??_R2?$PBaseArray@F@@8 @4462 NONAME ??_R2?$PBaseArray@G@@8 @4463 NONAME ??_R2?$PBaseArray@H@@8 @4464 NONAME ??_R2?$PBaseArray@I@@8 @4465 NONAME ??_R2?$PBaseArray@J@@8 @4466 NONAME ??_R2?$PBaseArray@K@@8 @4467 NONAME ??_R2?$PBaseArray@PAVElement@PHashTable@@@@8 @4468 NONAME ??_R2?$PBaseArray@PAVPObject@@@@8 @4469 NONAME ??_R2?$PDevicePluginAdapter@VPSoundChannel@@@@8 @7306 NONAME ??_R2?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @7307 NONAME ??_R2?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @7308 NONAME ??_R2?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4470 NONAME ??_R2?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4471 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @4472 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5956 NONAME ??_R2?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @4473 NONAME ??_R2?$PDictionary@VPString@@VPDynaLink@@@@8 @5876 NONAME ??_R2?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7309 NONAME ??_R2?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6878 NONAME ??_R2?$PFactory@VPProcessStartup@@VPString@@@@8 @6879 NONAME ??_R2?$PFactory@VPSoundChannel@@VPString@@@@8 @7310 NONAME ??_R2?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7311 NONAME ??_R2?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7312 NONAME ??_R2?$PList@VInterfaceEntry@PIPSocket@@@@8 @7651 NONAME ??_R2?$PList@VPDynaLink@@@@8 @4474 NONAME ??_R2?$PList@VPNotifier@@@@8 @4475 NONAME ??_R2?$PList@VPPluginService@@@@8 @4476 NONAME ??_R2?$PList@VPSafeObject@@@@8 @7057 NONAME ??_R2?$PList@VPSocket@@@@8 @4477 NONAME ??_R2?$PList@VPString@@@@8 @4478 NONAME ??_R2?$PList@VPThread@@@@8 @4479 NONAME ??_R2?$PList@VPTimer@@@@8 @4480 NONAME ??_R2?$POrdinalDictionary@VPString@@@@8 @4481 NONAME ??_R2?$PScalarArray@F@@8 @4482 NONAME ??_R2?$PScalarArray@G@@8 @4483 NONAME ??_R2?$PScalarArray@H@@8 @4484 NONAME ??_R2?$PScalarArray@I@@8 @4485 NONAME ??_R2?$PScalarArray@J@@8 @4486 NONAME ??_R2?$PScalarArray@K@@8 @4487 NONAME ??_R2?$PSet@VPString@@@@8 @4488 NONAME ??_R2?$PSortedList@VPString@@@@8 @4489 NONAME ??_R2?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @16380 NONAME ??_R2?$PStringDictionary@VPOrdinalKey@@@@8 @4490 NONAME ??_R2?$PStringDictionary@VPString@@@@8 @4491 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @16381 NONAME ??_R2?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @16382 NONAME ??_R2?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @16383 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7313 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7314 NONAME ??_R2?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7315 NONAME ??_R2?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6880 NONAME ??_R2?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6881 NONAME ??_R2Address@PIPSocket@@8 @4492 NONAME ??_R2Buffer@PDebugStream@@8 @4493 NONAME ??_R2Buffer@PStringStream@@8 @4494 NONAME ??_R2Buffer@PSystemLog@@8 @4495 NONAME ??_R2CMCDLL@PMail@@8 @4496 NONAME ??_R2DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @4497 NONAME ??_R2HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @16384 NONAME ??_R2HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @16385 NONAME ??_R2HouseKeepingThread@PProcess@@8 @4498 NONAME ??_R2InterfaceEntry@PIPSocket@@8 @4499 NONAME ??_R2length_error@std@@8 @6085 NONAME ??_R2logic_error@std@@8 @6086 NONAME ??_R2MAPIDLL@PMail@@8 @4500 NONAME ??_R2Nest@PReadWriteMutex@@8 @4501 NONAME ??_R2NT_ServiceManager@@8 @4502 NONAME ??_R2ostrstream@std@@8 @5688 NONAME ??_R2out_of_range@std@@8 @6087 NONAME ??_R2PAbstractArray@@8 @4504 NONAME ??_R2PAbstractDictionary@@8 @4505 NONAME ??_R2PAbstractList@@8 @4506 NONAME ??_R2PAbstractSet@@8 @4507 NONAME ??_R2PAbstractSortedList@@8 @4508 NONAME ??_R2PArgList@@8 @4509 NONAME ??_R2PArrayObjects@@8 @4510 NONAME ??_R2PBitArray@@8 @4511 NONAME ??_R2PBYTEArray@@8 @4512 NONAME ??_R2PCaselessString@@8 @4513 NONAME ??_R2PChannel@@8 @4514 NONAME ??_R2PChannelStreamBuffer@@8 @4515 NONAME ??_R2PCharArray@@8 @4516 NONAME ??_R2PCollection@@8 @4517 NONAME ??_R2PColourConverter@@8 @4518 NONAME ??_R2PColourConverterRegistration@@8 @4519 NONAME ??_R2PCondMutex@@8 @4520 NONAME ??_R2PConfig@@8 @4521 NONAME ??_R2PConfigArgs@@8 @4522 NONAME ??_R2PConsoleChannel@@8 @4523 NONAME ??_R2PContainer@@8 @4524 NONAME ??_R2PCriticalSection@@8 @5848 NONAME ??_R2PDebugStream@@8 @4525 NONAME ??_R2PDevicePluginAdapterBase@@8 @7316 NONAME ??_R2PDevicePluginServiceDescriptor@@8 @16386 NONAME ??_R2PDirectory@@8 @4526 NONAME ??_R2PDynaLink@@8 @4527 NONAME ??_R2PEthSocket@@8 @4528 NONAME ??_R2PFactoryBase@@8 @6882 NONAME ??_R2PFile@@8 @4529 NONAME ??_R2PFileInfo@@8 @4530 NONAME ??_R2PFilePath@@8 @4531 NONAME ??_R2PHashTable@@8 @4532 NONAME ??_R2PHostByAddr@@8 @4533 NONAME ??_R2PHostByName@@8 @4534 NONAME ??_R2PICMPDLL@@8 @4535 NONAME ??_R2PICMPSocket@@8 @4536 NONAME ??_R2PImageDLL@@8 @4537 NONAME ??_R2PIndirectChannel@@8 @4538 NONAME ??_R2PIntCondMutex@@8 @4539 NONAME ??_R2PIPCacheData@@8 @4540 NONAME ??_R2PIPCacheKey@@8 @4541 NONAME ??_R2PIPDatagramSocket@@8 @4542 NONAME ??_R2PIPSocket@@8 @4543 NONAME ??_R2PIPXSocket@@8 @4544 NONAME ??_R2PluginLoaderStartup@@8 @6341 NONAME ??_R2PMail@@8 @4545 NONAME ??_R2PNotifier@@8 @4547 NONAME ??_R2PNotifierFunction@@8 @4548 NONAME ??_R2PObject@@8 @4549 NONAME ??_R2POrdinalKey@@8 @4550 NONAME ??_R2POrdinalToString@@8 @4551 NONAME ??_R2PPipeChannel@@8 @4552 NONAME ??_R2PPluginManager@@8 @4553 NONAME ??_R2PPluginModuleManager@@8 @5878 NONAME ??_R2PPluginService@@8 @4554 NONAME ??_R2PPluginServiceDescriptor@@8 @16387 NONAME ??_R2PPointer@@8 @5957 NONAME ??_R2PProcess@@8 @4555 NONAME ??_R2PProcessStartup@@8 @6342 NONAME ??_R2PQoS@@8 @4556 NONAME ??_R2PRASDLL@@8 @4557 NONAME ??_R2PReadWriteMutex@@8 @4558 NONAME ??_R2PRegularExpression@@8 @4559 NONAME ??_R2PRemoteConnection@@8 @4560 NONAME ??_R2PSafeCollection@@8 @4561 NONAME ??_R2PSafeObject@@8 @4562 NONAME ??_R2PSafePtrBase@@8 @4563 NONAME ??_R2PSemaphore@@8 @4564 NONAME ??_R2PSerialChannel@@8 @4565 NONAME ??_R2PServiceProcess@@8 @4566 NONAME ??_R2PSimpleThread@@8 @4567 NONAME ??_R2PSmartObject@@8 @4568 NONAME ??_R2PSmartPointer@@8 @4569 NONAME ??_R2PSmartPtrInspector@@8 @5958 NONAME ??_R2PSocket@@8 @4570 NONAME ??_R2PSortedStringList@@8 @4571 NONAME ??_R2PSound@@8 @4572 NONAME ??_R2PSoundChannel@@8 @4573 NONAME ??_R2PSoundChannelWin32@@8 @4574 NONAME ??_R2PSPXSocket@@8 @4575 NONAME ??_R2PStandardColourConverter@@8 @4576 NONAME ??_R2PString@@8 @4577 NONAME ??_R2PStringArray@@8 @4578 NONAME ??_R2PStringList@@8 @4579 NONAME ??_R2PStringSet@@8 @4580 NONAME ??_R2PStringStream@@8 @4581 NONAME ??_R2PStringToOrdinal@@8 @4582 NONAME ??_R2PStringToString@@8 @4583 NONAME ??_R2PStructuredFile@@8 @4584 NONAME ??_R2PSync@@8 @16581 NONAME ??_R2PSyncPoint@@8 @4585 NONAME ??_R2PSynonymColour@@8 @4586 NONAME ??_R2PSynonymColourRegistration@@8 @4587 NONAME ??_R2PSystemLog@@8 @4588 NONAME ??_R2PTCPSocket@@8 @4589 NONAME ??_R2PTextFile@@8 @4590 NONAME ??_R2PThread@@8 @4591 NONAME ??_R2PTime@@8 @4592 NONAME ??_R2PTimedMutex@@8 @16582 NONAME ??_R2PTimeInterval@@8 @4593 NONAME ??_R2PTimer@@8 @4594 NONAME ??_R2PTimerList@@8 @4595 NONAME ??_R2PUDPSocket@@8 @4596 NONAME ??_R2PVideoChannel@@8 @4597 NONAME ??_R2PVideoDevice@@8 @4598 NONAME ??_R2PVideoDeviceBitmap@@8 @4599 NONAME ??_R2PVideoInputDevice@@8 @4600 NONAME ??_R2PVideoInputDevice_FakeVideo@@8 @4601 NONAME ??_R2PVideoInputDevice_VideoForWindows@@8 @4602 NONAME ??_R2PVideoOutputDevice@@8 @4604 NONAME ??_R2PVideoOutputDeviceRGB@@8 @16388 NONAME ??_R2PVideoOutputDevice_NULLOutput@@8 @4605 NONAME ??_R2PVideoOutputDevice_Window@@8 @16389 NONAME ??_R2PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @16390 NONAME ??_R2PWaveBuffer@@8 @4606 NONAME ??_R2PWaveFormat@@8 @4607 NONAME ??_R2PWin32PacketBuffer@@8 @4608 NONAME ??_R2PWin32PacketDriver@@8 @4609 NONAME ??_R2PWin32PacketSYS@@8 @4610 NONAME ??_R2PWin32PacketVxD@@8 @4611 NONAME ??_R2PWin32SnmpLibrary@@8 @4612 NONAME ??_R2PWinQoS@@8 @4613 NONAME ??_R2PWinSock@@8 @4614 NONAME ??_R2P_BGR24_RGB24@@8 @16391 NONAME ??_R2P_BGR24_RGB24_Registration@@8 @16392 NONAME ??_R2P_BGR24_RGB32@@8 @16393 NONAME ??_R2P_BGR24_RGB32_Registration@@8 @16394 NONAME ??_R2P_BGR24_YUV420P@@8 @4615 NONAME ??_R2P_BGR24_YUV420P_Registration@@8 @4616 NONAME ??_R2P_BGR32_RGB24@@8 @16395 NONAME ??_R2P_BGR32_RGB24_Registration@@8 @16396 NONAME ??_R2P_BGR32_RGB32@@8 @16397 NONAME ??_R2P_BGR32_RGB32_Registration@@8 @16398 NONAME ??_R2P_BGR32_YUV420P@@8 @4617 NONAME ??_R2P_BGR32_YUV420P_Registration@@8 @4618 NONAME ??_R2P_Grey_YUV420P@@8 @4621 NONAME ??_R2P_Grey_YUV420P_Registration@@8 @4622 NONAME ??_R2P_RGB24_BGR24@@8 @16399 NONAME ??_R2P_RGB24_BGR24_Registration@@8 @16400 NONAME ??_R2P_RGB24_BGR32@@8 @16401 NONAME ??_R2P_RGB24_BGR32_Registration@@8 @16402 NONAME ??_R2P_RGB24_RGB32@@8 @4625 NONAME ??_R2P_RGB24_RGB32_Registration@@8 @4626 NONAME ??_R2P_RGB24_YUV420P@@8 @4627 NONAME ??_R2P_RGB24_YUV420P_Registration@@8 @4628 NONAME ??_R2P_RGB32_BGR24@@8 @16403 NONAME ??_R2P_RGB32_BGR24_Registration@@8 @16404 NONAME ??_R2P_RGB32_BGR32@@8 @16405 NONAME ??_R2P_RGB32_BGR32_Registration@@8 @16406 NONAME ??_R2P_RGB32_RGB24@@8 @4631 NONAME ??_R2P_RGB32_RGB24_Registration@@8 @4632 NONAME ??_R2P_RGB32_YUV420P@@8 @4633 NONAME ??_R2P_RGB32_YUV420P_Registration@@8 @4634 NONAME ??_R2P_SBGGR8_RGB24@@8 @7599 NONAME ??_R2P_SBGGR8_RGB24_Registration@@8 @7600 NONAME ??_R2P_SBGGR8_YUV420P@@8 @7629 NONAME ??_R2P_SBGGR8_YUV420P_Registration@@8 @7630 NONAME ??_R2P_UYV444_YUV420P@@8 @4635 NONAME ??_R2P_UYV444_YUV420P_Registration@@8 @4636 NONAME ??_R2P_UYVY422_YUV420P@@8 @4637 NONAME ??_R2P_UYVY422_YUV420P_Registration@@8 @4638 NONAME ??_R2P_YUV411P_YUV420P@@8 @4639 NONAME ??_R2P_YUV411P_YUV420P_Registration@@8 @4640 NONAME ??_R2P_YUV420P_BGR24@@8 @4641 NONAME ??_R2P_YUV420P_BGR24_Registration@@8 @4644 NONAME ??_R2P_YUV420P_BGR32@@8 @4645 NONAME ??_R2P_YUV420P_BGR32_Registration@@8 @4646 NONAME ??_R2P_YUV420P_RGB24@@8 @4647 NONAME ??_R2P_YUV420P_RGB24_Registration@@8 @4650 NONAME ??_R2P_YUV420P_RGB32@@8 @4651 NONAME ??_R2P_YUV420P_RGB32_Registration@@8 @4654 NONAME ??_R2P_YUV420P_YUV411P@@8 @4655 NONAME ??_R2P_YUV420P_YUV411P_Registration@@8 @4656 NONAME ??_R2P_YUV422_YUV420P@@8 @4657 NONAME ??_R2P_YUV422_YUV420P_Registration@@8 @4658 NONAME ??_R2P_YUV422_YUV422@@8 @4659 NONAME ??_R2P_YUV422_YUV422_Registration@@8 @4660 NONAME ??_R2RouteEntry@PIPSocket@@8 @4661 NONAME ??_R2SelectList@PSocket@@8 @4662 NONAME ??_R2ServiceManager@@8 @4663 NONAME ??_R2strstreambuf@std@@8 @5689 NONAME ??_R2Table@PHashTable@@8 @4664 NONAME ??_R2Win95_ServiceManager@@8 @4665 NONAME ??_R2WinSNMPLoader@@8 @6715 NONAME ??_R2Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7317 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7318 NONAME ??_R2Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7319 NONAME ??_R2WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7320 NONAME ??_R2WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6883 NONAME ??_R2WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7321 NONAME ??_R2WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7322 NONAME ??_R2WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7323 NONAME ??_R3?$basic_ofstream@DU?$char_traits@D@std@@@std@@8 @5690 NONAME ??_R3?$PArray@VPString@@@@8 @4666 NONAME ??_R3?$PArray@VPWaveBuffer@@@@8 @4667 NONAME ??_R3?$PArray@VPWin32PacketBuffer@@@@8 @4668 NONAME ??_R3?$PBaseArray@D@@8 @4669 NONAME ??_R3?$PBaseArray@E@@8 @4670 NONAME ??_R3?$PBaseArray@F@@8 @4671 NONAME ??_R3?$PBaseArray@G@@8 @4672 NONAME ??_R3?$PBaseArray@H@@8 @4673 NONAME ??_R3?$PBaseArray@I@@8 @4674 NONAME ??_R3?$PBaseArray@J@@8 @4675 NONAME ??_R3?$PBaseArray@K@@8 @4676 NONAME ??_R3?$PBaseArray@PAVElement@PHashTable@@@@8 @4677 NONAME ??_R3?$PBaseArray@PAVPObject@@@@8 @4678 NONAME ??_R3?$PDevicePluginAdapter@VPSoundChannel@@@@8 @7324 NONAME ??_R3?$PDevicePluginAdapter@VPVideoInputDevice@@@@8 @7325 NONAME ??_R3?$PDevicePluginAdapter@VPVideoOutputDevice@@@@8 @7326 NONAME ??_R3?$PDictionary@VPCaselessString@@VPIPCacheData@@@@8 @4679 NONAME ??_R3?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@8 @4680 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@8 @4681 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPPointer@@@@8 @5959 NONAME ??_R3?$PDictionary@VPOrdinalKey@@VPThread@@@@8 @4682 NONAME ??_R3?$PDictionary@VPString@@VPDynaLink@@@@8 @5879 NONAME ??_R3?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7327 NONAME ??_R3?$PFactory@VPPluginModuleManager@@VPString@@@@8 @6884 NONAME ??_R3?$PFactory@VPProcessStartup@@VPString@@@@8 @6885 NONAME ??_R3?$PFactory@VPSoundChannel@@VPString@@@@8 @7328 NONAME ??_R3?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7329 NONAME ??_R3?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7330 NONAME ??_R3?$PList@VInterfaceEntry@PIPSocket@@@@8 @7652 NONAME ??_R3?$PList@VPDynaLink@@@@8 @4683 NONAME ??_R3?$PList@VPNotifier@@@@8 @4684 NONAME ??_R3?$PList@VPPluginService@@@@8 @4685 NONAME ??_R3?$PList@VPSafeObject@@@@8 @7058 NONAME ??_R3?$PList@VPSocket@@@@8 @4686 NONAME ??_R3?$PList@VPString@@@@8 @4687 NONAME ??_R3?$PList@VPThread@@@@8 @4688 NONAME ??_R3?$PList@VPTimer@@@@8 @4689 NONAME ??_R3?$POrdinalDictionary@VPString@@@@8 @4690 NONAME ??_R3?$PScalarArray@F@@8 @4691 NONAME ??_R3?$PScalarArray@G@@8 @4692 NONAME ??_R3?$PScalarArray@H@@8 @4693 NONAME ??_R3?$PScalarArray@I@@8 @4694 NONAME ??_R3?$PScalarArray@J@@8 @4695 NONAME ??_R3?$PScalarArray@K@@8 @4696 NONAME ??_R3?$PSet@VPString@@@@8 @4697 NONAME ??_R3?$PSortedList@VPString@@@@8 @4698 NONAME ??_R3?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@8 @16407 NONAME ??_R3?$PStringDictionary@VPOrdinalKey@@@@8 @4699 NONAME ??_R3?$PStringDictionary@VPString@@@@8 @4700 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@8 @16408 NONAME ??_R3?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@8 @16409 NONAME ??_R3?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@8 @16410 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7331 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7332 NONAME ??_R3?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7333 NONAME ??_R3?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6886 NONAME ??_R3?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@8 @6887 NONAME ??_R3Address@PIPSocket@@8 @4701 NONAME ??_R3Buffer@PDebugStream@@8 @4702 NONAME ??_R3Buffer@PStringStream@@8 @4703 NONAME ??_R3Buffer@PSystemLog@@8 @4704 NONAME ??_R3CMCDLL@PMail@@8 @4705 NONAME ??_R3DeleteObjectsTimeout_PNotifier@PSafeCollection@@8 @4706 NONAME ??_R3HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@8 @16411 NONAME ??_R3HandleDisplay_PNotifier@PVideoOutputDevice_Window@@8 @16412 NONAME ??_R3HouseKeepingThread@PProcess@@8 @4707 NONAME ??_R3InterfaceEntry@PIPSocket@@8 @4708 NONAME ??_R3length_error@std@@8 @6088 NONAME ??_R3logic_error@std@@8 @6089 NONAME ??_R3MAPIDLL@PMail@@8 @4709 NONAME ??_R3Nest@PReadWriteMutex@@8 @4710 NONAME ??_R3NT_ServiceManager@@8 @4711 NONAME ??_R3ostrstream@std@@8 @5691 NONAME ??_R3out_of_range@std@@8 @6090 NONAME ??_R3PAbstractArray@@8 @4713 NONAME ??_R3PAbstractDictionary@@8 @4714 NONAME ??_R3PAbstractList@@8 @4715 NONAME ??_R3PAbstractSet@@8 @4716 NONAME ??_R3PAbstractSortedList@@8 @4717 NONAME ??_R3PArgList@@8 @4718 NONAME ??_R3PArrayObjects@@8 @4719 NONAME ??_R3PBitArray@@8 @4720 NONAME ??_R3PBYTEArray@@8 @4721 NONAME ??_R3PCaselessString@@8 @4722 NONAME ??_R3PChannel@@8 @4723 NONAME ??_R3PChannelStreamBuffer@@8 @4724 NONAME ??_R3PCharArray@@8 @4725 NONAME ??_R3PCollection@@8 @4726 NONAME ??_R3PColourConverter@@8 @4727 NONAME ??_R3PColourConverterRegistration@@8 @4728 NONAME ??_R3PCondMutex@@8 @4729 NONAME ??_R3PConfig@@8 @4730 NONAME ??_R3PConfigArgs@@8 @4731 NONAME ??_R3PConsoleChannel@@8 @4732 NONAME ??_R3PContainer@@8 @4733 NONAME ??_R3PCriticalSection@@8 @5849 NONAME ??_R3PDebugStream@@8 @4734 NONAME ??_R3PDevicePluginAdapterBase@@8 @7334 NONAME ??_R3PDevicePluginServiceDescriptor@@8 @16413 NONAME ??_R3PDirectory@@8 @4735 NONAME ??_R3PDynaLink@@8 @4736 NONAME ??_R3PEthSocket@@8 @4737 NONAME ??_R3PFactoryBase@@8 @6888 NONAME ??_R3PFile@@8 @4738 NONAME ??_R3PFileInfo@@8 @4739 NONAME ??_R3PFilePath@@8 @4740 NONAME ??_R3PHashTable@@8 @4741 NONAME ??_R3PHostByAddr@@8 @4742 NONAME ??_R3PHostByName@@8 @4743 NONAME ??_R3PICMPDLL@@8 @4744 NONAME ??_R3PICMPSocket@@8 @4745 NONAME ??_R3PImageDLL@@8 @4746 NONAME ??_R3PIndirectChannel@@8 @4747 NONAME ??_R3PIntCondMutex@@8 @4748 NONAME ??_R3PIPCacheData@@8 @4749 NONAME ??_R3PIPCacheKey@@8 @4750 NONAME ??_R3PIPDatagramSocket@@8 @4751 NONAME ??_R3PIPSocket@@8 @4752 NONAME ??_R3PIPXSocket@@8 @4753 NONAME ??_R3PluginLoaderStartup@@8 @6343 NONAME ??_R3PMail@@8 @4754 NONAME ??_R3PNotifier@@8 @4756 NONAME ??_R3PNotifierFunction@@8 @4757 NONAME ??_R3PObject@@8 @4758 NONAME ??_R3POrdinalKey@@8 @4759 NONAME ??_R3POrdinalToString@@8 @4760 NONAME ??_R3PPipeChannel@@8 @4761 NONAME ??_R3PPluginManager@@8 @4762 NONAME ??_R3PPluginModuleManager@@8 @5881 NONAME ??_R3PPluginService@@8 @4763 NONAME ??_R3PPluginServiceDescriptor@@8 @16414 NONAME ??_R3PPointer@@8 @5960 NONAME ??_R3PProcess@@8 @4764 NONAME ??_R3PProcessStartup@@8 @6344 NONAME ??_R3PQoS@@8 @4765 NONAME ??_R3PRASDLL@@8 @4766 NONAME ??_R3PReadWriteMutex@@8 @4767 NONAME ??_R3PRegularExpression@@8 @4768 NONAME ??_R3PRemoteConnection@@8 @4769 NONAME ??_R3PSafeCollection@@8 @4770 NONAME ??_R3PSafeObject@@8 @4771 NONAME ??_R3PSafePtrBase@@8 @4772 NONAME ??_R3PSemaphore@@8 @4773 NONAME ??_R3PSerialChannel@@8 @4774 NONAME ??_R3PServiceProcess@@8 @4775 NONAME ??_R3PSimpleThread@@8 @4776 NONAME ??_R3PSmartObject@@8 @4777 NONAME ??_R3PSmartPointer@@8 @4778 NONAME ??_R3PSmartPtrInspector@@8 @5961 NONAME ??_R3PSocket@@8 @4779 NONAME ??_R3PSortedStringList@@8 @4780 NONAME ??_R3PSound@@8 @4781 NONAME ??_R3PSoundChannel@@8 @4782 NONAME ??_R3PSoundChannelWin32@@8 @4783 NONAME ??_R3PSPXSocket@@8 @4784 NONAME ??_R3PStandardColourConverter@@8 @4785 NONAME ??_R3PString@@8 @4786 NONAME ??_R3PStringArray@@8 @4787 NONAME ??_R3PStringList@@8 @4788 NONAME ??_R3PStringSet@@8 @4789 NONAME ??_R3PStringStream@@8 @4790 NONAME ??_R3PStringToOrdinal@@8 @4791 NONAME ??_R3PStringToString@@8 @4792 NONAME ??_R3PStructuredFile@@8 @4793 NONAME ??_R3PSync@@8 @16583 NONAME ??_R3PSyncPoint@@8 @4794 NONAME ??_R3PSynonymColour@@8 @4795 NONAME ??_R3PSynonymColourRegistration@@8 @4796 NONAME ??_R3PSystemLog@@8 @4797 NONAME ??_R3PTCPSocket@@8 @4798 NONAME ??_R3PTextFile@@8 @4799 NONAME ??_R3PThread@@8 @4800 NONAME ??_R3PTime@@8 @4801 NONAME ??_R3PTimedMutex@@8 @16584 NONAME ??_R3PTimeInterval@@8 @4802 NONAME ??_R3PTimer@@8 @4803 NONAME ??_R3PTimerList@@8 @4804 NONAME ??_R3PUDPSocket@@8 @4805 NONAME ??_R3PVideoChannel@@8 @4806 NONAME ??_R3PVideoDevice@@8 @4807 NONAME ??_R3PVideoDeviceBitmap@@8 @4808 NONAME ??_R3PVideoInputDevice@@8 @4809 NONAME ??_R3PVideoInputDevice_FakeVideo@@8 @4810 NONAME ??_R3PVideoInputDevice_VideoForWindows@@8 @4811 NONAME ??_R3PVideoOutputDevice@@8 @4813 NONAME ??_R3PVideoOutputDeviceRGB@@8 @16415 NONAME ??_R3PVideoOutputDevice_NULLOutput@@8 @4814 NONAME ??_R3PVideoOutputDevice_Window@@8 @16416 NONAME ??_R3PVideoOutputDevice_Window_PluginServiceDescriptor@@8 @16417 NONAME ??_R3PWaveBuffer@@8 @4815 NONAME ??_R3PWaveFormat@@8 @4816 NONAME ??_R3PWin32PacketBuffer@@8 @4817 NONAME ??_R3PWin32PacketDriver@@8 @4818 NONAME ??_R3PWin32PacketSYS@@8 @4819 NONAME ??_R3PWin32PacketVxD@@8 @4820 NONAME ??_R3PWin32SnmpLibrary@@8 @4821 NONAME ??_R3PWinQoS@@8 @4822 NONAME ??_R3PWinSock@@8 @4823 NONAME ??_R3P_BGR24_RGB24@@8 @16418 NONAME ??_R3P_BGR24_RGB24_Registration@@8 @16419 NONAME ??_R3P_BGR24_RGB32@@8 @16420 NONAME ??_R3P_BGR24_RGB32_Registration@@8 @16421 NONAME ??_R3P_BGR24_YUV420P@@8 @4824 NONAME ??_R3P_BGR24_YUV420P_Registration@@8 @4825 NONAME ??_R3P_BGR32_RGB24@@8 @16422 NONAME ??_R3P_BGR32_RGB24_Registration@@8 @16423 NONAME ??_R3P_BGR32_RGB32@@8 @16424 NONAME ??_R3P_BGR32_RGB32_Registration@@8 @16425 NONAME ??_R3P_BGR32_YUV420P@@8 @4826 NONAME ??_R3P_BGR32_YUV420P_Registration@@8 @4827 NONAME ??_R3P_Grey_YUV420P@@8 @4830 NONAME ??_R3P_Grey_YUV420P_Registration@@8 @4831 NONAME ??_R3P_RGB24_BGR24@@8 @16426 NONAME ??_R3P_RGB24_BGR24_Registration@@8 @16427 NONAME ??_R3P_RGB24_BGR32@@8 @16428 NONAME ??_R3P_RGB24_BGR32_Registration@@8 @16429 NONAME ??_R3P_RGB24_RGB32@@8 @4834 NONAME ??_R3P_RGB24_RGB32_Registration@@8 @4835 NONAME ??_R3P_RGB24_YUV420P@@8 @4836 NONAME ??_R3P_RGB24_YUV420P_Registration@@8 @4837 NONAME ??_R3P_RGB32_BGR24@@8 @16430 NONAME ??_R3P_RGB32_BGR24_Registration@@8 @16431 NONAME ??_R3P_RGB32_BGR32@@8 @16432 NONAME ??_R3P_RGB32_BGR32_Registration@@8 @16433 NONAME ??_R3P_RGB32_RGB24@@8 @4840 NONAME ??_R3P_RGB32_RGB24_Registration@@8 @4841 NONAME ??_R3P_RGB32_YUV420P@@8 @4842 NONAME ??_R3P_RGB32_YUV420P_Registration@@8 @4843 NONAME ??_R3P_SBGGR8_RGB24@@8 @7601 NONAME ??_R3P_SBGGR8_RGB24_Registration@@8 @7602 NONAME ??_R3P_SBGGR8_YUV420P@@8 @7631 NONAME ??_R3P_SBGGR8_YUV420P_Registration@@8 @7632 NONAME ??_R3P_UYV444_YUV420P@@8 @4844 NONAME ??_R3P_UYV444_YUV420P_Registration@@8 @4845 NONAME ??_R3P_UYVY422_YUV420P@@8 @4846 NONAME ??_R3P_UYVY422_YUV420P_Registration@@8 @4847 NONAME ??_R3P_YUV411P_YUV420P@@8 @4848 NONAME ??_R3P_YUV411P_YUV420P_Registration@@8 @4849 NONAME ??_R3P_YUV420P_BGR24@@8 @4850 NONAME ??_R3P_YUV420P_BGR24_Registration@@8 @4853 NONAME ??_R3P_YUV420P_BGR32@@8 @4854 NONAME ??_R3P_YUV420P_BGR32_Registration@@8 @4855 NONAME ??_R3P_YUV420P_RGB24@@8 @4856 NONAME ??_R3P_YUV420P_RGB24_Registration@@8 @4859 NONAME ??_R3P_YUV420P_RGB32@@8 @4860 NONAME ??_R3P_YUV420P_RGB32_Registration@@8 @4863 NONAME ??_R3P_YUV420P_YUV411P@@8 @4864 NONAME ??_R3P_YUV420P_YUV411P_Registration@@8 @4865 NONAME ??_R3P_YUV422_YUV420P@@8 @4866 NONAME ??_R3P_YUV422_YUV420P_Registration@@8 @4867 NONAME ??_R3P_YUV422_YUV422@@8 @4868 NONAME ??_R3P_YUV422_YUV422_Registration@@8 @4869 NONAME ??_R3RouteEntry@PIPSocket@@8 @4870 NONAME ??_R3SelectList@PSocket@@8 @4871 NONAME ??_R3ServiceManager@@8 @4872 NONAME ??_R3strstreambuf@std@@8 @5692 NONAME ??_R3Table@PHashTable@@8 @4873 NONAME ??_R3Win95_ServiceManager@@8 @4874 NONAME ??_R3WinSNMPLoader@@8 @6716 NONAME ??_R3Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@8 @7335 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@8 @7336 NONAME ??_R3Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@8 @7337 NONAME ??_R3WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@8 @7338 NONAME ??_R3WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@8 @6889 NONAME ??_R3WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@8 @7339 NONAME ??_R3WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@8 @7340 NONAME ??_R3WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@8 @7341 NONAME ??_R4?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ @5693 NONAME ??_R4?$PArray@VPString@@@@6B@ @4875 NONAME ??_R4?$PArray@VPWaveBuffer@@@@6B@ @4876 NONAME ??_R4?$PArray@VPWin32PacketBuffer@@@@6B@ @4877 NONAME ??_R4?$PBaseArray@D@@6B@ @4878 NONAME ??_R4?$PBaseArray@E@@6B@ @4879 NONAME ??_R4?$PBaseArray@F@@6B@ @4880 NONAME ??_R4?$PBaseArray@G@@6B@ @4881 NONAME ??_R4?$PBaseArray@H@@6B@ @4882 NONAME ??_R4?$PBaseArray@I@@6B@ @4883 NONAME ??_R4?$PBaseArray@J@@6B@ @4884 NONAME ??_R4?$PBaseArray@K@@6B@ @4885 NONAME ??_R4?$PBaseArray@PAVElement@PHashTable@@@@6B@ @4886 NONAME ??_R4?$PBaseArray@PAVPObject@@@@6B@ @4887 NONAME ??_R4?$PDevicePluginAdapter@VPSoundChannel@@@@6B@ @7342 NONAME ??_R4?$PDevicePluginAdapter@VPVideoInputDevice@@@@6B@ @7343 NONAME ??_R4?$PDevicePluginAdapter@VPVideoOutputDevice@@@@6B@ @7344 NONAME ??_R4?$PDictionary@VPCaselessString@@VPIPCacheData@@@@6B@ @4888 NONAME ??_R4?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@6B@ @4889 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@6B@ @4890 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPPointer@@@@6B@ @5962 NONAME ??_R4?$PDictionary@VPOrdinalKey@@VPThread@@@@6B@ @4891 NONAME ??_R4?$PDictionary@VPString@@VPDynaLink@@@@6B@ @5882 NONAME ??_R4?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7345 NONAME ??_R4?$PFactory@VPPluginModuleManager@@VPString@@@@6B@ @6890 NONAME ??_R4?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6891 NONAME ??_R4?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7346 NONAME ??_R4?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7347 NONAME ??_R4?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7348 NONAME ??_R4?$PList@VInterfaceEntry@PIPSocket@@@@6B@ @7653 NONAME ??_R4?$PList@VPDynaLink@@@@6B@ @4892 NONAME ??_R4?$PList@VPNotifier@@@@6B@ @4893 NONAME ??_R4?$PList@VPPluginService@@@@6B@ @4894 NONAME ??_R4?$PList@VPSafeObject@@@@6B@ @7059 NONAME ??_R4?$PList@VPSocket@@@@6B@ @4895 NONAME ??_R4?$PList@VPString@@@@6B@ @4896 NONAME ??_R4?$PList@VPThread@@@@6B@ @4897 NONAME ??_R4?$PList@VPTimer@@@@6B@ @4898 NONAME ??_R4?$POrdinalDictionary@VPString@@@@6B@ @4899 NONAME ??_R4?$PScalarArray@F@@6B@ @4900 NONAME ??_R4?$PScalarArray@G@@6B@ @4901 NONAME ??_R4?$PScalarArray@H@@6B@ @4902 NONAME ??_R4?$PScalarArray@I@@6B@ @4903 NONAME ??_R4?$PScalarArray@J@@6B@ @4904 NONAME ??_R4?$PScalarArray@K@@6B@ @4905 NONAME ??_R4?$PSet@VPString@@@@6B@ @4906 NONAME ??_R4?$PSortedList@VPString@@@@6B@ @4907 NONAME ??_R4?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@6B@ @16434 NONAME ??_R4?$PStringDictionary@VPOrdinalKey@@@@6B@ @4908 NONAME ??_R4?$PStringDictionary@VPString@@@@6B@ @4909 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@6B@ @16435 NONAME ??_R4?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@6B@ @16436 NONAME ??_R4?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@6B@ @16437 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7349 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7350 NONAME ??_R4?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7351 NONAME ??_R4?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6892 NONAME ??_R4?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6893 NONAME ??_R4Address@PIPSocket@@6B@ @4910 NONAME ??_R4Buffer@PDebugStream@@6B@ @4911 NONAME ??_R4Buffer@PStringStream@@6B@ @4912 NONAME ??_R4Buffer@PSystemLog@@6B@ @4913 NONAME ??_R4CMCDLL@PMail@@6B@ @4914 NONAME ??_R4DeleteObjectsTimeout_PNotifier@PSafeCollection@@6B@ @4915 NONAME ??_R4HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@6B@ @16438 NONAME ??_R4HandleDisplay_PNotifier@PVideoOutputDevice_Window@@6B@ @16439 NONAME ??_R4HouseKeepingThread@PProcess@@6B@ @4916 NONAME ??_R4InterfaceEntry@PIPSocket@@6B@ @4917 NONAME ??_R4length_error@std@@6B@ @6091 NONAME ??_R4logic_error@std@@6B@ @6092 NONAME ??_R4MAPIDLL@PMail@@6B@ @4918 NONAME ??_R4Nest@PReadWriteMutex@@6B@ @4919 NONAME ??_R4NT_ServiceManager@@6B@ @4920 NONAME ??_R4ostrstream@std@@6B@ @5694 NONAME ??_R4out_of_range@std@@6B@ @6093 NONAME ??_R4PAbstractArray@@6B@ @4922 NONAME ??_R4PAbstractDictionary@@6B@ @4923 NONAME ??_R4PAbstractList@@6B@ @4924 NONAME ??_R4PAbstractSet@@6B@ @4925 NONAME ??_R4PAbstractSortedList@@6B@ @4926 NONAME ??_R4PArgList@@6B@ @4927 NONAME ??_R4PArrayObjects@@6B@ @4928 NONAME ??_R4PBitArray@@6B@ @4929 NONAME ??_R4PBYTEArray@@6B@ @4930 NONAME ??_R4PCaselessString@@6B@ @4931 NONAME ??_R4PChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5695 NONAME ??_R4PChannel@@6BPObject@@@ @4933 NONAME ??_R4PChannelStreamBuffer@@6B@ @4934 NONAME ??_R4PCharArray@@6B@ @4935 NONAME ??_R4PCollection@@6B@ @4936 NONAME ??_R4PColourConverter@@6B@ @4937 NONAME ??_R4PColourConverterRegistration@@6B@ @4938 NONAME ??_R4PCondMutex@@6B@ @4939 NONAME ??_R4PConfig@@6B@ @4940 NONAME ??_R4PConfigArgs@@6B@ @4941 NONAME ??_R4PConsoleChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5696 NONAME ??_R4PConsoleChannel@@6BPObject@@@ @4943 NONAME ??_R4PContainer@@6B@ @4944 NONAME ??_R4PCriticalSection@@6B@ @5850 NONAME ??_R4PDebugStream@@6B@ @4945 NONAME ??_R4PDevicePluginAdapterBase@@6B@ @7352 NONAME ??_R4PDevicePluginServiceDescriptor@@6B@ @16440 NONAME ??_R4PDirectory@@6B@ @4946 NONAME ??_R4PDynaLink@@6B@ @4947 NONAME ??_R4PEthSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5697 NONAME ??_R4PEthSocket@@6BPObject@@@ @4949 NONAME ??_R4PFactoryBase@@6B@ @6894 NONAME ??_R4PFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5698 NONAME ??_R4PFile@@6BPObject@@@ @4951 NONAME ??_R4PFileInfo@@6B@ @4952 NONAME ??_R4PFilePath@@6B@ @4953 NONAME ??_R4PHashTable@@6B@ @4954 NONAME ??_R4PHostByAddr@@6B@ @4955 NONAME ??_R4PHostByName@@6B@ @4956 NONAME ??_R4PICMPDLL@@6B@ @4957 NONAME ??_R4PICMPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5699 NONAME ??_R4PICMPSocket@@6BPObject@@@ @4959 NONAME ??_R4PImageDLL@@6B@ @4960 NONAME ??_R4PIndirectChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5700 NONAME ??_R4PIndirectChannel@@6BPObject@@@ @4962 NONAME ??_R4PIntCondMutex@@6B@ @4963 NONAME ??_R4PIPCacheData@@6B@ @4964 NONAME ??_R4PIPCacheKey@@6B@ @4965 NONAME ??_R4PIPDatagramSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5701 NONAME ??_R4PIPDatagramSocket@@6BPObject@@@ @4967 NONAME ??_R4PIPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5702 NONAME ??_R4PIPSocket@@6BPObject@@@ @4969 NONAME ??_R4PIPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5703 NONAME ??_R4PIPXSocket@@6BPObject@@@ @4971 NONAME ??_R4PluginLoaderStartup@@6B@ @6345 NONAME ??_R4PMail@@6B@ @4972 NONAME ??_R4PNotifier@@6B@ @4974 NONAME ??_R4PNotifierFunction@@6B@ @4975 NONAME ??_R4PObject@@6B@ @4976 NONAME ??_R4POrdinalKey@@6B@ @4977 NONAME ??_R4POrdinalToString@@6B@ @4978 NONAME ??_R4PPipeChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5704 NONAME ??_R4PPipeChannel@@6BPObject@@@ @4980 NONAME ??_R4PPluginManager@@6B@ @4981 NONAME ??_R4PPluginModuleManager@@6B@ @5884 NONAME ??_R4PPluginService@@6B@ @4982 NONAME ??_R4PPluginServiceDescriptor@@6B@ @16441 NONAME ??_R4PPointer@@6B@ @5963 NONAME ??_R4PProcess@@6B@ @4983 NONAME ??_R4PProcessStartup@@6B@ @6346 NONAME ??_R4PQoS@@6B@ @4984 NONAME ??_R4PRASDLL@@6B@ @4985 NONAME ??_R4PReadWriteMutex@@6B@ @4986 NONAME ??_R4PRegularExpression@@6B@ @4987 NONAME ??_R4PRemoteConnection@@6B@ @4988 NONAME ??_R4PSafeCollection@@6B@ @4989 NONAME ??_R4PSafeObject@@6B@ @4990 NONAME ??_R4PSafePtrBase@@6B@ @4991 NONAME ??_R4PSemaphore@@6B@ @4992 NONAME ??_R4PSerialChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5705 NONAME ??_R4PSerialChannel@@6BPObject@@@ @4994 NONAME ??_R4PServiceProcess@@6B@ @4995 NONAME ??_R4PSimpleThread@@6B@ @4996 NONAME ??_R4PSmartObject@@6B@ @4997 NONAME ??_R4PSmartPointer@@6B@ @4998 NONAME ??_R4PSmartPtrInspector@@6B@ @5964 NONAME ??_R4PSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5706 NONAME ??_R4PSocket@@6BPObject@@@ @5000 NONAME ??_R4PSortedStringList@@6B@ @5001 NONAME ??_R4PSound@@6B@ @5002 NONAME ??_R4PSoundChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5707 NONAME ??_R4PSoundChannel@@6BPObject@@@ @5004 NONAME ??_R4PSoundChannelWin32@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5708 NONAME ??_R4PSoundChannelWin32@@6BPObject@@@ @5006 NONAME ??_R4PSPXSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5709 NONAME ??_R4PSPXSocket@@6BPObject@@@ @5008 NONAME ??_R4PStandardColourConverter@@6B@ @5009 NONAME ??_R4PString@@6B@ @5010 NONAME ??_R4PStringArray@@6B@ @5011 NONAME ??_R4PStringList@@6B@ @5012 NONAME ??_R4PStringSet@@6B@ @5013 NONAME ??_R4PStringStream@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5710 NONAME ??_R4PStringStream@@6BPString@@@ @5015 NONAME ??_R4PStringToOrdinal@@6B@ @5016 NONAME ??_R4PStringToString@@6B@ @5017 NONAME ??_R4PStructuredFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5711 NONAME ??_R4PStructuredFile@@6BPObject@@@ @5019 NONAME ??_R4PSync@@6B@ @16585 NONAME ??_R4PSyncPoint@@6B@ @5020 NONAME ??_R4PSynonymColour@@6B@ @5021 NONAME ??_R4PSynonymColourRegistration@@6B@ @5022 NONAME ??_R4PSystemLog@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5712 NONAME ??_R4PSystemLog@@6BPObject@@@ @5024 NONAME ??_R4PTCPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5713 NONAME ??_R4PTCPSocket@@6BPObject@@@ @5026 NONAME ??_R4PTextFile@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5714 NONAME ??_R4PTextFile@@6BPObject@@@ @5028 NONAME ??_R4PThread@@6B@ @5029 NONAME ??_R4PTime@@6B@ @5030 NONAME ??_R4PTimedMutex@@6B@ @16586 NONAME ??_R4PTimeInterval@@6B@ @5031 NONAME ??_R4PTimer@@6B@ @5032 NONAME ??_R4PTimerList@@6B@ @5033 NONAME ??_R4PUDPSocket@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5715 NONAME ??_R4PUDPSocket@@6BPObject@@@ @5035 NONAME ??_R4PVideoChannel@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5716 NONAME ??_R4PVideoChannel@@6BPObject@@@ @5037 NONAME ??_R4PVideoDevice@@6B@ @5038 NONAME ??_R4PVideoDeviceBitmap@@6B@ @5039 NONAME ??_R4PVideoInputDevice@@6B@ @5040 NONAME ??_R4PVideoInputDevice_FakeVideo@@6B@ @5041 NONAME ??_R4PVideoInputDevice_VideoForWindows@@6B@ @5042 NONAME ??_R4PVideoOutputDevice@@6B@ @5044 NONAME ??_R4PVideoOutputDeviceRGB@@6B@ @16442 NONAME ??_R4PVideoOutputDevice_NULLOutput@@6B@ @5045 NONAME ??_R4PVideoOutputDevice_Window@@6B@ @16443 NONAME ??_R4PVideoOutputDevice_Window_PluginServiceDescriptor@@6B@ @16444 NONAME ??_R4PWaveBuffer@@6B@ @5046 NONAME ??_R4PWaveFormat@@6B@ @5047 NONAME ??_R4PWin32PacketBuffer@@6B@ @5048 NONAME ??_R4PWin32PacketDriver@@6B@ @5049 NONAME ??_R4PWin32PacketSYS@@6B@ @5050 NONAME ??_R4PWin32PacketVxD@@6B@ @5051 NONAME ??_R4PWin32SnmpLibrary@@6B@ @5052 NONAME ??_R4PWinQoS@@6B@ @5053 NONAME ??_R4PWinSock@@6B?$basic_iostream@DU?$char_traits@D@std@@@std@@@ @5717 NONAME ??_R4PWinSock@@6BPObject@@@ @5055 NONAME ??_R4P_BGR24_RGB24@@6B@ @16445 NONAME ??_R4P_BGR24_RGB24_Registration@@6B@ @16446 NONAME ??_R4P_BGR24_RGB32@@6B@ @16447 NONAME ??_R4P_BGR24_RGB32_Registration@@6B@ @16448 NONAME ??_R4P_BGR24_YUV420P@@6B@ @5056 NONAME ??_R4P_BGR24_YUV420P_Registration@@6B@ @5057 NONAME ??_R4P_BGR32_RGB24@@6B@ @16449 NONAME ??_R4P_BGR32_RGB24_Registration@@6B@ @16450 NONAME ??_R4P_BGR32_RGB32@@6B@ @16451 NONAME ??_R4P_BGR32_RGB32_Registration@@6B@ @16452 NONAME ??_R4P_BGR32_YUV420P@@6B@ @5058 NONAME ??_R4P_BGR32_YUV420P_Registration@@6B@ @5059 NONAME ??_R4P_Grey_YUV420P@@6B@ @5062 NONAME ??_R4P_Grey_YUV420P_Registration@@6B@ @5063 NONAME ??_R4P_RGB24_BGR24@@6B@ @16453 NONAME ??_R4P_RGB24_BGR24_Registration@@6B@ @16454 NONAME ??_R4P_RGB24_BGR32@@6B@ @16455 NONAME ??_R4P_RGB24_BGR32_Registration@@6B@ @16456 NONAME ??_R4P_RGB24_RGB32@@6B@ @5066 NONAME ??_R4P_RGB24_RGB32_Registration@@6B@ @5067 NONAME ??_R4P_RGB24_YUV420P@@6B@ @5068 NONAME ??_R4P_RGB24_YUV420P_Registration@@6B@ @5069 NONAME ??_R4P_RGB32_BGR24@@6B@ @16457 NONAME ??_R4P_RGB32_BGR24_Registration@@6B@ @16458 NONAME ??_R4P_RGB32_BGR32@@6B@ @16459 NONAME ??_R4P_RGB32_BGR32_Registration@@6B@ @16460 NONAME ??_R4P_RGB32_RGB24@@6B@ @5072 NONAME ??_R4P_RGB32_RGB24_Registration@@6B@ @5073 NONAME ??_R4P_RGB32_YUV420P@@6B@ @5074 NONAME ??_R4P_RGB32_YUV420P_Registration@@6B@ @5075 NONAME ??_R4P_SBGGR8_RGB24@@6B@ @7603 NONAME ??_R4P_SBGGR8_RGB24_Registration@@6B@ @7604 NONAME ??_R4P_SBGGR8_YUV420P@@6B@ @7633 NONAME ??_R4P_SBGGR8_YUV420P_Registration@@6B@ @7634 NONAME ??_R4P_UYV444_YUV420P@@6B@ @5076 NONAME ??_R4P_UYV444_YUV420P_Registration@@6B@ @5077 NONAME ??_R4P_UYVY422_YUV420P@@6B@ @5078 NONAME ??_R4P_UYVY422_YUV420P_Registration@@6B@ @5079 NONAME ??_R4P_YUV411P_YUV420P@@6B@ @5080 NONAME ??_R4P_YUV411P_YUV420P_Registration@@6B@ @5081 NONAME ??_R4P_YUV420P_BGR24@@6B@ @5082 NONAME ??_R4P_YUV420P_BGR24_Registration@@6B@ @5085 NONAME ??_R4P_YUV420P_BGR32@@6B@ @5086 NONAME ??_R4P_YUV420P_BGR32_Registration@@6B@ @5087 NONAME ??_R4P_YUV420P_RGB24@@6B@ @5088 NONAME ??_R4P_YUV420P_RGB24_Registration@@6B@ @5091 NONAME ??_R4P_YUV420P_RGB32@@6B@ @5092 NONAME ??_R4P_YUV420P_RGB32_Registration@@6B@ @5095 NONAME ??_R4P_YUV420P_YUV411P@@6B@ @5096 NONAME ??_R4P_YUV420P_YUV411P_Registration@@6B@ @5097 NONAME ??_R4P_YUV422_YUV420P@@6B@ @5098 NONAME ??_R4P_YUV422_YUV420P_Registration@@6B@ @5099 NONAME ??_R4P_YUV422_YUV422@@6B@ @5100 NONAME ??_R4P_YUV422_YUV422_Registration@@6B@ @5101 NONAME ??_R4RouteEntry@PIPSocket@@6B@ @5102 NONAME ??_R4SelectList@PSocket@@6B@ @5103 NONAME ??_R4ServiceManager@@6B@ @5104 NONAME ??_R4strstreambuf@std@@6B@ @5718 NONAME ??_R4Table@PHashTable@@6B@ @5105 NONAME ??_R4Win95_ServiceManager@@6B@ @5106 NONAME ??_R4WinSNMPLoader@@6B@ @6717 NONAME ??_R4Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@6B@ @7353 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@6B@ @7354 NONAME ??_R4Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7355 NONAME ??_R4WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@6B@ @7356 NONAME ??_R4WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@6B@ @6895 NONAME ??_R4WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@6B@ @7357 NONAME ??_R4WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@6B@ @7358 NONAME ??_R4WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@6B@ @7359 NONAME ??_S?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ @5719 NONAME ??_U@YAPAXI@Z @6718 NONAME ??_V@YAXPAX@Z @6719 NONAME ?Abort@PSoundChannel@@UAEHXZ @3634 NONAME ?Abort@PSoundChannelWin32@@UAEHXZ @3635 NONAME ?AbortCommandString@PChannel@@QAEXXZ @1408 NONAME ?AbstractContains@PHashTable@@IBEHABVPObject@@@Z @1409 NONAME ?AbstractGetAt@PAbstractDictionary@@UBEPAVPObject@@ABV2@@Z @1410 NONAME ?AbstractGetDataAt@PHashTable@@MBEAAVPObject@@H@Z @1411 NONAME ?AbstractGetKeyAt@PHashTable@@MBEABVPObject@@H@Z @1412 NONAME ?AbstractSetAt@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @1413 NONAME ?Accept@PSocket@@UAEHAAV1@@Z @1414 NONAME ?Accept@PSPXSocket@@UAEHAAVPSocket@@@Z @1415 NONAME ?Accept@PTCPSocket@@UAEHAAVPSocket@@@Z @1416 NONAME ?Access@PFile@@QAEHW4OpenMode@1@@Z @1417 NONAME ?Access@PFile@@SAHABVPFilePath@@W4OpenMode@1@@Z @1418 NONAME ?Acknowledge@PSyncPointAck@@QAEXXZ @1419 NONAME ?Add@PNotifyIconData@@QAEXXZ @1420 NONAME ?AddEntry@PIPCacheData@@QAEXPAUaddrinfo@@@Z @3877 NONAME ?AddNotifier@PPluginManager@@QAEXABVPNotifier@@H@Z @3996 NONAME ?adjustfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5720 NONAME ?all@?$_Locbase@H@std@@2HB @5721 NONAME ?allocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEPAPAVPPluginModuleManager@@I@Z @6347 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@I@Z @6896 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@I@Z @6348 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7360 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6897 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6898 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7361 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7362 NONAME ?allocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7363 NONAME ?allocate@?$allocator@VPString@@@std@@QAEPAVPString@@I@Z @6351 NONAME ?AllowDeleteObjects@PCollection@@QAEXH@Z @1424 NONAME ?app@?$_Iosb@H@std@@2W4_Openmode@12@B @5722 NONAME ?Append@PAbstractDictionary@@EAEHPAVPObject@@@Z @1425 NONAME ?Append@PAbstractList@@UAEHPAVPObject@@@Z @1426 NONAME ?Append@PAbstractSet@@UAEHPAVPObject@@@Z @1427 NONAME ?Append@PAbstractSortedList@@UAEHPAVPObject@@@Z @1428 NONAME ?Append@PArrayObjects@@UAEHPAVPObject@@@Z @1429 NONAME ?AppendElement@Table@PHashTable@@QAEHPAVPObject@@0@Z @1430 NONAME ?AppendString@PSortedStringList@@QAEHABVPString@@@Z @1431 NONAME ?AppendString@PStringArray@@QAEHABVPString@@@Z @1432 NONAME ?AppendString@PStringList@@QAEHABVPString@@@Z @1433 NONAME ?ApplyFormat@PVideoDeviceBitmap@@QAEHPAUHWND__@@ABUFormatTableEntry@@@Z @16568 NONAME ?ApplyQoS@PUDPSocket@@MAEHXZ @3545 NONAME ?AreAllRecordBuffersFull@PSoundChannel@@UAEHXZ @3636 NONAME ?AreAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @3637 NONAME ?Ascend@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @1436 NONAME ?AsInt64@PString@@QBE_JI@Z @1437 NONAME ?AsInteger@PString@@QBEJI@Z @1438 NONAME ?AsNumeric@PIPSocket@@SAIVAddress@1@@Z @16462 NONAME ?AsReal@PString@@QBENXZ @1439 NONAME ?Assign@PSafePtrBase@@QAEXABV1@@Z @7640 NONAME ?Assign@PSafePtrBase@@QAEXABVPSafeCollection@@@Z @7641 NONAME ?Assign@PSafePtrBase@@QAEXH@Z @7642 NONAME ?Assign@PSafePtrBase@@QAEXPAVPSafeObject@@@Z @7643 NONAME ?AssignContents@PAbstractArray@@MAEXABVPContainer@@@Z @1444 NONAME ?AssignContents@PAbstractList@@MAEXABVPContainer@@@Z @1445 NONAME ?AssignContents@PAbstractSet@@MAEXABVPContainer@@@Z @1446 NONAME ?AssignContents@PAbstractSortedList@@MAEXABVPContainer@@@Z @1447 NONAME ?AssignContents@PArrayObjects@@MAEXABVPContainer@@@Z @1448 NONAME ?AssignContents@PContainer@@MAEXABV1@@Z @1449 NONAME ?AssignContents@PDirectory@@MAEXABVPContainer@@@Z @1450 NONAME ?AssignContents@PFilePath@@MAEXABVPContainer@@@Z @1451 NONAME ?AssignContents@PHashTable@@MAEXABVPContainer@@@Z @1452 NONAME ?AssignContents@PStringStream@@MAEXABVPContainer@@@Z @1453 NONAME ?AsString@Address@PIPSocket@@QBE?AVPString@@XZ @1454 NONAME ?AsString@PTime@@QBE?AVPString@@ABV2@H@Z @1455 NONAME ?AsString@PTime@@QBE?AVPString@@PBDH@Z @1456 NONAME ?AsString@PTime@@QBE?AVPString@@W4TimeFormat@1@H@Z @1457 NONAME ?AsString@PTimeInterval@@QBE?AVPString@@HW4Formats@1@H@Z @1458 NONAME ?AsUCS2@PString@@QBE?AV?$PScalarArray@G@@XZ @1459 NONAME ?AsUnsigned64@PString@@QBE_KI@Z @1460 NONAME ?AsUnsigned@PString@@QBEKI@Z @1461 NONAME ?ate@?$_Iosb@H@std@@2W4_Openmode@12@B @5723 NONAME ?Attach@?$PBaseArray@D@@QAEXPBDH@Z @1462 NONAME ?Attach@?$PBaseArray@E@@QAEXPBEH@Z @1463 NONAME ?Attach@?$PBaseArray@F@@QAEXPBFH@Z @1464 NONAME ?Attach@?$PBaseArray@G@@QAEXPBGH@Z @1465 NONAME ?Attach@?$PBaseArray@H@@QAEXPBHH@Z @1466 NONAME ?Attach@?$PBaseArray@I@@QAEXPBIH@Z @1467 NONAME ?Attach@?$PBaseArray@J@@QAEXPBJH@Z @1468 NONAME ?Attach@?$PBaseArray@K@@QAEXPBKH@Z @1469 NONAME ?Attach@PAbstractArray@@QAEXPBXH@Z @1470 NONAME ?Attach@PBitArray@@QAEXPBXH@Z @1471 NONAME ?AttachVideoPlayer@PVideoChannel@@UAEXPAVPVideoOutputDevice@@H@Z @1472 NONAME ?AttachVideoReader@PVideoChannel@@UAEXPAVPVideoInputDevice@@H@Z @1473 NONAME ?badbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5724 NONAME ?basefield@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5725 NONAME ?beg@?$_Iosb@H@std@@2W4_Seekdir@12@B @5726 NONAME ?begin@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@XZ @6352 NONAME ?begin@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE?AVconst_iterator@12@XZ @16463 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE?AViterator@12@XZ @6353 NONAME ?begin@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE?AVconst_iterator@12@XZ @6354 NONAME ?begin@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@XZ @6899 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@XZ @6355 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7364 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6900 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6901 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7365 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7366 NONAME ?begin@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7367 NONAME ?Begin@PTrace@@SAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@IPBDH@Z @5727 NONAME ?BeginRead@PWin32PacketSYS@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @1475 NONAME ?BeginRead@PWin32PacketVxD@@UAEHPAXKAAKAAVPWin32Overlapped@@@Z @1476 NONAME ?BeginWrite@PWin32PacketSYS@@UAEHPBXKAAVPWin32Overlapped@@@Z @1477 NONAME ?BeginWrite@PWin32PacketVxD@@UAEHPBXKAAVPWin32Overlapped@@@Z @1478 NONAME ?bestEffortDSCP@PQoS@@2DA @3546 NONAME ?binary@?$_Iosb@H@std@@2W4_Openmode@12@B @5728 NONAME ?BindInterface@PWin32PacketSYS@@UAEHABVPString@@@Z @1479 NONAME ?BindInterface@PWin32PacketVxD@@UAEHABVPString@@@Z @1480 NONAME ?bInitialized@?1??WspiapiLoad@@9@4@4HA @3878 NONAME ?boolalpha@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5729 NONAME ?Byte1@Address@PIPSocket@@QBEEXZ @1481 NONAME ?Byte2@Address@PIPSocket@@QBEEXZ @1482 NONAME ?Byte3@Address@PIPSocket@@QBEEXZ @1483 NONAME ?Byte4@Address@PIPSocket@@QBEEXZ @1484 NONAME ?CalculateFrameBytes@PVideoDevice@@SAIIIABVPString@@@Z @1485 NONAME ?Call@DeleteObjectsTimeout_PNotifier@PSafeCollection@@UBEXAAVPObject@@H@Z @1486 NONAME ?Call@HandleCapture_PNotifier@PVideoInputDevice_VideoForWindows@@UBEXAAVPObject@@H@Z @16464 NONAME ?Call@HandleDisplay_PNotifier@PVideoOutputDevice_Window@@UBEXAAVPObject@@H@Z @16465 NONAME ?CallNotifier@PPluginManager@@IAEXAAVPDynaLink@@H@Z @3997 NONAME ?CanCaptureVideo@PVideoInputDevice@@UBEHXZ @1487 NONAME ?CanCaptureVideo@PVideoOutputDevice@@UBEHXZ @1488 NONAME ?CanReadAndWrite@PPipeChannel@@SAHXZ @1489 NONAME ?CanTrace@PTrace@@SAHI@Z @1490 NONAME ?capacity@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @6358 NONAME ?capacity@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @6359 NONAME ?Change@PDirectory@@QBEHXZ @1491 NONAME ?Change@PDirectory@@SAHABVPString@@@Z @1492 NONAME ?CharToString@PConfigArgs@@IBE?AVPString@@D@Z @1493 NONAME ?Class@?$PArray@VPString@@@@SAPBDXZ @1494 NONAME ?Class@?$PArray@VPWaveBuffer@@@@SAPBDXZ @1495 NONAME ?Class@?$PArray@VPWin32PacketBuffer@@@@SAPBDXZ @1496 NONAME ?Class@?$PBaseArray@D@@SAPBDXZ @1497 NONAME ?Class@?$PBaseArray@E@@SAPBDXZ @1498 NONAME ?Class@?$PBaseArray@F@@SAPBDXZ @1499 NONAME ?Class@?$PBaseArray@G@@SAPBDXZ @1500 NONAME ?Class@?$PBaseArray@H@@SAPBDXZ @1501 NONAME ?Class@?$PBaseArray@I@@SAPBDXZ @1502 NONAME ?Class@?$PBaseArray@J@@SAPBDXZ @1503 NONAME ?Class@?$PBaseArray@K@@SAPBDXZ @1504 NONAME ?Class@?$PBaseArray@PAVElement@PHashTable@@@@SAPBDXZ @1505 NONAME ?Class@?$PBaseArray@PAVPObject@@@@SAPBDXZ @1506 NONAME ?Class@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@SAPBDXZ @1507 NONAME ?Class@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@SAPBDXZ @1508 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@SAPBDXZ @1509 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPPointer@@@@SAPBDXZ @5965 NONAME ?Class@?$PDictionary@VPOrdinalKey@@VPThread@@@@SAPBDXZ @1510 NONAME ?Class@?$PDictionary@VPString@@VPDynaLink@@@@SAPBDXZ @5886 NONAME ?Class@?$PList@VInterfaceEntry@PIPSocket@@@@SAPBDXZ @7654 NONAME ?Class@?$PList@VPDynaLink@@@@SAPBDXZ @3998 NONAME ?Class@?$PList@VPNotifier@@@@SAPBDXZ @3999 NONAME ?Class@?$PList@VPPluginService@@@@SAPBDXZ @3639 NONAME ?Class@?$PList@VPSafeObject@@@@SAPBDXZ @7060 NONAME ?Class@?$PList@VPSocket@@@@SAPBDXZ @1511 NONAME ?Class@?$PList@VPString@@@@SAPBDXZ @1512 NONAME ?Class@?$PList@VPThread@@@@SAPBDXZ @1513 NONAME ?Class@?$PList@VPTimer@@@@SAPBDXZ @1514 NONAME ?Class@?$POrdinalDictionary@VPString@@@@SAPBDXZ @1515 NONAME ?Class@?$PSet@VPString@@@@SAPBDXZ @1516 NONAME ?Class@?$PSortedList@VPString@@@@SAPBDXZ @1517 NONAME ?Class@?$PStringDictionary@VPOrdinalKey@@@@SAPBDXZ @1518 NONAME ?Class@?$PStringDictionary@VPString@@@@SAPBDXZ @1519 NONAME ?Class@CMCDLL@PMail@@SAPBDXZ @1520 NONAME ?Class@HouseKeepingThread@PProcess@@SAPBDXZ @1521 NONAME ?Class@InterfaceEntry@PIPSocket@@SAPBDXZ @1522 NONAME ?Class@MAPIDLL@PMail@@SAPBDXZ @1523 NONAME ?Class@Nest@PReadWriteMutex@@SAPBDXZ @1524 NONAME ?Class@PAbstractArray@@SAPBDXZ @1525 NONAME ?Class@PAbstractDictionary@@SAPBDXZ @1526 NONAME ?Class@PAbstractList@@SAPBDXZ @1527 NONAME ?Class@PAbstractSet@@SAPBDXZ @1528 NONAME ?Class@PAbstractSortedList@@SAPBDXZ @1529 NONAME ?Class@PArgList@@SAPBDXZ @1530 NONAME ?Class@PArrayObjects@@SAPBDXZ @1531 NONAME ?Class@PBitArray@@SAPBDXZ @1532 NONAME ?Class@PBYTEArray@@SAPBDXZ @1533 NONAME ?Class@PCaselessString@@SAPBDXZ @1534 NONAME ?Class@PChannel@@SAPBDXZ @1535 NONAME ?Class@PCharArray@@SAPBDXZ @1536 NONAME ?Class@PCollection@@SAPBDXZ @1537 NONAME ?Class@PColourConverter@@SAPBDXZ @1538 NONAME ?Class@PColourConverterRegistration@@SAPBDXZ @1539 NONAME ?Class@PCondMutex@@SAPBDXZ @1540 NONAME ?Class@PConfig@@SAPBDXZ @1541 NONAME ?Class@PConfigArgs@@SAPBDXZ @1542 NONAME ?Class@PConsoleChannel@@SAPBDXZ @1543 NONAME ?Class@PContainer@@SAPBDXZ @1544 NONAME ?Class@PCriticalSection@@SAPBDXZ @5851 NONAME ?Class@PDirectory@@SAPBDXZ @1545 NONAME ?Class@PDynaLink@@SAPBDXZ @1546 NONAME ?Class@PEthSocket@@SAPBDXZ @1547 NONAME ?Class@PFile@@SAPBDXZ @1549 NONAME ?Class@PFileInfo@@SAPBDXZ @1550 NONAME ?Class@PFilePath@@SAPBDXZ @1551 NONAME ?Class@PHashTable@@SAPBDXZ @1552 NONAME ?Class@PICMPDLL@@SAPBDXZ @1553 NONAME ?Class@PICMPSocket@@SAPBDXZ @1554 NONAME ?Class@PImageDLL@@SAPBDXZ @1555 NONAME ?Class@PIndirectChannel@@SAPBDXZ @1556 NONAME ?Class@PIntCondMutex@@SAPBDXZ @1557 NONAME ?Class@PIPCacheData@@SAPBDXZ @1558 NONAME ?Class@PIPCacheKey@@SAPBDXZ @1559 NONAME ?Class@PIPDatagramSocket@@SAPBDXZ @1560 NONAME ?Class@PIPSocket@@SAPBDXZ @1561 NONAME ?Class@PIPXSocket@@SAPBDXZ @1562 NONAME ?Class@PluginLoaderStartup@@SAPBDXZ @6360 NONAME ?Class@PMail@@SAPBDXZ @1563 NONAME ?Class@PNotifier@@SAPBDXZ @1565 NONAME ?Class@PNotifierFunction@@SAPBDXZ @1566 NONAME ?Class@PObject@@SAPBDXZ @1567 NONAME ?Class@POrdinalKey@@SAPBDXZ @1568 NONAME ?Class@POrdinalToString@@SAPBDXZ @1569 NONAME ?Class@PPipeChannel@@SAPBDXZ @1570 NONAME ?Class@PPluginManager@@SAPBDXZ @3640 NONAME ?Class@PPointer@@SAPBDXZ @5966 NONAME ?Class@PProcess@@SAPBDXZ @1571 NONAME ?Class@PProcessStartup@@SAPBDXZ @6361 NONAME ?Class@PQoS@@SAPBDXZ @3548 NONAME ?Class@PRASDLL@@SAPBDXZ @1572 NONAME ?Class@PReadWriteMutex@@SAPBDXZ @1573 NONAME ?Class@PRegularExpression@@SAPBDXZ @1574 NONAME ?Class@PRemoteConnection@@SAPBDXZ @1575 NONAME ?Class@PSafeCollection@@SAPBDXZ @1576 NONAME ?Class@PSafeObject@@SAPBDXZ @1577 NONAME ?Class@PSafePtrBase@@SAPBDXZ @1578 NONAME ?Class@PSemaphore@@SAPBDXZ @1579 NONAME ?Class@PSerialChannel@@SAPBDXZ @1580 NONAME ?Class@PServiceProcess@@SAPBDXZ @1581 NONAME ?Class@PSimpleThread@@SAPBDXZ @1582 NONAME ?Class@PSmartObject@@SAPBDXZ @1583 NONAME ?Class@PSmartPointer@@SAPBDXZ @1584 NONAME ?Class@PSmartPtrInspector@@SAPBDXZ @5967 NONAME ?Class@PSocket@@SAPBDXZ @1585 NONAME ?Class@PSortedStringList@@SAPBDXZ @1586 NONAME ?Class@PSound@@SAPBDXZ @1587 NONAME ?Class@PSoundChannel@@SAPBDXZ @1588 NONAME ?Class@PSPXSocket@@SAPBDXZ @1589 NONAME ?Class@PStandardColourConverter@@SAPBDXZ @1590 NONAME ?Class@PString@@SAPBDXZ @1591 NONAME ?Class@PStringArray@@SAPBDXZ @1592 NONAME ?Class@PStringList@@SAPBDXZ @1593 NONAME ?Class@PStringSet@@SAPBDXZ @1594 NONAME ?Class@PStringStream@@SAPBDXZ @1595 NONAME ?Class@PStringToOrdinal@@SAPBDXZ @1596 NONAME ?Class@PStringToString@@SAPBDXZ @1597 NONAME ?Class@PStructuredFile@@SAPBDXZ @1598 NONAME ?Class@PSyncPoint@@SAPBDXZ @1599 NONAME ?Class@PSystemLog@@SAPBDXZ @1600 NONAME ?Class@PTCPSocket@@SAPBDXZ @1601 NONAME ?Class@PTextFile@@SAPBDXZ @1602 NONAME ?Class@PThread@@SAPBDXZ @1603 NONAME ?Class@PTime@@SAPBDXZ @1604 NONAME ?Class@PTimedMutex@@SAPBDXZ @16587 NONAME ?Class@PTimeInterval@@SAPBDXZ @1605 NONAME ?Class@PTimer@@SAPBDXZ @1606 NONAME ?Class@PTimerList@@SAPBDXZ @1607 NONAME ?Class@PUDPSocket@@SAPBDXZ @1608 NONAME ?Class@PVideoChannel@@SAPBDXZ @1609 NONAME ?Class@PVideoDevice@@SAPBDXZ @1610 NONAME ?Class@PVideoInputDevice@@SAPBDXZ @1611 NONAME ?Class@PVideoInputDevice_FakeVideo@@SAPBDXZ @3792 NONAME ?Class@PVideoInputDevice_VideoForWindows@@SAPBDXZ @3641 NONAME ?Class@PVideoOutputDevice@@SAPBDXZ @1613 NONAME ?Class@PVideoOutputDeviceRGB@@SAPBDXZ @16466 NONAME ?Class@PVideoOutputDevice_NULLOutput@@SAPBDXZ @3793 NONAME ?Class@PVideoOutputDevice_Window@@SAPBDXZ @16467 NONAME ?Class@PWaveBuffer@@SAPBDXZ @1617 NONAME ?Class@PWaveFormat@@SAPBDXZ @1618 NONAME ?Class@PWin32PacketBuffer@@SAPBDXZ @1619 NONAME ?Class@PWin32SnmpLibrary@@SAPBDXZ @1620 NONAME ?Class@PWinQoS@@SAPBDXZ @3879 NONAME ?Class@PWinSock@@SAPBDXZ @1621 NONAME ?Class@RouteEntry@PIPSocket@@SAPBDXZ @1622 NONAME ?Class@SelectList@PSocket@@SAPBDXZ @1623 NONAME ?Class@Table@PHashTable@@SAPBDXZ @1624 NONAME ?Class@WinSNMPLoader@@SAPBDXZ @6720 NONAME ?Cleanup@PNotifierList@@AAEXXZ @5968 NONAME ?clear@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEXXZ @6902 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEXXZ @6362 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7368 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6903 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6904 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7369 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7370 NONAME ?clear@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7371 NONAME ?ClearBreak@PSerialChannel@@QAEXXZ @1625 NONAME ?ClearDTR@PSerialChannel@@QAEXXZ @1626 NONAME ?ClearNameCache@PIPSocket@@SAXXZ @1627 NONAME ?ClearOptions@PTrace@@SAXI@Z @1628 NONAME ?ClearRTS@PSerialChannel@@QAEXXZ @1629 NONAME ?Clone@?$PArray@VPString@@@@UBEPAVPObject@@XZ @1630 NONAME ?Clone@?$PArray@VPWaveBuffer@@@@UBEPAVPObject@@XZ @1631 NONAME ?Clone@?$PArray@VPWin32PacketBuffer@@@@UBEPAVPObject@@XZ @1632 NONAME ?Clone@?$PBaseArray@D@@UBEPAVPObject@@XZ @1633 NONAME ?Clone@?$PBaseArray@E@@UBEPAVPObject@@XZ @1634 NONAME ?Clone@?$PBaseArray@F@@UBEPAVPObject@@XZ @1635 NONAME ?Clone@?$PBaseArray@G@@UBEPAVPObject@@XZ @1636 NONAME ?Clone@?$PBaseArray@H@@UBEPAVPObject@@XZ @1637 NONAME ?Clone@?$PBaseArray@I@@UBEPAVPObject@@XZ @1638 NONAME ?Clone@?$PBaseArray@J@@UBEPAVPObject@@XZ @1639 NONAME ?Clone@?$PBaseArray@K@@UBEPAVPObject@@XZ @1640 NONAME ?Clone@?$PBaseArray@PAVElement@PHashTable@@@@UBEPAVPObject@@XZ @1641 NONAME ?Clone@?$PBaseArray@PAVPObject@@@@UBEPAVPObject@@XZ @1642 NONAME ?Clone@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPObject@@XZ @1643 NONAME ?Clone@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPObject@@XZ @1644 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVPObject@@XZ @1645 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPObject@@XZ @5969 NONAME ?Clone@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPObject@@XZ @1646 NONAME ?Clone@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPObject@@XZ @5887 NONAME ?Clone@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPAVPObject@@XZ @7655 NONAME ?Clone@?$PList@VPDynaLink@@@@UBEPAVPObject@@XZ @4000 NONAME ?Clone@?$PList@VPNotifier@@@@UBEPAVPObject@@XZ @4001 NONAME ?Clone@?$PList@VPPluginService@@@@UBEPAVPObject@@XZ @3643 NONAME ?Clone@?$PList@VPSafeObject@@@@UBEPAVPObject@@XZ @7061 NONAME ?Clone@?$PList@VPSocket@@@@UBEPAVPObject@@XZ @1647 NONAME ?Clone@?$PList@VPString@@@@UBEPAVPObject@@XZ @1648 NONAME ?Clone@?$PList@VPThread@@@@UBEPAVPObject@@XZ @1649 NONAME ?Clone@?$PList@VPTimer@@@@UBEPAVPObject@@XZ @1650 NONAME ?Clone@?$POrdinalDictionary@VPString@@@@UBEPAVPObject@@XZ @1651 NONAME ?Clone@?$PSet@VPString@@@@UBEPAVPObject@@XZ @1652 NONAME ?Clone@?$PSortedList@VPString@@@@UBEPAVPObject@@XZ @1653 NONAME ?Clone@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPObject@@XZ @1654 NONAME ?Clone@?$PStringDictionary@VPString@@@@UBEPAVPObject@@XZ @1655 NONAME ?Clone@PBitArray@@UBEPAVPObject@@XZ @1656 NONAME ?Clone@PBYTEArray@@UBEPAVPObject@@XZ @1657 NONAME ?Clone@PCaselessString@@UBEPAVPObject@@XZ @1658 NONAME ?Clone@PCharArray@@UBEPAVPObject@@XZ @1659 NONAME ?Clone@PIPCacheKey@@UBEPAVPObject@@XZ @1660 NONAME ?Clone@PObject@@UBEPAV1@XZ @1661 NONAME ?Clone@POrdinalKey@@UBEPAVPObject@@XZ @1662 NONAME ?Clone@POrdinalToString@@UBEPAVPObject@@XZ @1663 NONAME ?Clone@PSortedStringList@@UBEPAVPObject@@XZ @1664 NONAME ?Clone@PString@@UBEPAVPObject@@XZ @1665 NONAME ?Clone@PStringArray@@UBEPAVPObject@@XZ @1666 NONAME ?Clone@PStringList@@UBEPAVPObject@@XZ @1667 NONAME ?Clone@PStringSet@@UBEPAVPObject@@XZ @1668 NONAME ?Clone@PStringToOrdinal@@UBEPAVPObject@@XZ @1669 NONAME ?Clone@PStringToString@@UBEPAVPObject@@XZ @1670 NONAME ?Clone@PTCPSocket@@UBEPAVPObject@@XZ @1671 NONAME ?Clone@PTime@@UBEPAVPObject@@XZ @1672 NONAME ?Clone@PTimeInterval@@UBEPAVPObject@@XZ @1673 NONAME ?Clone@Table@PHashTable@@UBEPAVPObject@@XZ @1674 NONAME ?CloneContents@PAbstractArray@@IAEXPBV1@@Z @1675 NONAME ?CloneContents@PAbstractList@@IAEXPBV1@@Z @1676 NONAME ?CloneContents@PAbstractSet@@IAEXPBV1@@Z @1677 NONAME ?CloneContents@PAbstractSortedList@@IAEXPBV1@@Z @1678 NONAME ?CloneContents@PArrayObjects@@IAEXPBV1@@Z @1679 NONAME ?CloneContents@PContainer@@IAEXPBV1@@Z @1680 NONAME ?CloneContents@PDirectory@@IAEXPBV1@@Z @1681 NONAME ?CloneContents@PHashTable@@IAEXPBV1@@Z @1682 NONAME ?Close@PChannel@@UAEHXZ @1683 NONAME ?Close@PConsoleChannel@@UAEHXZ @1684 NONAME ?Close@PDirectory@@UAEXXZ @7582 NONAME ?Close@PDynaLink@@UAEXXZ @1686 NONAME ?Close@PEthSocket@@UAEHXZ @1687 NONAME ?Close@PFile@@UAEHXZ @1689 NONAME ?Close@PICMPSocket@@UAEHXZ @1690 NONAME ?Close@PIndirectChannel@@UAEHXZ @1691 NONAME ?Close@PMultiMediaFile@@QAEHI@Z @1692 NONAME ?Close@PPipeChannel@@UAEHXZ @1693 NONAME ?Close@PRemoteConnection@@QAEXXZ @1694 NONAME ?Close@PSerialChannel@@UAEHXZ @1695 NONAME ?Close@PSocket@@UAEHXZ @1696 NONAME ?Close@PSoundChannelWin32@@UAEHXZ @3644 NONAME ?Close@PVideoChannel@@UAEHXZ @1698 NONAME ?Close@PVideoDevice@@UAEHXZ @1699 NONAME ?Close@PVideoInputDevice@@UAEHXZ @1700 NONAME ?Close@PVideoInputDevice_FakeVideo@@UAEHXZ @3794 NONAME ?Close@PVideoInputDevice_VideoForWindows@@UAEHXZ @3645 NONAME ?Close@PVideoOutputDevice@@UAEHXZ @3646 NONAME ?Close@PVideoOutputDevice_NULLOutput@@UAEHXZ @3795 NONAME ?Close@PVideoOutputDevice_Window@@UAEHXZ @16468 NONAME ?Close@PWin32PacketDriver@@QAEXXZ @1702 NONAME ?CloseVideoPlayer@PVideoChannel@@UAEXXZ @1703 NONAME ?CloseVideoReader@PVideoChannel@@UAEXXZ @1704 NONAME ?collate@?$_Locbase@H@std@@2HB @5730 NONAME ?Compare@Address@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1705 NONAME ?Compare@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1706 NONAME ?Compare@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1707 NONAME ?Compare@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1708 NONAME ?Compare@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1709 NONAME ?Compare@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1710 NONAME ?Compare@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1711 NONAME ?Compare@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1712 NONAME ?Compare@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1713 NONAME ?Compare@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1714 NONAME ?Compare@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1715 NONAME ?Compare@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1716 NONAME ?Compare@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1717 NONAME ?Compare@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1718 NONAME ?Compare@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1719 NONAME ?Compare@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1720 NONAME ?Compare@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1721 NONAME ?Compare@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1722 NONAME ?Compare@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1723 NONAME ?CompareObjectMemoryDirect@?$PArray@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1724 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWaveBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1725 NONAME ?CompareObjectMemoryDirect@?$PArray@VPWin32PacketBuffer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1726 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@D@@UBE?AW4Comparison@PObject@@ABV3@@Z @1727 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@E@@UBE?AW4Comparison@PObject@@ABV3@@Z @1728 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@F@@UBE?AW4Comparison@PObject@@ABV3@@Z @1729 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@G@@UBE?AW4Comparison@PObject@@ABV3@@Z @1730 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@H@@UBE?AW4Comparison@PObject@@ABV3@@Z @1731 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@I@@UBE?AW4Comparison@PObject@@ABV3@@Z @1732 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@J@@UBE?AW4Comparison@PObject@@ABV3@@Z @1733 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@K@@UBE?AW4Comparison@PObject@@ABV3@@Z @1734 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVElement@PHashTable@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1735 NONAME ?CompareObjectMemoryDirect@?$PBaseArray@PAVPObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1736 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1737 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1738 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1739 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5970 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1740 NONAME ?CompareObjectMemoryDirect@?$PDictionary@VPString@@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @5888 NONAME ?CompareObjectMemoryDirect@?$PList@VInterfaceEntry@PIPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @7656 NONAME ?CompareObjectMemoryDirect@?$PList@VPDynaLink@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @4002 NONAME ?CompareObjectMemoryDirect@?$PList@VPNotifier@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @4003 NONAME ?CompareObjectMemoryDirect@?$PList@VPPluginService@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @3648 NONAME ?CompareObjectMemoryDirect@?$PList@VPSafeObject@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @7062 NONAME ?CompareObjectMemoryDirect@?$PList@VPSocket@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1741 NONAME ?CompareObjectMemoryDirect@?$PList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1742 NONAME ?CompareObjectMemoryDirect@?$PList@VPThread@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1743 NONAME ?CompareObjectMemoryDirect@?$PList@VPTimer@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1744 NONAME ?CompareObjectMemoryDirect@?$POrdinalDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1745 NONAME ?CompareObjectMemoryDirect@?$PSet@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1746 NONAME ?CompareObjectMemoryDirect@?$PSortedList@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1747 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPOrdinalKey@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1748 NONAME ?CompareObjectMemoryDirect@?$PStringDictionary@VPString@@@@UBE?AW4Comparison@PObject@@ABV3@@Z @1749 NONAME ?CompareObjectMemoryDirect@CMCDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1750 NONAME ?CompareObjectMemoryDirect@HouseKeepingThread@PProcess@@UBE?AW4Comparison@PObject@@ABV4@@Z @1751 NONAME ?CompareObjectMemoryDirect@InterfaceEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1752 NONAME ?CompareObjectMemoryDirect@MAPIDLL@PMail@@UBE?AW4Comparison@PObject@@ABV4@@Z @1753 NONAME ?CompareObjectMemoryDirect@Nest@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV4@@Z @1754 NONAME ?CompareObjectMemoryDirect@PAbstractArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1755 NONAME ?CompareObjectMemoryDirect@PAbstractDictionary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1756 NONAME ?CompareObjectMemoryDirect@PAbstractList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1757 NONAME ?CompareObjectMemoryDirect@PAbstractSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1758 NONAME ?CompareObjectMemoryDirect@PAbstractSortedList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1759 NONAME ?CompareObjectMemoryDirect@PArgList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1760 NONAME ?CompareObjectMemoryDirect@PArrayObjects@@UBE?AW4Comparison@PObject@@ABV3@@Z @1761 NONAME ?CompareObjectMemoryDirect@PBitArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1762 NONAME ?CompareObjectMemoryDirect@PBYTEArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1763 NONAME ?CompareObjectMemoryDirect@PCaselessString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1764 NONAME ?CompareObjectMemoryDirect@PChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1765 NONAME ?CompareObjectMemoryDirect@PCharArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1766 NONAME ?CompareObjectMemoryDirect@PCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1767 NONAME ?CompareObjectMemoryDirect@PColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1768 NONAME ?CompareObjectMemoryDirect@PColourConverterRegistration@@UBE?AW4Comparison@PObject@@ABV3@@Z @1769 NONAME ?CompareObjectMemoryDirect@PCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1770 NONAME ?CompareObjectMemoryDirect@PConfig@@UBE?AW4Comparison@PObject@@ABV3@@Z @1771 NONAME ?CompareObjectMemoryDirect@PConfigArgs@@UBE?AW4Comparison@PObject@@ABV3@@Z @1772 NONAME ?CompareObjectMemoryDirect@PConsoleChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1773 NONAME ?CompareObjectMemoryDirect@PContainer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1774 NONAME ?CompareObjectMemoryDirect@PCriticalSection@@UBE?AW4Comparison@PObject@@ABV3@@Z @5852 NONAME ?CompareObjectMemoryDirect@PDirectory@@UBE?AW4Comparison@PObject@@ABV3@@Z @1775 NONAME ?CompareObjectMemoryDirect@PDynaLink@@UBE?AW4Comparison@PObject@@ABV3@@Z @1776 NONAME ?CompareObjectMemoryDirect@PEthSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1777 NONAME ?CompareObjectMemoryDirect@PFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1779 NONAME ?CompareObjectMemoryDirect@PFileInfo@@UBE?AW4Comparison@PObject@@ABV3@@Z @1780 NONAME ?CompareObjectMemoryDirect@PFilePath@@UBE?AW4Comparison@PObject@@ABV3@@Z @1781 NONAME ?CompareObjectMemoryDirect@PHashTable@@UBE?AW4Comparison@PObject@@ABV3@@Z @1782 NONAME ?CompareObjectMemoryDirect@PICMPDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1783 NONAME ?CompareObjectMemoryDirect@PICMPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1784 NONAME ?CompareObjectMemoryDirect@PImageDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1785 NONAME ?CompareObjectMemoryDirect@PIndirectChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1786 NONAME ?CompareObjectMemoryDirect@PIntCondMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1787 NONAME ?CompareObjectMemoryDirect@PIPCacheData@@UBE?AW4Comparison@PObject@@ABV3@@Z @1788 NONAME ?CompareObjectMemoryDirect@PIPCacheKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1789 NONAME ?CompareObjectMemoryDirect@PIPDatagramSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1790 NONAME ?CompareObjectMemoryDirect@PIPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1791 NONAME ?CompareObjectMemoryDirect@PIPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1792 NONAME ?CompareObjectMemoryDirect@PluginLoaderStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @6365 NONAME ?CompareObjectMemoryDirect@PMail@@UBE?AW4Comparison@PObject@@ABV3@@Z @1793 NONAME ?CompareObjectMemoryDirect@PNotifier@@UBE?AW4Comparison@PObject@@ABV3@@Z @1795 NONAME ?CompareObjectMemoryDirect@PNotifierFunction@@UBE?AW4Comparison@PObject@@ABV3@@Z @1796 NONAME ?CompareObjectMemoryDirect@PObject@@UBE?AW4Comparison@1@ABV1@@Z @1797 NONAME ?CompareObjectMemoryDirect@POrdinalKey@@UBE?AW4Comparison@PObject@@ABV3@@Z @1798 NONAME ?CompareObjectMemoryDirect@POrdinalToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1799 NONAME ?CompareObjectMemoryDirect@PPipeChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1800 NONAME ?CompareObjectMemoryDirect@PPluginManager@@UBE?AW4Comparison@PObject@@ABV3@@Z @3649 NONAME ?CompareObjectMemoryDirect@PPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @5971 NONAME ?CompareObjectMemoryDirect@PProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1801 NONAME ?CompareObjectMemoryDirect@PProcessStartup@@UBE?AW4Comparison@PObject@@ABV3@@Z @6366 NONAME ?CompareObjectMemoryDirect@PQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @3550 NONAME ?CompareObjectMemoryDirect@PRASDLL@@UBE?AW4Comparison@PObject@@ABV3@@Z @1802 NONAME ?CompareObjectMemoryDirect@PReadWriteMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @1803 NONAME ?CompareObjectMemoryDirect@PRegularExpression@@UBE?AW4Comparison@PObject@@ABV3@@Z @1804 NONAME ?CompareObjectMemoryDirect@PRemoteConnection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1805 NONAME ?CompareObjectMemoryDirect@PSafeCollection@@UBE?AW4Comparison@PObject@@ABV3@@Z @1806 NONAME ?CompareObjectMemoryDirect@PSafeObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @1807 NONAME ?CompareObjectMemoryDirect@PSafePtrBase@@UBE?AW4Comparison@PObject@@ABV3@@Z @1808 NONAME ?CompareObjectMemoryDirect@PSemaphore@@UBE?AW4Comparison@PObject@@ABV3@@Z @1809 NONAME ?CompareObjectMemoryDirect@PSerialChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1810 NONAME ?CompareObjectMemoryDirect@PServiceProcess@@UBE?AW4Comparison@PObject@@ABV3@@Z @1811 NONAME ?CompareObjectMemoryDirect@PSimpleThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1812 NONAME ?CompareObjectMemoryDirect@PSmartObject@@UBE?AW4Comparison@PObject@@ABV3@@Z @1813 NONAME ?CompareObjectMemoryDirect@PSmartPointer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1814 NONAME ?CompareObjectMemoryDirect@PSmartPtrInspector@@UBE?AW4Comparison@PObject@@ABV3@@Z @5972 NONAME ?CompareObjectMemoryDirect@PSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1815 NONAME ?CompareObjectMemoryDirect@PSortedStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1816 NONAME ?CompareObjectMemoryDirect@PSound@@UBE?AW4Comparison@PObject@@ABV3@@Z @1817 NONAME ?CompareObjectMemoryDirect@PSoundChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1818 NONAME ?CompareObjectMemoryDirect@PSPXSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1819 NONAME ?CompareObjectMemoryDirect@PStandardColourConverter@@UBE?AW4Comparison@PObject@@ABV3@@Z @1820 NONAME ?CompareObjectMemoryDirect@PString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1821 NONAME ?CompareObjectMemoryDirect@PStringArray@@UBE?AW4Comparison@PObject@@ABV3@@Z @1822 NONAME ?CompareObjectMemoryDirect@PStringList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1823 NONAME ?CompareObjectMemoryDirect@PStringSet@@UBE?AW4Comparison@PObject@@ABV3@@Z @1824 NONAME ?CompareObjectMemoryDirect@PStringStream@@UBE?AW4Comparison@PObject@@ABV3@@Z @1825 NONAME ?CompareObjectMemoryDirect@PStringToOrdinal@@UBE?AW4Comparison@PObject@@ABV3@@Z @1826 NONAME ?CompareObjectMemoryDirect@PStringToString@@UBE?AW4Comparison@PObject@@ABV3@@Z @1827 NONAME ?CompareObjectMemoryDirect@PStructuredFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1828 NONAME ?CompareObjectMemoryDirect@PSyncPoint@@UBE?AW4Comparison@PObject@@ABV3@@Z @1829 NONAME ?CompareObjectMemoryDirect@PSystemLog@@UBE?AW4Comparison@PObject@@ABV3@@Z @1830 NONAME ?CompareObjectMemoryDirect@PTCPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1831 NONAME ?CompareObjectMemoryDirect@PTextFile@@UBE?AW4Comparison@PObject@@ABV3@@Z @1832 NONAME ?CompareObjectMemoryDirect@PThread@@UBE?AW4Comparison@PObject@@ABV3@@Z @1833 NONAME ?CompareObjectMemoryDirect@PTime@@UBE?AW4Comparison@PObject@@ABV3@@Z @1834 NONAME ?CompareObjectMemoryDirect@PTimedMutex@@UBE?AW4Comparison@PObject@@ABV3@@Z @16588 NONAME ?CompareObjectMemoryDirect@PTimeInterval@@UBE?AW4Comparison@PObject@@ABV3@@Z @1835 NONAME ?CompareObjectMemoryDirect@PTimer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1836 NONAME ?CompareObjectMemoryDirect@PTimerList@@UBE?AW4Comparison@PObject@@ABV3@@Z @1837 NONAME ?CompareObjectMemoryDirect@PUDPSocket@@UBE?AW4Comparison@PObject@@ABV3@@Z @1838 NONAME ?CompareObjectMemoryDirect@PVideoChannel@@UBE?AW4Comparison@PObject@@ABV3@@Z @1839 NONAME ?CompareObjectMemoryDirect@PVideoDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1840 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1841 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_FakeVideo@@UBE?AW4Comparison@PObject@@ABV3@@Z @3796 NONAME ?CompareObjectMemoryDirect@PVideoInputDevice_VideoForWindows@@UBE?AW4Comparison@PObject@@ABV3@@Z @3650 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice@@UBE?AW4Comparison@PObject@@ABV3@@Z @1843 NONAME ?CompareObjectMemoryDirect@PVideoOutputDeviceRGB@@UBE?AW4Comparison@PObject@@ABV3@@Z @16469 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_NULLOutput@@UBE?AW4Comparison@PObject@@ABV3@@Z @3797 NONAME ?CompareObjectMemoryDirect@PVideoOutputDevice_Window@@UBE?AW4Comparison@PObject@@ABV3@@Z @16470 NONAME ?CompareObjectMemoryDirect@PWaveBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1847 NONAME ?CompareObjectMemoryDirect@PWaveFormat@@UBE?AW4Comparison@PObject@@ABV3@@Z @1848 NONAME ?CompareObjectMemoryDirect@PWin32PacketBuffer@@UBE?AW4Comparison@PObject@@ABV3@@Z @1849 NONAME ?CompareObjectMemoryDirect@PWin32SnmpLibrary@@UBE?AW4Comparison@PObject@@ABV3@@Z @1850 NONAME ?CompareObjectMemoryDirect@PWinQoS@@UBE?AW4Comparison@PObject@@ABV3@@Z @3880 NONAME ?CompareObjectMemoryDirect@PWinSock@@UBE?AW4Comparison@PObject@@ABV3@@Z @1851 NONAME ?CompareObjectMemoryDirect@RouteEntry@PIPSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1852 NONAME ?CompareObjectMemoryDirect@SelectList@PSocket@@UBE?AW4Comparison@PObject@@ABV4@@Z @1853 NONAME ?CompareObjectMemoryDirect@Table@PHashTable@@UBE?AW4Comparison@PObject@@ABV4@@Z @1854 NONAME ?CompareObjectMemoryDirect@WinSNMPLoader@@UBE?AW4Comparison@PObject@@ABV3@@Z @6721 NONAME ?Compile@PRegularExpression@@QAEHABVPString@@H@Z @1855 NONAME ?Compile@PRegularExpression@@QAEHPBDH@Z @1856 NONAME ?CompleteIO@PWin32PacketDriver@@QAEHAAKAAVPWin32Overlapped@@@Z @1857 NONAME ?Concatenate@PAbstractArray@@QAEHABV1@@Z @1858 NONAME ?Concatenate@PBitArray@@QAEHABV1@@Z @1859 NONAME ?Condition@PIntCondMutex@@UAEHXZ @1860 NONAME ?Connect@PEthSocket@@UAEHABVPString@@@Z @1861 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@0@Z @1862 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@@Z @1863 NONAME ?Connect@PIPSocket@@UAEHABVAddress@1@G0@Z @1864 NONAME ?Connect@PIPSocket@@UAEHABVPString@@@Z @1865 NONAME ?Connect@PIPSocket@@UAEHGABVAddress@1@@Z @1866 NONAME ?Connect@PIPXSocket@@UAEHABVAddress@1@@Z @1867 NONAME ?Connect@PIPXSocket@@UAEHABVPString@@@Z @1868 NONAME ?Connect@PSocket@@UAEHABVPString@@@Z @1869 NONAME ?Connect@PUDPSocket@@UAEHABVPString@@@Z @1870 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@ABQAU342@@Z @6905 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@ABQAU342@@Z @6367 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7372 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @6906 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @6907 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7373 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7374 NONAME ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABQAU342@@Z @7375 NONAME ?construct@?$allocator@VPString@@@std@@QAEXPAVPString@@ABV3@@Z @6370 NONAME ?Construct@PChannel@@AAEXXZ @1871 NONAME ?Construct@PConfig@@AAEXABVPFilePath@@@Z @1872 NONAME ?Construct@PConfig@@AAEXW4Source@1@ABVPString@@1@Z @1873 NONAME ?Construct@PDirectory@@IAEXXZ @1874 NONAME ?Construct@PMail@@IAEXXZ @1875 NONAME ?Construct@PProcess@@AAEXXZ @1876 NONAME ?Construct@PRemoteConnection@@AAEXXZ @1877 NONAME ?Construct@PSerialChannel@@AAEXXZ @1878 NONAME ?Construct@PSoundChannelWin32@@QAEXXZ @3651 NONAME ?Construct@PTimer@@AAEXXZ @1880 NONAME ?Construct@P_fd_set@@AAEXXZ @1881 NONAME ?Contains@?$PDictionary@VPOrdinalKey@@VPPointer@@@@QBEHABVPOrdinalKey@@@Z @5973 NONAME ?Contains@?$PStringDictionary@VPString@@@@QBEHABVPString@@@Z @16471 NONAME ?Control@NT_ServiceManager@@AAEHPAVPServiceProcess@@K@Z @1882 NONAME ?ControlEntry@PServiceProcess@@AAEXK@Z @1883 NONAME ?controlledLoadDSCP@PQoS@@2DA @3552 NONAME ?Convert@PSynonymColour@@UAEHPBEPAEPAH@Z @1884 NONAME ?Convert@P_BGR24_RGB24@@UAEHPBEPAEPAH@Z @16472 NONAME ?Convert@P_BGR24_RGB32@@UAEHPBEPAEPAH@Z @16473 NONAME ?Convert@P_BGR24_YUV420P@@UAEHPBEPAEPAH@Z @3798 NONAME ?Convert@P_BGR32_RGB24@@UAEHPBEPAEPAH@Z @16474 NONAME ?Convert@P_BGR32_RGB32@@UAEHPBEPAEPAH@Z @16475 NONAME ?Convert@P_BGR32_YUV420P@@UAEHPBEPAEPAH@Z @3799 NONAME ?Convert@P_Grey_YUV420P@@UAEHPBEPAEPAH@Z @1886 NONAME ?Convert@P_RGB24_BGR24@@UAEHPBEPAEPAH@Z @16476 NONAME ?Convert@P_RGB24_BGR32@@UAEHPBEPAEPAH@Z @16477 NONAME ?Convert@P_RGB24_RGB32@@UAEHPBEPAEPAH@Z @1888 NONAME ?Convert@P_RGB24_YUV420P@@UAEHPBEPAEPAH@Z @1889 NONAME ?Convert@P_RGB32_BGR24@@UAEHPBEPAEPAH@Z @16478 NONAME ?Convert@P_RGB32_BGR32@@UAEHPBEPAEPAH@Z @16479 NONAME ?Convert@P_RGB32_RGB24@@UAEHPBEPAEPAH@Z @1891 NONAME ?Convert@P_RGB32_YUV420P@@UAEHPBEPAEPAH@Z @1892 NONAME ?Convert@P_SBGGR8_RGB24@@UAEHPBEPAEPAH@Z @7605 NONAME ?Convert@P_SBGGR8_YUV420P@@UAEHPBEPAEPAH@Z @7635 NONAME ?Convert@P_UYV444_YUV420P@@UAEHPBEPAEPAH@Z @1893 NONAME ?Convert@P_UYVY422_YUV420P@@UAEHPBEPAEPAH@Z @1894 NONAME ?Convert@P_YUV411P_YUV420P@@UAEHPBEPAEPAH@Z @1895 NONAME ?Convert@P_YUV420P_BGR24@@UAEHPBEPAEPAH@Z @1896 NONAME ?Convert@P_YUV420P_BGR32@@UAEHPBEPAEPAH@Z @3800 NONAME ?Convert@P_YUV420P_RGB24@@UAEHPBEPAEPAH@Z @1898 NONAME ?Convert@P_YUV420P_RGB32@@UAEHPBEPAEPAH@Z @1900 NONAME ?Convert@P_YUV420P_YUV411P@@UAEHPBEPAEPAH@Z @1902 NONAME ?Convert@P_YUV422_YUV420P@@UAEHPBEPAEPAH@Z @1903 NONAME ?Convert@P_YUV422_YUV422@@UAEHPBEPAEPAH@Z @1904 NONAME ?ConvertInPlace@PColourConverter@@UAEHPAEPAHH@Z @1905 NONAME ?ConvertOSError@PChannel@@MAEHHW4ErrorGroup@1@@Z @1906 NONAME ?ConvertOSError@PChannel@@SAHHAAW4Errors@1@AAH@Z @1907 NONAME ?ConvertOSError@PSocket@@KAHHAAW4Errors@PChannel@@AAH@Z @1908 NONAME ?ConvertOSError@PSocket@@MAEHHW4ErrorGroup@PChannel@@@Z @1909 NONAME ?Copy@PFile@@QAEHABVPFilePath@@H@Z @1910 NONAME ?Copy@PFile@@SAHABVPFilePath@@0H@Z @1911 NONAME ?CopyContents@PAbstractArray@@IAEXABV1@@Z @1912 NONAME ?CopyContents@PAbstractList@@IAEXABV1@@Z @1913 NONAME ?CopyContents@PAbstractSet@@IAEXABV1@@Z @1914 NONAME ?CopyContents@PAbstractSortedList@@IAEXABV1@@Z @1915 NONAME ?CopyContents@PArrayObjects@@IAEXABV1@@Z @1916 NONAME ?CopyContents@PContainer@@IAEXABV1@@Z @1917 NONAME ?CopyContents@PDirectory@@IAEXABV1@@Z @1918 NONAME ?CopyContents@PHashTable@@IAEXABV1@@Z @1919 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7376 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7377 NONAME ?Create@?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7378 NONAME ?Create@?$Worker@VPluginLoaderStartup@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7379 NONAME ?Create@?$Worker@VWinSNMPLoader@@@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7380 NONAME ?Create@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1920 NONAME ?Create@PColourConverter@@SAPAV1@ABVPString@@0II@Z @1921 NONAME ?Create@PDirectory@@QBEHH@Z @1922 NONAME ?Create@PDirectory@@SAHABVPString@@H@Z @1923 NONAME ?Create@PSynonymColourRegistration@@UBEPAVPColourConverter@@II@Z @1924 NONAME ?Create@PThread@@SAPAV1@ABVPNotifier@@HW4AutoDeleteFlag@1@W4Priority@1@ABVPString@@H@Z @1925 NONAME ?Create@PWin32PacketDriver@@SAPAV1@XZ @1926 NONAME ?Create@P_BGR24_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @16480 NONAME ?Create@P_BGR24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @16481 NONAME ?Create@P_BGR24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @3801 NONAME ?Create@P_BGR32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @16482 NONAME ?Create@P_BGR32_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @16483 NONAME ?Create@P_BGR32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @3802 NONAME ?Create@P_Grey_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1928 NONAME ?Create@P_RGB24_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @16484 NONAME ?Create@P_RGB24_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @16485 NONAME ?Create@P_RGB24_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1930 NONAME ?Create@P_RGB24_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1931 NONAME ?Create@P_RGB32_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @16486 NONAME ?Create@P_RGB32_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @16487 NONAME ?Create@P_RGB32_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1933 NONAME ?Create@P_RGB32_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1934 NONAME ?Create@P_SBGGR8_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @7606 NONAME ?Create@P_SBGGR8_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @7636 NONAME ?Create@P_UYV444_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1935 NONAME ?Create@P_UYVY422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1936 NONAME ?Create@P_YUV411P_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1937 NONAME ?Create@P_YUV420P_BGR24_Registration@@UBEPAVPColourConverter@@II@Z @1939 NONAME ?Create@P_YUV420P_BGR32_Registration@@UBEPAVPColourConverter@@II@Z @3803 NONAME ?Create@P_YUV420P_RGB24_Registration@@UBEPAVPColourConverter@@II@Z @1941 NONAME ?Create@P_YUV420P_RGB32_Registration@@UBEPAVPColourConverter@@II@Z @1943 NONAME ?Create@P_YUV420P_YUV411P_Registration@@UBEPAVPColourConverter@@II@Z @1944 NONAME ?Create@P_YUV422_YUV420P_Registration@@UBEPAVPColourConverter@@II@Z @1945 NONAME ?Create@P_YUV422_YUV422_Registration@@UBEPAVPColourConverter@@II@Z @1946 NONAME ?Create@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1947 NONAME ?Create@Worker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @7381 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @7382 NONAME ?Create@Worker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @7383 NONAME ?Create@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@MBEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7384 NONAME ?Create@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@MBEPAVPProcessStartup@@ABVPString@@@Z @7385 NONAME ?Create@WorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@MBEPAVPSoundChannel@@ABVPString@@@Z @7386 NONAME ?Create@WorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@MBEPAVPVideoInputDevice@@ABVPString@@@Z @7387 NONAME ?Create@WorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@MBEPAVPVideoOutputDevice@@ABVPString@@@Z @7388 NONAME ?CreateChannel@PSoundChannel@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3652 NONAME ?CreateChannelByName@PSoundChannel@@SAPAV1@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @16488 NONAME ?CreateChunk@PMultiMediaFile@@QAEHAAU_MMCKINFO@@I@Z @1948 NONAME ?CreateControlWindow@PServiceProcess@@AAEHH@Z @1949 NONAME ?CreateDevice@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3653 NONAME ?CreateDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3804 NONAME ?CreateDeviceByName@PVideoInputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @3966 NONAME ?CreateDeviceByName@PVideoOutputDevice@@SAPAV1@ABVPString@@PAVPPluginManager@@@Z @16489 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPSoundChannel@@@@UAEXABVPString@@@Z @7389 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoInputDevice@@@@UAEXABVPString@@@Z @7390 NONAME ?CreateFactory@?$PDevicePluginAdapter@VPVideoOutputDevice@@@@UAEXABVPString@@@Z @7391 NONAME ?CreateFullPath@PDirectory@@SA?AVPString@@ABV2@H@Z @1950 NONAME ?CreateInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7392 NONAME ?CreateInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@SAPAVPPluginModuleManager@@ABVPString@@@Z @6911 NONAME ?CreateInstance@?$PFactory@VPProcessStartup@@VPString@@@@SAPAVPProcessStartup@@ABVPString@@@Z @6912 NONAME ?CreateInstance@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBEPAVPObject@@H@Z @16490 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBEPAVPObject@@H@Z @16491 NONAME ?CreateInstance@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBEPAVPObject@@H@Z @16492 NONAME ?CreateInstance@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBEPAVPObject@@H@Z @16493 NONAME ?CreateInstance@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBEPAVPObject@@H@Z @16494 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7393 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @7394 NONAME ?CreateInstance@WorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @7395 NONAME ?CreateInstance_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEPAVPDevicePluginAdapterBase@@ABVPString@@@Z @7396 NONAME ?CreateInstance_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAEPAVPPluginModuleManager@@ABVPString@@@Z @6915 NONAME ?CreateInstance_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEPAVPProcessStartup@@ABVPString@@@Z @6916 NONAME ?CreateOpenedChannel@PSoundChannel@@SAPAV1@ABVPString@@0W4Directions@1@IIIPAVPPluginManager@@@Z @16495 NONAME ?CreateOpenedDevice@PVideoInputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @3655 NONAME ?CreateOpenedDevice@PVideoOutputDevice@@SAPAV1@ABVPString@@0HPAVPPluginManager@@@Z @3805 NONAME ?CreatePluginsDevice@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @16496 NONAME ?CreatePluginsDeviceByName@PPluginManager@@QBEPAVPObject@@ABVPString@@0H@Z @16497 NONAME ?CreateWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@ABVPWaveFormat@@K@Z @1951 NONAME ?ctype@?$_Locbase@H@std@@2HB @5731 NONAME ?cur@?$_Iosb@H@std@@2W4_Seekdir@12@B @5732 NONAME ?Current@PProcess@@SAAAV1@XZ @1952 NONAME ?Current@PServiceProcess@@SAAAV1@XZ @1953 NONAME ?Current@PThread@@SAPAV1@XZ @1954 NONAME ?Current@PWin32SnmpLibrary@@SAAAV1@XZ @1955 NONAME ?Current@WinSNMPLoader@@QAEAAVPWin32SnmpLibrary@@XZ @6724 NONAME ?deallocate@?$allocator@PAVPPluginModuleManager@@@std@@QAEXPAPAVPPluginModuleManager@@I@Z @6374 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@I@Z @6917 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@I@Z @6375 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7397 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6918 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @6919 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7398 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7399 NONAME ?deallocate@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@I@Z @7400 NONAME ?deallocate@?$allocator@VPString@@@std@@QAEXPAVPString@@I@Z @6378 NONAME ?DebugOutput@PServiceProcess@@AAEXPBD@Z @1957 NONAME ?dec@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5733 NONAME ?dec@std@@YAAAVios_base@1@AAV21@@Z @5734 NONAME ?Delete@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1958 NONAME ?Delete@PNotifyIconData@@QAEXXZ @1959 NONAME ?Delete@PString@@QAEXHH@Z @1960 NONAME ?Delete@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @1961 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@0@Z @3926 NONAME ?DeleteKey@PConfig@@UAEXABVPString@@@Z @3927 NONAME ?DeleteKey@RegistryKey@@QAEHABVPString@@@Z @1964 NONAME ?DeleteMessage@PMail@@QAEHABVPString@@@Z @1965 NONAME ?DeleteObject@PSafeCollection@@UBEXPAVPObject@@@Z @7041 NONAME ?DeleteObjectsTimeout@PSafeCollection@@MAEXAAVPTimer@@H@Z @1966 NONAME ?DeleteObjectsToBeRemoved@PSafeCollection@@UAEHXZ @7042 NONAME ?DeleteSection@PConfig@@UAEXABVPString@@@Z @3928 NONAME ?DeleteSection@PConfig@@UAEXXZ @3929 NONAME ?DeleteSubTrees@PAbstractSortedList@@IAEXPAUElement@1@H@Z @3969 NONAME ?DeleteValue@RegistryKey@@QAEHABVPString@@@Z @1971 NONAME ?Descend@PMultiMediaFile@@QAEHIAAU_MMCKINFO@@PAU2@@Z @1972 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6920 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6379 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7401 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6921 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6922 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7402 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7403 NONAME ?destroy@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7404 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6923 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6382 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7405 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6924 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6925 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7406 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7407 NONAME ?destroy@?$allocator@U_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@@std@@QAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7408 NONAME ?destroy@?$allocator@VPString@@@std@@QAEXPAVPString@@@Z @6385 NONAME ?DestroyContents@PAbstractArray@@MAEXXZ @1973 NONAME ?DestroyContents@PAbstractList@@MAEXXZ @1974 NONAME ?DestroyContents@PAbstractSet@@MAEXXZ @1975 NONAME ?DestroyContents@PAbstractSortedList@@MAEXXZ @1976 NONAME ?DestroyContents@PArrayObjects@@MAEXXZ @1977 NONAME ?DestroyContents@PDirectory@@MAEXXZ @1978 NONAME ?DestroyContents@PHashTable@@MAEXXZ @1979 NONAME ?DestroyContents@Table@PHashTable@@UAEXXZ @1980 NONAME ?Destruct@PContainer@@IAEXXZ @1981 NONAME ?Destruct@PDirectory@@IAEXXZ @7583 NONAME ?disableGQoS@PUDPSocket@@1HA @16589 NONAME ?DisallowDeleteObjects@PCollection@@QAEXXZ @1982 NONAME ?DisplayRawData@PVideoChannel@@QAEHPAX@Z @1983 NONAME ?Draw@PVideoOutputDevice_Window@@IAEXPAUHDC__@@@Z @16499 NONAME ?Empty@PString@@SA?AV1@XZ @3967 NONAME ?EnableAccess@PVideoChannel@@QAEXXZ @1989 NONAME ?EnableGQoS@PUDPSocket@@SAXXZ @16590 NONAME ?end@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@XZ @6386 NONAME ?end@?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@QBE?AVconst_iterator@12@XZ @16501 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE?AViterator@12@XZ @6387 NONAME ?end@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBE?AVconst_iterator@12@XZ @6388 NONAME ?end@?$_Iosb@H@std@@2W4_Seekdir@12@B @5735 NONAME ?end@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@XZ @6926 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@XZ @6389 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7409 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6927 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @6928 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7410 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7411 NONAME ?end@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@XZ @7412 NONAME ?End@PTrace@@SAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV23@@Z @5736 NONAME ?EndFrame@PVideoOutputDevice_NULLOutput@@UAEHXZ @3806 NONAME ?EndNest@PReadWriteMutex@@IAEXXZ @1993 NONAME ?EndRead@PReadWriteMutex@@QAEXXZ @1994 NONAME ?EndWrite@PReadWriteMutex@@QAEXXZ @1995 NONAME ?EnterSafetyMode@PSafePtrBase@@IAEHW4EnterSafetyModeOption@1@@Z @1996 NONAME ?EnumInterfaces@PEthSocket@@QAEHHAAVPString@@@Z @1997 NONAME ?EnumInterfaces@PWin32PacketSYS@@UAEHHAAVPString@@@Z @1998 NONAME ?EnumInterfaces@PWin32PacketVxD@@UAEHHAAVPString@@@Z @1999 NONAME ?EnumIpAddress@PEthSocket@@QAEHHAAVAddress@PIPSocket@@0@Z @2000 NONAME ?EnumIpAddress@PWin32PacketSYS@@UAEHHAAVAddress@PIPSocket@@0@Z @2001 NONAME ?EnumIpAddress@PWin32PacketVxD@@UAEHHAAVAddress@PIPSocket@@0@Z @2002 NONAME ?EnumKey@RegistryKey@@QAEHHAAVPString@@@Z @2003 NONAME ?EnumValue@RegistryKey@@QAEHHAAVPString@@@Z @2004 NONAME ?eofbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5737 NONAME ?equal_range@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@2@ABVPString@@@Z @16195 NONAME ?equal_range@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@2@ABVPString@@@Z @16196 NONAME ?equal_range@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@V123@@2@ABVPString@@@Z @16197 NONAME ?erase@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@V312@@Z @6725 NONAME ?erase@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6929 NONAME ?erase@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6930 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6392 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6393 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7413 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7414 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6931 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6932 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @6933 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @6934 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7415 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7416 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEIABVPString@@@Z @16198 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7417 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7418 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEIABVPString@@@Z @16199 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@0@Z @7419 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@@Z @7420 NONAME ?erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEIABVPString@@@Z @16200 NONAME ?ErrorHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@HPBD@Z @3656 NONAME ?EscapeString@PRegularExpression@@SA?AVPString@@ABV2@@Z @2006 NONAME ?Exclude@PStringSet@@QAEXABVPString@@@Z @2007 NONAME ?Execute@PPipeChannel@@QAEHXZ @2008 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAH1H@Z @2009 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAHH@Z @2010 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@1H@Z @2011 NONAME ?Execute@PRegularExpression@@QBEHABVPString@@AAV?$PScalarArray@H@@H@Z @2012 NONAME ?Execute@PRegularExpression@@QBEHPBDAAH1H@Z @2013 NONAME ?Execute@PRegularExpression@@QBEHPBDAAHH@Z @2014 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@1H@Z @2015 NONAME ?Execute@PRegularExpression@@QBEHPBDAAV?$PScalarArray@H@@H@Z @2016 NONAME ?Exists@PDirectory@@QBEHXZ @2017 NONAME ?Exists@PDirectory@@SAHABVPString@@@Z @2018 NONAME ?Exists@PFile@@QBEHXZ @2019 NONAME ?Exists@PFile@@SAHABVPFilePath@@@Z @2020 NONAME ?ExitSafetyMode@PSafePtrBase@@IAEXW4ExitSafetyModeOption@1@@Z @2021 NONAME ?factory@?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@A @7421 NONAME ?factory@?1???0PPlugin_PSoundChannel_WindowsMultimedia_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPSoundChannel@@VPString@@@@A @7422 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7423 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_FakeVideo_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7424 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7425 NONAME ?factory@?1???0PPlugin_PVideoInputDevice_VideoForWindows_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoInputDevice@@VPString@@@@A @7426 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @7427 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_NULLOutput_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @7428 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@$AVWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @16502 NONAME ?factory@?1???0PPlugin_PVideoOutputDevice_Window_Registration@@QAE@PAVPPluginManager@@@Z@4VWorker@?$PDevicePluginFactory@VPVideoOutputDevice@@VPString@@@@A @16503 NONAME ?failbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5738 NONAME ?FillRect@PVideoInputDevice_FakeVideo@@QAEXPAEHHHHHHH@Z @16504 NONAME ?Filtered@PDirectory@@IAEHXZ @2023 NONAME ?find@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6935 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7429 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6936 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6937 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7430 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7431 NONAME ?find@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7432 NONAME ?Find@PString@@QBEHABV1@H@Z @2024 NONAME ?Find@PString@@QBEHDH@Z @2025 NONAME ?Find@PString@@QBEHPBDH@Z @2026 NONAME ?FindLast@PString@@QBEHABV1@H@Z @2027 NONAME ?FindLast@PString@@QBEHDH@Z @2028 NONAME ?FindLast@PString@@QBEHPBDH@Z @2029 NONAME ?FindLetter@PVideoInputDevice_FakeVideo@@QAEPAUOneVFakeLetterData@@D@Z @3808 NONAME ?FindOneOf@PString@@QBEHABV1@H@Z @2031 NONAME ?FindOneOf@PString@@QBEHPBDH@Z @2032 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@AAH1HH@Z @2033 NONAME ?FindRegEx@PString@@QBEHABVPRegularExpression@@H@Z @2034 NONAME ?Fire@PNotifierList@@QAEHAAVPObject@@H@Z @5974 NONAME ?fixed@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5739 NONAME ?floatfield@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5740 NONAME ?FrameComplete@PVideoOutputDevice_Window@@UAEHXZ @16505 NONAME ?FromString@Address@PIPSocket@@QAEHABVPString@@@Z @2035 NONAME ?GetAddress@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @7657 NONAME ?GetAddress@PEthSocket@@QAEHAATAddress@1@@Z @2036 NONAME ?GetAddress@PRemoteConnection@@QAE?AVPString@@XZ @2037 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@ABVPString@@@Z @3930 NONAME ?GetAllKeyValues@PConfig@@UBE?AVPStringToString@@XZ @3931 NONAME ?GetAny6@Address@PIPSocket@@SAABV12@XZ @3881 NONAME ?GetArguments@PProcess@@QAEAAVPArgList@@XZ @2041 NONAME ?GetAt@?$PBaseArray@D@@QBEDH@Z @2042 NONAME ?GetAt@?$PBaseArray@E@@QBEEH@Z @2043 NONAME ?GetAt@?$PBaseArray@F@@QBEFH@Z @2044 NONAME ?GetAt@?$PBaseArray@G@@QBEGH@Z @2045 NONAME ?GetAt@?$PBaseArray@H@@QBEHH@Z @2046 NONAME ?GetAt@?$PBaseArray@I@@QBEIH@Z @2047 NONAME ?GetAt@?$PBaseArray@J@@QBEJH@Z @2048 NONAME ?GetAt@?$PBaseArray@K@@QBEKH@Z @2049 NONAME ?GetAt@?$PBaseArray@PAVElement@PHashTable@@@@QBEPAVElement@PHashTable@@H@Z @2050 NONAME ?GetAt@?$PBaseArray@PAVPObject@@@@QBEPAVPObject@@H@Z @2051 NONAME ?GetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPCaselessString@@@Z @2052 NONAME ?GetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @2053 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @2054 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPAVPPointer@@ABVPOrdinalKey@@@Z @5975 NONAME ?GetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPAVPThread@@ABVPOrdinalKey@@@Z @2055 NONAME ?GetAt@?$PDictionary@VPString@@VPDynaLink@@@@UBEPAVPDynaLink@@ABVPString@@@Z @5889 NONAME ?GetAt@?$POrdinalDictionary@VPString@@@@UBEPAVPOrdinalKey@@ABVPString@@@Z @2056 NONAME ?GetAt@?$PStringDictionary@VPOrdinalKey@@@@UBEPAVPString@@ABVPOrdinalKey@@@Z @2057 NONAME ?GetAt@?$PStringDictionary@VPString@@@@UBEPAVPString@@ABV2@@Z @2058 NONAME ?GetAt@PAbstractDictionary@@UBEPAVPObject@@H@Z @2059 NONAME ?GetAt@PAbstractList@@UBEPAVPObject@@H@Z @2060 NONAME ?GetAt@PAbstractSet@@UBEPAVPObject@@H@Z @2061 NONAME ?GetAt@PAbstractSortedList@@UBEPAVPObject@@H@Z @2062 NONAME ?GetAt@PArrayObjects@@UBEPAVPObject@@H@Z @2063 NONAME ?GetAt@PBitArray@@QBEHH@Z @2064 NONAME ?GetAvailableNames@PRemoteConnection@@SA?AVPStringArray@@XZ @2065 NONAME ?GetBaseReadChannel@PChannel@@UBEPAV1@XZ @2066 NONAME ?GetBaseReadChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @2067 NONAME ?GetBaseWriteChannel@PChannel@@UBEPAV1@XZ @2068 NONAME ?GetBaseWriteChannel@PIndirectChannel@@UBEPAVPChannel@@XZ @2069 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@0H@Z @3932 NONAME ?GetBoolean@PConfig@@UBEHABVPString@@H@Z @3933 NONAME ?GetBrightness@PVideoDevice@@UAEHXZ @2072 NONAME ?GetBroadcast@Address@PIPSocket@@SAABV12@XZ @2073 NONAME ?GetBuffers@PSoundChannel@@UAEHAAH0@Z @3657 NONAME ?GetBuffers@PSoundChannelWin32@@UAEHAAH0@Z @3658 NONAME ?GetChannel@PVideoDevice@@UBEHXZ @2075 NONAME ?GetChannels@PSound@@QBEIXZ @2076 NONAME ?GetChannels@PSoundChannel@@UBEIXZ @3659 NONAME ?GetChannels@PSoundChannelWin32@@UBEIXZ @3660 NONAME ?GetClass@?$PArray@VPString@@@@UBEPBDI@Z @5380 NONAME ?GetClass@?$PArray@VPWaveBuffer@@@@UBEPBDI@Z @5381 NONAME ?GetClass@?$PArray@VPWin32PacketBuffer@@@@UBEPBDI@Z @5382 NONAME ?GetClass@?$PBaseArray@D@@UBEPBDI@Z @5383 NONAME ?GetClass@?$PBaseArray@E@@UBEPBDI@Z @5384 NONAME ?GetClass@?$PBaseArray@F@@UBEPBDI@Z @5385 NONAME ?GetClass@?$PBaseArray@G@@UBEPBDI@Z @5386 NONAME ?GetClass@?$PBaseArray@H@@UBEPBDI@Z @5387 NONAME ?GetClass@?$PBaseArray@I@@UBEPBDI@Z @5388 NONAME ?GetClass@?$PBaseArray@J@@UBEPBDI@Z @5389 NONAME ?GetClass@?$PBaseArray@K@@UBEPBDI@Z @5390 NONAME ?GetClass@?$PBaseArray@PAVElement@PHashTable@@@@UBEPBDI@Z @5391 NONAME ?GetClass@?$PBaseArray@PAVPObject@@@@UBEPBDI@Z @5392 NONAME ?GetClass@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEPBDI@Z @5393 NONAME ?GetClass@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEPBDI@Z @5394 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEPBDI@Z @5395 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEPBDI@Z @5976 NONAME ?GetClass@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEPBDI@Z @5396 NONAME ?GetClass@?$PDictionary@VPString@@VPDynaLink@@@@UBEPBDI@Z @5890 NONAME ?GetClass@?$PList@VInterfaceEntry@PIPSocket@@@@UBEPBDI@Z @7658 NONAME ?GetClass@?$PList@VPDynaLink@@@@UBEPBDI@Z @5397 NONAME ?GetClass@?$PList@VPNotifier@@@@UBEPBDI@Z @5398 NONAME ?GetClass@?$PList@VPPluginService@@@@UBEPBDI@Z @5399 NONAME ?GetClass@?$PList@VPSafeObject@@@@UBEPBDI@Z @7063 NONAME ?GetClass@?$PList@VPSocket@@@@UBEPBDI@Z @5400 NONAME ?GetClass@?$PList@VPString@@@@UBEPBDI@Z @5401 NONAME ?GetClass@?$PList@VPThread@@@@UBEPBDI@Z @5402 NONAME ?GetClass@?$PList@VPTimer@@@@UBEPBDI@Z @5403 NONAME ?GetClass@?$POrdinalDictionary@VPString@@@@UBEPBDI@Z @5404 NONAME ?GetClass@?$PSet@VPString@@@@UBEPBDI@Z @5405 NONAME ?GetClass@?$PSortedList@VPString@@@@UBEPBDI@Z @5406 NONAME ?GetClass@?$PStringDictionary@VPOrdinalKey@@@@UBEPBDI@Z @5407 NONAME ?GetClass@?$PStringDictionary@VPString@@@@UBEPBDI@Z @5408 NONAME ?GetClass@CMCDLL@PMail@@UBEPBDI@Z @5409 NONAME ?GetClass@HouseKeepingThread@PProcess@@UBEPBDI@Z @5410 NONAME ?GetClass@InterfaceEntry@PIPSocket@@UBEPBDI@Z @5411 NONAME ?GetClass@MAPIDLL@PMail@@UBEPBDI@Z @5412 NONAME ?GetClass@Nest@PReadWriteMutex@@UBEPBDI@Z @5413 NONAME ?GetClass@PAbstractArray@@UBEPBDI@Z @5414 NONAME ?GetClass@PAbstractDictionary@@UBEPBDI@Z @5415 NONAME ?GetClass@PAbstractList@@UBEPBDI@Z @5416 NONAME ?GetClass@PAbstractSet@@UBEPBDI@Z @5417 NONAME ?GetClass@PAbstractSortedList@@UBEPBDI@Z @5418 NONAME ?GetClass@PArgList@@UBEPBDI@Z @5419 NONAME ?GetClass@PArrayObjects@@UBEPBDI@Z @5420 NONAME ?GetClass@PBitArray@@UBEPBDI@Z @5421 NONAME ?GetClass@PBYTEArray@@UBEPBDI@Z @5422 NONAME ?GetClass@PCaselessString@@UBEPBDI@Z @5423 NONAME ?GetClass@PChannel@@UBEPBDI@Z @5424 NONAME ?GetClass@PCharArray@@UBEPBDI@Z @5425 NONAME ?GetClass@PCollection@@UBEPBDI@Z @5426 NONAME ?GetClass@PColourConverter@@UBEPBDI@Z @5427 NONAME ?GetClass@PColourConverterRegistration@@UBEPBDI@Z @5428 NONAME ?GetClass@PCondMutex@@UBEPBDI@Z @5429 NONAME ?GetClass@PConfig@@UBEPBDI@Z @5430 NONAME ?GetClass@PConfigArgs@@UBEPBDI@Z @5431 NONAME ?GetClass@PConsoleChannel@@UBEPBDI@Z @5432 NONAME ?GetClass@PContainer@@UBEPBDI@Z @5433 NONAME ?GetClass@PCriticalSection@@UBEPBDI@Z @5854 NONAME ?GetClass@PDirectory@@UBEPBDI@Z @5434 NONAME ?GetClass@PDynaLink@@UBEPBDI@Z @5435 NONAME ?GetClass@PEthSocket@@UBEPBDI@Z @5436 NONAME ?GetClass@PFile@@UBEPBDI@Z @5437 NONAME ?GetClass@PFileInfo@@UBEPBDI@Z @5438 NONAME ?GetClass@PFilePath@@UBEPBDI@Z @5439 NONAME ?GetClass@PHashTable@@UBEPBDI@Z @5440 NONAME ?GetClass@PICMPDLL@@UBEPBDI@Z @5441 NONAME ?GetClass@PICMPSocket@@UBEPBDI@Z @5442 NONAME ?GetClass@PImageDLL@@UBEPBDI@Z @5443 NONAME ?GetClass@PIndirectChannel@@UBEPBDI@Z @5444 NONAME ?GetClass@PIntCondMutex@@UBEPBDI@Z @5445 NONAME ?GetClass@PIPCacheData@@UBEPBDI@Z @5446 NONAME ?GetClass@PIPCacheKey@@UBEPBDI@Z @5447 NONAME ?GetClass@PIPDatagramSocket@@UBEPBDI@Z @5448 NONAME ?GetClass@PIPSocket@@UBEPBDI@Z @5449 NONAME ?GetClass@PIPXSocket@@UBEPBDI@Z @5450 NONAME ?GetClass@PluginLoaderStartup@@UBEPBDI@Z @6400 NONAME ?GetClass@PMail@@UBEPBDI@Z @5451 NONAME ?GetClass@PNotifier@@UBEPBDI@Z @5453 NONAME ?GetClass@PNotifierFunction@@UBEPBDI@Z @5454 NONAME ?GetClass@PObject@@UBEPBDI@Z @5455 NONAME ?GetClass@POrdinalKey@@UBEPBDI@Z @5456 NONAME ?GetClass@POrdinalToString@@UBEPBDI@Z @5457 NONAME ?GetClass@PPipeChannel@@UBEPBDI@Z @5458 NONAME ?GetClass@PPluginManager@@UBEPBDI@Z @5459 NONAME ?GetClass@PPointer@@UBEPBDI@Z @5977 NONAME ?GetClass@PProcess@@UBEPBDI@Z @5460 NONAME ?GetClass@PProcessStartup@@UBEPBDI@Z @6401 NONAME ?GetClass@PQoS@@UBEPBDI@Z @5461 NONAME ?GetClass@PRASDLL@@UBEPBDI@Z @5462 NONAME ?GetClass@PReadWriteMutex@@UBEPBDI@Z @5463 NONAME ?GetClass@PRegularExpression@@UBEPBDI@Z @5464 NONAME ?GetClass@PRemoteConnection@@UBEPBDI@Z @5465 NONAME ?GetClass@PSafeCollection@@UBEPBDI@Z @5466 NONAME ?GetClass@PSafeObject@@UBEPBDI@Z @5467 NONAME ?GetClass@PSafePtrBase@@UBEPBDI@Z @5468 NONAME ?GetClass@PSemaphore@@UBEPBDI@Z @5469 NONAME ?GetClass@PSerialChannel@@UBEPBDI@Z @5470 NONAME ?GetClass@PServiceProcess@@UBEPBDI@Z @5471 NONAME ?GetClass@PSimpleThread@@UBEPBDI@Z @5472 NONAME ?GetClass@PSmartObject@@UBEPBDI@Z @5473 NONAME ?GetClass@PSmartPointer@@UBEPBDI@Z @5474 NONAME ?GetClass@PSmartPtrInspector@@UBEPBDI@Z @5978 NONAME ?GetClass@PSocket@@UBEPBDI@Z @5475 NONAME ?GetClass@PSortedStringList@@UBEPBDI@Z @5476 NONAME ?GetClass@PSound@@UBEPBDI@Z @5477 NONAME ?GetClass@PSoundChannel@@UBEPBDI@Z @5478 NONAME ?GetClass@PSPXSocket@@UBEPBDI@Z @5479 NONAME ?GetClass@PStandardColourConverter@@UBEPBDI@Z @5480 NONAME ?GetClass@PString@@UBEPBDI@Z @5481 NONAME ?GetClass@PStringArray@@UBEPBDI@Z @5482 NONAME ?GetClass@PStringList@@UBEPBDI@Z @5483 NONAME ?GetClass@PStringSet@@UBEPBDI@Z @5484 NONAME ?GetClass@PStringStream@@UBEPBDI@Z @5485 NONAME ?GetClass@PStringToOrdinal@@UBEPBDI@Z @5486 NONAME ?GetClass@PStringToString@@UBEPBDI@Z @5487 NONAME ?GetClass@PStructuredFile@@UBEPBDI@Z @5488 NONAME ?GetClass@PSyncPoint@@UBEPBDI@Z @5489 NONAME ?GetClass@PSystemLog@@UBEPBDI@Z @5490 NONAME ?GetClass@PTCPSocket@@UBEPBDI@Z @5491 NONAME ?GetClass@PTextFile@@UBEPBDI@Z @5492 NONAME ?GetClass@PThread@@UBEPBDI@Z @5493 NONAME ?GetClass@PTime@@UBEPBDI@Z @5494 NONAME ?GetClass@PTimedMutex@@UBEPBDI@Z @16591 NONAME ?GetClass@PTimeInterval@@UBEPBDI@Z @5495 NONAME ?GetClass@PTimer@@UBEPBDI@Z @5496 NONAME ?GetClass@PTimerList@@UBEPBDI@Z @5497 NONAME ?GetClass@PUDPSocket@@UBEPBDI@Z @5498 NONAME ?GetClass@PVideoChannel@@UBEPBDI@Z @5499 NONAME ?GetClass@PVideoDevice@@UBEPBDI@Z @5500 NONAME ?GetClass@PVideoInputDevice@@UBEPBDI@Z @5501 NONAME ?GetClass@PVideoInputDevice_FakeVideo@@UBEPBDI@Z @5502 NONAME ?GetClass@PVideoInputDevice_VideoForWindows@@UBEPBDI@Z @5503 NONAME ?GetClass@PVideoOutputDevice@@UBEPBDI@Z @5505 NONAME ?GetClass@PVideoOutputDeviceRGB@@UBEPBDI@Z @16506 NONAME ?GetClass@PVideoOutputDevice_NULLOutput@@UBEPBDI@Z @5506 NONAME ?GetClass@PVideoOutputDevice_Window@@UBEPBDI@Z @16507 NONAME ?GetClass@PWaveBuffer@@UBEPBDI@Z @5507 NONAME ?GetClass@PWaveFormat@@UBEPBDI@Z @5508 NONAME ?GetClass@PWin32PacketBuffer@@UBEPBDI@Z @5509 NONAME ?GetClass@PWin32SnmpLibrary@@UBEPBDI@Z @5510 NONAME ?GetClass@PWinQoS@@UBEPBDI@Z @5511 NONAME ?GetClass@PWinSock@@UBEPBDI@Z @5512 NONAME ?GetClass@RouteEntry@PIPSocket@@UBEPBDI@Z @5513 NONAME ?GetClass@SelectList@PSocket@@UBEPBDI@Z @5514 NONAME ?GetClass@Table@PHashTable@@UBEPBDI@Z @5515 NONAME ?GetClass@WinSNMPLoader@@UBEPBDI@Z @6726 NONAME ?GetColour@PVideoDevice@@UAEHXZ @2209 NONAME ?GetColourFormat@PVideoDevice@@QBEABVPString@@XZ @2210 NONAME ?GetConfiguration@PRemoteConnection@@QAE?AW4Status@1@AAUConfiguration@1@@Z @2211 NONAME ?GetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@AAUConfiguration@1@@Z @2212 NONAME ?GetConfigurationFile@PProcess@@UAE?AVPString@@XZ @2213 NONAME ?GetContrast@PVideoDevice@@UAEHXZ @2214 NONAME ?GetCount@PArgList@@QBEHXZ @2215 NONAME ?GetCTS@PSerialChannel@@QAEHXZ @2216 NONAME ?GetCurrentThreadId@PThread@@SAKXZ @2217 NONAME ?GetData@PWin32PacketBuffer@@QAEHPAXH@Z @2218 NONAME ?GetDataAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@QBEAAVPThread@@H@Z @2219 NONAME ?GetDataAt@?$PStringDictionary@VPString@@@@QBEAAVPString@@H@Z @2220 NONAME ?GetDataBits@PSerialChannel@@QBEEXZ @2221 NONAME ?GetDateOrder@PTime@@SA?AW4DateOrder@1@XZ @2222 NONAME ?GetDateSeparator@PTime@@SA?AVPString@@XZ @2223 NONAME ?GetDay@PTime@@QBEHXZ @2224 NONAME ?GetDayName@PTime@@SA?AVPString@@W4Weekdays@1@W4NameType@1@@Z @2225 NONAME ?GetDayOfWeek@PTime@@QBE?AW4Weekdays@1@XZ @2226 NONAME ?GetDayOfYear@PTime@@QBEHXZ @2227 NONAME ?GetDays@PTimeInterval@@QBEHXZ @2228 NONAME ?GetDCD@PSerialChannel@@QAEHXZ @2229 NONAME ?GetDefaultDevice@PSoundChannel@@SA?AVPString@@W4Directions@1@@Z @2230 NONAME ?GetDefaultDevice@PSoundChannelWin32@@SA?AVPString@@W4Directions@PSoundChannel@@@Z @3665 NONAME ?GetDefaultDevice@PVideoChannel@@SA?AVPString@@W4Directions@1@@Z @2231 NONAME ?GetDefaultIpAddressFamily@PIPSocket@@SAHXZ @2232 NONAME ?GetDefaultIpAny@PIPSocket@@SA?AVAddress@1@XZ @2233 NONAME ?GetDefaultSection@PConfig@@UBE?AVPString@@XZ @3934 NONAME ?GetDeviceID@PSoundChannelWin32@@AAEHABVPString@@W4Directions@PSoundChannel@@AAI@Z @3666 NONAME ?GetDeviceNames@?$PSoundChannelPluginServiceDescriptor@VPSoundChannelWin32@@@@UBE?AVPStringList@@H@Z @16508 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_FakeVideo@@@@UBE?AVPStringList@@H@Z @16509 NONAME ?GetDeviceNames@?$PVideoInputPluginServiceDescriptor@VPVideoInputDevice_VideoForWindows@@@@UBE?AVPStringList@@H@Z @16510 NONAME ?GetDeviceNames@?$PVideoOutputPluginServiceDescriptor@VPVideoOutputDevice_NULLOutput@@@@UBE?AVPStringList@@H@Z @16511 NONAME ?GetDeviceNames@PSoundChannel@@SA?AVPStringList@@W4Directions@1@PAVPPluginManager@@@Z @16512 NONAME ?GetDeviceNames@PSoundChannelWin32@@SA?AVPStringArray@@W4Directions@PSoundChannel@@@Z @3669 NONAME ?GetDeviceNames@PVideoChannel@@SA?AVPStringList@@W4Directions@1@@Z @2237 NONAME ?GetDeviceNames@PVideoDevice@@UBE?AVPStringList@@XZ @3670 NONAME ?GetDeviceNames@PVideoInputDevice_FakeVideo@@UBE?AVPStringList@@XZ @3883 NONAME ?GetDeviceNames@PVideoInputDevice_VideoForWindows@@UBE?AVPStringList@@XZ @3884 NONAME ?GetDeviceNames@PVideoOutputDevice_NULLOutput@@UBE?AVPStringList@@XZ @3885 NONAME ?GetDeviceNames@PVideoOutputDevice_Window@@UBE?AVPStringList@@XZ @16513 NONAME ?GetDeviceNames@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE?AVPStringList@@H@Z @16514 NONAME ?GetDirectory@PFilePath@@QBE?AVPDirectory@@XZ @2241 NONAME ?GetDriverNames@PSoundChannel@@SA?AVPStringList@@PAVPPluginManager@@@Z @3673 NONAME ?GetDriverNames@PVideoInputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @3674 NONAME ?GetDriverNames@PVideoOutputDevice@@SA?AVPStringList@@PAVPPluginManager@@@Z @3813 NONAME ?GetDriversDeviceNames@PSoundChannel@@SA?AVPStringList@@ABVPString@@W4Directions@1@PAVPPluginManager@@@Z @16515 NONAME ?GetDriversDeviceNames@PVideoInputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @3886 NONAME ?GetDriversDeviceNames@PVideoOutputDevice@@SA?AVPStringList@@ABVPString@@PAVPPluginManager@@@Z @3887 NONAME ?GetDSCP@PQoS@@QBEHXZ @3556 NONAME ?GetDSR@PSerialChannel@@QAEHXZ @2242 NONAME ?GetDstColourFormat@PColourConverter@@QAEABVPString@@XZ @2243 NONAME ?GetDstFrameSize@PColourConverter@@QBEHAAI0@Z @2244 NONAME ?GetElementAt@Table@PHashTable@@QAEPAVElement@2@ABVPObject@@@Z @2245 NONAME ?GetElementsIndex@Table@PHashTable@@QBEHPBVPObject@@HH@Z @2246 NONAME ?GetEncoding@PSound@@QBEIXZ @2247 NONAME ?GetEntryName@PDirectory@@UBE?AVPCaselessString@@XZ @7584 NONAME ?GetError@ServiceManager@@QBEKXZ @2249 NONAME ?GetErrorCode@PChannel@@QBE?AW4Errors@1@W4ErrorGroup@1@@Z @2250 NONAME ?GetErrorCode@PMail@@QBEHXZ @2251 NONAME ?GetErrorCode@PRegularExpression@@QBE?AW4ErrorCodes@1@XZ @2252 NONAME ?GetErrorNumber@PChannel@@QBEHW4ErrorGroup@1@@Z @2253 NONAME ?GetErrorText@PChannel@@SA?AVPString@@W4Errors@1@H@Z @2254 NONAME ?GetErrorText@PChannel@@UBE?AVPString@@W4ErrorGroup@1@@Z @2255 NONAME ?GetErrorText@PIndirectChannel@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @2256 NONAME ?GetErrorText@PMail@@QBE?AVPString@@XZ @2257 NONAME ?GetErrorText@PRegularExpression@@QBE?AVPString@@XZ @2258 NONAME ?GetErrorText@PSoundChannelWin32@@UBE?AVPString@@W4ErrorGroup@PChannel@@@Z @3675 NONAME ?GetEvent@PWin32PacketBuffer@@QBEPAXXZ @2260 NONAME ?GetExtension@PDynaLink@@SA?AVPString@@XZ @2261 NONAME ?GetFactories@PFactoryBase@@SAAAVFactoryMap@1@XZ @7038 NONAME ?GetFactoriesMutex@PFactoryBase@@SAAAVPCriticalSection@@XZ @16592 NONAME ?GetFile@PProcess@@QBEABVPFilePath@@XZ @2262 NONAME ?GetFileName@PFilePath@@QBE?AVPCaselessString@@XZ @2263 NONAME ?GetFilePath@PFile@@QBEABVPFilePath@@XZ @2264 NONAME ?GetFilter@PEthSocket@@QAEHAAIAAG@Z @2265 NONAME ?GetFormatInfoData@PSound@@QBEPBXXZ @2266 NONAME ?GetFormatInfoSize@PSound@@QBEHXZ @2267 NONAME ?GetFrame@PVideoInputDevice@@UAEHAAVPBYTEArray@@@Z @16516 NONAME ?GetFrameData@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @3815 NONAME ?GetFrameData@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @3677 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_FakeVideo@@UAEHPAEPAH@Z @3816 NONAME ?GetFrameDataNoDelay@PVideoInputDevice_VideoForWindows@@UAEHPAEPAH@Z @3678 NONAME ?GetFrameHeight@PVideoDevice@@UBEIXZ @2273 NONAME ?GetFrameRate@PVideoDevice@@UBEIXZ @2274 NONAME ?GetFrameSize@PVideoDevice@@UAEHAAI0@Z @2275 NONAME ?GetFrameSizeLimits@PVideoDevice@@UAEHAAI000@Z @2277 NONAME ?GetFrameSizeLimits@PVideoInputDevice_FakeVideo@@UAEHAAI000@Z @3817 NONAME ?GetFrameWidth@PVideoDevice@@UBEIXZ @2278 NONAME ?GetFunction@PDynaLink@@QAEHABVPString@@AAP6AXXZ@Z @2279 NONAME ?GetFunction@PDynaLink@@QAEHHAAP6AXXZ@Z @2280 NONAME ?GetGatewayAddress@PIPSocket@@SAHAAVAddress@1@@Z @2281 NONAME ?GetGatewayInterface@PIPSocket@@SA?AVPString@@XZ @2282 NONAME ?GetGatewayInterfaceAddress@PIPSocket@@SA?AVAddress@1@XZ @16517 NONAME ?GetGrabHeight@PVideoChannel@@UAEHXZ @2283 NONAME ?GetGrabWidth@PVideoChannel@@UAEHXZ @2284 NONAME ?GetGroupName@PProcess@@QBE?AVPString@@XZ @2285 NONAME ?GetHandle@PChannel@@QBEHXZ @2286 NONAME ?GetHandle@PSemaphore@@QBEPAXXZ @2287 NONAME ?GetHandle@PSoundChannel@@UBEHXZ @3679 NONAME ?GetHandle@PThread@@QBEPAXXZ @2288 NONAME ?GetHost@PHostByAddr@@AAEPAVPIPCacheData@@ABVAddress@PIPSocket@@@Z @2289 NONAME ?GetHost@PHostByName@@AAEPAVPIPCacheData@@ABVPString@@@Z @2290 NONAME ?GetHostAddress@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAV23@@Z @2291 NONAME ?GetHostAddress@PHostByName@@QAEHABVPString@@AAVAddress@PIPSocket@@@Z @2292 NONAME ?GetHostAddress@PIPCacheData@@QBEABVAddress@PIPSocket@@XZ @2293 NONAME ?GetHostAddress@PIPSocket@@SAHAAVAddress@1@@Z @2294 NONAME ?GetHostAddress@PIPSocket@@SAHABVPString@@AAVAddress@1@@Z @2295 NONAME ?GetHostAddress@PIPXSocket@@SAHAAVAddress@1@@Z @2296 NONAME ?GetHostAddress@PIPXSocket@@SAHABVPString@@AAVAddress@1@@Z @2297 NONAME ?GetHostAliases@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPStringArray@@@Z @2298 NONAME ?GetHostAliases@PHostByName@@QAEHABVPString@@AAVPStringArray@@@Z @2299 NONAME ?GetHostAliases@PIPCacheData@@QBEABVPStringList@@XZ @2300 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVAddress@1@@Z @2301 NONAME ?GetHostAliases@PIPSocket@@SA?AVPStringArray@@ABVPString@@@Z @2302 NONAME ?GetHostName@PHostByAddr@@QAEHABVAddress@PIPSocket@@AAVPString@@@Z @2303 NONAME ?GetHostName@PHostByName@@QAEHABVPString@@AAV2@@Z @2304 NONAME ?GetHostName@PIPCacheData@@QBEABVPString@@XZ @2305 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABV2@@Z @2306 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@ABVAddress@1@@Z @2307 NONAME ?GetHostName@PIPSocket@@SA?AVPString@@XZ @2308 NONAME ?GetHostName@PIPXSocket@@SA?AVPString@@ABVAddress@1@@Z @2309 NONAME ?GetHour@PTime@@QBEHXZ @2310 NONAME ?GetHours@PTimeInterval@@QBEHXZ @2311 NONAME ?GetHue@PVideoDevice@@UAEHXZ @2312 NONAME ?GetInfo@PDirectory@@UBEHAAVPFileInfo@@@Z @7585 NONAME ?GetInfo@PFile@@QAEHAAVPFileInfo@@@Z @2314 NONAME ?GetInfo@PFile@@SAHABVPFilePath@@AAVPFileInfo@@@Z @2315 NONAME ?GetInitialVal@PSemaphore@@QBEIXZ @2316 NONAME ?GetInputDeviceNames@PVideoInputDevice_FakeVideo@@SA?AVPStringList@@XZ @3818 NONAME ?GetInputDeviceNames@PVideoInputDevice_VideoForWindows@@SA?AVPStringList@@XZ @3680 NONAME ?GetInputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @2319 NONAME ?GetInstance@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@KAAAV1@XZ @7433 NONAME ?GetInstance@?$PFactory@VPPluginModuleManager@@VPString@@@@KAAAV1@XZ @6939 NONAME ?GetInstance@?$PFactory@VPProcessStartup@@VPString@@@@KAAAV1@XZ @6940 NONAME ?GetInstance@?$PFactory@VPSoundChannel@@VPString@@@@KAAAV1@XZ @7434 NONAME ?GetInstance@?$PFactory@VPVideoInputDevice@@VPString@@@@KAAAV1@XZ @7435 NONAME ?GetInstance@?$PFactory@VPVideoOutputDevice@@VPString@@@@KAAAV1@XZ @7436 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@0_J@Z @3935 NONAME ?GetInt64@PConfig@@UBE_JABVPString@@_J@Z @3936 NONAME ?GetInteger@PConfig@@UBEJABVPString@@0J@Z @3937 NONAME ?GetInteger@PConfig@@UBEJABVPString@@J@Z @3938 NONAME ?GetInteger@PWin32AsnAny@@QAEHAAJ@Z @2324 NONAME ?GetInterface@PIPSocket@@SA?AVPString@@VAddress@1@@Z @16518 NONAME ?GetInterfaceAddress@PWin32SnmpLibrary@@QAE?AVAddress@PIPSocket@@H@Z @16519 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@H@Z @2325 NONAME ?GetInterfaceName@PWin32SnmpLibrary@@QAE?AVPString@@VAddress@PIPSocket@@@Z @2326 NONAME ?GetInterfaceTable@PIPSocket@@SAHAAV?$PList@VInterfaceEntry@PIPSocket@@@@@Z @2327 NONAME ?GetInterval@PTimeInterval@@QBEKXZ @2328 NONAME ?GetIP@Psockaddr@@QBE?AVAddress@PIPSocket@@XZ @3888 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@0@Z @2329 NONAME ?GetIpAddress@PEthSocket@@QAEHAAVAddress@PIPSocket@@@Z @2330 NONAME ?GetIpAddress@PWin32AsnAny@@QAEHAAVAddress@PIPSocket@@@Z @2331 NONAME ?GetKeyAt@?$PSet@VPString@@@@UBEABVPString@@H@Z @2332 NONAME ?GetKeyAt@?$PStringDictionary@VPString@@@@QBEABVPString@@H@Z @2333 NONAME ?GetKeyList@?$PFactory@VPPluginModuleManager@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6941 NONAME ?GetKeyList@?$PFactory@VPProcessStartup@@VPString@@@@SA?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6942 NONAME ?GetKeyList_Internal@?$PFactory@VPPluginModuleManager@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6943 NONAME ?GetKeyList_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE?AV?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@XZ @6944 NONAME ?GetKeyMap@?$PFactory@VPSoundChannel@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@@std@@XZ @16201 NONAME ?GetKeyMap@?$PFactory@VPVideoInputDevice@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@@std@@XZ @16202 NONAME ?GetKeyMap@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAAAV?$map@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@@std@@XZ @16203 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@ABVPString@@@Z @3939 NONAME ?GetKeys@PConfig@@UBE?AVPStringList@@XZ @3940 NONAME ?GetLastError@PMultiMediaFile@@QBEKXZ @2336 NONAME ?GetLastError@PWin32PacketDriver@@QBEKXZ @2337 NONAME ?GetLastReadCount@PChannel@@UBEHXZ @3922 NONAME ?GetLastReadCount@PSoundChannel@@UBEHXZ @3923 NONAME ?GetLastReceiveAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @2339 NONAME ?GetLastWriteCount@PChannel@@UBEHXZ @3924 NONAME ?GetLastWriteCount@PSoundChannel@@UBEHXZ @3925 NONAME ?GetLength@PFile@@UBEJXZ @2341 NONAME ?GetLength@PString@@QBEHXZ @2342 NONAME ?GetLength@SecurityID@@QBEKXZ @2343 NONAME ?GetLevel@PTrace@@SAIXZ @2344 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@@Z @2345 NONAME ?GetLocalAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @2346 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @2347 NONAME ?GetLocalAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @2348 NONAME ?GetLocalHostName@PIPSocket@@QAE?AVPString@@XZ @2349 NONAME ?GetLogLevel@PServiceProcess@@QBE?AW4Level@PSystemLog@@XZ @2350 NONAME ?GetLoopback6@Address@PIPSocket@@SAABV12@XZ @3889 NONAME ?GetLoopback@Address@PIPSocket@@SAABV12@XZ @2351 NONAME ?GetManufacturer@PProcess@@UBEABVPString@@XZ @2352 NONAME ?GetMaxCountVal@PSemaphore@@QBEIXZ @2353 NONAME ?GetMaxDstFrameBytes@PColourConverter@@QAEHXZ @2354 NONAME ?GetMaxFrameBytes@PVideoInputDevice_FakeVideo@@UAEHXZ @3819 NONAME ?GetMaxFrameBytes@PVideoInputDevice_VideoForWindows@@UAEHXZ @3681 NONAME ?GetMaxFrameBytes@PVideoOutputDeviceRGB@@UAEHXZ @16520 NONAME ?GetMaxFrameBytes@PVideoOutputDevice_NULLOutput@@UAEHXZ @3820 NONAME ?GetMaxFrameBytesConverted@PVideoDevice@@IBEHH@Z @16521 NONAME ?GetMaxHandles@PProcess@@QBEHXZ @2359 NONAME ?GetMaxSrcFrameBytes@PColourConverter@@QAEHXZ @16522 NONAME ?GetMedium@PEthSocket@@QAE?AW4MediumTypes@1@XZ @2360 NONAME ?GetMessageAttachments@PMail@@QAEHABVPString@@AAVPStringArray@@HH@Z @2361 NONAME ?GetMessageBody@PMail@@QAEHABVPString@@AAV2@H@Z @2362 NONAME ?GetMessageHeader@PMail@@QAEHABVPString@@AAUHeader@1@@Z @2363 NONAME ?GetMessageIDs@PMail@@QAE?AVPStringArray@@H@Z @2364 NONAME ?GetMicrosecond@PTime@@QBEJXZ @2365 NONAME ?GetMilliSeconds@PTimeInterval@@QBE_JXZ @2366 NONAME ?GetMinute@PTime@@QBEHXZ @2367 NONAME ?GetMinutes@PTimeInterval@@QBEJXZ @2368 NONAME ?GetMonth@PTime@@QBE?AW4Months@1@XZ @2369 NONAME ?GetMonthName@PTime@@SA?AVPString@@W4Months@1@W4NameType@1@@Z @2370 NONAME ?GetMutex@PWin32SnmpLibrary@@SAAAVPCriticalSection@@XZ @16593 NONAME ?GetName@InterfaceEntry@PIPSocket@@QBEABVPString@@XZ @16523 NONAME ?GetName@PChannel@@UBE?AVPString@@XZ @2371 NONAME ?GetName@PConsoleChannel@@UBE?AVPString@@XZ @2372 NONAME ?GetName@PDynaLink@@UBE?AVPString@@H@Z @2373 NONAME ?GetName@PEthSocket@@UBE?AVPString@@XZ @2374 NONAME ?GetName@PFile@@UBE?AVPString@@XZ @2375 NONAME ?GetName@PIndirectChannel@@UBE?AVPString@@XZ @2376 NONAME ?GetName@PIPSocket@@UBE?AVPString@@XZ @2377 NONAME ?GetName@PIPXSocket@@UBE?AVPString@@XZ @2378 NONAME ?GetName@PPipeChannel@@UBE?AVPString@@XZ @2379 NONAME ?GetName@PProcess@@UBEABVPString@@XZ @2380 NONAME ?GetName@PSerialChannel@@UBE?AVPString@@XZ @2381 NONAME ?GetName@PSoundChannelWin32@@UBE?AVPString@@XZ @3682 NONAME ?GetName@PVideoChannel@@UBE?AVPString@@XZ @2383 NONAME ?GetNameByProtocol@PSocket@@SA?AVPString@@G@Z @2384 NONAME ?GetNest@PReadWriteMutex@@IBEPAVNest@1@XZ @2385 NONAME ?GetNetMask@InterfaceEntry@PIPSocket@@QBE?AVAddress@2@XZ @16524 NONAME ?GetNetworkInterface@PIPSocket@@SAHAAVAddress@1@@Z @7659 NONAME ?GetNextOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @2386 NONAME ?GetNextStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @2387 NONAME ?GetNotifiee@PSmartNotifieeRegistrar@@SAPAXI@Z @5979 NONAME ?GetNotifiee@PSmartNotifierFunction@@QBEPAXXZ @5980 NONAME ?GetNotifieeID@PSmartNotifierFunction@@QBEIXZ @5981 NONAME ?GetNotifier@PTimer@@QBEABVPNotifier@@XZ @2388 NONAME ?GetNumChannels@PVideoDevice@@UAEHXZ @2390 NONAME ?GetNumChannels@PVideoInputDevice_FakeVideo@@UAEHXZ @3821 NONAME ?GetObjectA@PSmartPtrInspector@@QBEPAXXZ @5982 NONAME ?GetObjectsIndex@PAbstractDictionary@@UBEHPBVPObject@@@Z @2391 NONAME ?GetObjectsIndex@PAbstractList@@UBEHPBVPObject@@@Z @2392 NONAME ?GetObjectsIndex@PAbstractSet@@UBEHPBVPObject@@@Z @2393 NONAME ?GetObjectsIndex@PAbstractSortedList@@UBEHPBVPObject@@@Z @2394 NONAME ?GetObjectsIndex@PArrayObjects@@UBEHPBVPObject@@@Z @2395 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAJ@Z @2396 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVAddress@PIPSocket@@@Z @2397 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPString@@@Z @2398 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @2399 NONAME ?GetOid@PWin32SnmpLibrary@@QAEHAAUAsnObjectIdentifier@@PAXIPAI@Z @2400 NONAME ?GetOption@PSocket@@QAEHHAAHH@Z @2401 NONAME ?GetOption@PSocket@@QAEHHPAXHH@Z @2402 NONAME ?GetOptionCount@PArgList@@UBEHABVPString@@@Z @2403 NONAME ?GetOptionCount@PArgList@@UBEHD@Z @2404 NONAME ?GetOptionCount@PArgList@@UBEHPBD@Z @2405 NONAME ?GetOptionCount@PConfigArgs@@UBEHABVPString@@@Z @2406 NONAME ?GetOptionCount@PConfigArgs@@UBEHD@Z @2407 NONAME ?GetOptionCount@PConfigArgs@@UBEHPBD@Z @2408 NONAME ?GetOptionCountByIndex@PArgList@@ABEHH@Z @2409 NONAME ?GetOptions@PTrace@@SAIXZ @2410 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@ABV2@PBD@Z @2411 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@DPBD@Z @2412 NONAME ?GetOptionString@PArgList@@UBE?AVPString@@PBD0@Z @2413 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@ABV2@PBD@Z @2414 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@DPBD@Z @2415 NONAME ?GetOptionString@PConfigArgs@@UBE?AVPString@@PBD0@Z @2416 NONAME ?GetOptionStringByIndex@PArgList@@ABE?AVPString@@HPBD@Z @2417 NONAME ?GetOSClass@PProcess@@SA?AVPString@@XZ @2418 NONAME ?GetOSConfigDir@PProcess@@SA?AVPDirectory@@XZ @2419 NONAME ?GetOSHardware@PProcess@@SA?AVPString@@XZ @2420 NONAME ?GetOSName@PProcess@@SA?AVPString@@XZ @2421 NONAME ?GetOSVersion@PProcess@@SA?AVPString@@XZ @2422 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_NULLOutput@@SA?AVPStringList@@XZ @3822 NONAME ?GetOutputDeviceNames@PVideoOutputDevice_Window@@SA?AVPStringList@@XZ @16525 NONAME ?GetOutputFlowControl@PSerialChannel@@QBE?AW4FlowControl@1@XZ @2423 NONAME ?GetPacketType@PIPXSocket@@QAEHXZ @2424 NONAME ?GetParameter@PArgList@@QBE?AVPString@@H@Z @2425 NONAME ?GetParameters@PArgList@@QBE?AVPStringArray@@HH@Z @2426 NONAME ?GetParameters@PVideoDevice@@UAEHPAH0000@Z @2427 NONAME ?GetParent@PDirectory@@QBE?AV1@XZ @2428 NONAME ?GetParity@PSerialChannel@@QBE?AW4Parity@1@XZ @2429 NONAME ?GetPath@PDirectory@@QBE?AVPStringArray@@XZ @2430 NONAME ?GetPath@PFilePath@@QBE?AVPCaselessString@@XZ @2431 NONAME ?GetPeakBandwidth@PQoS@@QBEKXZ @3890 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@@Z @2432 NONAME ?GetPeerAddress@PIPSocket@@UAEHAAVAddress@1@AAG@Z @2433 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@@Z @2434 NONAME ?GetPeerAddress@PIPXSocket@@QAEHAAVAddress@1@AAG@Z @2435 NONAME ?GetPeerHostName@PIPSocket@@QAE?AVPString@@XZ @2436 NONAME ?GetPluginAPIVersion@PPluginServiceDescriptor@@UBEIXZ @16526 NONAME ?GetPluginDirs@PPluginManager@@SA?AVPStringArray@@XZ @5997 NONAME ?GetPluginList@PPluginModuleManager@@UBE?AV?$PDictionary@VPString@@VPDynaLink@@@@XZ @5891 NONAME ?GetPluginManager@PPluginManager@@SAAAV1@XZ @3683 NONAME ?GetPluginsDeviceNames@PPluginManager@@QBE?AVPStringList@@ABVPString@@0H@Z @16527 NONAME ?GetPluginsProviding@PPluginManager@@QBE?AVPStringList@@ABVPString@@@Z @3684 NONAME ?GetPluginTypes@PPluginManager@@QBE?AVPStringList@@XZ @3685 NONAME ?GetPointer@?$PBaseArray@D@@QAEPADH@Z @2437 NONAME ?GetPointer@?$PBaseArray@E@@QAEPAEH@Z @2438 NONAME ?GetPointer@?$PBaseArray@F@@QAEPAFH@Z @2439 NONAME ?GetPointer@?$PBaseArray@G@@QAEPAGH@Z @2440 NONAME ?GetPointer@?$PBaseArray@H@@QAEPAHH@Z @2441 NONAME ?GetPointer@?$PBaseArray@I@@QAEPAIH@Z @2442 NONAME ?GetPointer@?$PBaseArray@J@@QAEPAJH@Z @2443 NONAME ?GetPointer@?$PBaseArray@K@@QAEPAKH@Z @2444 NONAME ?GetPointer@Address@PIPSocket@@QBEPBDXZ @2445 NONAME ?GetPointer@PAbstractArray@@QAEPAXH@Z @2446 NONAME ?GetPointer@PBitArray@@QAEPAEH@Z @2447 NONAME ?GetPointer@PPointer@@QBEPAXXZ @5983 NONAME ?GetPointer@PWaveFormat@@QBEPAXXZ @2448 NONAME ?GetPort@Psockaddr@@QBEGXZ @3891 NONAME ?GetPort@PSocket@@QBEGXZ @2449 NONAME ?GetPortByService@PSocket@@SAGPBDABVPString@@@Z @2450 NONAME ?GetPortByService@PSocket@@UBEGABVPString@@@Z @2451 NONAME ?GetPortNames@PSerialChannel@@SA?AVPStringList@@XZ @2452 NONAME ?GetPosition@PFile@@UBEJXZ @2453 NONAME ?GetPriority@PThread@@UBE?AW4Priority@1@XZ @2454 NONAME ?GetProcessID@PProcess@@QBEKXZ @2455 NONAME ?GetProtocolByName@PSocket@@SAGABVPString@@@Z @2456 NONAME ?GetProtocolName@PEthSocket@@MBEPBDXZ @2457 NONAME ?GetProtocolName@PICMPSocket@@MBEPBDXZ @2458 NONAME ?GetProtocolName@PIPXSocket@@MBEPBDXZ @2459 NONAME ?GetProtocolName@PSPXSocket@@MBEPBDXZ @2460 NONAME ?GetProtocolName@PTCPSocket@@MBEPBDXZ @2461 NONAME ?GetProtocolName@PUDPSocket@@MBEPBDXZ @2462 NONAME ?GetProtocolName@PWinSock@@EBEPBDXZ @2463 NONAME ?GetQoSSpec@PUDPSocket@@UAEAAVPQoS@@XZ @16528 NONAME ?GetQueryOidCommand@PWin32PacketSYS@@UBEIK@Z @2464 NONAME ?GetQueryOidCommand@PWin32PacketVxD@@UBEIK@Z @2465 NONAME ?GetReadChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @2466 NONAME ?GetReadTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @2467 NONAME ?GetReal@PConfig@@UBENABVPString@@0N@Z @3941 NONAME ?GetReal@PConfig@@UBENABVPString@@N@Z @3942 NONAME ?GetRefAt@PAbstractDictionary@@UBEAAVPObject@@ABV2@@Z @2470 NONAME ?GetReferenceAt@PAbstractList@@IBEAAVPObject@@H@Z @2471 NONAME ?GetRenderHeight@PVideoChannel@@QAEHXZ @2472 NONAME ?GetRenderWidth@PVideoChannel@@QAEHXZ @2473 NONAME ?GetResetTime@PTimer@@QBEABVPTimeInterval@@XZ @2474 NONAME ?GetReturnCode@PPipeChannel@@QBEHXZ @2475 NONAME ?GetRing@PSerialChannel@@QAEHXZ @2476 NONAME ?GetRoot@PDirectory@@QBE?AV1@XZ @2477 NONAME ?GetRouteAddress@PIPSocket@@SA?AVAddress@1@V21@@Z @16529 NONAME ?GetRouteTable@PIPSocket@@SAHAAV?$PList@VRouteEntry@PIPSocket@@@@@Z @2478 NONAME ?GetSampleRate@PSound@@QBEIXZ @2479 NONAME ?GetSampleRate@PSoundChannel@@UBEIXZ @3686 NONAME ?GetSampleRate@PSoundChannelWin32@@UBEIXZ @3687 NONAME ?GetSampleSize@PSound@@QBEIXZ @2481 NONAME ?GetSampleSize@PSoundChannel@@UBEIXZ @3688 NONAME ?GetSampleSize@PSoundChannelWin32@@UBEIXZ @3689 NONAME ?GetSecond@PTime@@QBEHXZ @2483 NONAME ?GetSeconds@PTimeInterval@@QBEJXZ @2484 NONAME ?GetSections@PConfig@@UBE?AVPStringList@@XZ @3943 NONAME ?GetSendAddress@PUDPSocket@@QAEXAAVAddress@PIPSocket@@AAG@Z @2486 NONAME ?GetService@PSocket@@QBE?AVPString@@XZ @2487 NONAME ?GetServiceByPort@PSocket@@SA?AVPString@@PBDG@Z @2488 NONAME ?GetServiceByPort@PSocket@@UBE?AVPString@@G@Z @2489 NONAME ?GetServiceDependencies@PServiceProcess@@UBEPBDXZ @2490 NONAME ?GetServiceDescriptor@PPluginManager@@QBEPAVPPluginServiceDescriptor@@ABVPString@@0@Z @16530 NONAME ?GetServiceType@PQoS@@QBEKXZ @3561 NONAME ?GetSize@Address@PIPSocket@@QBEHXZ @2491 NONAME ?GetSize@PArrayObjects@@UBEHXZ @2492 NONAME ?GetSize@PBitArray@@UBEHXZ @2493 NONAME ?GetSize@PContainer@@UBEHXZ @2494 NONAME ?GetSize@PSafeCollection@@QBEHXZ @7043 NONAME ?GetSize@Psockaddr@@QBEHXZ @3892 NONAME ?GetSize@PWaveFormat@@QBEHXZ @2495 NONAME ?GetSpeed@PSerialChannel@@QBEKXZ @2496 NONAME ?GetSrcColourFormat@PColourConverter@@QAEABVPString@@XZ @2497 NONAME ?GetSrcFrameSize@PColourConverter@@QBEHAAI0@Z @2498 NONAME ?GetStartTime@PProcess@@QBE?AVPTime@@XZ @2499 NONAME ?GetStatus@PRemoteConnection@@QBE?AW4Status@1@XZ @2500 NONAME ?GetStopBits@PSerialChannel@@QBEEXZ @2501 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@00@Z @3944 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@0@Z @3945 NONAME ?GetString@PConfig@@UBE?AVPString@@ABV2@@Z @3946 NONAME ?GetStringsIndex@PSortedStringList@@QBEHABVPString@@@Z @2505 NONAME ?GetStringsIndex@PStringArray@@QBEHABVPString@@@Z @2506 NONAME ?GetStringsIndex@PStringList@@QBEHABVPString@@@Z @2507 NONAME ?GetTarget@PSmartFuncInspector@@QBEPAXXZ @5984 NONAME ?GetTarget@PSmartPtrInspector@@QBEPAXXZ @5985 NONAME ?GetTerminationValue@PProcess@@QBEHXZ @2508 NONAME ?GetThreadId@PThread@@UBEKXZ @2509 NONAME ?GetThreadName@PProcess@@UBE?AVPString@@XZ @2510 NONAME ?GetThreadName@PThread@@UBE?AVPString@@XZ @2511 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0@Z @3947 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@0ABV2@@Z @3948 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@@Z @3949 NONAME ?GetTime@PConfig@@UBE?AVPTime@@ABVPString@@ABV2@@Z @3950 NONAME ?GetTimeAM@PTime@@SA?AVPString@@XZ @2516 NONAME ?GetTimeAMPM@PTime@@SAHXZ @2517 NONAME ?GetTimeInSeconds@PTime@@QBEJXZ @2518 NONAME ?GetTimePM@PTime@@SA?AVPString@@XZ @2519 NONAME ?GetTimerList@PProcess@@QAEPAVPTimerList@@XZ @2520 NONAME ?GetTimeSeparator@PTime@@SA?AVPString@@XZ @2521 NONAME ?GetTimestamp@PTime@@QBE_JXZ @2522 NONAME ?GetTimeZone@PTime@@SAHW4TimeZoneType@1@@Z @2523 NONAME ?GetTimeZone@PTime@@SAHXZ @2524 NONAME ?GetTimeZoneString@PTime@@SA?AVPString@@W4TimeZoneType@1@@Z @2525 NONAME ?GetTitle@PFilePath@@QBE?AVPCaselessString@@XZ @2526 NONAME ?GetTokenBucketSize@PQoS@@QBEKXZ @3893 NONAME ?GetTokenRate@PQoS@@QBEKXZ @3894 NONAME ?GetType@PFilePath@@QBE?AVPCaselessString@@XZ @2527 NONAME ?GetUserNameA@PProcess@@QBE?AVPString@@XZ @2528 NONAME ?GetValuesIndex@PAbstractDictionary@@UBEHABVPObject@@@Z @2529 NONAME ?GetValuesIndex@PAbstractList@@UBEHABVPObject@@@Z @2530 NONAME ?GetValuesIndex@PAbstractSet@@UBEHABVPObject@@@Z @2531 NONAME ?GetValuesIndex@PAbstractSortedList@@UBEHABVPObject@@@Z @2532 NONAME ?GetValuesIndex@PArrayObjects@@UBEHABVPObject@@@Z @2533 NONAME ?GetVersion@Address@PIPSocket@@QBEIXZ @2534 NONAME ?GetVersion@PProcess@@UBE?AVPString@@H@Z @2535 NONAME ?GetVFlipState@PColourConverter@@QAEHXZ @2536 NONAME ?GetVFlipState@PVideoDevice@@UAEHXZ @2537 NONAME ?GetVFlipState@PVideoOutputDevice_Window@@UAEHXZ @16531 NONAME ?GetVideoFormat@PVideoDevice@@UBE?AW4VideoFormat@1@XZ @2538 NONAME ?GetVideoPlayer@PVideoChannel@@UAEPAVPVideoOutputDevice@@XZ @2539 NONAME ?GetVideoReader@PVideoChannel@@UAEPAVPVideoInputDevice@@XZ @2540 NONAME ?GetVolume@PDirectory@@QBE?AVPCaselessString@@XZ @2541 NONAME ?GetVolume@PFilePath@@QBE?AVPCaselessString@@XZ @2542 NONAME ?GetVolume@PSoundChannel@@UAEHAAI@Z @3691 NONAME ?GetVolume@PSoundChannelWin32@@UAEHAAI@Z @3692 NONAME ?GetVolumeSpace@PDirectory@@QBEHAA_J0AAK@Z @2544 NONAME ?GetWhiteness@PVideoDevice@@UAEHXZ @2545 NONAME ?GetWriteChannel@PIndirectChannel@@QBEPAVPChannel@@XZ @2546 NONAME ?GetWriteTimeout@PChannel@@QBE?AVPTimeInterval@@XZ @2547 NONAME ?GetYear@PTime@@QBEHXZ @2548 NONAME ?get_allocator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@2@XZ @16204 NONAME ?get_allocator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@2@XZ @16205 NONAME ?get_allocator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AV?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@2@XZ @16206 NONAME ?goodbit@?$_Iosb@H@std@@2W4_Iostate@12@B @5741 NONAME ?GrabBlankImage@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3823 NONAME ?GrabBouncingBoxes@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3824 NONAME ?GrabMovingBlocksTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3825 NONAME ?GrabMovingLineTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3826 NONAME ?GrabNTSCTestFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3827 NONAME ?GrabOriginalMovingBlocksFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3828 NONAME ?GrabTextVideoFrame@PVideoInputDevice_FakeVideo@@QAEXPAE@Z @3829 NONAME ?GreytoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @16532 NONAME ?GreytoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAE@Z @16533 NONAME ?GreytoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAE@Z @16534 NONAME ?guaranteedDSCP@PQoS@@2DA @3565 NONAME ?HandleCapture@PVideoInputDevice_VideoForWindows@@MAEXAAVPThread@@H@Z @16535 NONAME ?HandleDisplay@PVideoOutputDevice_Window@@MAEXAAVPThread@@H@Z @16536 NONAME ?HandleError@PVideoInputDevice_VideoForWindows@@IAEJHPBD@Z @3694 NONAME ?HandleVideo@PVideoInputDevice_VideoForWindows@@IAEJPAUvideohdr_tag@@@Z @3695 NONAME ?HasAged@PIPCacheData@@QBEHXZ @2563 NONAME ?HashFunction@PChannel@@UBEHXZ @2564 NONAME ?HashFunction@PIPCacheKey@@UBEHXZ @2565 NONAME ?HashFunction@PObject@@UBEHXZ @2566 NONAME ?HashFunction@POrdinalKey@@UBEHXZ @2567 NONAME ?HashFunction@PRemoteConnection@@UBEHXZ @2568 NONAME ?HashFunction@PString@@UBEHXZ @2569 NONAME ?HasKey@PConfig@@UBEHABVPString@@0@Z @3951 NONAME ?HasKey@PConfig@@UBEHABVPString@@@Z @3952 NONAME ?HasOption@PArgList@@QBEHABVPString@@@Z @2572 NONAME ?HasOption@PArgList@@QBEHD@Z @2573 NONAME ?HasOption@PArgList@@QBEHPBD@Z @2574 NONAME ?HasPlayCompleted@PSoundChannel@@UAEHXZ @3696 NONAME ?HasPlayCompleted@PSoundChannelWin32@@UAEHXZ @3697 NONAME ?hex@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5742 NONAME ?hex@std@@YAAAVios_base@1@AAV21@@Z @5743 NONAME ?Host2Net@PSocket@@SAGG@Z @2576 NONAME ?ICMP@@3VPICMPDLL@@A @2577 NONAME ?IllegalArgumentIndex@PArgList@@UBEXH@Z @2578 NONAME ?IN6_IS_ADDR_LINKLOCAL@@YAHPBUin6_addr@@@Z @7671 NONAME ?IN6_IS_ADDR_LOOPBACK@@YAHPBUin6_addr@@@Z @7672 NONAME ?IN6_IS_ADDR_SITELOCAL@@YAHPBUin6_addr@@@Z @7673 NONAME ?IN6_IS_ADDR_V4COMPAT@@YAHPBUin6_addr@@@Z @7674 NONAME ?IN6_IS_ADDR_V4MAPPED@@YAHPBUin6_addr@@@Z @7675 NONAME ?in@?$_Iosb@H@std@@2W4_Openmode@12@B @5744 NONAME ?Include@PStringSet@@QAEXABVPString@@@Z @2579 NONAME ?Init@PWin32SnmpLibrary@@AAEHKPAPAXPAUAsnObjectIdentifier@@@Z @6729 NONAME ?Initialise@PTrace@@SAXIPBDI@Z @2580 NONAME ?InitialiseCapture@PVideoInputDevice_VideoForWindows@@IAEHXZ @3698 NONAME ?InitialiseProcessThread@PThread@@IAEXXZ @2582 NONAME ?InProgress@PWin32PacketBuffer@@QBEHXZ @2583 NONAME ?insert@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAE?AViterator@12@V312@ABQAVPPluginModuleManager@@@Z @6409 NONAME ?insert@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAE?AViterator@12@V312@ABVPString@@@Z @6410 NONAME ?insert@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6945 NONAME ?insert@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6946 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @6411 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7437 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7438 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6947 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6948 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7439 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7440 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7441 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7442 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AU?$pair@Viterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@_N@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7443 NONAME ?insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@V312@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7444 NONAME ?Insert@PAbstractDictionary@@UAEHABVPObject@@PAV2@@Z @2584 NONAME ?Insert@PAbstractList@@UAEHABVPObject@@PAV2@@Z @2585 NONAME ?Insert@PAbstractSet@@UAEHABVPObject@@PAV2@@Z @2586 NONAME ?Insert@PAbstractSortedList@@UAEHABVPObject@@PAV2@@Z @2587 NONAME ?Insert@PArrayObjects@@UAEHABVPObject@@PAV2@@Z @2588 NONAME ?InsertAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @2589 NONAME ?InsertAt@PAbstractList@@UAEHHPAVPObject@@@Z @2590 NONAME ?InsertAt@PAbstractSet@@UAEHHPAVPObject@@@Z @2591 NONAME ?InsertAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @2592 NONAME ?InsertAt@PArrayObjects@@UAEHHPAVPObject@@@Z @2593 NONAME ?InsertString@PStringList@@QAEHABVPString@@0@Z @2594 NONAME ?internal@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5745 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HD@Z @2596 NONAME ?InternalCompare@PCaselessString@@MBE?AW4Comparison@PObject@@HHPBD@Z @2597 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HD@Z @2598 NONAME ?InternalCompare@PString@@MBE?AW4Comparison@PObject@@HHPBD@Z @2599 NONAME ?InternalEndRead@PReadWriteMutex@@IAEXXZ @2602 NONAME ?InternalFromUCS2@PString@@IAEXPBGH@Z @2603 NONAME ?InternalIsDescendant@?$PArray@VPString@@@@UBEHPBD@Z @5243 NONAME ?InternalIsDescendant@?$PArray@VPWaveBuffer@@@@UBEHPBD@Z @5244 NONAME ?InternalIsDescendant@?$PArray@VPWin32PacketBuffer@@@@UBEHPBD@Z @5245 NONAME ?InternalIsDescendant@?$PBaseArray@D@@UBEHPBD@Z @5246 NONAME ?InternalIsDescendant@?$PBaseArray@E@@UBEHPBD@Z @5247 NONAME ?InternalIsDescendant@?$PBaseArray@F@@UBEHPBD@Z @5248 NONAME ?InternalIsDescendant@?$PBaseArray@G@@UBEHPBD@Z @5249 NONAME ?InternalIsDescendant@?$PBaseArray@H@@UBEHPBD@Z @5250 NONAME ?InternalIsDescendant@?$PBaseArray@I@@UBEHPBD@Z @5251 NONAME ?InternalIsDescendant@?$PBaseArray@J@@UBEHPBD@Z @5252 NONAME ?InternalIsDescendant@?$PBaseArray@K@@UBEHPBD@Z @5253 NONAME ?InternalIsDescendant@?$PBaseArray@PAVElement@PHashTable@@@@UBEHPBD@Z @5254 NONAME ?InternalIsDescendant@?$PBaseArray@PAVPObject@@@@UBEHPBD@Z @5255 NONAME ?InternalIsDescendant@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UBEHPBD@Z @5256 NONAME ?InternalIsDescendant@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UBEHPBD@Z @5257 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UBEHPBD@Z @5258 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UBEHPBD@Z @5986 NONAME ?InternalIsDescendant@?$PDictionary@VPOrdinalKey@@VPThread@@@@UBEHPBD@Z @5259 NONAME ?InternalIsDescendant@?$PDictionary@VPString@@VPDynaLink@@@@UBEHPBD@Z @5892 NONAME ?InternalIsDescendant@?$PList@VInterfaceEntry@PIPSocket@@@@UBEHPBD@Z @7660 NONAME ?InternalIsDescendant@?$PList@VPDynaLink@@@@UBEHPBD@Z @5260 NONAME ?InternalIsDescendant@?$PList@VPNotifier@@@@UBEHPBD@Z @5261 NONAME ?InternalIsDescendant@?$PList@VPPluginService@@@@UBEHPBD@Z @5262 NONAME ?InternalIsDescendant@?$PList@VPSafeObject@@@@UBEHPBD@Z @7064 NONAME ?InternalIsDescendant@?$PList@VPSocket@@@@UBEHPBD@Z @5263 NONAME ?InternalIsDescendant@?$PList@VPString@@@@UBEHPBD@Z @5264 NONAME ?InternalIsDescendant@?$PList@VPThread@@@@UBEHPBD@Z @5265 NONAME ?InternalIsDescendant@?$PList@VPTimer@@@@UBEHPBD@Z @5266 NONAME ?InternalIsDescendant@?$POrdinalDictionary@VPString@@@@UBEHPBD@Z @5267 NONAME ?InternalIsDescendant@?$PSet@VPString@@@@UBEHPBD@Z @5268 NONAME ?InternalIsDescendant@?$PSortedList@VPString@@@@UBEHPBD@Z @5269 NONAME ?InternalIsDescendant@?$PStringDictionary@VPOrdinalKey@@@@UBEHPBD@Z @5270 NONAME ?InternalIsDescendant@?$PStringDictionary@VPString@@@@UBEHPBD@Z @5271 NONAME ?InternalIsDescendant@CMCDLL@PMail@@UBEHPBD@Z @5272 NONAME ?InternalIsDescendant@HouseKeepingThread@PProcess@@UBEHPBD@Z @5273 NONAME ?InternalIsDescendant@InterfaceEntry@PIPSocket@@UBEHPBD@Z @5274 NONAME ?InternalIsDescendant@MAPIDLL@PMail@@UBEHPBD@Z @5275 NONAME ?InternalIsDescendant@Nest@PReadWriteMutex@@UBEHPBD@Z @5276 NONAME ?InternalIsDescendant@PAbstractArray@@UBEHPBD@Z @5277 NONAME ?InternalIsDescendant@PAbstractDictionary@@UBEHPBD@Z @5278 NONAME ?InternalIsDescendant@PAbstractList@@UBEHPBD@Z @5279 NONAME ?InternalIsDescendant@PAbstractSet@@UBEHPBD@Z @5280 NONAME ?InternalIsDescendant@PAbstractSortedList@@UBEHPBD@Z @5281 NONAME ?InternalIsDescendant@PArgList@@UBEHPBD@Z @5282 NONAME ?InternalIsDescendant@PArrayObjects@@UBEHPBD@Z @5283 NONAME ?InternalIsDescendant@PBitArray@@UBEHPBD@Z @5284 NONAME ?InternalIsDescendant@PBYTEArray@@UBEHPBD@Z @5285 NONAME ?InternalIsDescendant@PCaselessString@@UBEHPBD@Z @5286 NONAME ?InternalIsDescendant@PChannel@@UBEHPBD@Z @5287 NONAME ?InternalIsDescendant@PCharArray@@UBEHPBD@Z @5288 NONAME ?InternalIsDescendant@PCollection@@UBEHPBD@Z @5289 NONAME ?InternalIsDescendant@PColourConverter@@UBEHPBD@Z @5290 NONAME ?InternalIsDescendant@PColourConverterRegistration@@UBEHPBD@Z @5291 NONAME ?InternalIsDescendant@PCondMutex@@UBEHPBD@Z @5292 NONAME ?InternalIsDescendant@PConfig@@UBEHPBD@Z @5293 NONAME ?InternalIsDescendant@PConfigArgs@@UBEHPBD@Z @5294 NONAME ?InternalIsDescendant@PConsoleChannel@@UBEHPBD@Z @5295 NONAME ?InternalIsDescendant@PContainer@@UBEHPBD@Z @5296 NONAME ?InternalIsDescendant@PCriticalSection@@UBEHPBD@Z @5855 NONAME ?InternalIsDescendant@PDirectory@@UBEHPBD@Z @5297 NONAME ?InternalIsDescendant@PDynaLink@@UBEHPBD@Z @5298 NONAME ?InternalIsDescendant@PEthSocket@@UBEHPBD@Z @5299 NONAME ?InternalIsDescendant@PFile@@UBEHPBD@Z @5300 NONAME ?InternalIsDescendant@PFileInfo@@UBEHPBD@Z @5301 NONAME ?InternalIsDescendant@PFilePath@@UBEHPBD@Z @5302 NONAME ?InternalIsDescendant@PHashTable@@UBEHPBD@Z @5303 NONAME ?InternalIsDescendant@PICMPDLL@@UBEHPBD@Z @5304 NONAME ?InternalIsDescendant@PICMPSocket@@UBEHPBD@Z @5305 NONAME ?InternalIsDescendant@PImageDLL@@UBEHPBD@Z @5306 NONAME ?InternalIsDescendant@PIndirectChannel@@UBEHPBD@Z @5307 NONAME ?InternalIsDescendant@PIntCondMutex@@UBEHPBD@Z @5308 NONAME ?InternalIsDescendant@PIPCacheData@@UBEHPBD@Z @5309 NONAME ?InternalIsDescendant@PIPCacheKey@@UBEHPBD@Z @5310 NONAME ?InternalIsDescendant@PIPDatagramSocket@@UBEHPBD@Z @5311 NONAME ?InternalIsDescendant@PIPSocket@@UBEHPBD@Z @5312 NONAME ?InternalIsDescendant@PIPXSocket@@UBEHPBD@Z @5313 NONAME ?InternalIsDescendant@PluginLoaderStartup@@UBEHPBD@Z @6416 NONAME ?InternalIsDescendant@PMail@@UBEHPBD@Z @5314 NONAME ?InternalIsDescendant@PNotifier@@UBEHPBD@Z @5316 NONAME ?InternalIsDescendant@PNotifierFunction@@UBEHPBD@Z @5317 NONAME ?InternalIsDescendant@PObject@@UBEHPBD@Z @5318 NONAME ?InternalIsDescendant@POrdinalKey@@UBEHPBD@Z @5319 NONAME ?InternalIsDescendant@POrdinalToString@@UBEHPBD@Z @5320 NONAME ?InternalIsDescendant@PPipeChannel@@UBEHPBD@Z @5321 NONAME ?InternalIsDescendant@PPluginManager@@UBEHPBD@Z @5322 NONAME ?InternalIsDescendant@PPointer@@UBEHPBD@Z @5987 NONAME ?InternalIsDescendant@PProcess@@UBEHPBD@Z @5323 NONAME ?InternalIsDescendant@PProcessStartup@@UBEHPBD@Z @6417 NONAME ?InternalIsDescendant@PQoS@@UBEHPBD@Z @5324 NONAME ?InternalIsDescendant@PRASDLL@@UBEHPBD@Z @5325 NONAME ?InternalIsDescendant@PReadWriteMutex@@UBEHPBD@Z @5326 NONAME ?InternalIsDescendant@PRegularExpression@@UBEHPBD@Z @5327 NONAME ?InternalIsDescendant@PRemoteConnection@@UBEHPBD@Z @5328 NONAME ?InternalIsDescendant@PSafeCollection@@UBEHPBD@Z @5329 NONAME ?InternalIsDescendant@PSafeObject@@UBEHPBD@Z @5330 NONAME ?InternalIsDescendant@PSafePtrBase@@UBEHPBD@Z @5331 NONAME ?InternalIsDescendant@PSemaphore@@UBEHPBD@Z @5332 NONAME ?InternalIsDescendant@PSerialChannel@@UBEHPBD@Z @5333 NONAME ?InternalIsDescendant@PServiceProcess@@UBEHPBD@Z @5334 NONAME ?InternalIsDescendant@PSimpleThread@@UBEHPBD@Z @5335 NONAME ?InternalIsDescendant@PSmartObject@@UBEHPBD@Z @5336 NONAME ?InternalIsDescendant@PSmartPointer@@UBEHPBD@Z @5337 NONAME ?InternalIsDescendant@PSmartPtrInspector@@UBEHPBD@Z @5988 NONAME ?InternalIsDescendant@PSocket@@UBEHPBD@Z @5338 NONAME ?InternalIsDescendant@PSortedStringList@@UBEHPBD@Z @5339 NONAME ?InternalIsDescendant@PSound@@UBEHPBD@Z @5340 NONAME ?InternalIsDescendant@PSoundChannel@@UBEHPBD@Z @5341 NONAME ?InternalIsDescendant@PSPXSocket@@UBEHPBD@Z @5342 NONAME ?InternalIsDescendant@PStandardColourConverter@@UBEHPBD@Z @5343 NONAME ?InternalIsDescendant@PString@@UBEHPBD@Z @5344 NONAME ?InternalIsDescendant@PStringArray@@UBEHPBD@Z @5345 NONAME ?InternalIsDescendant@PStringList@@UBEHPBD@Z @5346 NONAME ?InternalIsDescendant@PStringSet@@UBEHPBD@Z @5347 NONAME ?InternalIsDescendant@PStringStream@@UBEHPBD@Z @5348 NONAME ?InternalIsDescendant@PStringToOrdinal@@UBEHPBD@Z @5349 NONAME ?InternalIsDescendant@PStringToString@@UBEHPBD@Z @5350 NONAME ?InternalIsDescendant@PStructuredFile@@UBEHPBD@Z @5351 NONAME ?InternalIsDescendant@PSyncPoint@@UBEHPBD@Z @5352 NONAME ?InternalIsDescendant@PSystemLog@@UBEHPBD@Z @5353 NONAME ?InternalIsDescendant@PTCPSocket@@UBEHPBD@Z @5354 NONAME ?InternalIsDescendant@PTextFile@@UBEHPBD@Z @5355 NONAME ?InternalIsDescendant@PThread@@UBEHPBD@Z @5356 NONAME ?InternalIsDescendant@PTime@@UBEHPBD@Z @5357 NONAME ?InternalIsDescendant@PTimedMutex@@UBEHPBD@Z @16594 NONAME ?InternalIsDescendant@PTimeInterval@@UBEHPBD@Z @5358 NONAME ?InternalIsDescendant@PTimer@@UBEHPBD@Z @5359 NONAME ?InternalIsDescendant@PTimerList@@UBEHPBD@Z @5360 NONAME ?InternalIsDescendant@PUDPSocket@@UBEHPBD@Z @5361 NONAME ?InternalIsDescendant@PVideoChannel@@UBEHPBD@Z @5362 NONAME ?InternalIsDescendant@PVideoDevice@@UBEHPBD@Z @5363 NONAME ?InternalIsDescendant@PVideoInputDevice@@UBEHPBD@Z @5364 NONAME ?InternalIsDescendant@PVideoInputDevice_FakeVideo@@UBEHPBD@Z @5365 NONAME ?InternalIsDescendant@PVideoInputDevice_VideoForWindows@@UBEHPBD@Z @5366 NONAME ?InternalIsDescendant@PVideoOutputDevice@@UBEHPBD@Z @5368 NONAME ?InternalIsDescendant@PVideoOutputDeviceRGB@@UBEHPBD@Z @16537 NONAME ?InternalIsDescendant@PVideoOutputDevice_NULLOutput@@UBEHPBD@Z @5369 NONAME ?InternalIsDescendant@PVideoOutputDevice_Window@@UBEHPBD@Z @16538 NONAME ?InternalIsDescendant@PWaveBuffer@@UBEHPBD@Z @5370 NONAME ?InternalIsDescendant@PWaveFormat@@UBEHPBD@Z @5371 NONAME ?InternalIsDescendant@PWin32PacketBuffer@@UBEHPBD@Z @5372 NONAME ?InternalIsDescendant@PWin32SnmpLibrary@@UBEHPBD@Z @5373 NONAME ?InternalIsDescendant@PWinQoS@@UBEHPBD@Z @5374 NONAME ?InternalIsDescendant@PWinSock@@UBEHPBD@Z @5375 NONAME ?InternalIsDescendant@RouteEntry@PIPSocket@@UBEHPBD@Z @5376 NONAME ?InternalIsDescendant@SelectList@PSocket@@UBEHPBD@Z @5377 NONAME ?InternalIsDescendant@Table@PHashTable@@UBEHPBD@Z @5378 NONAME ?InternalIsDescendant@WinSNMPLoader@@UBEHPBD@Z @6732 NONAME ?InternalSetSize@PAbstractArray@@IAEHHH@Z @16539 NONAME ?InternalStartRead@PReadWriteMutex@@IAEXXZ @2604 NONAME ?InternalStringSelect@PSortedStringList@@IBEHPBDHPAUElement@PAbstractSortedList@@@Z @3980 NONAME ?IoControl@PWin32PacketDriver@@QAEHIPBXKPAXKAAK@Z @2607 NONAME ?IsAddressReachable@PIPSocket@@SAHVAddress@1@00@Z @16540 NONAME ?IsAny@Address@PIPSocket@@QBEHXZ @7670 NONAME ?IsBroadcast@Address@PIPSocket@@QBEHXZ @2609 NONAME ?IsCapturing@PVideoInputDevice_FakeVideo@@UAEHXZ @3830 NONAME ?IsCapturing@PVideoInputDevice_VideoForWindows@@UAEHXZ @3699 NONAME ?IsClass@PObject@@QBEHPBD@Z @5379 NONAME ?IsCompleted@PWin32PacketBuffer@@QBEHXZ @2743 NONAME ?IsDaylightSavings@PTime@@SAHXZ @2744 NONAME ?IsEmpty@PContainer@@UBEHXZ @2876 NONAME ?IsEmpty@PString@@UBEHXZ @2877 NONAME ?IsEndOfFile@PFile@@QBEHXZ @2878 NONAME ?IsFuture@PTime@@QBEHXZ @2879 NONAME ?IsGrabberOpen@PVideoChannel@@UAEHXZ @2880 NONAME ?IsGUIProcess@PProcess@@UBEHXZ @2881 NONAME ?IsInitialised@PProcess@@SAHXZ @2882 NONAME ?IsIpAddressFamilyV6Supported@PIPSocket@@SAHXZ @3898 NONAME ?IsLoaded@PDynaLink@@UBEHXZ @2883 NONAME ?IsLocalHost@PIPSocket@@SAHABVPString@@@Z @2884 NONAME ?IsLoggedOn@PMail@@QBEHXZ @2885 NONAME ?IsLoopback@Address@PIPSocket@@QBEHXZ @2886 NONAME ?IsNULL@PSmartPointer@@QBEHXZ @2887 NONAME ?IsOK@PCapStatus@@QAEHXZ @2888 NONAME ?IsOpen@PChannel@@UBEHXZ @2889 NONAME ?IsOpen@PICMPSocket@@UBEHXZ @2891 NONAME ?IsOpen@PIndirectChannel@@UBEHXZ @2892 NONAME ?IsOpen@PPipeChannel@@UBEHXZ @2893 NONAME ?IsOpen@PSoundChannel@@UBEHXZ @3708 NONAME ?IsOpen@PSoundChannelWin32@@UBEHXZ @3709 NONAME ?IsOpen@PVideoChannel@@UBEHXZ @2894 NONAME ?IsOpen@PVideoInputDevice_FakeVideo@@UAEHXZ @3835 NONAME ?IsOpen@PVideoInputDevice_VideoForWindows@@UAEHXZ @3710 NONAME ?IsOpen@PVideoOutputDevice_NULLOutput@@UAEHXZ @3836 NONAME ?IsOpen@PVideoOutputDevice_Window@@UAEHXZ @16541 NONAME ?IsOpen@PWin32PacketDriver@@QBEHXZ @2898 NONAME ?IsPast@PTime@@QBEHXZ @2899 NONAME ?IsPaused@PTimer@@QBEHXZ @2900 NONAME ?IsPresent@P_fd_set@@QBEHI@Z @2901 NONAME ?IsRecordBufferFull@PSoundChannel@@UAEHXZ @3711 NONAME ?IsRecordBufferFull@PSoundChannelWin32@@UAEHXZ @3712 NONAME ?IsRegistered@?$PFactory@VPSoundChannel@@VPString@@@@SA_NABVPString@@@Z @16207 NONAME ?IsRegistered@?$PFactory@VPVideoInputDevice@@VPString@@@@SA_NABVPString@@@Z @16208 NONAME ?IsRegistered@?$PFactory@VPVideoOutputDevice@@VPString@@@@SA_NABVPString@@@Z @16209 NONAME ?IsRegistered_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAE_NABVPString@@@Z @16210 NONAME ?IsRegistered_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAE_NABVPString@@@Z @16211 NONAME ?IsRegistered_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAE_NABVPString@@@Z @16212 NONAME ?IsRenderOpen@PVideoChannel@@UAEHXZ @2903 NONAME ?IsRFC1918@Address@PIPSocket@@QBEHXZ @7661 NONAME ?IsRoot@PDirectory@@QBEHXZ @2904 NONAME ?IsRunning@PPipeChannel@@QBEHXZ @2905 NONAME ?IsRunning@PTimer@@QBEHXZ @2906 NONAME ?IsSeparator@PDirectory@@SAHD@Z @2907 NONAME ?IsServiceProcess@PProcess@@UBEHXZ @2908 NONAME ?IsServiceProcess@PServiceProcess@@UBEHXZ @2909 NONAME ?IsSingleton@?$PFactory@VPProcessStartup@@VPString@@@@SAHABVPString@@@Z @6949 NONAME ?IsSingleton_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAE_NABVPString@@@Z @6950 NONAME ?IsSubDir@PDirectory@@UBEHXZ @7586 NONAME ?IsSuspended@PThread@@UBEHXZ @2911 NONAME ?IsTerminated@PThread@@UBEHXZ @2912 NONAME ?IsTextFile@PFile@@MBEHXZ @2913 NONAME ?IsTextFile@PTextFile@@MBEHXZ @2914 NONAME ?IsType@PWin32PacketBuffer@@QBEHG@Z @2915 NONAME ?IsUnique@PContainer@@QBEHXZ @2916 NONAME ?IsV4Mapped@Address@PIPSocket@@QBEHXZ @3899 NONAME ?IsValid@Address@PIPSocket@@QBEHXZ @2917 NONAME ?IsValid@Address@PIPXSocket@@QBEHXZ @2918 NONAME ?IsValid@PFilePath@@SAHABVPString@@@Z @2919 NONAME ?IsValid@PFilePath@@SAHD@Z @2920 NONAME ?IsValid@PTime@@QBEHXZ @2921 NONAME ?IsValid@SecurityID@@QBEHXZ @2922 NONAME ?key_comp@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AU?$less@VPString@@@2@XZ @16213 NONAME ?key_comp@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AU?$less@VPString@@@2@XZ @16214 NONAME ?key_comp@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBE?AU?$less@VPString@@@2@XZ @16215 NONAME ?Kill@PPipeChannel@@QAEHH@Z @2923 NONAME ?left@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5746 NONAME ?Left@PString@@QBE?AV1@H@Z @2924 NONAME ?LeftRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3971 NONAME ?LeftTrim@PString@@QBE?AV1@XZ @2926 NONAME ?Lines@PString@@QBE?AVPStringArray@@XZ @2927 NONAME ?Listen@PEthSocket@@UAEHIGW4Reusability@PSocket@@@Z @2928 NONAME ?Listen@PIPSocket@@UAEHABVAddress@1@IGW4Reusability@PSocket@@@Z @2929 NONAME ?Listen@PIPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2930 NONAME ?Listen@PIPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2931 NONAME ?Listen@PSocket@@UAEHIGW4Reusability@1@@Z @2932 NONAME ?Listen@PSPXSocket@@UAEHIGW4Reusability@PSocket@@@Z @2933 NONAME ?Listen@PTCPSocket@@UAEHABVAddress@PIPSocket@@IGW4Reusability@PSocket@@@Z @2934 NONAME ?Listen@PTCPSocket@@UAEHIGW4Reusability@PSocket@@@Z @2935 NONAME ?Load@PSound@@QAEHABVPFilePath@@@Z @2936 NONAME ?LoadPlugin@PPluginManager@@QAEHABVPString@@@Z @3713 NONAME ?LoadPluginDirectory@PPluginManager@@QAEXABVPDirectory@@@Z @3714 NONAME ?loadSoundStuff@PWLibStupidWindowsHacks@@3HA @7445 NONAME ?loadVideoStuff@PWLibStupidWindowsHacks@@3HA @7446 NONAME ?Lock@PSafeLockReadOnly@@QAEHXZ @7612 NONAME ?Lock@PSafeLockReadWrite@@QAEHXZ @7613 NONAME ?LockReadOnly@PSafeObject@@QBEHXZ @2937 NONAME ?LockReadWrite@PSafeObject@@QAEHXZ @2938 NONAME ?LogOff@PMail@@UAEHXZ @2939 NONAME ?LogOn@PMail@@QAEHABVPString@@00@Z @2940 NONAME ?LogOn@PMail@@QAEHABVPString@@0@Z @2941 NONAME ?LogOnCommonInterface@PMail@@IAEHPBD00@Z @2942 NONAME ?LookUp@PMail@@QAE?AW4LookUpResult@1@ABVPString@@PAV3@@Z @2943 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAE?AViterator@12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6951 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7447 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6952 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @6953 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7448 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7449 NONAME ?lower_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @7450 NONAME ?Main@HouseKeepingThread@PProcess@@UAEXXZ @2944 NONAME ?Main@PSimpleThread@@UAEXXZ @2945 NONAME ?MainEntry@PServiceProcess@@AAEXKPAPAD@Z @2947 NONAME ?MainFunction@PThread@@CGIPAX@Z @2948 NONAME ?MakeEmpty@PString@@UAEAAV1@XZ @5999 NONAME ?MakeEmpty@PStringStream@@UAEAAVPString@@XZ @6000 NONAME ?MakeMinimumSize@PString@@QAEHXZ @2949 NONAME ?MakeUnique@PAbstractArray@@UAEHXZ @2950 NONAME ?MakeUnique@PAbstractList@@UAEHXZ @2951 NONAME ?MakeUnique@PAbstractSet@@UAEHXZ @2952 NONAME ?MakeUnique@PAbstractSortedList@@UAEHXZ @2953 NONAME ?MakeUnique@PArrayObjects@@UAEHXZ @2954 NONAME ?MakeUnique@PContainer@@UAEHXZ @2955 NONAME ?MakeUnique@PDirectory@@UAEHXZ @2956 NONAME ?MakeUnique@PHashTable@@UAEHXZ @2957 NONAME ?MakeUnique@PString@@UAEHXZ @2958 NONAME ?MarkMessageRead@PMail@@QAEHABVPString@@@Z @2959 NONAME ?max_size@?$allocator@PAVPPluginModuleManager@@@std@@QBEIXZ @6425 NONAME ?max_size@?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@std@@QBEIXZ @6954 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@std@@QBEIXZ @6426 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@std@@QBEIXZ @7451 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@std@@QBEIXZ @6955 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@std@@QBEIXZ @7452 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@std@@QBEIXZ @7453 NONAME ?max_size@?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@std@@QBEIXZ @7454 NONAME ?max_size@?$allocator@VPString@@@std@@QBEIXZ @6428 NONAME ?max_size@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @6429 NONAME ?max_size@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @6430 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEIXZ @6956 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEIXZ @6431 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7455 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @6957 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7456 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7457 NONAME ?max_size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7458 NONAME ?MemFree@PWin32AsnAny@@QAEXXZ @2960 NONAME ?messages@?$_Locbase@H@std@@2HB @5747 NONAME ?Mid@PString@@QBE?AV1@HH@Z @2961 NONAME ?MissingArgument@PArgList@@UBEXABVPString@@@Z @2962 NONAME ?Modify@PNotifyIconData@@QAEXXZ @2963 NONAME ?ModifyQoSSpec@PUDPSocket@@UAEHPAVPQoS@@@Z @3573 NONAME ?monetary@?$_Locbase@H@std@@2HB @5748 NONAME ?Move@PFile@@SAHABVPFilePath@@0H@Z @2964 NONAME ?Move@PNotifierList@@QAEXAAV1@@Z @5989 NONAME ?Move@PWin32OidBuffer@@QAEXPAEK@Z @2965 NONAME ?Net2Host@PSocket@@SAGG@Z @2966 NONAME ?Next@PDirectory@@QAEHXZ @2967 NONAME ?Next@PSafePtrBase@@IAEXXZ @2968 NONAME ?none@?$_Locbase@H@std@@2HB @5749 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@ABV1@HH@Z @2970 NONAME ?NumCompare@PString@@QBE?AW4Comparison@PObject@@PBDHH@Z @2971 NONAME ?numeric@?$_Locbase@H@std@@2HB @5750 NONAME ?oct@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5751 NONAME ?OnContinue@PServiceProcess@@UAEXXZ @2972 NONAME ?OnControl@PServiceProcess@@UAEXXZ @2973 NONAME ?OnLoadModule@PPluginModuleManager@@MAEXAAVPDynaLink@@H@Z @5893 NONAME ?OnLoadPlugin@PPluginModuleManager@@UAEXAAVPDynaLink@@H@Z @5938 NONAME ?OnOpen@PIndirectChannel@@MAEHXZ @2974 NONAME ?OnOutOfBand@PTCPSocket@@UAEXPBXH@Z @2975 NONAME ?OnPause@PServiceProcess@@UAEHXZ @2976 NONAME ?OnReadComplete@PChannel@@UAEXPAXH@Z @2977 NONAME ?OnShutdown@PluginLoaderStartup@@UAEXXZ @6733 NONAME ?OnShutdown@PPluginModuleManager@@UAEXXZ @6734 NONAME ?OnShutdown@PProcessStartup@@UAEXXZ @6437 NONAME ?OnShutdown@WinSNMPLoader@@UAEXXZ @6735 NONAME ?OnStartup@PluginLoaderStartup@@UAEXXZ @6438 NONAME ?OnStartup@PProcessStartup@@UAEXXZ @6439 NONAME ?OnStartup@WinSNMPLoader@@UAEXXZ @6736 NONAME ?OnStop@PServiceProcess@@UAEXXZ @2978 NONAME ?OnTimeout@PTimer@@UAEXXZ @2979 NONAME ?OnWait@PCondMutex@@UAEXXZ @2980 NONAME ?OnWriteComplete@PChannel@@UAEXPBXH@Z @2981 NONAME ?Open@NT_ServiceManager@@AAEHPAVPServiceProcess@@@Z @2982 NONAME ?Open@PConsoleChannel@@UAEHW4ConsoleType@1@@Z @2983 NONAME ?Open@PDirectory@@UAEHH@Z @7587 NONAME ?Open@PDynaLink@@UAEHABVPString@@@Z @2985 NONAME ?Open@PFile@@UAEHABVPFilePath@@W4OpenMode@1@H@Z @2987 NONAME ?Open@PFile@@UAEHW4OpenMode@1@H@Z @2988 NONAME ?Open@PIndirectChannel@@QAEHAAVPChannel@@@Z @2989 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@0HH@Z @2990 NONAME ?Open@PIndirectChannel@@QAEHPAVPChannel@@H@Z @2991 NONAME ?Open@PMultiMediaFile@@QAEHABVPFilePath@@KPAU_MMIOINFO@@@Z @2992 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@ABVPStringToString@@W4OpenMode@1@HH@Z @2993 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HH@Z @2994 NONAME ?Open@PPipeChannel@@QAEHABVPString@@ABVPStringToString@@W4OpenMode@1@HH@Z @2995 NONAME ?Open@PPipeChannel@@QAEHABVPString@@W4OpenMode@1@HH@Z @2996 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@00H@Z @2997 NONAME ?Open@PRemoteConnection@@QAEHABVPString@@H@Z @2998 NONAME ?Open@PRemoteConnection@@QAEHH@Z @2999 NONAME ?Open@PSerialChannel@@UAEHAAVPConfig@@@Z @3000 NONAME ?Open@PSerialChannel@@UAEHABVPString@@KEW4Parity@1@EW4FlowControl@1@2@Z @3001 NONAME ?Open@PSoundChannel@@UAEHABVPString@@W4Directions@1@III@Z @3715 NONAME ?Open@PSoundChannelWin32@@QAEHABVPString@@W4Directions@PSoundChannel@@ABVPWaveFormat@@@Z @3716 NONAME ?Open@PSoundChannelWin32@@UAEHABVPString@@W4Directions@PSoundChannel@@III@Z @3717 NONAME ?Open@PVideoChannel@@QAEHABVPString@@W4Directions@1@@Z @3004 NONAME ?Open@PVideoInputDevice_FakeVideo@@UAEHABVPString@@H@Z @3837 NONAME ?Open@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@H@Z @3718 NONAME ?Open@PVideoOutputDevice_NULLOutput@@UAEHABVPString@@H@Z @3838 NONAME ?Open@PVideoOutputDevice_Window@@UAEHABVPString@@H@Z @16542 NONAME ?OpenDevice@PSoundChannelWin32@@AAEHI@Z @3719 NONAME ?OpenFull@PVideoDevice@@UAEHABUOpenArgs@1@H@Z @3009 NONAME ?OpenManager@NT_ServiceManager@@AAEHXZ @3010 NONAME ?OpenSocket@PEthSocket@@MAEHXZ @3011 NONAME ?OpenSocket@PICMPSocket@@MAEHH@Z @3012 NONAME ?OpenSocket@PICMPSocket@@MAEHXZ @3013 NONAME ?OpenSocket@PIPXSocket@@MAEHXZ @3014 NONAME ?OpenSocket@PSPXSocket@@MAEHXZ @3015 NONAME ?OpenSocket@PTCPSocket@@MAEHH@Z @3016 NONAME ?OpenSocket@PTCPSocket@@MAEHXZ @3017 NONAME ?OpenSocket@PUDPSocket@@MAEHH@Z @3018 NONAME ?OpenSocket@PUDPSocket@@MAEHXZ @3019 NONAME ?OpenSocket@PWinSock@@EAEHXZ @3020 NONAME ?OpenSocketGQOS@PUDPSocket@@MAEHHHH@Z @3574 NONAME ?OpenWaveFile@PMultiMediaFile@@QAEHABVPFilePath@@AAVPWaveFormat@@AAK@Z @3021 NONAME ?OrderSelect@Info@PAbstractSortedList@@QBEPAUElement@2@PAU32@H@Z @7666 NONAME ?os_accept@PSocket@@IAEHAAV1@PAUsockaddr@@PAH@Z @3023 NONAME ?os_close@PSocket@@IAEHXZ @3024 NONAME ?os_connect@PSocket@@IAEHPAUsockaddr@@H@Z @3025 NONAME ?os_gmtime@PTime@@SAPAUtm@@PBJPAU2@@Z @3026 NONAME ?os_localtime@PTime@@SAPAUtm@@PBJPAU2@@Z @3027 NONAME ?os_recvfrom@PSocket@@IAEHPAXHHPAUsockaddr@@PAH@Z @3028 NONAME ?os_sendto@PSocket@@IAEHPBXHHPAUsockaddr@@H@Z @3030 NONAME ?os_socket@PSocket@@IAEHHHH@Z @3031 NONAME ?out@?$_Iosb@H@std@@2W4_Openmode@12@B @5752 NONAME ?Output@PSystemLog@@SAXW4Level@1@PBD@Z @3032 NONAME ?overflow@Buffer@PDebugStream@@UAEHH@Z @3033 NONAME ?overflow@Buffer@PStringStream@@UAEHH@Z @3034 NONAME ?overflow@Buffer@PSystemLog@@UAEHH@Z @3035 NONAME ?overflow@PChannelStreamBuffer@@MAEHH@Z @3036 NONAME ?PABSINDEX@@YAHH@Z @3037 NONAME ?Parse@Frame@PEthSocket@@QAEXAAGAAPAEAAH@Z @3038 NONAME ?Parse@PArgList@@UAEHABVPString@@H@Z @3039 NONAME ?Parse@PArgList@@UAEHPBDH@Z @3040 NONAME ?ParseOption@PArgList@@AAEHHHAAHABV?$PScalarArray@H@@@Z @3041 NONAME ?PAssertFunc@@YAXPBD@Z @3042 NONAME ?PAssertFunc@@YAXPBDH00@Z @3043 NONAME ?PAssertFunc@@YAXPBDH0W4PStandardAssertMessage@@@Z @3044 NONAME ?PAssertFuncInline@@YA_N_NPBDH11@Z @7065 NONAME ?PAssertFuncInline@@YA_N_NPBDH1W4PStandardAssertMessage@@@Z @7066 NONAME ?Pause@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3045 NONAME ?Pause@PTimer@@QAEXXZ @3046 NONAME ?Pause@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3047 NONAME ?PDummyFunctionToMakeSureSymbolsAreInDEFFile@@YAXXZ @3048 NONAME ?pfFreeAddrInfo@?1??WspiapiFreeAddrInfo@@9@4@4P6GXPAUaddrinfo@@@ZA @3900 NONAME ?pfGetAddrInfo@?1??WspiapiGetAddrInfo@@9@16@4P6GHPBD0PBUaddrinfo@@PAPAU2@@ZA @3901 NONAME ?pfGetNameInfo@?1??WspiapiGetNameInfo@@9@28@4P6GHPBUsockaddr@@HPADI1IH@ZA @3902 NONAME ?PGetErrorStream@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ @5753 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@@Z @3050 NONAME ?Ping@PICMPSocket@@QAEHABVPString@@AAVPingInfo@1@@Z @3051 NONAME ?PlatformOpen@PPipeChannel@@AAEHABVPString@@ABVPStringArray@@W4OpenMode@1@HHPBVPStringToString@@@Z @3052 NONAME ?Play@PSound@@QAEHABVPString@@@Z @16543 NONAME ?Play@PSound@@QAEHXZ @3053 NONAME ?PlayFile@PSound@@SAHABVPFilePath@@H@Z @3054 NONAME ?PlayFile@PSoundChannel@@UAEHABVPFilePath@@H@Z @3720 NONAME ?PlayFile@PSoundChannelWin32@@UAEHABVPFilePath@@H@Z @3721 NONAME ?PlaySoundA@PSoundChannel@@UAEHABVPSound@@H@Z @3722 NONAME ?PlaySoundA@PSoundChannelWin32@@UAEHABVPSound@@H@Z @3723 NONAME ?PluginLoaderStartup_PString@PWLibFactoryLoader@@3HA @7669 NONAME ?PPlugin_PSoundChannel_WindowsMultimedia_Registration_Instance@@3VPPlugin_PSoundChannel_WindowsMultimedia_Registration@@A @3725 NONAME ?PPlugin_PVideoInputDevice_FakeVideo_Registration_Instance@@3VPPlugin_PVideoInputDevice_FakeVideo_Registration@@A @3840 NONAME ?PPlugin_PVideoInputDevice_VideoForWindows_Registration_Instance@@3VPPlugin_PVideoInputDevice_VideoForWindows_Registration@@A @3727 NONAME ?PPlugin_PVideoOutputDevice_NULLOutput_Registration_Instance@@3VPPlugin_PVideoOutputDevice_NULLOutput_Registration@@A @3842 NONAME ?PPlugin_PVideoOutputDevice_Window_Registration_Instance@@3VPPlugin_PVideoOutputDevice_Window_Registration@@A @16544 NONAME ?Predecessor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @7667 NONAME ?PreInitialise@PProcess@@SAXHPAPAD0@Z @3058 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEIN__@@@Z @3059 NONAME ?Prepare@PWaveBuffer@@AAEKPAUHWAVEOUT__@@AAH@Z @3060 NONAME ?PrepareCommon@PWaveBuffer@@AAEXH@Z @3061 NONAME ?PreShutdown@PProcess@@SAXXZ @6647 NONAME ?Previous@PSafePtrBase@@IAEXXZ @3062 NONAME ?PrintElementOn@?$PBaseArray@D@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5754 NONAME ?PrintElementOn@?$PBaseArray@E@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5755 NONAME ?PrintElementOn@?$PBaseArray@F@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5756 NONAME ?PrintElementOn@?$PBaseArray@G@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5757 NONAME ?PrintElementOn@?$PBaseArray@H@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5758 NONAME ?PrintElementOn@?$PBaseArray@I@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5759 NONAME ?PrintElementOn@?$PBaseArray@J@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5760 NONAME ?PrintElementOn@?$PBaseArray@K@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5761 NONAME ?PrintElementOn@?$PBaseArray@PAVElement@PHashTable@@@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5762 NONAME ?PrintElementOn@?$PBaseArray@PAVPObject@@@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5763 NONAME ?PrintElementOn@PAbstractArray@@MBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@H@Z @5764 NONAME ?PrintOn@InterfaceEntry@PIPSocket@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5765 NONAME ?PrintOn@PAbstractArray@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5766 NONAME ?PrintOn@PAbstractDictionary@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5767 NONAME ?PrintOn@PArgList@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5768 NONAME ?PrintOn@PBYTEArray@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5769 NONAME ?PrintOn@PCharArray@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5770 NONAME ?PrintOn@PCollection@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5771 NONAME ?PrintOn@PIntCondMutex@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5772 NONAME ?PrintOn@PObject@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5773 NONAME ?PrintOn@POrdinalKey@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5774 NONAME ?PrintOn@PString@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5775 NONAME ?PrintOn@PThread@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5776 NONAME ?PrintOn@PTime@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5777 NONAME ?PrintOn@PTimeInterval@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5778 NONAME ?PrintOn@PWaveFormat@@UBEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5779 NONAME ?Process@PTimer@@AAEXABVPTimeInterval@@AAV2@@Z @3089 NONAME ?Process@PTimerList@@QAE?AVPTimeInterval@@XZ @3090 NONAME ?ProcessCommand@PServiceProcess@@AAEHPBD@Z @3091 NONAME ?PSetErrorStream@@YAXPAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5780 NONAME ?psprintf@@YA?AVPString@@PBDZZ @3093 NONAME ?PTraceCurrentLevel@@3IA @6648 NONAME ?push_back@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QAEXABQAVPPluginModuleManager@@@Z @6441 NONAME ?push_back@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QAEXABVPString@@@Z @6442 NONAME ?PutData@PWin32PacketBuffer@@QAEHPBXH@Z @3094 NONAME ?PVideoOutputDevice_Window_descriptor@@3VPVideoOutputDevice_Window_PluginServiceDescriptor@@A @16545 NONAME ?pvsprintf@@YA?AVPString@@ABV1@PAD@Z @3095 NONAME ?pvsprintf@@YA?AVPString@@PBDPAD@Z @3096 NONAME ?PWaitOnExitConsoleWindow@@YAXXZ @3097 NONAME ?p_argc@PProcess@@0HA @3098 NONAME ?p_argv@PProcess@@0PAPADA @3099 NONAME ?p_envp@PProcess@@0PAPADA @3100 NONAME ?P_IsOldWin95@@YAHXZ @3101 NONAME ?Query@PWin32SnmpLibrary@@AAEHEPAUSnmpVarBindList@@PAJ1@Z @6737 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIAAK@Z @3111 NONAME ?QueryOid@PWin32PacketDriver@@QAEHIIPAE@Z @3112 NONAME ?QueryOid@PWin32SnmpLibrary@@AAEHEAAUAsnObjectIdentifier@@AAVPWin32AsnAny@@@Z @3113 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAKH@Z @3114 NONAME ?QueryValue@RegistryKey@@QAEHABVPString@@AAV2@@Z @3115 NONAME ?Ras@@3VPRASDLL@@A @3116 NONAME ?rdbuf@ostrstream@std@@QBEPAVstrstreambuf@2@XZ @5781 NONAME ?Read@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @16546 NONAME ?Read@PChannel@@UAEHPAXH@Z @3117 NONAME ?Read@PConsoleChannel@@UAEHPAXH@Z @3118 NONAME ?Read@PEthSocket@@UAEHPAXH@Z @3119 NONAME ?Read@PFile@@UAEHPAXH@Z @3120 NONAME ?Read@PIndirectChannel@@UAEHPAXH@Z @3121 NONAME ?Read@PMultiMediaFile@@QAEHPAXH@Z @3122 NONAME ?Read@PPipeChannel@@UAEHPAXH@Z @3123 NONAME ?Read@PSerialChannel@@UAEHPAXH@Z @3124 NONAME ?Read@PSocket@@UAEHPAXH@Z @3125 NONAME ?Read@PSoundChannel@@UAEHPAXH@Z @3126 NONAME ?Read@PSoundChannelWin32@@UAEHPAXH@Z @3734 NONAME ?Read@PStructuredFile@@EAEHPAXH@Z @3127 NONAME ?Read@PStructuredFile@@QAEHPAX@Z @3128 NONAME ?Read@PUDPSocket@@UAEHPAXH@Z @3129 NONAME ?Read@PVideoChannel@@UAEHPAXH@Z @3130 NONAME ?ReadAsync@PChannel@@UAEHPAXH@Z @3131 NONAME ?ReadAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3132 NONAME ?ReadBlock@PChannel@@QAEHPAXH@Z @3133 NONAME ?ReadChar@PChannel@@UAEHXZ @3134 NONAME ?ReadCharWithTimeout@PChannel@@IAEHAAVPTimeInterval@@@Z @3135 NONAME ?ReadComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3136 NONAME ?ReadElementFrom@?$PScalarArray@F@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5782 NONAME ?ReadElementFrom@?$PScalarArray@G@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5783 NONAME ?ReadElementFrom@?$PScalarArray@H@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5784 NONAME ?ReadElementFrom@?$PScalarArray@I@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5785 NONAME ?ReadElementFrom@?$PScalarArray@J@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5786 NONAME ?ReadElementFrom@?$PScalarArray@K@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5787 NONAME ?ReadElementFrom@PAbstractArray@@MAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@H@Z @5788 NONAME ?ReadFrom@PAbstractArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5789 NONAME ?ReadFrom@PArgList@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5790 NONAME ?ReadFrom@PBYTEArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5791 NONAME ?ReadFrom@PCharArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5792 NONAME ?ReadFrom@PIPDatagramSocket@@UAEHPAXHAAVAddress@PIPSocket@@AAG@Z @3148 NONAME ?ReadFrom@PIPXSocket@@UAEHPAXHAAVAddress@1@AAG@Z @3149 NONAME ?ReadFrom@PObject@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5793 NONAME ?ReadFrom@POrdinalToString@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5794 NONAME ?ReadFrom@PSortedStringList@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5795 NONAME ?ReadFrom@PString@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5796 NONAME ?ReadFrom@PStringArray@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5797 NONAME ?ReadFrom@PStringList@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5798 NONAME ?ReadFrom@PStringSet@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5799 NONAME ?ReadFrom@PStringToOrdinal@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5800 NONAME ?ReadFrom@PStringToString@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5801 NONAME ?ReadFrom@PTime@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5802 NONAME ?ReadFrom@PTimeInterval@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5803 NONAME ?ReadFrom@PWaveFormat@@UAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z @5804 NONAME ?ReadLine@PTextFile@@QAEHAAVPString@@@Z @3162 NONAME ?ReadPacket@PEthSocket@@QAEHAAVPBYTEArray@@AATAddress@1@1AAGAAHAAPAE@Z @3163 NONAME ?ReadStandardError@PPipeChannel@@QAEHAAVPString@@H@Z @3164 NONAME ?ReadString@PChannel@@QAE?AVPString@@H@Z @3165 NONAME ?ReceiveCommandString@PChannel@@IAEHHABVPString@@AAHH@Z @3167 NONAME ?RecordFile@PSoundChannel@@UAEHABVPFilePath@@@Z @3735 NONAME ?RecordFile@PSoundChannelWin32@@UAEHABVPFilePath@@@Z @3736 NONAME ?RecordSound@PSoundChannel@@UAEHAAVPSound@@@Z @3737 NONAME ?RecordSound@PSoundChannelWin32@@UAEHAAVPSound@@@Z @3738 NONAME ?Redraw@PVideoChannel@@UAEHPBX@Z @3170 NONAME ?Register@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7459 NONAME ?Register@?$PFactory@VPProcessStartup@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @6959 NONAME ?Register@?$PFactory@VPSoundChannel@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7460 NONAME ?Register@?$PFactory@VPVideoInputDevice@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7461 NONAME ?Register@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAXABVPString@@PAVWorkerBase@1@@Z @7462 NONAME ?RegisterNotifiee@PSmartNotifieeRegistrar@@SAIPAX@Z @5990 NONAME ?RegisterService@PPluginManager@@QAEHABVPString@@0PAVPPluginServiceDescriptor@@@Z @3739 NONAME ?Register_Internal@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7463 NONAME ?Register_Internal@?$PFactory@VPProcessStartup@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @6960 NONAME ?Register_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7464 NONAME ?Register_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7465 NONAME ?Register_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@PAVWorkerBase@1@@Z @7466 NONAME ?Release@PWaveBuffer@@AAEKXZ @3171 NONAME ?Remove@PAbstractDictionary@@EAEHPBVPObject@@@Z @3172 NONAME ?Remove@PAbstractList@@UAEHPBVPObject@@@Z @3173 NONAME ?Remove@PAbstractSet@@UAEHPBVPObject@@@Z @3174 NONAME ?Remove@PAbstractSortedList@@UAEHPBVPObject@@@Z @3175 NONAME ?Remove@PArrayObjects@@UAEHPBVPObject@@@Z @3176 NONAME ?Remove@PDirectory@@QAEHXZ @3177 NONAME ?Remove@PDirectory@@SAHABVPString@@@Z @3178 NONAME ?Remove@PFile@@QAEHH@Z @3179 NONAME ?Remove@PFile@@SAHABVPFilePath@@H@Z @3180 NONAME ?RemoveAll@PAbstractSortedList@@UAEXXZ @3181 NONAME ?RemoveAll@PArrayObjects@@UAEXXZ @3182 NONAME ?RemoveAll@PCollection@@UAEXXZ @3183 NONAME ?RemoveAll@PSafeCollection@@UAEXH@Z @7616 NONAME ?RemoveAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPCaselessString@@@Z @3185 NONAME ?RemoveAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEPAVPIPCacheData@@ABVPIPCacheKey@@@Z @3186 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEPAVNest@PReadWriteMutex@@ABVPOrdinalKey@@@Z @3187 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEPAVPPointer@@ABVPOrdinalKey@@@Z @5991 NONAME ?RemoveAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEPAVPThread@@ABVPOrdinalKey@@@Z @3188 NONAME ?RemoveAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEPAVPDynaLink@@ABVPString@@@Z @5894 NONAME ?RemoveAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@@Z @3189 NONAME ?RemoveAt@?$PStringDictionary@VPOrdinalKey@@@@UAEPAVPString@@ABVPOrdinalKey@@@Z @3190 NONAME ?RemoveAt@?$PStringDictionary@VPString@@@@UAEPAVPString@@ABV2@@Z @3191 NONAME ?RemoveAt@PAbstractDictionary@@UAEPAVPObject@@H@Z @3192 NONAME ?RemoveAt@PAbstractList@@UAEPAVPObject@@H@Z @3193 NONAME ?RemoveAt@PAbstractSet@@UAEPAVPObject@@H@Z @3194 NONAME ?RemoveAt@PAbstractSortedList@@UAEPAVPObject@@H@Z @3195 NONAME ?RemoveAt@PArrayObjects@@UAEPAVPObject@@H@Z @3196 NONAME ?RemoveConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@@Z @3197 NONAME ?RemoveElement@PAbstractSortedList@@IAEXPAUElement@1@@Z @3974 NONAME ?RemoveElement@Table@PHashTable@@QAEPAVPObject@@ABV3@@Z @3199 NONAME ?RemoveNotifier@PPluginManager@@QAEXABVPNotifier@@@Z @4010 NONAME ?RemoveTarget@PNotifierList@@QAEHPAVPObject@@@Z @5992 NONAME ?Rename@PFile@@QAEHABVPString@@H@Z @3200 NONAME ?Rename@PFile@@SAHABVPFilePath@@ABVPString@@H@Z @3201 NONAME ?Replace@PString@@QAEXABV1@0HH@Z @3202 NONAME ?ReplaceAt@PAbstractList@@UAEHHPAVPObject@@@Z @3203 NONAME ?ReportStatus@PServiceProcess@@AAEHKKKK@Z @3204 NONAME ?Reset@PTimer@@QAEXXZ @3205 NONAME ?Reset@PWin32Overlapped@@QAEXXZ @3206 NONAME ?ResizeYUV422@PStandardColourConverter@@IBEXPBEPAE@Z @3207 NONAME ?Resolution@PTimer@@SAIXZ @3208 NONAME ?Restart@PDirectory@@UAEHH@Z @7588 NONAME ?Restart@PThread@@UAEXXZ @3210 NONAME ?RestrictAccess@PVideoChannel@@QAEXXZ @3211 NONAME ?Resume@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3212 NONAME ?Resume@PThread@@UAEXXZ @3213 NONAME ?Resume@PTimer@@QAEXXZ @3214 NONAME ?Resume@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3215 NONAME ?RGBtoYUV420P@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @16547 NONAME ?RGBtoYUV420PSameSize@PStandardColourConverter@@IBEXPBEPAEIII@Z @16548 NONAME ?RGBtoYUV420PWithResize@PStandardColourConverter@@IBEXPBEPAEIII@Z @16549 NONAME ?rgtGlobal@?1??WspiapiLoad@@9@4@4PAUWSPIAPI_FUNCTION@@A @3903 NONAME ?right@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5805 NONAME ?Right@PString@@QBE?AV1@H@Z @3219 NONAME ?RightRotate@PAbstractSortedList@@IAEXPAUElement@1@@Z @3975 NONAME ?RightTrim@PString@@QBE?AV1@XZ @3221 NONAME ?RunContinuous@PTimer@@QAEXABVPTimeInterval@@@Z @3222 NONAME ?SafeDereference@PSafeObject@@QAEXXZ @3223 NONAME ?SafelyCanBeDeleted@PSafeObject@@QBEHXZ @7049 NONAME ?SafeReference@PSafeObject@@QAEHXZ @3225 NONAME ?SafeRemove@PSafeCollection@@MAEHPAVPSafeObject@@@Z @3226 NONAME ?SafeRemove@PSafeObject@@QAEXXZ @3227 NONAME ?SafeRemoveAt@PSafeCollection@@MAEHH@Z @3228 NONAME ?SafeRemoveObject@PSafeCollection@@IAEXPAVPSafeObject@@@Z @3229 NONAME ?Save@PConfigArgs@@QAEXABVPString@@@Z @3230 NONAME ?Save@PSound@@QAEHABVPFilePath@@@Z @3231 NONAME ?SaveSettings@PSerialChannel@@UAEXAAVPConfig@@@Z @3232 NONAME ?SBGGR8toRGB@PStandardColourConverter@@IBEHPBEPAEPAH@Z @16550 NONAME ?SBGGR8toYUV420P@PStandardColourConverter@@IBEHPBEPAEPAH@Z @16551 NONAME ?scientific@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5806 NONAME ?seekoff@Buffer@PStringStream@@UAE?AV?$fpos@H@std@@JHH@Z @5807 NONAME ?seekoff@PChannelStreamBuffer@@MAE?AV?$fpos@H@std@@JHH@Z @5831 NONAME ?seekpos@Buffer@PStringStream@@UAE?AV?$fpos@H@std@@V34@H@Z @5832 NONAME ?seekpos@PChannelStreamBuffer@@MAE?AV?$fpos@H@std@@V23@H@Z @5833 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00@Z @3235 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@00ABVPTimeInterval@@@Z @3236 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0@Z @3237 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@0ABVPTimeInterval@@@Z @3238 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@@Z @3239 NONAME ?Select@PSocket@@SA?AW4Errors@PChannel@@AAVSelectList@1@ABVPTimeInterval@@@Z @3240 NONAME ?Select@PSocket@@SAHAAV1@0@Z @3241 NONAME ?Select@PSocket@@SAHAAV1@0ABVPTimeInterval@@@Z @3242 NONAME ?SendCommandString@PChannel@@QAEHABVPString@@@Z @3243 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBD@Z @3244 NONAME ?SendNote@PMail@@QAEHABVPString@@0PBDABVPStringList@@@Z @3245 NONAME ?SendNote@PMail@@QAEHABVPString@@ABVPStringList@@10PBD1@Z @3246 NONAME ?SeparatorChar@PDevicePluginServiceDescriptor@@2DB @16552 NONAME ?SetArgs@PArgList@@QAEXABVPString@@@Z @3248 NONAME ?SetArgs@PArgList@@QAEXABVPStringArray@@@Z @3249 NONAME ?SetArgs@PArgList@@QAEXHPAPAD@Z @3250 NONAME ?SetAt@?$PBaseArray@D@@QAEHHD@Z @3251 NONAME ?SetAt@?$PBaseArray@E@@QAEHHE@Z @3252 NONAME ?SetAt@?$PBaseArray@F@@QAEHHF@Z @3253 NONAME ?SetAt@?$PBaseArray@G@@QAEHHG@Z @3254 NONAME ?SetAt@?$PBaseArray@H@@QAEHHH@Z @3255 NONAME ?SetAt@?$PBaseArray@I@@QAEHHI@Z @3256 NONAME ?SetAt@?$PBaseArray@J@@QAEHHJ@Z @3257 NONAME ?SetAt@?$PBaseArray@K@@QAEHHK@Z @3258 NONAME ?SetAt@?$PBaseArray@PAVElement@PHashTable@@@@QAEHHPAVElement@PHashTable@@@Z @3259 NONAME ?SetAt@?$PDictionary@VPCaselessString@@VPIPCacheData@@@@UAEHABVPCaselessString@@PAVPIPCacheData@@@Z @3260 NONAME ?SetAt@?$PDictionary@VPIPCacheKey@@VPIPCacheData@@@@UAEHABVPIPCacheKey@@PAVPIPCacheData@@@Z @3261 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VNest@PReadWriteMutex@@@@UAEHABVPOrdinalKey@@PAVNest@PReadWriteMutex@@@Z @3262 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPPointer@@@@UAEHABVPOrdinalKey@@PAVPPointer@@@Z @5993 NONAME ?SetAt@?$PDictionary@VPOrdinalKey@@VPThread@@@@UAEHABVPOrdinalKey@@PAVPThread@@@Z @3263 NONAME ?SetAt@?$PDictionary@VPString@@VPDynaLink@@@@UAEHABVPString@@PAVPDynaLink@@@Z @5895 NONAME ?SetAt@?$POrdinalDictionary@VPString@@@@UAEHABVPString@@H@Z @3264 NONAME ?SetAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHABVPOrdinalKey@@ABVPString@@@Z @3265 NONAME ?SetAt@?$PStringDictionary@VPString@@@@UAEHABVPString@@0@Z @3266 NONAME ?SetAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @3267 NONAME ?SetAt@PAbstractList@@UAEHHPAVPObject@@@Z @3268 NONAME ?SetAt@PAbstractSet@@UAEHHPAVPObject@@@Z @3269 NONAME ?SetAt@PAbstractSortedList@@UAEHHPAVPObject@@@Z @3270 NONAME ?SetAt@PArrayObjects@@UAEHHPAVPObject@@@Z @3271 NONAME ?SetAt@PBitArray@@QAEHHH@Z @3272 NONAME ?SetAutoDelete@PThread@@UAEXW4AutoDeleteFlag@1@@Z @3273 NONAME ?SetAutoDeleteObjects@PSafeCollection@@UAEXXZ @3274 NONAME ?SetAvgBytesPerSec@PQoS@@QAEXK@Z @3579 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@0H@Z @3953 NONAME ?SetBoolean@PConfig@@UAEXABVPString@@H@Z @3954 NONAME ?SetBreak@PSerialChannel@@QAEXH@Z @3277 NONAME ?SetBrightness@PVideoDevice@@UAEHI@Z @3278 NONAME ?SetBuffers@PSoundChannel@@UAEHHH@Z @3740 NONAME ?SetBuffers@PSoundChannelWin32@@UAEHHH@Z @3741 NONAME ?SetBufferSize@PChannel@@QAEHH@Z @3280 NONAME ?SetBufferSize@PChannelStreamBuffer@@IAEHH@Z @3281 NONAME ?SetChannel@PVideoDevice@@UAEHH@Z @3283 NONAME ?SetChannel@PVideoInputDevice_FakeVideo@@UAEHH@Z @3852 NONAME ?SetColour@PVideoDevice@@UAEHI@Z @3284 NONAME ?SetColourFormat@PVideoDevice@@UAEHABVPString@@@Z @3286 NONAME ?SetColourFormat@PVideoInputDevice_FakeVideo@@UAEHABVPString@@@Z @3853 NONAME ?SetColourFormat@PVideoInputDevice_VideoForWindows@@UAEHABVPString@@@Z @3742 NONAME ?SetColourFormat@PVideoOutputDeviceRGB@@UAEHABVPString@@@Z @16553 NONAME ?SetColourFormat@PVideoOutputDevice_Window@@UAEHABVPString@@@Z @16554 NONAME ?SetColourFormatConverter@PVideoDevice@@UAEHABVPString@@@Z @3289 NONAME ?SetCommsParam@PSerialChannel@@AAEHKEW4Parity@1@EW4FlowControl@1@1@Z @3290 NONAME ?SetConfiguration@PRemoteConnection@@QAE?AW4Status@1@ABUConfiguration@1@H@Z @3291 NONAME ?SetConfiguration@PRemoteConnection@@SA?AW4Status@1@ABVPString@@ABUConfiguration@1@H@Z @3292 NONAME ?SetConfigurationPath@PProcess@@QAEXABVPString@@@Z @3293 NONAME ?SetContrast@PVideoDevice@@UAEHI@Z @3294 NONAME ?SetCurrent@PAbstractList@@IBEHH@Z @3295 NONAME ?SetDataAt@?$POrdinalDictionary@VPString@@@@UAEHHH@Z @3296 NONAME ?SetDataAt@?$PStringDictionary@VPOrdinalKey@@@@UAEHHABVPString@@@Z @3297 NONAME ?SetDataAt@?$PStringDictionary@VPString@@@@UAEHHABVPString@@@Z @3298 NONAME ?SetDataAt@PAbstractDictionary@@UAEHHPAVPObject@@@Z @3299 NONAME ?SetDataBits@PSerialChannel@@QAEHE@Z @3300 NONAME ?SetDefaultIpAddressFamily@PIPSocket@@SAXH@Z @3301 NONAME ?SetDefaultIpAddressFamilyV4@PIPSocket@@SAXXZ @3302 NONAME ?SetDefaultIpAddressFamilyV6@PIPSocket@@SAXXZ @3904 NONAME ?SetDefaultSection@PConfig@@UAEXABVPString@@@Z @3955 NONAME ?SetDSCP@PQoS@@QAEXH@Z @3581 NONAME ?SetDSCPAlternative@PQoS@@SAXKI@Z @3582 NONAME ?SetDstFrameSize@PColourConverter@@UAEHIIH@Z @3304 NONAME ?SetDTR@PSerialChannel@@QAEXH@Z @3305 NONAME ?SetErrorValues@PChannel@@IAEHW4Errors@1@HW4ErrorGroup@1@@Z @3306 NONAME ?SetFilePath@PFile@@QAEXABVPString@@@Z @3307 NONAME ?SetFilter@PEthSocket@@QAEHIG@Z @3309 NONAME ?SetFormat@PSound@@QAEXIII@Z @3310 NONAME ?SetFormat@PSoundChannel@@UAEHIII@Z @3743 NONAME ?SetFormat@PSoundChannelWin32@@QAEHABVPWaveFormat@@@Z @3744 NONAME ?SetFormat@PSoundChannelWin32@@UAEHIII@Z @3745 NONAME ?SetFormat@PWaveFormat@@QAEXIII@Z @3313 NONAME ?SetFormat@PWaveFormat@@QAEXPBXH@Z @3314 NONAME ?SetFrameData@PVideoOutputDeviceRGB@@UAEHIIIIPBEH@Z @16555 NONAME ?SetFrameData@PVideoOutputDevice_NULLOutput@@UAEHIIIIPBEH@Z @3854 NONAME ?SetFrameRate@PVideoDevice@@UAEHI@Z @3318 NONAME ?SetFrameRate@PVideoInputDevice_FakeVideo@@UAEHI@Z @3855 NONAME ?SetFrameRate@PVideoInputDevice_VideoForWindows@@UAEHI@Z @3746 NONAME ?SetFrameSize@PColourConverter@@UAEHII@Z @3320 NONAME ?SetFrameSize@PVideoDevice@@UAEHII@Z @3322 NONAME ?SetFrameSize@PVideoInputDevice_FakeVideo@@UAEHII@Z @3856 NONAME ?SetFrameSize@PVideoInputDevice_VideoForWindows@@UAEHII@Z @3747 NONAME ?SetFrameSize@PVideoOutputDeviceRGB@@UAEHII@Z @16556 NONAME ?SetFrameSize@PVideoOutputDevice_Window@@UAEHII@Z @16557 NONAME ?SetFrameSizeConverter@PVideoDevice@@UAEHIIH@Z @3325 NONAME ?SetGrabberFrameSize@PVideoChannel@@UAEXHH@Z @3326 NONAME ?SetGroupName@PProcess@@QAEHABVPString@@H@Z @3327 NONAME ?SetHue@PVideoDevice@@UAEHI@Z @3328 NONAME ?SetInputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @3330 NONAME ?SetInt64@PConfig@@UAEXABVPString@@0_J@Z @3956 NONAME ?SetInt64@PConfig@@UAEXABVPString@@_J@Z @3957 NONAME ?SetInteger@PConfig@@UAEXABVPString@@0J@Z @3958 NONAME ?SetInteger@PConfig@@UAEXABVPString@@J@Z @3959 NONAME ?SetInterval@PTimeInterval@@UAEX_JJJJH@Z @3335 NONAME ?SetInterval@PTimer@@UAEX_JJJJH@Z @3336 NONAME ?SetLastElementAt@Table@PHashTable@@QAEHH@Z @3337 NONAME ?SetLength@PFile@@UAEHJ@Z @3338 NONAME ?SetLevel@PTrace@@SAXI@Z @3340 NONAME ?SetLogLevel@PServiceProcess@@QAEXW4Level@PSystemLog@@@Z @3341 NONAME ?SetMaxFrameBytes@PQoS@@QAEXK@Z @3583 NONAME ?SetMaxHandles@PProcess@@QAEHH@Z @3342 NONAME ?SetMinSize@PContainer@@QAEHH@Z @3343 NONAME ?SetNotifier@PTimer@@QAEXABVPNotifier@@@Z @3344 NONAME ?SetOid@PWin32PacketDriver@@QAEHIIPBE@Z @3345 NONAME ?SetOid@PWin32PacketDriver@@QAEHIK@Z @3346 NONAME ?SetOption@PSocket@@QAEHHHH@Z @3347 NONAME ?SetOption@PSocket@@QAEHHPBXHH@Z @3348 NONAME ?SetOptions@PTrace@@SAXI@Z @3349 NONAME ?SetOutputFlowControl@PSerialChannel@@QAEHW4FlowControl@1@@Z @3350 NONAME ?SetPacketType@PIPXSocket@@QAEHH@Z @3351 NONAME ?SetParity@PSerialChannel@@QAEHW4Parity@1@@Z @3352 NONAME ?SetPeakBytesPerSec@PQoS@@QAEXK@Z @3584 NONAME ?SetPermissions@PFile@@QAEHH@Z @3353 NONAME ?SetPermissions@PFile@@SAHABVPFilePath@@H@Z @3354 NONAME ?SetPort@PSocket@@QAEXABVPString@@@Z @3355 NONAME ?SetPort@PSocket@@QAEXG@Z @3356 NONAME ?SetPosition@PFile@@UAEHJW4FilePositionOrigin@1@@Z @3357 NONAME ?SetPriority@PThread@@UAEXW4Priority@1@@Z @3359 NONAME ?SetReadChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @3360 NONAME ?SetReadTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @3361 NONAME ?SetReal@PConfig@@UAEXABVPString@@0N@Z @3960 NONAME ?SetReal@PConfig@@UAEXABVPString@@N@Z @3961 NONAME ?SetRenderFrameSize@PVideoChannel@@UAEXHH@Z @3364 NONAME ?SetRTS@PSerialChannel@@QAEXH@Z @3365 NONAME ?SetSafetyMode@PSafePtrBase@@QAEHW4PSafetyMode@@@Z @3366 NONAME ?SetSendAddress@PUDPSocket@@QAEXABVAddress@PIPSocket@@G@Z @3367 NONAME ?SetSize@PAbstractArray@@UAEHH@Z @3368 NONAME ?SetSize@PAbstractList@@UAEHH@Z @3369 NONAME ?SetSize@PAbstractSortedList@@UAEHH@Z @3370 NONAME ?SetSize@PArrayObjects@@UAEHH@Z @3371 NONAME ?SetSize@PBitArray@@UAEHH@Z @3372 NONAME ?SetSize@PHashTable@@MAEHH@Z @3373 NONAME ?SetSize@PString@@UAEHH@Z @3374 NONAME ?SetSize@PWaveFormat@@QAEHH@Z @3375 NONAME ?SetSpeed@PSerialChannel@@QAEHK@Z @3376 NONAME ?SetSrcFrameSize@PColourConverter@@UAEHII@Z @3377 NONAME ?SetStopBits@PSerialChannel@@QAEHE@Z @3378 NONAME ?SetStream@PTrace@@SAXPAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z @5809 NONAME ?SetString@PConfig@@UAEXABVPString@@00@Z @3962 NONAME ?SetString@PConfig@@UAEXABVPString@@0@Z @3963 NONAME ?SetStructure@PStructuredFile@@QAEXPAUElement@1@H@Z @3382 NONAME ?SetTerminationValue@PProcess@@QAEXH@Z @3383 NONAME ?SetThreadName@PProcess@@UAEXABVPString@@@Z @3384 NONAME ?SetThreadName@PThread@@UAEXABVPString@@@Z @3385 NONAME ?SetTime@PConfig@@UAEXABVPString@@0ABVPTime@@@Z @3964 NONAME ?SetTime@PConfig@@UAEXABVPString@@ABVPTime@@@Z @3965 NONAME ?SetType@PFilePath@@QAEXABVPCaselessString@@@Z @3388 NONAME ?SetUserName@PProcess@@QAEHABVPString@@H@Z @3389 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@0@Z @3390 NONAME ?SetValue@RegistryKey@@QAEHABVPString@@K@Z @3391 NONAME ?SetVFlipState@PColourConverter@@QAEXH@Z @3392 NONAME ?SetVFlipState@PVideoDevice@@UAEHH@Z @3393 NONAME ?SetVFlipState@PVideoOutputDevice_Window@@UAEHH@Z @16558 NONAME ?SetVideoChannelFormat@PVideoDevice@@UAEHHW4VideoFormat@1@@Z @3394 NONAME ?SetVideoFormat@PVideoDevice@@UAEHW4VideoFormat@1@@Z @3396 NONAME ?SetVideoFormat@PVideoInputDevice_FakeVideo@@UAEHW4VideoFormat@PVideoDevice@@@Z @3857 NONAME ?SetVolume@PSoundChannel@@UAEHI@Z @3748 NONAME ?SetVolume@PSoundChannelWin32@@UAEHI@Z @3749 NONAME ?SetWhiteness@PVideoDevice@@UAEHI@Z @3399 NONAME ?SetWinDebugThreadName@@YAXPAUtagTHREADNAME_INFO@@@Z @3750 NONAME ?SetWinServiceType@PQoS@@QAEXK@Z @3585 NONAME ?SetWriteChannel@PIndirectChannel@@QAEHPAVPChannel@@H@Z @3400 NONAME ?SetWriteTimeout@PChannel@@QAEXABVPTimeInterval@@@Z @3401 NONAME ?Shift@PArgList@@QAEXH@Z @3402 NONAME ?showbase@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5810 NONAME ?showpoint@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5811 NONAME ?showpos@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5812 NONAME ?Shutdown@PChannel@@UAEHW4ShutdownValue@1@@Z @3403 NONAME ?Shutdown@PIndirectChannel@@UAEHW4ShutdownValue@PChannel@@@Z @3404 NONAME ?Shutdown@PSocket@@UAEHW4ShutdownValue@PChannel@@@Z @3405 NONAME ?Signal@PCondMutex@@UAEXXZ @3406 NONAME ?Signal@PCriticalSection@@UAEXXZ @16595 NONAME ?Signal@PSemaphore@@UAEXXZ @3408 NONAME ?Signal@PSyncPoint@@UAEXXZ @3409 NONAME ?Signal@PSyncPointAck@@QAEXABVPTimeInterval@@@Z @3410 NONAME ?Signal@PSyncPointAck@@UAEXXZ @3411 NONAME ?Signal@PTimedMutex@@UAEXXZ @16596 NONAME ?SignalTimerChange@PProcess@@QAEXXZ @3412 NONAME ?size@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@QBEIXZ @6444 NONAME ?size@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@QBEIXZ @6445 NONAME ?size@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEIXZ @6961 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEIXZ @6446 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7467 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @6962 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7468 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7469 NONAME ?size@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEIXZ @7470 NONAME ?skipws@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5813 NONAME ?Sleep@PThread@@SAXABVPTimeInterval@@@Z @3413 NONAME ?snmpLibrary@WinSNMPLoader@@1PAVPWin32SnmpLibrary@@A @6739 NONAME ?soundChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPSoundChannel@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7471 NONAME ?Splice@PString@@QAEXABV1@HH@Z @3414 NONAME ?Splice@PString@@QAEXPBDHH@Z @3415 NONAME ?sprintf@PString@@QAAAAV1@PBDZZ @3416 NONAME ?Start@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3417 NONAME ?Start@PVideoDevice@@UAEHXZ @3419 NONAME ?Start@PVideoInputDevice_FakeVideo@@UAEHXZ @3858 NONAME ?Start@PVideoInputDevice_VideoForWindows@@UAEHXZ @3751 NONAME ?Start@PVideoOutputDevice@@UAEHXZ @3905 NONAME ?Start@PVideoOutputDevice_NULLOutput@@UAEHXZ @3859 NONAME ?Start@PVideoOutputDevice_Window@@UAEHXZ @16559 NONAME ?Start@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3421 NONAME ?StartNest@PReadWriteMutex@@IAEAAVNest@1@XZ @3422 NONAME ?StartRead@PReadWriteMutex@@QAEXXZ @3423 NONAME ?StartRecording@PSoundChannel@@UAEHXZ @3752 NONAME ?StartRecording@PSoundChannelWin32@@UAEHXZ @3753 NONAME ?StartRunning@PTimer@@AAEXH@Z @3425 NONAME ?StartWrite@PReadWriteMutex@@QAEXXZ @3426 NONAME ?StaticControlEntry@PServiceProcess@@CGXK@Z @3427 NONAME ?StaticMainEntry@PServiceProcess@@CGXKPAPAD@Z @3428 NONAME ?StaticThreadEntry@PServiceProcess@@CAXPAX@Z @3429 NONAME ?StaticWndProc@PServiceProcess@@CGJPAUHWND__@@IIJ@Z @3430 NONAME ?Stop@NT_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3431 NONAME ?Stop@PTimer@@QAEXXZ @3433 NONAME ?Stop@PVideoDevice@@UAEHXZ @3434 NONAME ?Stop@PVideoInputDevice_FakeVideo@@UAEHXZ @3860 NONAME ?Stop@PVideoInputDevice_VideoForWindows@@UAEHXZ @3754 NONAME ?Stop@PVideoOutputDevice@@UAEHXZ @3906 NONAME ?Stop@PVideoOutputDevice_NULLOutput@@UAEHXZ @3861 NONAME ?Stop@PVideoOutputDevice_Window@@UAEHXZ @16560 NONAME ?Stop@Win95_ServiceManager@@UAEHPAVPServiceProcess@@@Z @3436 NONAME ?str@ostrstream@std@@QAEPADXZ @5814 NONAME ?str@strstreambuf@std@@QAEPADXZ @5815 NONAME ?Successor@Info@PAbstractSortedList@@QBEPAUElement@2@PBU32@@Z @7668 NONAME ?SupportQoS@PUDPSocket@@SAHABVAddress@PIPSocket@@@Z @16561 NONAME ?Suspend@PThread@@UAEXH@Z @3438 NONAME ?SwapRedAndBlue@PStandardColourConverter@@IBEHPBEPAEPAHII@Z @16562 NONAME ?sync@Buffer@PDebugStream@@UAEHXZ @3439 NONAME ?sync@Buffer@PStringStream@@UAEHXZ @3440 NONAME ?sync@Buffer@PSystemLog@@UAEHXZ @3441 NONAME ?sync@PChannelStreamBuffer@@MAEHXZ @3442 NONAME ?Terminate@PProcess@@UAEXXZ @3443 NONAME ?Terminate@PThread@@UAEXXZ @3444 NONAME ?TestAllFormats@PVideoInputDevice_FakeVideo@@UAEHXZ @3862 NONAME ?TestAllFormats@PVideoInputDevice_VideoForWindows@@UAEHXZ @3755 NONAME ?ThreadEntry@PServiceProcess@@AAEXXZ @3447 NONAME ?Tick@PTimer@@SA?AVPTimeInterval@@XZ @3448 NONAME ?time@?$_Locbase@H@std@@2HB @5816 NONAME ?ToCharArray@PStringArray@@QBEPAPADPAVPCharArray@@@Z @3449 NONAME ?ToggleVFlipInput@PVideoChannel@@QAEHXZ @3450 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@ABV1@H@Z @3451 NONAME ?Tokenise@PString@@QBE?AVPStringArray@@PBDH@Z @3452 NONAME ?ToLiteral@PString@@QBE?AV1@XZ @3453 NONAME ?ToLower@PString@@QBE?AV1@XZ @3454 NONAME ?ToPascal@PString@@QBE?AVPBYTEArray@@XZ @3455 NONAME ?ToUpper@PString@@QBE?AV1@XZ @3456 NONAME ?Trim@PString@@QBE?AV1@XZ @3457 NONAME ?trunc@?$_Iosb@H@std@@2W4_Openmode@12@B @5817 NONAME ?underflow@Buffer@PDebugStream@@UAEHXZ @3458 NONAME ?underflow@Buffer@PStringStream@@UAEHXZ @3459 NONAME ?underflow@Buffer@PSystemLog@@UAEHXZ @3460 NONAME ?underflow@PChannelStreamBuffer@@MAEHXZ @3461 NONAME ?unitbuf@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5818 NONAME ?UnknownOption@PArgList@@UBEXABVPString@@@Z @3462 NONAME ?Unlock@PSafeLockReadOnly@@QAEXXZ @7614 NONAME ?Unlock@PSafeLockReadWrite@@QAEXXZ @7615 NONAME ?UnlockReadOnly@PSafeObject@@QBEXXZ @3463 NONAME ?UnlockReadWrite@PSafeObject@@QAEXXZ @3464 NONAME ?Unregister@?$PFactory@VPSoundChannel@@VPString@@@@SAXABVPString@@@Z @16216 NONAME ?Unregister@?$PFactory@VPVideoInputDevice@@VPString@@@@SAXABVPString@@@Z @16217 NONAME ?Unregister@?$PFactory@VPVideoOutputDevice@@VPString@@@@SAXABVPString@@@Z @16218 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHI@Z @5994 NONAME ?UnregisterNotifiee@PSmartNotifieeRegistrar@@SAHPAX@Z @5995 NONAME ?Unregister_Internal@?$PFactory@VPSoundChannel@@VPString@@@@IAEXABVPString@@@Z @16219 NONAME ?Unregister_Internal@?$PFactory@VPVideoInputDevice@@VPString@@@@IAEXABVPString@@@Z @16220 NONAME ?Unregister_Internal@?$PFactory@VPVideoOutputDevice@@VPString@@@@IAEXABVPString@@@Z @16221 NONAME ?uppercase@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5819 NONAME ?upper_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @16222 NONAME ?upper_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @16223 NONAME ?upper_bound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAE?AViterator@12@ABVPString@@@Z @16224 NONAME ?ValidateDeviceName@PDevicePluginServiceDescriptor@@UBE_NABVPString@@H@Z @16563 NONAME ?ValidateDeviceName@PVideoOutputDevice_Window_PluginServiceDescriptor@@UBE_NABVPString@@H@Z @16564 NONAME ?ValueSelect@PAbstractSortedList@@IBEHPBUElement@1@ABVPObject@@PAPBU21@@Z @3981 NONAME ?VerifyHardwareFrameSize@PVideoInputDevice_VideoForWindows@@MAEHII@Z @3756 NONAME ?VideoHandler@PVideoInputDevice_VideoForWindows@@KGJPAUHWND__@@PAUvideohdr_tag@@@Z @3757 NONAME ?vidinChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoInputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7472 NONAME ?vidoutChannelFactoryAdapter@PWLib@@3V?$Worker@V?$PDevicePluginAdapter@VPVideoOutputDevice@@@@@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@A @7473 NONAME ?vsprintf@PString@@QAEAAV1@ABV1@PAD@Z @3470 NONAME ?vsprintf@PString@@QAEAAV1@PBDPAD@Z @3471 NONAME ?Wait@PCriticalSection@@UAEXXZ @16597 NONAME ?Wait@PSemaphore@@UAEHABVPTimeInterval@@@Z @3472 NONAME ?Wait@PSemaphore@@UAEXXZ @3473 NONAME ?WaitCondition@PCondMutex@@UAEXXZ @3474 NONAME ?WaitForAllRecordBuffersFull@PSoundChannel@@UAEHXZ @3758 NONAME ?WaitForAllRecordBuffersFull@PSoundChannelWin32@@UAEHXZ @3759 NONAME ?WaitForPlayCompletion@PSoundChannel@@UAEHXZ @3760 NONAME ?WaitForPlayCompletion@PSoundChannelWin32@@UAEHXZ @3761 NONAME ?WaitForRecordBufferFull@PSoundChannel@@UAEHXZ @3762 NONAME ?WaitForRecordBufferFull@PSoundChannelWin32@@UAEHXZ @3763 NONAME ?WaitForTermination@PPipeChannel@@QAEHABVPTimeInterval@@@Z @3479 NONAME ?WaitForTermination@PPipeChannel@@QAEHXZ @3480 NONAME ?WaitForTermination@PThread@@QBEHABVPTimeInterval@@@Z @3481 NONAME ?WaitForTermination@PThread@@QBEXXZ @3482 NONAME ?what@logic_error@std@@UBEPBDXZ @6123 NONAME ?WillBlock@PSemaphore@@UBEHXZ @3483 NONAME ?Win32AttachThreadInput@PThread@@QAEXXZ @16598 NONAME ?WndProc@PServiceProcess@@AAEJPAUHWND__@@IIJ@Z @3484 NONAME ?WndProc@PVideoOutputDevice_Window@@QAEJIIJ@Z @16565 NONAME ?Write@PChannel@@UAEHABV?$vector@USlice@PChannel@@V?$allocator@USlice@PChannel@@@std@@@std@@@Z @16566 NONAME ?Write@PChannel@@UAEHPBXH@Z @3485 NONAME ?Write@PConsoleChannel@@UAEHPBXH@Z @3486 NONAME ?Write@PEthSocket@@UAEHPBXH@Z @3487 NONAME ?Write@PFile@@UAEHPBXH@Z @3488 NONAME ?Write@PIndirectChannel@@UAEHPBXH@Z @3489 NONAME ?Write@PMultiMediaFile@@QAEHPBXH@Z @3490 NONAME ?Write@PPipeChannel@@UAEHPBXH@Z @3491 NONAME ?Write@PSerialChannel@@UAEHPBXH@Z @3492 NONAME ?Write@PSocket@@UAEHPBXH@Z @3493 NONAME ?Write@PSoundChannel@@UAEHPBXH@Z @3494 NONAME ?Write@PSoundChannelWin32@@UAEHPBXH@Z @3764 NONAME ?Write@PStructuredFile@@EAEHPBXH@Z @3495 NONAME ?Write@PStructuredFile@@QAEHPBX@Z @3496 NONAME ?Write@PTCPSocket@@UAEHPBXH@Z @3497 NONAME ?Write@PUDPSocket@@UAEHPBXH@Z @3498 NONAME ?Write@PVideoChannel@@UAEHPBXH@Z @3499 NONAME ?WriteAsync@PChannel@@UAEHPBXH@Z @3500 NONAME ?WriteAsync@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3501 NONAME ?WriteChar@PChannel@@QAEHH@Z @3502 NONAME ?WriteComplete@PWin32PacketBuffer@@QAEHAAVPWin32PacketDriver@@@Z @3503 NONAME ?WriteLine@PTextFile@@QAEHABVPString@@@Z @3504 NONAME ?WriteOutOfBand@PTCPSocket@@UAEHPBXH@Z @3505 NONAME ?WriteString@PChannel@@QAEHABVPString@@@Z @3506 NONAME ?WriteTo@PIPDatagramSocket@@UAEHPBXHABVAddress@PIPSocket@@G@Z @3507 NONAME ?WriteTo@PIPXSocket@@UAEHPBXHABVAddress@1@G@Z @3508 NONAME ?Yield@PThread@@SAXXZ @3509 NONAME ?YUV420PtoRGB@PStandardColourConverter@@IBEHPBEPAEPAHIII@Z @16567 NONAME ?Zero@P_fd_set@@QAEXXZ @3511 NONAME ?_Buy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAE_NI@Z @6448 NONAME ?_Buy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAE_NI@Z @6449 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@D@Z @6963 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6964 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@D@Z @6450 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6451 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@D@Z @7474 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7475 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6965 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@D@Z @6966 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @6967 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@D@Z @7476 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7477 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@D@Z @7478 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7479 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@00ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@D@Z @7480 NONAME ?_Buynode@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7481 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6968 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6455 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7482 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6969 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6970 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7483 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7484 NONAME ?_Color@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7485 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@0@Z @16225 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXABV12@@Z @16226 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@0@Z @16227 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXABV12@@Z @16228 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@0@Z @16229 NONAME ?_Copy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXABV12@@Z @16230 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEXXZ @6971 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEXXZ @6458 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7486 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6972 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7487 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7488 NONAME ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7489 NONAME ?_Destroy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXPAPAVPPluginModuleManager@@0@Z @6460 NONAME ?_Destroy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXPAVPString@@0@Z @6461 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6973 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6462 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7490 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6974 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6975 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7491 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7492 NONAME ?_Erase@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7493 NONAME ?_Hardfail@?$_Iosb@H@std@@2W4_Iostate@12@B @5820 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QAEXXZ @6976 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QAEXXZ @6465 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7494 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6977 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @6978 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7495 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7496 NONAME ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QAEXXZ @7497 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXXZ @6979 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXXZ @6468 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7498 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @6980 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @6981 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7499 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7500 NONAME ?_Init@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7501 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6982 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @6471 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7502 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6983 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7503 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7504 NONAME ?_Insert@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAE?AViterator@12@_NPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7505 NONAME ?_Insert_n@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXViterator@12@IABQAVPPluginModuleManager@@@Z @6473 NONAME ?_Insert_n@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXViterator@12@IABVPString@@@Z @6474 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6984 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6475 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7506 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6985 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6986 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7507 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7508 NONAME ?_Isnil@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAADPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7509 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @6987 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6478 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7510 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6988 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @6989 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7511 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7512 NONAME ?_Key@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAABVPString@@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7513 NONAME ?_Kfn@?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@SAABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@ABU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@@Z @6990 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@@Z @6481 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@@Z @7514 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@@Z @6991 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@@Z @6992 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@@Z @7515 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@@Z @7516 NONAME ?_Kfn@?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@SAABVPString@@ABU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@@Z @7517 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z @6993 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7518 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @6994 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @6995 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7519 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7520 NONAME ?_Lbound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @7521 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @6996 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6486 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7522 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6997 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @6998 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7523 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7524 NONAME ?_Left@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7525 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @6999 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6489 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7526 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7000 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7001 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7527 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7528 NONAME ?_Lmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7529 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @7002 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6492 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7530 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7003 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7004 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7531 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7532 NONAME ?_Lrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7533 NONAME ?_main@PProcess@@UAEHPAX@Z @3512 NONAME ?_main@PServiceProcess@@UAEHPAX@Z @3513 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @7005 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6495 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7534 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7006 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7007 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7535 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7536 NONAME ?_Max@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7537 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @7008 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6498 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7538 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7009 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7010 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7539 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7540 NONAME ?_Min@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7541 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@3@XZ @7011 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@3@XZ @6501 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7542 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7012 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7013 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7543 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7544 NONAME ?_Mynode@const_iterator@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@QBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@3@XZ @7545 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @7014 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVPProcessStartup@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6504 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7546 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7015 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7016 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7547 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7548 NONAME ?_Myval@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAU?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@2@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7549 NONAME ?_Nocreate@?$_Iosb@H@std@@2W4_Openmode@12@B @5821 NONAME ?_Noreplace@?$_Iosb@H@std@@2W4_Openmode@12@B @5822 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @7017 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6507 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7550 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7018 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7019 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7551 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7552 NONAME ?_Parent@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7553 NONAME ?_Psave@?$_Facetptr@V?$ctype@D@std@@@std@@2PBVfacet@locale@2@B @5823 NONAME ?_Psave@?$_Facetptr@V?$ctype@G@std@@@std@@2PBVfacet@locale@2@B @5824 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@PAU342@@Z @7020 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@PAU342@@Z @6510 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7554 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7021 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7022 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7555 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7556 NONAME ?_Right@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@KAAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@PAU342@@Z @7557 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @7023 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6513 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7558 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7024 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7025 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7559 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7560 NONAME ?_Rmost@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7561 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @7026 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@XZ @7027 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@XZ @6516 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7562 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7563 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7028 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7029 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7030 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7031 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7564 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7565 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7566 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7567 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7568 NONAME ?_Root@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEAAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@XZ @7569 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@2@@Z @7032 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@2@@Z @6521 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7570 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7033 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7034 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7571 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7572 NONAME ?_Rrotate@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@@Z @7573 NONAME ?_Stdio@?$_Iosb@H@std@@2W4_Fmtflags@12@B @5825 NONAME ?_Stz@?$fpos@H@std@@0HA @5826 NONAME ?_Tidy@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEXXZ @6524 NONAME ?_Tidy@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEXXZ @6525 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@U?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVPFactoryBase@@@std@@@2@$0A@@std@@@std@@IAEXXZ @7035 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVPProcessStartup@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVPProcessStartup@@@std@@@4@$0A@@std@@@std@@IAEXXZ @6526 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPDevicePluginAdapterBase@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7574 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPPluginModuleManager@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7036 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPProcessStartup@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7037 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7575 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7576 NONAME ?_Tidy@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IAEXXZ @7577 NONAME ?_Ubound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPSoundChannel@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @16231 NONAME ?_Ubound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoInputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @16232 NONAME ?_Ubound@?$_Tree@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@std@@IBEPAU_Node@?$_Tree_nod@V?$_Tmap_traits@VPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@U?$less@VPString@@@std@@V?$allocator@U?$pair@$$CBVPString@@PAVWorkerBase@?$PFactory@VPVideoOutputDevice@@VPString@@@@@std@@@5@$0A@@std@@@2@ABVPString@@@Z @16233 NONAME ?_Ufill@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IAEPAPAVPPluginModuleManager@@PAPAV3@IABQAV3@@Z @6529 NONAME ?_Ufill@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IAEPAVPString@@PAV3@IABV3@@Z @6530 NONAME ?_Xlen@?$vector@PAVPPluginModuleManager@@V?$allocator@PAVPPluginModuleManager@@@std@@@std@@IBEXXZ @6531 NONAME ?_Xlen@?$vector@VPString@@V?$allocator@VPString@@@std@@@std@@IBEXXZ @6532 NONAME _PTimeGetChar@4 @3517 NONAME _PTimeGetDateOrder@0 @3518 NONAME _PTimeIsDayName@12 @3519 NONAME _PTimeIsMonthName@12 @3520 NONAME _PTimeParse@12 @3521 NONAME _PTimeUngetChar@8 @3522 NONAME __CT??_R0?AVbad_cast@@@8??0bad_cast@@QAE@ABV0@@Z12 @5827 NONAME __CT??_R0?AVexception@@@8??0exception@@QAE@ABV0@@Z12 @5828 NONAME __CT??_R0?AVlength_error@std@@@8??0length_error@std@@QAE@ABV01@@Z40 @6154 NONAME __CT??_R0?AVlogic_error@std@@@8??0logic_error@std@@QAE@ABV01@@Z40 @6155 NONAME __CT??_R0?AVout_of_range@std@@@8??0out_of_range@std@@QAE@ABV01@@Z40 @6156 NONAME __CTA2?AVbad_cast@@ @5829 NONAME __CTA3?AVlength_error@std@@ @6157 NONAME __CTA3?AVout_of_range@std@@ @6158 NONAME __TI2?AVbad_cast@@ @5830 NONAME __TI3?AVlength_error@std@@ @6159 NONAME __TI3?AVout_of_range@std@@ @6160 NONAME pwlib_v1_10_2/include/ptlib/msos/unistd.h0100644000176200056700000000204107231166512020573 0ustar releasepostincr/* * unistd.h * * File needed by flex generated code on non-unix systems. * * Portable Windows Library * * Copyright (c) 1993-2001 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): * * $Log: unistd.h,v $ * Revision 1.1 2001/01/17 00:54:34 robertj * Added dummy file so that flex generated code can be compiled. * */ // Do precisely nothing pwlib_v1_10_2/include/ptlib/MacMainIf.h0100644000176200056700000000244507335162552020105 0ustar releasepostincr// // // Upper interface declarations for MacMain functions // #ifndef MACMAINIF_H_ #define MACMAINIF_H 1 // This embarassing hack exists purely because EMACS' electric-c indentation // mode is too clever by half... #ifdef __cplusplus #define BEGIN_EXTERN_C extern "C" { #define END_EXTERN_C }; #else #define BEGIN_EXTERN_C #define END_EXTERN_C #endif #include BEGIN_EXTERN_C long MacInitialisePWLibEvents(void); long MacTeardownPWLibEvents(void); // technically, CALLBACK_API_C returns OSStatus, but that's a long typedef long(*callback_api_c)(void*); int SpawnProcessInContext( callback_api_c trampoline ); // The shutdown dance is long and complicated. // Actually, it's not. When (or shortly after) the PProcess terminates, // three things happen: // The extern variable pwlibAppQueueID gets set to zero; // the main application event loop receives a special event call; // and the main application receives a Quit event. // Here's the special event: #define kEventClassPwlib 'PWLB' #define kEventPwlibPProcExit 0 // Here's the variable: extern MPQueueID pwlibAppQueueID; // And here's a function you can call to wait for the application PProcess // to exit (assuming you've already suggested to it that it should). long MacWaitForPProcess(Duration); END_EXTERN_C #endif pwlib_v1_10_2/include/ptlib/args.h0100644000176200056700000004461210343317551017251 0ustar releasepostincr/* * args.h * * Program Argument Parsing class * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: args.h,v $ * Revision 1.28 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.27 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.26 2005/11/20 22:02:59 dereksmithies * Fix tags so they work with doxygen. * * Revision 1.25 2005/01/26 05:37:43 csoutheren * Added ability to remove config file support * * Revision 1.24 2003/09/17 01:18:01 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.23 2003/03/27 07:27:07 robertj * Added function to get a bunch of arguments as a string array. * * Revision 1.22 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.21 2001/12/15 04:49:06 robertj * Added stream I/O functions for argument list. * * Revision 1.20 2000/05/25 11:05:31 robertj * Added PConfigArgs class so can save program arguments to config files. * * Revision 1.19 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.18 1999/02/16 08:07:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.17 1998/11/01 04:56:51 robertj * Added BOOl return value to Parse() to indicate there are parameters available. * * Revision 1.16 1998/10/30 11:22:14 robertj * Added constructors that take strings as well as const char *'s. * * Revision 1.15 1998/10/30 05:24:29 robertj * Added return value to << and >> operators for shifting arguments. * * Revision 1.14 1998/10/29 05:35:14 robertj * Fixed porblem with GetCount() == 0 if do not call Parse() function. * * Revision 1.13 1998/10/28 03:26:41 robertj * Added multi character arguments (-abc style) and options precede parameters mode. * * Revision 1.12 1998/10/28 00:59:46 robertj * New improved argument parsing. * * Revision 1.11 1998/09/23 06:20:14 robertj * Added open source copyright license. * * Revision 1.10 1995/12/10 11:26:38 robertj * Fixed signed/unsigned bug in shift count. * * Revision 1.9 1995/06/17 11:12:17 robertj * Documentation update. * * Revision 1.8 1995/03/14 12:40:58 robertj * Updated documentation to use HTML codes. * * Revision 1.7 1994/12/05 11:15:13 robertj * Documentation. * * Revision 1.6 1994/11/26 03:44:19 robertj * Documentation. * * Revision 1.6 1994/11/24 11:48:26 robertj * Documentation. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.2 1994/07/17 10:46:06 robertj * Changed to use container classes to plug memory leak. * * Revision 1.1 1994/04/01 14:08:52 robertj * Initial revision * */ #ifndef _PARGLIST #define _PARGLIST #ifdef P_USE_PRAGMA #pragma interface #endif /** This class allows the parsing of a set of program arguments. This translates the standard argc/argv style variables passed into the main() function into a set of options (preceded by a '-' character) and parameters. */ class PArgList : public PObject { PCLASSINFO(PArgList, PObject); public: /**@name Construction */ //@{ /** Create an argument list. An argument list is created given the standard arguments and a specification for options. The program arguments are parsed from this into options and parameters. The specification string consists of case significant letters for each option. If the letter is followed by the ':' character then the option has an associated string. This string must be in the argument or in the next argument. */ PArgList( const char * theArgPtr = NULL, ///< A string constituting the arguments const char * argumentSpecPtr = NULL, ///< The specification C string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); /** Create an argument list. */ PArgList( const PString & theArgStr, ///< A string constituting the arguments const char * argumentSpecPtr = NULL, ///< The specification C string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); /** Create an argument list. */ PArgList( const PString & theArgStr, ///< A string constituting the arguments const PString & argumentSpecStr, ///< The specification string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); /** Create an argument list. */ PArgList( int theArgc, ///< Count of argument strings in theArgv char ** theArgv, ///< An array of strings constituting the arguments const char * argumentSpecPtr = NULL, ///< The specification C string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); /** Create an argument list. */ PArgList( int theArgc, ///< Count of argument strings in theArgv char ** theArgv, ///< An array of strings constituting the arguments const PString & argumentSpecStr, ///< The specification string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); //@} /**@name Overrides from class PObject */ //@{ /**Output the string to the specified stream. */ virtual void PrintOn( ostream & strm ///< I/O stream to output to. ) const; /**Input the string from the specified stream. This will read all characters until a end of line is reached, then parsing the arguments. */ virtual void ReadFrom( istream & strm ///< I/O stream to input from. ); //@} /**@name Setting & Parsing */ //@{ /** Set the internal copy of the program arguments. */ void SetArgs( const PString & theArgStr ///< A string constituting the arguments ); /** Set the internal copy of the program arguments. */ void SetArgs( int theArgc, ///< Count of argument strings in theArgv char ** theArgv ///< An array of strings constituting the arguments ); /** Set the internal copy of the program arguments. */ void SetArgs( const PStringArray & theArgs ///< A string array constituting the arguments ); /** Parse the arguments. Parse the standard C program arguments into an argument of options and parameters. Consecutive calls with #optionsBeforeParams# set to TRUE will parse out different options and parameters. If SetArgs() function is called then the Parse() function will restart from the beginning of the argument list. The specification string consists of case significant letters for each option. If the letter is followed by a '-' character then a long name version of the option is present. This is terminated either by a '.' or a ':' character. If the single letter or long name is followed by the ':' character then the option has may have an associated string. This string must be within the argument or in the next argument. If a single letter option is followed by a ';' character, then the option may have an associated string but this MUST follow the letter immediately, if it is present at all. For example, "ab:c" allows for "-a -b arg -barg -c" and "a-an-arg.b-option:c;" allows for "-a --an-arg --option arg -c -copt". @return TRUE if there is at least one parameter after parsing. */ virtual BOOL Parse( const char * theArgumentSpec, ///< The specification string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); /** Parse the arguments. */ virtual BOOL Parse( const PString & theArgumentStr, ///< The specification string for argument options. See description for details. BOOL optionsBeforeParams = TRUE ///< Parse options only before parameters ); //@} /**@name Getting parsed arguments */ //@{ /** Get the count of the number of times the option was specified on the command line. @return option repeat count. */ virtual PINDEX GetOptionCount( char optionChar ///< Character letter code for the option ) const; /** Get the count of option */ virtual PINDEX GetOptionCount( const char * optionStr ///< String code for the option ) const; /** Get the count of option */ virtual PINDEX GetOptionCount( const PString & optionName ///< String code for the option ) const; /** Get if option present. Determines whether the option was specified on the command line. @return TRUE if the option was present. */ BOOL HasOption( char optionChar ///< Character letter code for the option ) const; /** Get if option present. */ BOOL HasOption( const char * optionStr ///< String letter code for the option ) const; /** Get if option present. */ BOOL HasOption( const PString & optionName ///< String code for the option ) const; /** Get option string. Gets the string associated with an option e.g. -ofile or -o file would return the string "file". An option may have an associated string if it had a ':' character folowing it in the specification string passed to the Parse() function. @return the options associated string. */ virtual PString GetOptionString( char optionChar, ///< Character letter code for the option const char * dflt = NULL ///< Default value of the option string ) const; /** Get option string. */ virtual PString GetOptionString( const char * optionStr, ///< String letter code for the option const char * dflt = NULL ///>( int sh ///< Number of parameters to shift backward through list ); //@} /**@name Errors */ //@{ /** This function is called when access to illegal parameter index is made in the GetParameter function. The default behaviour is to output a message to the standard #PError# stream. */ virtual void IllegalArgumentIndex( PINDEX idx ///< Number of the parameter that was accessed. ) const; /** This function is called when an unknown option was specified on the command line. The default behaviour is to output a message to the standard #PError# stream. */ virtual void UnknownOption( const PString & option ///< Option that was illegally placed on command line. ) const; /** This function is called when an option that requires an associated string was specified on the command line but no associated string was provided. The default behaviour is to output a message to the standard #PError# stream. */ virtual void MissingArgument( const PString & option ///< Option for which the associated string was missing. ) const; //@} protected: /// The original program arguments. PStringArray argumentArray; /// The specification letters for options PString optionLetters; /// The specification strings for options PStringArray optionNames; /// The count of the number of times an option appeared in the command line. PIntArray optionCount; /// The array of associated strings to options. PStringArray optionString; /// The index of each . PIntArray parameterIndex; /// Shift count for the parameters in the argument list. int shift; private: BOOL ParseOption(PINDEX idx, PINDEX offset, PINDEX & arg, const PIntArray & canHaveOptionString); PINDEX GetOptionCountByIndex(PINDEX idx) const; PString GetOptionStringByIndex(PINDEX idx, const char * dflt) const; }; #ifdef P_CONFIG_FILE /**This class parse command line arguments with the ability to override them from a PConfig file/registry. */ class PConfigArgs : public PArgList { PCLASSINFO(PConfigArgs, PArgList); public: /**@name Construction */ //@{ PConfigArgs( const PArgList & args ///< Raw argument list. ); //@} /**@name Overrides from class PArgList */ //@{ /** Get the count of the number of times the option was specified on the command line. @return option repeat count. */ virtual PINDEX GetOptionCount( char optionChar ///< Character letter code for the option ) const; /** Get the count of option */ virtual PINDEX GetOptionCount( const char * optionStr ///< String code for the option ) const; /** Get the count of option */ virtual PINDEX GetOptionCount( const PString & optionName ///< String code for the option ) const; /** Get option string. Gets the string associated with an option e.g. -ofile or -o file would return the string "file". An option may have an associated string if it had a ':' character folowing it in the specification string passed to the Parse() function. @return the options associated string. */ virtual PString GetOptionString( char optionChar, ///< Character letter code for the option const char * dflt = NULL ///< Default value of the option string ) const; /** Get option string. */ virtual PString GetOptionString( const char * optionStr, ///< String letter code for the option const char * dflt = NULL ///< Default value of the option string ) const; /** Get option string. */ virtual PString GetOptionString( const PString & optionName, ///< String code for the option const char * dflt = NULL ///< Default value of the option string ) const; //@} /**@name Overrides from class PArgList */ //@{ /**Save the current options to the PConfig. This function will check to see if the option name is present and if so, save to the PConfig all of the arguments present in the currently parsed list. Note that the optionName for saving is not saved to the PConfig itself as this would cause the data to be saved always! */ void Save( const PString & optionName ///< Option name for saving. ); /**Set the PConfig section name for options. */ void SetSectionName( const PString & section ///< New section name ) { sectionName = section; } /**Get the PConfig section name for options. */ const PString & GetSectionName() const { return sectionName; } /**Set the prefix for option negation. The default is "no-". */ void SetNegationPrefix( const PString & prefix ///< New prefix string ) { negationPrefix = prefix; } /**Get the prefix for option negation. The default is "no-". */ const PString & GetNegationPrefix() const { return negationPrefix; } //@} protected: PString CharToString(char ch) const; PConfig config; PString sectionName; PString negationPrefix; }; #endif // P_CONFIG_FILE #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/array.h0100644000176200056700000014060510341504163017425 0ustar releasepostincr/* * array.h * * Linear Array Container classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: array.h,v $ * Revision 1.34 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.33 2005/08/08 07:01:58 rjongbloed * Minor changes to remove possible ambiguity where virtual and non-virtual * functions are overloaded. * Removed commented out code. * * Revision 1.32 2005/05/02 09:02:35 csoutheren * Fixed previous fix to contain.cxx which broke PString::MakeUnique * * Revision 1.31 2004/05/13 02:07:14 dereksmithies * Fixes, so it works with doc++ * * Revision 1.30 2004/04/09 03:42:34 csoutheren * Removed all usages of "virtual inline" and "inline virtual" * * Revision 1.29 2004/04/03 06:54:21 rjongbloed * Many and various changes to support new Visual C++ 2003 * * Revision 1.28 2004/03/02 10:29:59 rjongbloed * Changed base array declaration macro to be consistent with the * object array one, thanks Guilhem Tardy * * Revision 1.27 2003/04/17 07:24:47 robertj * Fixed GNU 3.x problem (why no other compiler?) * * Revision 1.26 2003/04/15 07:08:36 robertj * Changed read and write from streams for base array classes so operates in * the same way for both PIntArray and PArray etc * * Revision 1.25 2003/03/31 01:23:56 robertj * Added ReadFrom functions for standard container classes such as * PIntArray and PStringList etc * * Revision 1.24 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.23 2002/06/20 06:08:59 robertj * Fixed GNU warning * * Revision 1.22 2002/06/14 13:20:37 robertj * Added PBitArray class. * * Revision 1.21 2002/02/14 23:37:53 craigs * Added fix for optimisation for PArray [] operator, thanks to Vyacheslav Frolov * * Revision 1.20 2002/02/14 05:11:50 robertj * Minor optimisation in the operator[] for arrays of PObjects. * * Revision 1.19 1999/11/30 00:22:54 robertj * Updated documentation for doc++ * * Revision 1.18 1999/09/03 15:08:38 robertj * Fixed typo in ancestor class name * * Revision 1.17 1999/08/22 12:13:42 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.16 1999/08/20 03:07:44 robertj * Fixed addded Concatenate function for non-template version. * * Revision 1.15 1999/08/18 01:45:12 robertj * Added concatenation function to "base type" arrays. * * Revision 1.14 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.13 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.12 1998/09/23 06:20:16 robertj * Added open source copyright license. * * Revision 1.11 1998/08/21 05:23:57 robertj * Added hex dump capability to base array types. * Added ability to have base arrays of static memory blocks. * * Revision 1.10 1997/06/08 04:49:10 robertj * Fixed non-template class descendent order. * * Revision 1.9 1996/08/17 09:54:34 robertj * Optimised RemoveAll() for object arrays. * * Revision 1.8 1996/01/02 11:48:46 robertj * Removed requirement that PArray elements have parameterless constructor.. * * Revision 1.7 1995/10/14 14:52:33 robertj * Changed arrays to not break references. * * Revision 1.6 1995/06/17 11:12:18 robertj * Documentation update. * * Revision 1.5 1995/03/14 12:40:58 robertj * Updated documentation to use HTML codes. * * Revision 1.4 1995/02/22 10:50:26 robertj * Changes required for compiling release (optimised) version. * * Revision 1.3 1995/01/15 04:49:09 robertj * Fixed errors in template version. * * Revision 1.2 1994/12/21 11:52:46 robertj * Documentation and variable normalisation. * * Revision 1.1 1994/12/12 09:59:29 robertj * Initial revision * */ #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // The abstract array class /**This class contains a variable length array of arbitrary memory blocks. These can be anything from individual bytes to large structures. Note that that does {\bf not} include class objects that require construction or destruction. Elements in this array will not execute the contructors or destructors of objects. An abstract array consists of a linear block of memory sufficient to hold #PContainer::GetSize()# elements of #elementSize# bytes each. The memory block itself will atuomatically be resized when required and freed when no more references to it are present. The PAbstractArray class would very rarely be descended from directly by the user. The #PBASEARRAY# macro would normally be used to create a class and any new classes descended from that. That will instantiate the template based on #PBaseArray# or directly declare and define a class (using inline functions) if templates are not being used. The #PBaseArray# class or #PBASEARRAY# macro will define the correctly typed operators for pointer access (#operator const T *#) and subscript access (#operator[]#). */ class PAbstractArray : public PContainer { PCONTAINERINFO(PAbstractArray, PContainer); public: /**@name Construction */ //@{ /**Create a new dynamic array of #initalSize# elements of #elementSizeInBytes# bytes each. The array memory is initialised to zeros. If the initial size is zero then no memory is allocated. Note that the internal pointer is set to NULL, not to a pointer to zero bytes of memory. This can be an important distinction when the pointer is obtained via an operator created in the #PBASEARRAY# macro. */ PAbstractArray( PINDEX elementSizeInBytes, ///< Size of each element in the array. This must be > 0 or the ///< constructor will assert. PINDEX initialSize = 0 ///< Number of elements to allocate initially. ); /**Create a new dynamic array of #bufferSizeInElements# elements of #elementSizeInBytes# bytes each. The contents of the memory pointed to by buffer is then used to initialise the newly allocated array. If the initial size is zero then no memory is allocated. Note that the internal pointer is set to NULL, not to a pointer to zero bytes of memory. This can be an important distinction when the pointer is obtained via an operator created in the #PBASEARRAY# macro. If the #dynamicAllocation# parameter is FALSE then the pointer is used directly by the container. It will not be copied to a dynamically allocated buffer. If the #SetSize()# function is used to change the size of the buffer, the object will be converted to a dynamic form with the contents of the static buffer copied to the allocated buffer. */ PAbstractArray( PINDEX elementSizeInBytes, ///< Size of each element in the array. This must be > 0 or the ///< constructor will assert. const void *buffer, ///< Pointer to an array of elements. PINDEX bufferSizeInElements, ///< Number of elements pointed to by buffer. BOOL dynamicAllocation ///< Buffer is copied and dynamically allocated. ); //@} /**@name Overrides from class PObject */ //@{ /** Output the contents of the object to the stream. The exact output is dependent on the exact semantics of the descendent class. This is primarily used by the standard #operator<<# function. The default behaviour is to print the class name. */ virtual void PrintOn( ostream &strm // Stream to print the object into. ) const; /** Input the contents of the object from the stream. The exact input is dependent on the exact semantics of the descendent class. This is primarily used by the standard #operator>># function. The default behaviour is to do nothing. */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); /**Get the relative rank of the two arrays. The following algorithm is employed for the comparison: \begin{description} \item[EqualTo] if the two array memory blocks are identical in length and contents. \item[LessThan] if the array length is less than the #obj# parameters array length. \item[GreaterThan] if the array length is greater than the #obj# parameters array length. \end{description} If the array sizes are identical then the #memcmp()# function is used to rank the two arrays. @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare( const PObject & obj ///< Other PAbstractArray to compare against. ) const; //@} /**@name Overrides from class PContainer */ //@{ /**Set the size of the array in elements. A new array may be allocated to accomodate the new number of elements. If the array increases in size then the new bytes are initialised to zero. If the array is made smaller then the data beyond the new size is lost. @return TRUE if the memory for the array was allocated successfully. */ virtual BOOL SetSize( PINDEX newSize ///< New size of the array in elements. ); //@} /**@name New functions for class */ //@{ /**Attach a pointer to a static block to the base array type. The pointer is used directly and will not be copied to a dynamically allocated buffer. If the SetSize() function is used to change the size of the buffer, the object will be converted to a dynamic form with the contents of the static buffer copied to the allocated buffer. Any dynamically allocated buffer will be freed. */ void Attach( const void *buffer, ///< Pointer to an array of elements. PINDEX bufferSize ///< Number of elements pointed to by buffer. ); /**Get a pointer to the internal array and assure that it is of at least the specified size. This is useful when the array contents are being set by some external or system function eg file read. It is unsafe to assume that the pointer is valid for very long after return from this function. The array may be resized or otherwise changed and the pointer returned invalidated. It should be used for simple calls to atomic functions, or very careful examination of the program logic must be performed. @return pointer to the array memory. */ void * GetPointer( PINDEX minSize = 1 ///< Minimum size the array must be. ); /**Concatenate one array to the end of this array. This function will allocate a new array large enough for the existing contents and the contents of the parameter. The paramters contents is then copied to the end of the existing array. Note this does nothing and returns FALSE if the target array is not dynamically allocated, or if the two arrays are of base elements of different sizes. @return TRUE if the memory allocation succeeded. */ BOOL Concatenate( const PAbstractArray & array ///< Array to concatenate. ); //@} protected: BOOL InternalSetSize(PINDEX newSize, BOOL force); virtual void PrintElementOn( ostream & stream, PINDEX index ) const; virtual void ReadElementFrom( istream & stream, PINDEX index ); /// Size of an element in bytes PINDEX elementSize; /// Pointer to the allocated block of memory. char * theArray; /// Flag indicating the array was allocated on the heap. BOOL allocatedDynamically; friend class PArrayObjects; }; /////////////////////////////////////////////////////////////////////////////// // An array of some base type #ifdef PHAS_TEMPLATES /**This template class maps the #PAbstractArray# to a specific element type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PBASEARRAY# macro will simulate the template instantiation. The following classes are instantiated automatically for the basic scalar types: \begin{itemize} \item #PCharArray# \item #PBYTEArray# \item #PShortArray# \item #PWORDArray# \item #PIntArray# \item #PUnsignedArray# \item #PLongArray# \item #PDWORDArray# \end{itemize} */ template class PBaseArray : public PAbstractArray { PCLASSINFO(PBaseArray, PAbstractArray); public: /**@name Construction */ //@{ /**Construct a new dynamic array of elements of the specified type. The array is initialised to all zero bytes. Note that this may not be logically equivalent to the zero value for the type, though this would be very rare. */ PBaseArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ) : PAbstractArray(sizeof(T), initialSize) { } /**Construct a new dynamic array of elements of the specified type. */ PBaseArray( T const * buffer, ///< Pointer to an array of the elements of type {\bf T}. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ) : PAbstractArray(sizeof(T), buffer, length, dynamic) { } //@} /**@name Overrides from class PObject */ //@{ /** Clone the object. */ virtual PObject * Clone() const { return PNEW PBaseArray(*this, GetSize()); } //@} /**@name Overrides from class PContainer */ //@{ /**Set the specific element in the array. The array will automatically expand, if necessary, to fit the new element in. @return TRUE if new memory for the array was successfully allocated. */ BOOL SetAt( PINDEX index, ///< Position in the array to set the new value. T val ///< Value to set in the array. ) { return SetMinSize(index+1) && val==(((T *)theArray)[index] = val); } /**Get a value from the array. If the #index# is beyond the end of the allocated array then a zero value is returned. @return value at the array position. */ T GetAt( PINDEX index ///< Position on the array to get value from. ) const { PASSERTINDEX(index); return index < GetSize() ? ((T *)theArray)[index] : (T)0; } /**Attach a pointer to a static block to the base array type. The pointer is used directly and will not be copied to a dynamically allocated buffer. If the SetSize() function is used to change the size of the buffer, the object will be converted to a dynamic form with the contents of the static buffer copied to the allocated buffer. Any dynamically allocated buffer will be freed. */ void Attach( const T * buffer, ///< Pointer to an array of elements. PINDEX bufferSize ///< Number of elements pointed to by buffer. ) { PAbstractArray::Attach(buffer, bufferSize); } /**Get a pointer to the internal array and assure that it is of at least the specified size. This is useful when the array contents are being set by some external or system function eg file read. It is unsafe to assume that the pointer is valid for very long after return from this function. The array may be resized or otherwise changed and the pointer returned invalidated. It should be used for simple calls to atomic functions, or very careful examination of the program logic must be performed. @return pointer to the array memory. */ T * GetPointer( PINDEX minSize = 0 ///< Minimum size for returned buffer pointer. ) { return (T *)PAbstractArray::GetPointer(minSize); } //@} /**@name New functions for class */ //@{ /**Get a value from the array. If the #index# is beyond the end of the allocated array then a zero value is returned. This is functionally identical to the #PContainer::GetAt()# function. @return value at the array position. */ T operator[]( PINDEX index ///< Position on the array to get value from. ) const { return GetAt(index); } /**Get a reference to value from the array. If the #index# is beyond the end of the allocated array then the array is expanded. If a memory allocation failure occurs the function asserts. This is functionally similar to the #SetAt()# function and allows the array subscript to be an lvalue. @return reference to value at the array position. */ T & operator[]( PINDEX index ///< Position on the array to get value from. ) { PASSERTINDEX(index); PAssert(SetMinSize(index+1), POutOfMemory); return ((T *)theArray)[index]; } /**Get a pointer to the internal array. The user may not modify the contents of this pointer/ This is useful when the array contents are required by some external or system function eg file write. It is unsafe to assume that the pointer is valid for very long after return from this function. The array may be resized or otherwise changed and the pointer returned invalidated. It should be used for simple calls to atomic functions, or very careful examination of the program logic must be performed. @return constant pointer to the array memory. */ operator T const *() const { return (T const *)theArray; } /**Concatenate one array to the end of this array. This function will allocate a new array large enough for the existing contents and the contents of the parameter. The paramters contents is then copied to the end of the existing array. Note this does nothing and returns FALSE if the target array is not dynamically allocated. @return TRUE if the memory allocation succeeded. */ BOOL Concatenate( const PBaseArray & array ///< Other array to concatenate ) { return PAbstractArray::Concatenate(array); } //@} protected: virtual void PrintElementOn( ostream & stream, PINDEX index ) const { stream << GetAt(index); } }; /*Declare a dynamic array base type. This macro is used to declare a descendent of PAbstractArray class, customised for a particular element type {\bf T}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PBaseArray# template class. */ #define PBASEARRAY(cls, T) typedef PBaseArray cls /**Begin a declaration of an array of base types. This macro is used to declare a descendent of PAbstractArray class, customised for a particular element type {\bf T}. If the compilation is using templates then this macro produces a descendent of the #PBaseArray# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PBaseArray# and #PAbstractArray# classes for more information. */ #define PDECLARE_BASEARRAY(cls, T) \ PDECLARE_CLASS(cls, PBaseArray) \ cls(PINDEX initialSize = 0) \ : PBaseArray(initialSize) { } \ cls(T const * buffer, PINDEX length, BOOL dynamic = TRUE) \ : PBaseArray(buffer, length, dynamic) { } \ virtual PObject * Clone() const \ { return PNEW cls(*this, GetSize()); } \ /**This template class maps the #PAbstractArray# to a specific element type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PSCALAR_ARRAY# macro will simulate the template instantiation. The following classes are instantiated automatically for the basic scalar types: \begin{itemize} \item #PBYTEArray# \item #PShortArray# \item #PWORDArray# \item #PIntArray# \item #PUnsignedArray# \item #PLongArray# \item #PDWORDArray# \end{itemize} */ template class PScalarArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of elements of the specified type. The array is initialised to all zero bytes. Note that this may not be logically equivalent to the zero value for the type, though this would be very rare. */ PScalarArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ) : PBaseArray(initialSize) { } /**Construct a new dynamic array of elements of the specified type. */ PScalarArray( T const * buffer, ///< Pointer to an array of the elements of type {\bf T}. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ) : PBaseArray(buffer, length, dynamic) { } //@} protected: virtual void ReadElementFrom( istream & stream, PINDEX index ) { T t; stream >> t; if (!stream.fail()) SetAt(index, t); } }; /*Declare a dynamic array base type. This macro is used to declare a descendent of PAbstractArray class, customised for a particular element type {\bf T}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PBaseArray# template class. */ #define PSCALAR_ARRAY(cls, T) typedef PScalarArray cls #else // PHAS_TEMPLATES #define PBASEARRAY(cls, T) \ typedef T P_##cls##_Base_Type; \ class cls : public PAbstractArray { \ PCLASSINFO(cls, PAbstractArray) \ public: \ inline cls(PINDEX initialSize = 0) \ : PAbstractArray(sizeof(P_##cls##_Base_Type), initialSize) { } \ inline cls(P_##cls##_Base_Type const * buffer, PINDEX length, BOOL dynamic = TRUE) \ : PAbstractArray(sizeof(P_##cls##_Base_Type), buffer, length, dynamic) { } \ virtual PObject * Clone() const \ { return PNEW cls(*this, GetSize()); } \ inline BOOL SetAt(PINDEX index, P_##cls##_Base_Type val) \ { return SetMinSize(index+1) && \ val==(((P_##cls##_Base_Type *)theArray)[index] = val); } \ inline P_##cls##_Base_Type GetAt(PINDEX index) const \ { PASSERTINDEX(index); return index < GetSize() ? \ ((P_##cls##_Base_Type*)theArray)[index] : (P_##cls##_Base_Type)0; } \ inline P_##cls##_Base_Type operator[](PINDEX index) const \ { PASSERTINDEX(index); return GetAt(index); } \ inline P_##cls##_Base_Type & operator[](PINDEX index) \ { PASSERTINDEX(index); PAssert(SetMinSize(index+1), POutOfMemory); \ return ((P_##cls##_Base_Type *)theArray)[index]; } \ inline void Attach(const P_##cls##_Base_Type * buffer, PINDEX bufferSize) \ { PAbstractArray::Attach(buffer, bufferSize); } \ inline P_##cls##_Base_Type * GetPointer(PINDEX minSize = 0) \ { return (P_##cls##_Base_Type *)PAbstractArray::GetPointer(minSize); } \ inline operator P_##cls##_Base_Type const *() const \ { return (P_##cls##_Base_Type const *)theArray; } \ inline BOOL Concatenate(cls const & array) \ { return PAbstractArray::Concatenate(array); } \ } #define PDECLARE_BASEARRAY(cls, T) \ PBASEARRAY(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ cls(PINDEX initialSize = 0) \ : cls##_PTemplate(initialSize) { } \ cls(T const * buffer, PINDEX length, BOOL dynamic = TRUE) \ : cls##_PTemplate(buffer, length, dynamic) { } \ virtual PObject * Clone() const \ { return PNEW cls(*this, GetSize()); } \ #define PSCALAR_ARRAY(cls, T) PBASEARRAY(cls, T) #endif // PHAS_TEMPLATES /// Array of characters. #ifdef DOC_PLUS_PLUS class PCharArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of char. The array is initialised to all zero bytes. */ PCharArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of char. */ PCharArray( char const * buffer, ///< Pointer to an array of chars. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} #endif PDECLARE_BASEARRAY(PCharArray, char); public: /**@name Overrides from class PObject */ //@{ /// Print the array virtual void PrintOn( ostream & strm ///< Stream to output to. ) const; /// Read the array virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} }; /// Array of short integers. #ifdef DOC_PLUS_PLUS class PShortArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of shorts. The array is initialised to all zeros. */ PShortArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of shorts. */ PShortArray( short const * buffer, ///< Pointer to an array of shorts. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} }; #endif PSCALAR_ARRAY(PShortArray, short); /// Array of integers. #ifdef DOC_PLUS_PLUS class PIntArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of ints. The array is initialised to all zeros. */ PIntArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of ints. */ PIntArray( int const * buffer, ///< Pointer to an array of ints. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} }; #endif PSCALAR_ARRAY(PIntArray, int); /// Array of long integers. #ifdef DOC_PLUS_PLUS class PLongArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of longs. The array is initialised to all zeros. */ PLongArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of longs. */ PLongArray( long const * buffer, ///< Pointer to an array of longs. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} }; #endif PSCALAR_ARRAY(PLongArray, long); /// Array of unsigned characters. #ifdef DOC_PLUS_PLUS class PBYTEArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of unsigned chars. The array is initialised to all zeros. */ PBYTEArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of unsigned chars. */ PBYTEArray( BYTE const * buffer, ///< Pointer to an array of BYTEs. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} }; #endif PDECLARE_BASEARRAY(PBYTEArray, BYTE); public: /**@name Overrides from class PObject */ //@{ /// Print the array virtual void PrintOn( ostream & strm ///< Stream to output to. ) const; /// Read the array virtual void ReadFrom( istream &strm ///< Stream to read the objects contents from. ); //@} }; /// Array of unsigned short integers. #ifdef DOC_PLUS_PLUS class PWORDArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of unsigned shorts. The array is initialised to all zeros. */ PWORDArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of unsigned shorts. */ PWORDArray( WORD const * buffer, ///< Pointer to an array of WORDs. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} }; #endif PSCALAR_ARRAY(PWORDArray, WORD); /// Array of unsigned integers. #ifdef DOC_PLUS_PLUS class PUnsignedArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of unsigned ints. The array is initialised to all zeros. */ PUnsignedArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of unsigned ints. */ PUnsignedArray( unsigned const * buffer, ///< Pointer to an array of unsigned ints. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} }; #endif PSCALAR_ARRAY(PUnsignedArray, unsigned); /// Array of unsigned long integers. #ifdef DOC_PLUS_PLUS class PDWORDArray : public PBaseArray { public: /**@name Construction */ //@{ /**Construct a new dynamic array of unsigned longs. The array is initialised to all zeros. */ PDWORDArray( PINDEX initialSize = 0 ///< Initial number of elements in the array. ); /**Construct a new dynamic array of DWORDs. */ PDWORDArray( DWORD const * buffer, ///< Pointer to an array of DWORDs. PINDEX length, ///< Number of elements pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} #endif PSCALAR_ARRAY(PDWORDArray, DWORD); /////////////////////////////////////////////////////////////////////////////// // Linear array of objects /** An array of objects. This class is a collection of objects which are descendents of the #PObject# class. It is implemeted as a dynamic, linear array of pointers to the objects. The implementation of an array allows very fast random access to items in the collection, but has severe penalties for inserting and deleting objects as all other objects must be moved to accommodate the change. An array of objects may have "gaps" in it. These are array entries that contain NULL as the object pointer. The PArrayObjects class would very rarely be descended from directly by the user. The #PARRAY# macro would normally be used to create a class. That will instantiate the template based on #PArray# or directly declare and define the class (using inline functions) if templates are not being used. The #PArray# class or #PARRAY# macro will define the correctly typed operators for pointer access (#operator const T *#) and subscript access (#operator[]#). */ class PArrayObjects : public PCollection { PCONTAINERINFO(PArrayObjects, PCollection); public: /**@name Construction */ //@{ /**Create a new array of objects. The array is initially set to the specified size with each entry having NULL as is pointer value. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PINLINE PArrayObjects( PINDEX initialSize = 0 ///< Initial number of objects in the array. ); //@} /**@name Overrides from class PObject */ //@{ /**Get the relative rank of the two arrays. The following algorithm is employed for the comparison: \begin{description} \item[EqualTo] if the two array memory blocks are identical in length and each objects values, not pointer, are equal. \item[LessThan] if the instances object value at an ordinal position is less than the corresponding objects value in the #obj# parameters array. This is also returned if all objects are equal and the instances array length is less than the #obj# parameters array length. \item[GreaterThan] if the instances object value at an ordinal position is greater than the corresponding objects value in the #obj# parameters array. This is also returned if all objects are equal and the instances array length is greater than the #obj# parameters array length. \end{description} @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare( const PObject & obj ///< Other #PAbstractArray# to compare against. ) const; //@} /**@name Overrides from class PContainer */ //@{ /// Get size of array virtual PINDEX GetSize() const; /**Set the size of the array in objects. A new array may be allocated to accomodate the new number of objects. If the array increases in size then the new object pointers are initialised to NULL. If the array is made smaller then the data beyond the new size is lost. @return TRUE if the memory for the array was allocated successfully. */ virtual BOOL SetSize( PINDEX newSize ///< New size of the array in objects. ); //@} /**@name Overrides from class PCollection */ //@{ /**Append a new object to the collection. This will increase the size of the array by one and place the new object at that position. @return index of the newly added object. */ virtual PINDEX Append( PObject * obj ///< New object to place into the collection. ); /**Insert a new object immediately before the specified object. If the object to insert before is not in the collection then the equivalent of the #Append()# function is performed. All objects, including the #before# object are shifted up one in the array. Note that the object values are compared for the search of the #before# parameter, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. @return index of the newly inserted object. */ virtual PINDEX Insert( const PObject & before, ///< Object value to insert before. PObject * obj ///< New object to place into the collection. ); /** Insert a new object at the specified ordinal index. If the index is greater than the number of objects in the collection then the equivalent of the #Append()# function is performed. All objects, including the #index# position object are shifted up one in the array. @return index of the newly inserted object. */ virtual PINDEX InsertAt( PINDEX index, ///< Index position in collection to place the object. PObject * obj ///< New object to place into the collection. ); /**Remove the object from the collection. If the AllowDeleteObjects option is set then the object is also deleted. All objects are shifted down to fill the vacated position. @return TRUE if the object was in the collection. */ virtual BOOL Remove( const PObject * obj ///< Existing object to remove from the collection. ); /**Remove the object at the specified ordinal index from the collection. If the AllowDeleteObjects option is set then the object is also deleted. All objects are shifted down to fill the vacated position. Note if the index is beyond the size of the collection then the function will assert. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PObject * RemoveAt( PINDEX index ///< Index position in collection to place the object. ); /**Set the object at the specified ordinal position to the new value. This will overwrite the existing entry. If the AllowDeleteObjects option is set then the old object is also deleted. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( PINDEX index, ///< Index position in collection to set. PObject * val ///< New value to place into the collection. ); /**Get the object at the specified ordinal position. If the index was greater than the size of the collection then NULL is returned. @return pointer to object at the specified index. */ virtual PObject * GetAt( PINDEX index ///< Index position in the collection of the object. ) const; /**Search the collection for the specific instance of the object. The object pointers are compared, not the values. A simple linear search from ordinal position zero is performed. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetObjectsIndex( const PObject * obj ///< Object to find. ) const; /**Search the collection for the specified value of the object. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. A simple linear search from ordinal position zero is performed. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetValuesIndex( const PObject & obj // Object to find equal of. ) const; /**Remove all of the elements in the collection. This operates by continually calling #RemoveAt()# until there are no objects left. The objects are removed from the last, at index #(GetSize()-1)# toward the first at index zero. */ virtual void RemoveAll(); //@} protected: PBASEARRAY(ObjPtrArray, PObject *); ObjPtrArray * theArray; }; #ifdef PHAS_TEMPLATES /**This template class maps the PArrayObjects to a specific object type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PARRAY# macro will simulate the template instantiation. */ template class PArray : public PArrayObjects { PCLASSINFO(PArray, PArrayObjects); public: /**@name Construction */ //@{ /**Create a new array of objects. The array is initially set to the specified size with each entry having NULL as is pointer value. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PArray( PINDEX initialSize = 0 ///< Initial number of objects in the array. ) : PArrayObjects(initialSize) { } //@} /**@name Overrides from class PObject */ //@{ /** Make a complete duplicate of the array. Note that all objects in the array are also cloned, so this will make a complete copy of the array. */ virtual PObject * Clone() const { return PNEW PArray(0, this); } //@} /**@name New functions for class */ //@{ /**Retrieve a reference to the object in the array. If there was not an object at that ordinal position or the index was beyond the size of the array then the function asserts. @return reference to the object at #index# position. */ T & operator[]( PINDEX index ///< Index position in the collection of the object. ) const { PObject * obj = GetAt(index); PAssert(obj != NULL, PInvalidArrayElement); return (T &)*obj; } //@} protected: PArray(int dummy, const PArray * c) : PArrayObjects(dummy, c) { } }; /** Declare an array to a specific type of object. This macro is used to declare a descendent of PArrayObjects class, customised for a particular object type {\bf T}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PArray# template class. See the #PBaseArray# class and #PDECLARE_ARRAY# macro for more information. */ #define PARRAY(cls, T) typedef PArray cls /** Begin declaration an array to a specific type of object. This macro is used to declare a descendent of PArrayObjects class, customised for a particular object type {\bf T}. If the compilation is using templates then this macro produces a descendent of the #PArray# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PBaseArray# and #PAbstractArray# classes for more information. */ #define PDECLARE_ARRAY(cls, T) \ PARRAY(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ inline cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ inline cls(PINDEX initialSize = 0) \ : cls##_PTemplate(initialSize) { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #else // PHAS_TEMPLATES #define PARRAY(cls, T) \ class cls : public PArrayObjects { \ PCLASSINFO(cls, PArrayObjects); \ protected: \ inline cls(int dummy, const cls * c) \ : PArrayObjects(dummy, c) { } \ public: \ inline cls(PINDEX initialSize = 0) \ : PArrayObjects(initialSize) { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ inline T & operator[](PINDEX index) const\ { PObject * obj = GetAt(index); \ PAssert(obj != NULL, PInvalidArrayElement); \ /* want to do to this, but gcc 3.0 complains --> return *(T *)obj; } */ \ return (T &)*obj; } \ } #define PDECLARE_ARRAY(cls, T) \ PARRAY(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ inline cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ inline cls(PINDEX initialSize = 0) \ : cls##_PTemplate(initialSize) { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #endif // PHAS_TEMPLATES /**This class represents a dynamic bit array. */ class PBitArray : public PBYTEArray { PCLASSINFO(PBitArray, PBYTEArray); public: /**@name Construction */ //@{ /**Construct a new dynamic array of bits. */ PBitArray( PINDEX initialSize = 0 ///< Initial number of bits in the array. ); /**Construct a new dynamic array of elements of the specified type. */ PBitArray( const void * buffer, ///< Pointer to an array of the elements of type {\bf T}. PINDEX length, ///< Number of bits (not bytes!) pointed to by #buffer#. BOOL dynamic = TRUE ///< Buffer is copied and dynamically allocated. ); //@} /**@name Overrides from class PObject */ //@{ /** Clone the object. */ virtual PObject * Clone() const; //@} /**@name Overrides from class PContainer */ //@{ /**Get the current size of the container. This represents the number of things the container contains. For some types of containers this will always return 1. @return number of objects in container. */ virtual PINDEX GetSize() const; /**Set the size of the array in bits. A new array may be allocated to accomodate the new number of bits. If the array increases in size then the new bytes are initialised to zero. If the array is made smaller then the data beyond the new size is lost. @return TRUE if the memory for the array was allocated successfully. */ virtual BOOL SetSize( PINDEX newSize ///< New size of the array in bits, not bytes. ); /**Set the specific bit in the array. The array will automatically expand, if necessary, to fit the new element in. @return TRUE if new memory for the array was successfully allocated. */ BOOL SetAt( PINDEX index, ///< Position in the array to set the new value. BOOL val ///< Value to set in the array. ); /**Get a bit from the array. If the #index# is beyond the end of the allocated array then FALSE is returned. @return value at the array position. */ BOOL GetAt( PINDEX index ///< Position on the array to get value from. ) const; /**Attach a pointer to a static block to the bit array type. The pointer is used directly and will not be copied to a dynamically allocated buffer. If the SetSize() function is used to change the size of the buffer, the object will be converted to a dynamic form with the contents of the static buffer copied to the allocated buffer. Any dynamically allocated buffer will be freed. */ void Attach( const void * buffer, ///< Pointer to an array of elements. PINDEX bufferSize ///< Number of bits (not bytes!) pointed to by buffer. ); /**Get a pointer to the internal array and assure that it is of at least the specified size. This is useful when the array contents are being set by some external or system function eg file read. It is unsafe to assume that the pointer is valid for very long after return from this function. The array may be resized or otherwise changed and the pointer returned invalidated. It should be used for simple calls to atomic functions, or very careful examination of the program logic must be performed. @return pointer to the array memory. */ BYTE * GetPointer( PINDEX minSize = 0 ///< Minimum size in bits (not bytes!) for returned buffer pointer. ); //@} /**@name New functions for class */ //@{ /**Get a value from the array. If the #index# is beyond the end of the allocated array then a zero value is returned. This is functionally identical to the #PContainer::GetAt()# function. @return value at the array position. */ BOOL operator[]( PINDEX index ///< Position on the array to get value from. ) const { return GetAt(index); } /**Set a bit to the array. This is functionally identical to the #PContainer::SetAt(index, TRUE)# function. */ PBitArray & operator+=( PINDEX index ///< Position on the array to get value from. ) { SetAt(index, TRUE); return *this; } /**Set a bit to the array. This is functionally identical to the #PContainer::SetAt(index, TRUE)# function. */ PBitArray & operator-=( PINDEX index ///< Position on the array to get value from. ) { SetAt(index, FALSE); return *this; } /**Concatenate one array to the end of this array. This function will allocate a new array large enough for the existing contents and the contents of the parameter. The paramters contents is then copied to the end of the existing array. Note this does nothing and returns FALSE if the target array is not dynamically allocated. @return TRUE if the memory allocation succeeded. */ BOOL Concatenate( const PBitArray & array ///< Other array to concatenate ); //@} }; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/channel.h0100644000176200056700000007527710343317551017740 0ustar releasepostincr/* * channel.h * * I/O channel ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: channel.h,v $ * Revision 1.49 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.48 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.47 2005/09/18 11:05:36 dominance * include/ptlib/channel.h, include/ptlib/pstring.h, src/ptlib/common/contain.cxx, * src/ptlib/common/pchannel.cxx: * correct the STL defined checking to use proper syntax. * * include/ptlib/object.h: * re-add typedef to compile on mingw * * make/ptlib-config.in: * import a long-standing fix from the Debian packs which allows usage of * ptlib-config without manually adding -lpt for each of the subsequent * projects * * Revision 1.46 2005/08/05 20:44:46 csoutheren * Fixed typo * * Revision 1.45 2005/08/05 20:41:41 csoutheren * Added unix support for scattered read/write * * Revision 1.44 2005/08/05 19:42:09 csoutheren * Added support for scattered read/write * * Revision 1.43 2004/04/09 06:38:10 rjongbloed * Fixed compatibility with STL based streams, eg as used by VC++2003 * * Revision 1.42 2003/12/19 04:29:52 csoutheren * Changed GetLastReadCount and GetLastWriteCount to be virtual * * Revision 1.41 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.40 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.39 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.38 2002/07/04 23:35:47 robertj * Fixed documentation error * * Revision 1.37 2002/04/09 02:30:18 robertj * Removed GCC3 variable as __GNUC__ can be used instead, thanks jason Spence * * Revision 1.36 2002/01/26 23:55:55 craigs * Changed for GCC 3.0 compatibility, thanks to manty@manty.net * * Revision 1.35 2001/11/13 04:13:22 robertj * Added ability to adjust size of ios buffer on PChannels. * * Revision 1.34 2001/09/11 03:27:46 robertj * Improved error processing on high level protocol failures, usually * caused by unexpected shut down of a socket. * * Revision 1.33 2001/09/10 02:51:22 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.32 2001/06/04 10:13:08 robertj * Added compare function to compare value of os_handle. * Added has function based on os_handle value. * * Revision 1.31 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.30 1999/11/05 09:37:46 craigs * Made static form of ConvertOSError public scope * * Revision 1.29 1999/10/09 01:22:06 robertj * Fixed error display for sound channels. * * Revision 1.28 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.27 1998/09/23 06:20:18 robertj * Added open source copyright license. * * Revision 1.26 1998/02/03 06:29:10 robertj * Added new function to read a block with minimum number of bytes. * * Revision 1.25 1997/07/08 13:15:03 robertj * DLL support. * * Revision 1.24 1996/11/04 03:41:04 robertj * Added extra error message for UDP packet truncated. * * Revision 1.23 1996/09/14 13:09:17 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.22 1996/08/17 10:00:19 robertj * Changes for Windows DLL support. * * Revision 1.21 1996/07/27 04:15:07 robertj * Created static version of ConvertOSError(). * Created static version of GetErrorText(). * * Revision 1.20 1996/05/26 03:24:40 robertj * Compatibility to GNU 2.7.x * * Revision 1.19 1996/04/15 12:33:03 robertj * Fixed SetReadTimeout/SetWriteTimeout to use const reference so works with GNU compiler. * * Revision 1.18 1996/04/14 02:53:30 robertj * Split serial and pipe channel into separate compilation units for Linux executable size reduction. * * Revision 1.17 1996/02/19 13:12:48 robertj * Added new error code for interrupted I/O. * * Revision 1.16 1996/01/23 13:09:14 robertj * Mac Metrowerks compiler support. * * Revision 1.15 1995/08/12 22:28:22 robertj * Work arounf for GNU bug: can't have private copy constructor with multiple inheritance. * * Revision 1.14 1995/07/31 12:15:42 robertj * Removed PContainer from PChannel ancestor. * * Revision 1.13 1995/06/17 11:12:21 robertj * Documentation update. * * Revision 1.12 1995/06/04 08:42:00 robertj * Fixed comment. * * Revision 1.11 1995/03/14 12:41:03 robertj * Updated documentation to use HTML codes. * * Revision 1.10 1995/03/12 04:36:53 robertj * Moved GetHandle() function from PFile to PChannel. * * Revision 1.9 1994/12/21 11:52:48 robertj * Documentation and variable normalisation. * * Revision 1.8 1994/11/28 12:31:40 robertj * Documentation. * * Revision 1.7 1994/08/23 11:32:52 robertj * Oops * * Revision 1.6 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.5 1994/08/21 23:43:02 robertj * Moved meta-string transmitter from PModem to PChannel. * Added common entry point to convert OS error to PChannel error. * * Revision 1.4 1994/07/17 10:46:06 robertj * Unix support changes. * * Revision 1.3 1994/07/02 03:03:49 robertj * Changed to allow for platform dependent part. * * Revision 1.2 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.1 1994/04/20 12:17:44 robertj * Initial revision * */ #ifndef _PCHANNEL #define _PCHANNEL #ifdef P_USE_PRAGMA #pragma interface #endif #include /////////////////////////////////////////////////////////////////////////////// // I/O Channels class PChannel; /* Buffer class used in PChannel stream. This class is necessary for implementing the standard C++ iostream interface on #PChannel# classes and its descendents. It is an internal class and should not ever be used by application writers. */ class PChannelStreamBuffer : public streambuf { protected: /* Construct the streambuf for standard streams on a channel. This is used internally by the #PChannel# class. */ PChannelStreamBuffer( PChannel * chan // Channel the buffer operates on. ); virtual int overflow(int=EOF); virtual int underflow(); virtual int sync(); #ifdef __USE_STL__ virtual pos_type seekoff(off_type, ios_base::seekdir, ios_base::openmode = ios_base::in | ios_base::out); virtual pos_type seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out); #else virtual streampos seekoff(streamoff, ios::seek_dir, int); #endif BOOL SetBufferSize( PINDEX newSize ); private: // Member variables PChannel * channel; PCharArray input, output; public: PChannelStreamBuffer(const PChannelStreamBuffer & sbuf); PChannelStreamBuffer & operator=(const PChannelStreamBuffer & sbuf); friend class PChannel; }; /** Abstract class defining I/O channel semantics. An I/O channel can be a serial port, pipe, network socket or even just a simple file. Anything that requires opening and closing then reading and/or writing from. A descendent would typically have constructors and an #Open()# function which enables access to the I/O channel it represents. The #Read()# and #Write()# functions would then be overridden to the platform and I/O specific mechanisms required. The general model for a channel is that the channel accepts and/or supplies a stream of bytes. The access to the stream of bytes is via a set of functions that allow certain types of transfer. These include direct transfers, buffered transfers (via iostream) or asynchronous transfers. The model also has the fundamental state of the channel being {\it open} or {\it closed}. A channel instance that is closed contains sufficient information to describe the channel but does not allocate or lock any system resources. An open channel allocates or locks the particular system resource. The act of opening a channel is a key event that may fail. In this case the channel remains closed and error values are set. */ class PChannel : public PObject, public iostream { PCLASSINFO(PChannel, PObject); public: /**@name Construction */ //@{ /// Create the channel. PChannel(); /// Close down the channel. ~PChannel(); //@} /**@name Overrides from class PObject */ //@{ /**Get the relative rank of the two strings. The system standard function, eg strcmp(), is used. @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare( const PObject & obj ///< Other PString to compare against. ) const; /**Calculate a hash value for use in sets and dictionaries. The hash function for strings will produce a value based on the sum of the first three characters of the string. This is a fairly basic function and make no assumptions about the string contents. A user may descend from PString and override the hash function if they can take advantage of the types of strings being used, eg if all strings start with the letter 'A' followed by 'B or 'C' then the current hash function will not perform very well. @return hash value for string. */ virtual PINDEX HashFunction() const; //@} /**@name Information functions */ //@{ /** Determine if the channel is currently open. This indicates that read and write operations can be executed on the channel. For example, in the #PFile# class it returns if the file is currently open. @return TRUE if the channel is open. */ virtual BOOL IsOpen() const; /** Get the platform and I/O channel type name of the channel. For example, it would return the filename in #PFile# type channels. @return the name of the channel. */ virtual PString GetName() const; /** Get the integer operating system handle for the channel. @return standard OS descriptor integer. */ int GetHandle() const; /** Get the base channel of channel indirection using PIndirectChannel. This function returns the eventual base channel for reading of a series of indirect channels provided by descendents of #PIndirectChannel#. The behaviour for this function is to return "this". @return Pointer to base I/O channel for the indirect channel. */ virtual PChannel * GetBaseReadChannel() const; /** Get the base channel of channel indirection using PIndirectChannel. This function returns the eventual base channel for writing of a series of indirect channels provided by descendents of #PIndirectChannel#. The behaviour for this function is to return "this". @return Pointer to base I/O channel for the indirect channel. */ virtual PChannel * GetBaseWriteChannel() const; //@} /**@name Reading functions */ //@{ /** Set the timeout for read operations. This may be zero for immediate return of data through to #PMaxTimeInterval# which will wait forever for the read request to be filled. Note that this function may not be available, or meaningfull, for all channels. In that case it is set but ignored. */ void SetReadTimeout( const PTimeInterval & time ///< The new time interval for read operations. ); /** Get the timeout for read operations. Note that this function may not be available, or meaningfull, for all channels. In that case it returns the previously set value. @return time interval for read operations. */ PTimeInterval GetReadTimeout() const; /** Low level read from the channel. This function may block until the requested number of characters were read or the read timeout was reached. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Get the number of bytes read by the last Read() call. This will be from 0 to the maximum number of bytes as passed to the Read() call. Note that the number of bytes read may often be less than that asked for. Aside from the most common case of being at end of file, which the applications semantics may regard as an exception, there are some cases where this is normal. For example, if a PTextFile channel on the MSDOS platform is read from, then the translation of CR/LF pairs to \n characters will result in the number of bytes returned being less than the size of the buffer supplied. @return the number of bytes read. */ virtual PINDEX GetLastReadCount() const; /** Read a single 8 bit byte from the channel. If one was not available within the read timeout period, or an I/O error occurred, then the function gives with a -1 return value. @return byte read or -1 if no character could be read. */ virtual int ReadChar(); /** Read len bytes into the buffer from the channel. This function uses Read(), so most remarks pertaining to that function also apply to this one. The only difference being that this function will not return until all of the bytes have been read, or an error occurs. @return TRUE if the read of #len# bytes was sucessfull. */ BOOL ReadBlock( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /** Read #len# character into a string from the channel. This function simply uses ReadBlock(), so all remarks pertaining to that function also apply to this one. @return String that was read. */ PString ReadString(PINDEX len); /** Begin an asynchronous read from channel. The read timeout is used as in other read operations, in this case calling the OnReadComplete() function. Note that if the channel is not capable of asynchronous read then this will do a sychronous read is in the Read() function with the addition of calling the OnReadComplete() before returning. @return TRUE if the read was sucessfully queued. */ virtual BOOL ReadAsync( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /** User callback function for when a #ReadAsync()# call has completed or timed out. The original pointer to the buffer passed in ReadAsync() is passed to the function. */ virtual void OnReadComplete( void * buf, ///< Pointer to a block of memory that received the read bytes. PINDEX len ///< Actual number of bytes to read into the buffer. ); //@} /**@name Writing functions */ //@{ /** Set the timeout for write operations to complete. This may be zero for immediate return through to PMaxTimeInterval which will wait forever for the write request to be completed. Note that this function may not be available, or meaningfull, for all channels. In this case the parameter is et but ignored. */ void SetWriteTimeout( const PTimeInterval & time ///< The new time interval for write operations. ); /** Get the timeout for write operations to complete. Note that this function may not be available, or meaningfull, for all channels. In that case it returns the previously set value. @return time interval for writing. */ PTimeInterval GetWriteTimeout() const; /** Low level write to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** Get the number of bytes written by the last Write() call. Note that the number of bytes written may often be less, or even more, than that asked for. A common case of it being less is where the disk is full. An example of where the bytes written is more is as follows. On a #PTextFile# channel on the MSDOS platform, there is translation of \n to CR/LF pairs. This will result in the number of bytes returned being more than that requested. @return the number of bytes written. */ virtual PINDEX GetLastWriteCount() const; /** Write a single character to the channel. This function simply uses the Write() function so all comments on that function also apply. Note that this asserts if the value is not in the range 0..255. @return TRUE if the byte was successfully written. */ BOOL WriteChar(int c); /** Write a string to the channel. This function simply uses the Write() function so all comments on that function also apply. @return TRUE if the character written. */ BOOL WriteString(const PString & str); /** Begin an asynchronous write from channel. The write timeout is used as in other write operations, in this case calling the OnWriteComplete() function. Note that if the channel is not capable of asynchronous write then this will do a sychronous write as in the Write() function with the addition of calling the OnWriteComplete() before returning. @return TRUE of the write operation was succesfully queued. */ virtual BOOL WriteAsync( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** User callback function for when a WriteAsync() call has completed or timed out. The original pointer to the buffer passed in WriteAsync() is passed in here and the len parameter is the actual number of characters written. */ virtual void OnWriteComplete( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); //@} /**@name Miscellaneous functions */ //@{ /** Close the channel, shutting down the link to the data source. @return TRUE if the channel successfully closed. */ virtual BOOL Close(); enum ShutdownValue { ShutdownRead = 0, ShutdownWrite = 1, ShutdownReadAndWrite = 2 }; /** Close one or both of the data streams associated with a channel. The default behavour is to do nothing and return FALSE. @return TRUE if the shutdown was successfully performed. */ virtual BOOL Shutdown( ShutdownValue option ); /**Set the iostream buffer size for reads and writes. @return TRUE if the new buffer size was set. */ BOOL SetBufferSize( PINDEX newSize ///< New buffer size ); /** Send a command meta-string. A meta-string is a string of characters that may contain escaped commands. The escape command is the \ as in the C language. The escape commands are: \begin{description} \item[#\a#] alert (ascii value 7) \item[#\b#] backspace (ascii value 8) \item[#\f#] formfeed (ascii value 12) \item[#\n#] newline (ascii value 10) \item[#\r#] return (ascii value 13) \item[#\t#] horizontal tab (ascii value 9) \item[#\v#] vertical tab (ascii value 11) \item[#\\#] backslash \item[#\ooo#] where ooo is octal number, ascii value ooo \item[#\xhh#] where hh is hex number (ascii value 0xhh) \item[#\0#] null character (ascii zero) \item[#\dns#] delay for n seconds \item[#\dnm#] delay for n milliseconds \item[#\s#] characters following this, up to a \w command or the end of string, are to be sent to modem \item[#\wns#] characters following this, up to a \s, \d or another \w or the end of the string are expected back from the modem. If the string is not received within n seconds, a failed command is registered. The exception to this is if the command is at the end of the string or the next character in the string is the \s, \d or \w in which case all characters are ignored from the modem until n seconds of no data. \item[#\wnm#] as for above but timeout is in milliseconds. \end{description} @return TRUE if the command string was completely processed. */ BOOL SendCommandString( const PString & command ///< Command to send to the channel ); /** Abort a command string that is in progress. Note that as the SendCommandString() function blocks the calling thread when it runs, this can only be called from within another thread. */ void AbortCommandString(); //@} /**@name Error functions */ //@{ /** Normalised error codes. The error result of the last file I/O operation in this object. */ enum Errors { NoError, /// Open fail due to device or file not found NotFound, /// Open fail due to file already existing FileExists, /// Write fail due to disk full DiskFull, /// Operation fail due to insufficient privilege AccessDenied, /// Open fail due to device already open for exclusive use DeviceInUse, /// Operation fail due to bad parameters BadParameter, /// Operation fail due to insufficient memory NoMemory, /// Operation fail due to channel not being open yet NotOpen, /// Operation failed due to a timeout Timeout, /// Operation was interrupted Interrupted, /// Operations buffer was too small for data. BufferTooSmall, /// Miscellaneous error. Miscellaneous, /// High level protocol failure ProtocolFailure, NumNormalisedErrors }; /**Error groups. To aid in multithreaded applications where reading and writing may be happening simultaneously, read and write errors are separated from other errors. */ enum ErrorGroup { LastReadError, ///< Error during Read() operation LastWriteError, ///< Error during Write() operation LastGeneralError, ///< Error during other operation, eg Open() NumErrorGroups }; /** Get normalised error code. Return the error result of the last file I/O operation in this object. @return Normalised error code. */ Errors GetErrorCode( ErrorGroup group = NumErrorGroups ///< Error group to get ) const; /** Get OS errro code. Return the operating system error number of the last file I/O operation in this object. @return Operating System error code. */ int GetErrorNumber( ErrorGroup group = NumErrorGroups ///< Error group to get ) const; /** Get error message description. Return a string indicating the error message that may be displayed to the user. The error for the last I/O operation in this object is used. @return Operating System error description string. */ virtual PString GetErrorText( ErrorGroup group = NumErrorGroups ///< Error group to get ) const; /** Get error message description. Return a string indicating the error message that may be displayed to the user. The #osError# parameter is used unless zero, in which case the #lastError# parameter is used. @return Operating System error description string. */ static PString GetErrorText( Errors lastError, ///< Error code to translate. int osError = 0 ///< OS error number to translate. ); //@} /** Convert an operating system error into platform independent error. This will set the lastError and osError member variables for access by GetErrorCode() and GetErrorNumber(). @return TRUE if there was no error. */ static BOOL ConvertOSError( int libcReturnValue, Errors & lastError, int & osError ); /**@name Scattered read/write functions */ //@{ /** Structure that defines a "slice" of memory to be written to */ #if P_HAS_RECVMSG typedef iovec Slice; #else struct Slice { void * iov_base; size_t iov_len; }; #endif typedef std::vector VectorOfSlice; /** Low level scattered read from the channel. This is identical to Read except that the data will be read into a series of scattered memory slices. By default, this call will default to calling Read multiple times, but this may be implemented by operating systems to do a real scattered read @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( const VectorOfSlice & slices // slices to read to ); /** Low level scattered write to the channel. This is identical to Write except that the data will be written from a series of scattered memory slices. By default, this call will default to calling Write multiple times, but this can be actually implemented by operating systems to do a real scattered write @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Write( const VectorOfSlice & slices // slices to read to ); //@} protected: PChannel(const PChannel &); PChannel & operator=(const PChannel &); // Prevent usage by external classes /** Convert an operating system error into platform independent error. The internal error codes are set by this function. They may be obtained via the #GetErrorCode()# and #GetErrorNumber()# functions. @return TRUE if there was no error. */ virtual BOOL ConvertOSError( int libcReturnValue, ErrorGroup group = LastGeneralError ///< Error group to set ); /**Set error values to those specified. Return TRUE if errorCode is NoError, FALSE otherwise */ BOOL SetErrorValues( Errors errorCode, ///< Error code to translate. int osError, ///< OS error number to translate. ErrorGroup group = LastGeneralError ///< Error group to set ); /** Read a character with specified timeout. This reads a single character from the channel waiting at most the amount of time specified for it to arrive. The #timeout# parameter is adjusted for amount of time it actually took, so it can be used for a multiple character timeout. @return TRUE if there was no error. */ int ReadCharWithTimeout( PTimeInterval & timeout // Timeout for read. ); // Receive a (partial) command string, determine if completed yet. BOOL ReceiveCommandString( int nextChar, const PString & reply, PINDEX & pos, PINDEX start ); // Member variables /// The operating system file handle return by standard open() function. int os_handle; /// The platform independant error code. Errors lastErrorCode[NumErrorGroups+1]; /// The operating system error number (eg as returned by errno). int lastErrorNumber[NumErrorGroups+1]; /// Number of byte last read by the Read() function. PINDEX lastReadCount; /// Number of byte last written by the Write() function. PINDEX lastWriteCount; /// Timeout for read operations. PTimeInterval readTimeout; /// Timeout for write operations. PTimeInterval writeTimeout; private: // New functions for class void Construct(); // Complete platform dependent construction. // Member variables BOOL abortCommandString; // Flag to abort the transmission of a command in SendCommandString(). // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/channel.h" #else #include "unix/ptlib/channel.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/conchan.h0100644000176200056700000000555107731772046017740 0ustar releasepostincr/* * conchan.h * * Console I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: conchan.h,v $ * Revision 1.5 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.4 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.3 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.2 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.1 1999/06/13 13:54:07 robertj * Added PConsoleChannel class for access to stdin/stdout/stderr. * */ #ifndef _PCONSOLECHANNEL #define _PCONSOLECHANNEL #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // Console Channel /**This class defines an I/O channel that communicates via a console. */ class PConsoleChannel : public PChannel { PCLASSINFO(PConsoleChannel, PChannel); public: enum ConsoleType { StandardInput, StandardOutput, StandardError }; /**@name Construction */ //@{ /// Create a new console channel object, leaving it unopen. PConsoleChannel(); /// Create a new console channel object, connecting to the I/O stream. PConsoleChannel( ConsoleType type /// Type of console for object ); //@} /**@name Open functions */ //@{ /**Open a serial channal. The channel is opened it on the specified port and with the specified attributes. */ virtual BOOL Open( ConsoleType type /// Type of console for object ); //@} // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/conchan.h" #else #include "unix/ptlib/conchan.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/config.h0100644000176200056700000005720010341504163017552 0ustar releasepostincr/* * config.h * * Application/System configuration access class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: config.h,v $ * Revision 1.28 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.27 2005/01/26 05:37:44 csoutheren * Added ability to remove config file support * * Revision 1.26 2004/01/06 21:16:38 csoutheren * Added "virtual" keyword to methods to allow descendant classes. * Thanks to Cristian Bullokles for pointing out this issue * * Revision 1.25 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.24 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.23 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.22 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.21 2000/05/25 11:07:26 robertj * Added PConfig::HasKey() function to determine if value actually set. * * Revision 1.20 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.19 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.18 1998/10/30 12:23:55 robertj * Added ability to get all key values as a dictionary. * * Revision 1.17 1998/09/23 06:20:21 robertj * Added open source copyright license. * * Revision 1.16 1998/01/26 00:29:26 robertj * Added functions to get/set 64bit integers from a PConfig. * * Revision 1.15 1997/08/07 11:58:01 robertj * Added ability to get registry data from other applications and anywhere in system registry. * * Revision 1.14 1996/02/25 02:50:33 robertj * Added consts to all GetXxxx functions. * * Revision 1.13 1996/01/28 14:10:10 robertj * Added time functions to PConfig. * * Revision 1.12 1995/12/10 11:54:30 robertj * Added WIN32 registry support for PConfig objects. * * Revision 1.11 1995/03/14 12:41:12 robertj * Updated documentation to use HTML codes. * * Revision 1.10 1995/01/27 11:06:20 robertj * Changed single string default constructor to be section name not file name. * * Revision 1.9 1994/12/12 10:11:59 robertj * Documentation. * * Revision 1.8 1994/08/23 11:32:52 robertj * Oops * * Revision 1.7 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.6 1994/08/21 23:43:02 robertj * Removed default argument when of PString type (MSC crashes). * * Revision 1.5 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.4 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.3 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.2 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PCONFIG #define _PCONFIG #ifdef P_USE_PRAGMA #pragma interface #endif #include "ptbuildopts.h" #ifdef P_CONFIG_FILE class PXConfig; /** A class representing a configuration for the application. There are four sources of configuration information. The system environment, a system wide configuration file, an application specific configuration file or an explicit configuration file. Configuration information follows a three level hierarchy: {\it file}, {\it section} and {\it variable}. Thus, a configuration file consists of a number of sections each with a number of variables selected by a {\it key}. Each variable has an associated value. Note that the evironment source for configuration information does not have sections. The section is ignored and the same set of keys are available. The configuration file is a standard text file for the platform with its internals appearing in the form: \begin{verbatim} [Section String] Key Name=Value String \end{verbatim} */ class PConfig : public PObject { PCLASSINFO(PConfig, PObject); public: /**@name Construction */ //@{ /** Description of the standard source for configuration information. */ enum Source { /** The platform specific environment. For Unix, MSDOS, NT etc this is {\bf the} environment current when the program was run. For the MacOS this is a subset of the Gestalt and SysEnviron information. */ Environment, /** The platform specific system wide configuration file. For MS-Windows this is the WIN.INI file. For Unix, plain MS-DOS, etc this is a configuration file similar to that for applications except there is only a single file that applies to all PWLib applications. */ System, /** The application specific configuration file. This is the most common source of configuration for an application. The location of this file is platform dependent, but its contents are always the same. For MS-Windows the file should be either in the same directory as the executable or in the Windows directory. For the MacOS this would be either in the System Folder or the Preferences folder within it. For Unix this would be the users home directory. */ Application, NumSources }; /** Create a new configuration object. Once a source is selected for the configuration it cannot be changed. Only at the next level of the hierarchy (sections) are selection able to be made dynamically with an active PConfig object. */ PConfig( Source src = Application ///< Standard source for the configuration. ); /** Create a new configuration object. */ PConfig( Source src, ///< Standard source for the configuration. const PString & appname ///< Name of application ); /** Create a new configuration object. */ PConfig( Source src, ///< Standard source for the configuration. const PString & appname, ///< Name of application const PString & manuf ///< Manufacturer ); /** Create a new configuration object. */ PConfig( const PString & section, ///< Default section to search for variables. Source src = Application ///< Standard source for the configuration. ); /** Create a new configuration object. */ PConfig( const PString & section, ///< Default section to search for variables. Source src, ///< Standard source for the configuration. const PString & appname ///< Name of application ); /** Create a new configuration object. */ PConfig( const PString & section, ///< Default section to search for variables. Source src, ///< Standard source for the configuration. const PString & appname, ///< Name of application const PString & manuf ///< Manufacturer ); /** Create a new configuration object. */ PConfig( const PFilePath & filename, ///< Explicit name of the configuration file. const PString & section ///< Default section to search for variables. ); //@} /**@name Section functions */ //@{ /** Set the default section for variable operations. All functions that deal with keys and get or set configuration values will use this section unless an explicit section name is specified. Note when the #Environment# source is being used the default section may be set but it is ignored. */ virtual void SetDefaultSection( const PString & section ///< New default section name. ); /** Get the default section for variable operations. All functions that deal with keys and get or set configuration values will use this section unless an explicit section name is specified. Note when the #Environment# source is being used the default section may be retrieved but it is ignored. @return default section name string. */ virtual PString GetDefaultSection() const; /** Get all of the section names currently specified in the file. A section is the part specified by the [ and ] characters. Note when the #Environment# source is being used this will return an empty list as there are no section present. @return list of all section names. */ virtual PStringList GetSections() const; /** Get a list of all the keys in the section. If the section name is not specified then use the default section. @return list of all key names. */ virtual PStringList GetKeys() const; /** Get a list of all the keys in the section. */ virtual PStringList GetKeys( const PString & section ///< Section to use instead of the default. ) const; /** Get all of the keys in the section and their values. If the section name is not specified then use the default section. @return Dictionary of all key names and their values. */ virtual PStringToString GetAllKeyValues() const; /** Get all of the keys in the section and their values. */ virtual PStringToString GetAllKeyValues( const PString & section ///< Section to use instead of the default. ) const; /** Delete all variables in the specified section. If the section name is not specified then the default section is deleted. Note that the section header is also removed so the section will not appear in the GetSections() function. */ virtual void DeleteSection(); /** Delete all variables in the specified section. */ virtual void DeleteSection( const PString & section ///< Name of section to delete. ); /** Delete the particular variable in the specified section. If the section name is not specified then the default section is used. Note that the variable and key are removed from the file. The key will no longer appear in the GetKeys() function. If you wish to delete the value without deleting the key, use SetString() to set it to the empty string. */ virtual void DeleteKey( const PString & key ///< Key of the variable to delete. ); /** Delete the particular variable in the specified section. */ virtual void DeleteKey( const PString & section, ///< Section to use instead of the default. const PString & key ///< Key of the variable to delete. ); /**Determine if the particular variable in the section is actually present. This function allows a caller to distinguish between getting a saved value or using the default value. For example if you called GetString("MyKey", "DefVal") there is no way to distinguish between the default "DefVal" being used, or the user had explicitly saved the value "DefVal" into the PConfig. */ virtual BOOL HasKey( const PString & key ///< Key of the variable. ) const; /**Determine if the particular variable in the section is actually present. */ virtual BOOL HasKey( const PString & section, ///< Section to use instead of the default. const PString & key ///< Key of the variable. ) const; //@} /**@name Get/Set variables */ //@{ /** Get a string variable determined by the key in the section. If the section name is not specified then the default section is used. If the key is not present the value returned is the that provided by the #dlft# parameter. Note that this is different from the key being present but having no value, in which case an empty string is returned. @return string value of the variable. */ virtual PString GetString( const PString & key ///< The key name for the variable. ) const; /** Get a string variable determined by the key in the section. */ virtual PString GetString( const PString & key, ///< The key name for the variable. const PString & dflt ///< Default value for the variable. ) const; /** Get a string variable determined by the key in the section. */ virtual PString GetString( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. const PString & dflt ///< Default value for the variable. ) const; /** Set a string variable determined by the key in the section. If the section name is not specified then the default section is used. */ virtual void SetString( const PString & key, ///< The key name for the variable. const PString & value ///< New value to set for the variable. ); /** Set a string variable determined by the key in the section. */ virtual void SetString( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. const PString & value ///< New value to set for the variable. ); /** Get a boolean variable determined by the key in the section. If the section name is not specified then the default section is used. The boolean value can be specified in a number of ways. The TRUE value is returned if the string value for the variable begins with either the 'T' character or the 'Y' character. Alternatively if the string can be converted to a numeric value, a non-zero value will also return TRUE. Thus the values can be Key=True, Key=Yes or Key=1 for TRUE and Key=False, Key=No, or Key=0 for FALSE. If the key is not present the value returned is the that provided by the #dlft# parameter. Note that this is different from the key being present but having no value, in which case FALSE is returned. @return boolean value of the variable. */ virtual BOOL GetBoolean( const PString & key, ///< The key name for the variable. BOOL dflt = FALSE ///< Default value for the variable. ) const; /** Get a boolean variable determined by the key in the section. */ virtual BOOL GetBoolean( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. BOOL dflt = FALSE ///< Default value for the variable. ) const; /** Set a boolean variable determined by the key in the section. If the section name is not specified then the default section is used. If value is TRUE then the string "True" is written to the variable otherwise the string "False" is set. */ virtual void SetBoolean( const PString & key, ///< The key name for the variable. BOOL value ///< New value to set for the variable. ); /** Set a boolean variable determined by the key in the section. */ virtual void SetBoolean( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. BOOL value ///< New value to set for the variable. ); /* Get an integer variable determined by the key in the section. If the section name is not specified then the default section is used. If the key is not present the value returned is the that provided by the #dlft# parameter. Note that this is different from the key being present but having no value, in which case zero is returned. @return integer value of the variable. */ virtual long GetInteger( const PString & key, ///< The key name for the variable. long dflt = 0 ///< Default value for the variable. ) const; /* Get an integer variable determined by the key in the section. */ virtual long GetInteger( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. long dflt = 0 ///< Default value for the variable. ) const; /** Set an integer variable determined by the key in the section. If the section name is not specified then the default section is used. The value is always formatted as a signed number with no leading or trailing blanks. */ virtual void SetInteger( const PString & key, ///< The key name for the variable. long value ///< New value to set for the variable. ); /** Set an integer variable determined by the key in the section. */ virtual void SetInteger( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. long value ///< New value to set for the variable. ); /** Get a 64 bit integer variable determined by the key in the section. If the section name is not specified then the default section is used. If the key is not present the value returned is the that provided by the #dlft# parameter. Note that this is different from the key being present but having no value, in which case zero is returned. @return integer value of the variable. */ virtual PInt64 GetInt64( const PString & key, ///< The key name for the variable. PInt64 dflt = 0 ///< Default value for the variable. ) const; /** Get a 64 bit integer variable determined by the key in the section. */ virtual PInt64 GetInt64( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. PInt64 dflt = 0 ///< Default value for the variable. ) const; /** Set a 64 bit integer variable determined by the key in the section. If the section name is not specified then the default section is used. The value is always formatted as a signed number with no leading or trailing blanks. */ virtual void SetInt64( const PString & key, ///< The key name for the variable. PInt64 value ///< New value to set for the variable. ); /** Set a 64 bit integer variable determined by the key in the section. */ virtual void SetInt64( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. PInt64 value ///< New value to set for the variable. ); /** Get a floating point variable determined by the key in the section. If the section name is not specified then the default section is used. If the key is not present the value returned is the that provided by the #dlft# parameter. Note that this is different from the key being present but having no value, in which case zero is returned. @return floating point value of the variable. */ virtual double GetReal( const PString & key, ///< The key name for the variable. double dflt = 0 ///< Default value for the variable. ) const; /** Get a floating point variable determined by the key in the section. */ virtual double GetReal( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. double dflt = 0 ///< Default value for the variable. ) const; /** Set a floating point variable determined by the key in the section. If the section name is not specified then the default section is used. The value is always formatted as a signed decimal or exponential form number with no leading or trailing blanks, ie it uses the %g formatter from the printf() function. */ virtual void SetReal( const PString & key, ///< The key name for the variable. double value ///< New value to set for the variable. ); /** Set a floating point variable determined by the key in the section. */ virtual void SetReal( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. double value ///< New value to set for the variable. ); /** Get a #PTime# variable determined by the key in the section. If the section name is not specified then the default section is used. If the key is not present the value returned is the that provided by the #dlft# parameter. Note that this is different from the key being present but having no value, in which case zero is returned. @return time/date value of the variable. */ virtual PTime GetTime( const PString & key ///< The key name for the variable. ) const; /** Get a #PTime# variable determined by the key in the section. */ virtual PTime GetTime( const PString & key, ///< The key name for the variable. const PTime & dflt ///< Default value for the variable. ) const; /** Get a #PTime# variable determined by the key in the section. */ virtual PTime GetTime( const PString & section, ///< Section to use instead of the default. const PString & key ///< The key name for the variable. ) const; /** Get a #PTime# variable determined by the key in the section. */ virtual PTime GetTime( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. const PTime & dflt ///< Default value for the variable. ) const; /** Set a #PTime# variable determined by the key in the section. If the section name is not specified then the default section is used. */ virtual void SetTime( const PString & key, ///< The key name for the variable. const PTime & value ///< New value to set for the variable. ); /** Set a #PTime# variable determined by the key in the section. */ virtual void SetTime( const PString & section, ///< Section to use instead of the default. const PString & key, ///< The key name for the variable. const PTime & value ///< New value to set for the variable. ); //@} protected: // Member variables /// The current section for variable values. PString defaultSection; private: // Do common construction code. void Construct( Source src, ///< Standard source for the configuration. const PString & appname, ///< Name of application const PString & manuf ///< Manufacturer ); void Construct( const PFilePath & filename ///< Explicit name of the configuration file. ); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/config.h" #else #include "unix/ptlib/config.h" #endif }; #endif // P_CONFIG_FILE #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/contain.h0100644000176200056700000007377410341504163017756 0ustar releasepostincr/* * contain.h * * Umbrella include for Container Classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: contain.h,v $ * Revision 1.65 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.64 2004/04/15 22:44:52 csoutheren * Re-applied gcc 2.95 patch as CVS screwed up * * Revision 1.63 2004/04/14 23:34:52 csoutheren * Added plugin for data access * * Revision 1.61 2004/04/12 00:36:04 csoutheren * Added new class PAtomicInteger and added Windows implementation * * Revision 1.60 2004/04/11 06:15:27 csoutheren * Modified to use Atomic_word if available * * Revision 1.59 2004/04/11 02:55:17 csoutheren * Added PCriticalSection for Windows * Added compile time option for PContainer to use critical sections to provide thread safety under some circumstances * * Revision 1.58 2004/04/09 03:42:34 csoutheren * Removed all usages of "virtual inline" and "inline virtual" * * Revision 1.57 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.56 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.55 2003/03/31 01:23:56 robertj * Added ReadFrom functions for standard container classes such as * PIntArray and PStringList etc * * Revision 1.54 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.53 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.52 1999/11/30 00:22:54 robertj * Updated documentation for doc++ * * Revision 1.51 1999/08/22 12:13:42 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.50 1999/08/17 03:46:40 robertj * Fixed usage of inlines in optimised version. * * Revision 1.49 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.48 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.47 1998/09/23 06:20:23 robertj * Added open source copyright license. * * Revision 1.46 1997/07/08 13:15:04 robertj * DLL support. * * Revision 1.45 1996/08/17 10:00:20 robertj * Changes for Windows DLL support. * * Revision 1.44 1996/08/08 10:08:41 robertj * Directory structure changes for common files. * * Revision 1.43 1995/06/17 11:12:26 robertj * Documentation update. * * Revision 1.42 1995/03/14 12:41:13 robertj * Updated documentation to use HTML codes. * * Revision 1.41 1995/01/09 12:36:18 robertj * Removed unnecesary return value from I/O functions. * Changes due to Mac port. * * Revision 1.40 1994/12/13 11:50:45 robertj * Added MakeUnique() function to all container classes. * * Revision 1.39 1994/12/12 10:16:18 robertj * Restructuring and documentation of container classes. * Renaming of some macros for declaring container classes. * Added some extra functionality to PString. * Added start to 2 byte characters in PString. * Fixed incorrect overrides in PCaselessString. * * Revision 1.38 1994/12/05 11:18:58 robertj * Moved SetMinSize from PAbstractArray to PContainer. * * Revision 1.37 1994/11/28 12:33:44 robertj * Added dummy parameter for cls* constructor in containers. This prevents some very * strange an undesirable default construction of clones. * * Revision 1.36 1994/10/30 11:50:09 robertj * Split into Object classes and Container classes. * Changed mechanism for doing notification callback functions. * * Revision 1.35 1994/10/23 04:40:50 robertj * Made container * constractor protected. * Shorted OS Error assert. * Added printf constructor to PString. * * Revision 1.34 1994/09/25 10:36:41 robertj * Improved const behavious of container class macros. * * Revision 1.33 1994/08/23 11:32:52 robertj * Oops * * Revision 1.32 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.31 1994/08/21 23:43:02 robertj * Changed parameter before variable argument list to NOT be a reference. * Added object serialisation classes. * * Revision 1.30 1994/08/04 11:51:39 robertj * Rewrite of memory check functions. * * Revision 1.29 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.28 1994/07/25 03:33:50 robertj * Extra memory tests. * * Revision 1.27 1994/07/17 10:46:06 robertj * Added functions to strings in containers. * * Revision 1.26 1994/07/02 03:03:49 robertj * Addition of container searching facilities. * * Revision 1.25 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.24 1994/04/20 12:17:44 robertj * Added code to assert * * Revision 1.23 1994/04/11 14:17:27 robertj * Made standard operators new and delete only declared for GNU C++ * * Revision 1.22 1994/04/01 14:09:46 robertj * Removed PDECLARE_ABSTRACT_CONTAINER. * Added string stream class. * Added string containers. * * Revision 1.21 1994/03/07 07:38:19 robertj * Major enhancementsacross the board. * * Revision 1.20 1994/01/13 08:42:29 robertj * Fixed missing copy constuctor and assignment operator for PString. * * Revision 1.19 1994/01/13 05:33:41 robertj * Added contructor to get caseless string from ordinary string. * * Revision 1.18 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.17 1993/12/31 06:40:34 robertj * Made inlines optional for debugging purposes. * Added default to DeleteObjects() function. * * Revision 1.16 1993/12/24 04:20:52 robertj * Mac CFront port. * * Revision 1.15 1993/12/16 00:51:46 robertj * Made some container functions const. * * Revision 1.14 1993/12/15 21:10:10 robertj * Changes to fix inadequate reference system for containers. * * Revision 1.13 1993/12/14 18:44:56 robertj * Added RemoveAll() to collection classes. * Fixed incorrect destruction of objects in containers. * * Revision 1.12 1993/12/04 05:23:58 robertj * Added more string functions * * Revision 1.11 1993/09/27 16:35:25 robertj * Fixed bug in sorted lists. * Changed simple function for array of strings to a constructor. * Capitalised all macros. * * Revision 1.10 1993/08/27 18:17:47 robertj * Fixed bug with default number of elements in a collection. * Added missing Compare function to PAbstractSortedList * Added inline keywords for CFront compatibility. * * Revision 1.9 1993/08/21 01:50:33 robertj * Made Clone() function optional, default will assert if called. * * Revision 1.8 1993/08/19 18:00:32 robertj * Added two more standard base array classes * * Revision 1.7 1993/08/01 14:05:27 robertj * Added const to ToLower() and ToUpper() in the PString class. * * Revision 1.6 1993/07/16 14:40:55 robertj * Added PString constructor for individual characters. * Added string to C style literal format. * * Revision 1.5 1993/07/15 05:02:57 robertj * Removed redundant word in PString enum for string types. * * Revision 1.4 1993/07/15 04:23:39 robertj * Added constructor to PString to allow conversion from other string formats. * Fixed problem with variable parameter lists in sprintf() functions. * * Revision 1.3 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _CONTAIN_H #define _CONTAIN_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /////////////////////////////////////////////////////////////////////////////// // Abstract container class /** Abstract class to embody the base functionality of a {\it container}. Fundamentally, a container is an object that contains other objects. There are two main areas of support for tha that are provided by this class. The first is simply to keep a count of the number of things that the container contains. The current size is stored and accessed by members of this class. The setting of size is determined by the semantics of the descendent class and so is a pure function. The second area of support is for reference integrity. When an instance of a container is copied to another instance, the two instance contain the same thing. There can therefore be multiple references to the same things. When one reference is destroyed this must {\bf not} destroy the contained object as it may be referenced by another instance of a container class. To this end a reference count is provided by the PContainer class. This assures that the container only destroys the objects it contains when there are no more references to them. In support of this, descendent classes must provide a #DestroyContents()# function. As the normal destructor cannot be used, this function will free the memory or unlock the resource the container is wrapping. */ class PContainer : public PObject { PCLASSINFO(PContainer, PObject); public: /**@name Construction */ //@{ /**Create a new unique container. */ PContainer( PINDEX initialSize = 0 ///< Initial number of things in the container. ); /**Create a new refernce to container. Create a new container referencing the same contents as the container specified in the parameter. */ PContainer( const PContainer & cont ///< Container to create a new reference from. ); /**Assign one container reference to another. Set the current container to reference the same thing as the container specified in the parameter. Note that the old contents of the container is dereferenced and if it was unique, destroyed using the DestroyContents() function. */ PContainer & operator=( const PContainer & cont ///< Container to create a new reference from. ); /**Destroy the container class. This will decrement the reference count on the contents and if unique, will destroy it using the #DestroyContents()# function. */ virtual ~PContainer() { Destruct(); } //@} /**@name Common functions for containers */ //@{ /**Get the current size of the container. This represents the number of things the container contains. For some types of containers this will always return 1. @return number of objects in container. */ virtual PINDEX GetSize() const; /**Set the new current size of the container. The exact behavious of this is determined by the descendent class. For instance an array class would reallocate memory to make space for the new number of elements. Note for some types of containers this does not do anything as they inherently only contain one item. The function returns TRUE always and the new value is ignored. @return TRUE if the size was successfully changed. The value FALSE usually indicates failure due to insufficient memory. */ virtual BOOL SetSize( PINDEX newSize ///< New size for the container. ) = 0; /**Set the minimum size of container. This function will set the size of the object to be at least the size specified. The #SetSize()# function is always called, either with the new value or the previous size, whichever is the larger. */ BOOL SetMinSize( PINDEX minSize ///< Possible, new size for the container. ); /**Determine if the container is empty. Determine if the container that this object references contains any elements. @return TRUE if #GetSize()# returns zero. */ virtual BOOL IsEmpty() const; /**Determine if container is unique reference. Determine if this instance is the one and only reference to the container contents. @return TRUE if the reference count is one. */ BOOL IsUnique() const; /**Make this instance to be the one and only reference to the container contents. This implicitly does a clone of the contents of the container to make a unique reference. If the instance was already unique then the function does nothing. @return TRUE if the instance was already unique. */ virtual BOOL MakeUnique(); //@} protected: /**Constructor used in support of the Clone() function. This creates a new unique reference of a copy of the contents. It does {\bf not} create another reference. The dummy parameter is there to prevent the contructor from being invoked automatically by the compiler when a pointer is used by accident when a normal instance or reference was expected. The container would be silently cloned and the copy used instead of the container expected leading to unpredictable results. */ PContainer( int dummy, ///< Dummy to prevent accidental use of the constructor. const PContainer * cont ///< Container class to clone. ); /**Destroy the container contents. This function must be defined by the descendent class to do the actual destruction of the contents. It is automatically declared when the #PDECLARE_CONTAINER()# macro is used. For all descendent classes not immediately inheriting off the PContainer itself, the implementation of DestroyContents() should always call its ancestors function. This is especially relevent if many of the standard container classes, such as arrays, are descended from as memory leaks will occur. */ virtual void DestroyContents() = 0; /**Copy the container contents. This copies the contents from one reference to another. No duplication of contents occurs, for instance if the container is an array, the pointer to the array memory is copied, not the array memory block itself. This function will get called by the base assignment operator. */ virtual void AssignContents(const PContainer & c); /**Copy the container contents. This copies the contents from one reference to another. It is automatically declared when the #PDECLARE_CONTAINER()# macro is used. No duplication of contents occurs, for instance if the container is an array, the pointer to the array memory is copied, not the array memory block itself. This function will get called once for every class in the heirarchy, so the ancestor function should {\bf not} be called. */ void CopyContents(const PContainer & c); /**Create a duplicate of the container contents. This copies the contents from one container to another, unique container. It is automatically declared when the #PDECLARE_CONTAINER()# macro is used. This class will duplicate the contents completely, for instance if the container is an array, the actual array memory is copied, not just the pointer. If the container contains objects that descend from #PObject#, they too should also be cloned and not simply copied. This function will get called once for every class in the heirarchy, so the ancestor function should {\bf not} be called. {\it {\bf Note well}}, the logic of the function must be able to accept the passed in parameter to clone being the same instance as the destination object, ie during execution #this == src#. */ void CloneContents(const PContainer * src); /**Internal function called from container destructors. This will conditionally call #DestroyContents()# to destroy the container contents. */ void Destruct(); class Reference { public: inline Reference(PINDEX initialSize) : size(initialSize), count(1), deleteObjects(TRUE) { } Reference(const Reference & ref) : count(1) { #if PCONTAINER_USES_CRITSEC PEnterAndLeave m(((Reference &)ref).critSec); #endif size = ref.size; deleteObjects = ref.deleteObjects; } PINDEX size; // Size of what the container contains PAtomicInteger count; // reference count to the container content - guaranteed to be atomic BOOL deleteObjects; // Used by PCollection but put here for efficiency #if PCONTAINER_USES_CRITSEC PCriticalSection critSec; #endif private: Reference & operator=(const Reference &) { return *this; } } * reference; }; /**Macro to declare funtions required in a container. This macro is used to declare all the functions that should be implemented for a working container class. It will also define some inline code for some standard function behaviour. This may be used when multiple inheritance requires a special class declaration. Normally, the #PDECLARE_CONTAINER# macro would be used, which includes this macro in it. The default implementation for contructors, destructor, the assignment operator and the MakeUnique() function is as follows: \begin{verbatim} cls(const cls & c) : par(c) { CopyContents(c); } cls & operator=(const cls & c) { par::operator=(c); return *this; } cls(int dummy, const cls * c) : par(dummy, c) { CloneContents(c); } virtual ~cls() { Destruct(); } BOOL MakeUnique() { if (par::MakeUnique()) return TRUE; CloneContents(c); return FALSE; } \end{verbatim} Then the #DestroyContents()#, #CloneContents()# and #CopyContents()# functions are declared and must be implemented by the programmer. See the #PContainer# class for more information on these functions. */ #define PCONTAINERINFO(cls, par) \ PCLASSINFO(cls, par) \ public: \ cls(const cls & c) : par(c) { CopyContents(c); } \ cls & operator=(const cls & c) \ { AssignContents(c); return *this; } \ virtual ~cls() { Destruct(); } \ virtual BOOL MakeUnique() \ { if(par::MakeUnique())return TRUE; CloneContents(this);return FALSE; } \ protected: \ cls(int dummy, const cls * c) : par(dummy, c) { CloneContents(c); } \ virtual void DestroyContents(); \ void CloneContents(const cls * c); \ void CopyContents(const cls & c); \ virtual void AssignContents(const PContainer & c) \ { par::AssignContents(c); CopyContents((const cls &)c); } /////////////////////////////////////////////////////////////////////////////// // Abstract collection of objects class /**A collection is a container that collects together descendents of the #PObject# class. The objects contained in the collection are always pointers to objects, not the objects themselves. The life of an object in the collection should be carefully considered. Typically, it is allocated by the user of the collection when it is added. The collection then automatically deletes it when it is removed or the collection is destroyed, ie when the container class has no more references to the collection. Other models may be accommodated but it is up to the programmer to determine the scope and life of the objects. The exact form of the collection depends on the descendent of PCollection and determines the access modes for the objects in it. Thus a collection can be an array which allows fast random access at the expense of slow insertion and deletion. Or the collection may be a list which has fast insertion and deletion but very slow random access. The basic paradigm of all collections is the "virtual array". Regardless of the internal implementation of the collection; array, list, sorted list etc, the user may access elements via an ordinal index. The implementation then optimises the access as best it can. For instance, in a list ordinal zero will go directly to the head of the list. Stepping along sequential indexes then will return the next element of the list, remembering the new position at each step, thus allowing sequential access with little overhead as is expected for lists. If a random location is specified, then the list implementation must sequentially search for that ordinal from either the last location or an end of the list, incurring an overhead. All collection classes implement a base set of functions, though they may be meaningless or degenerative in some collection types eg #Insert()# for #PSortedList# will degenerate to be the same as #Append()#. */ class PCollection : public PContainer { PCLASSINFO(PCollection, PContainer); public: /**@name Construction */ //@{ /**Create a new collection */ PCollection( PINDEX initialSize = 0 ///< Initial number of things in the collection. ); //@} /**@name Overrides from class PObject */ //@{ /**Print the collection on the stream. This simply executes the #PObject::PrintOn()# function on each element in the collection. The default behaviour for collections is to print each element separated by the stream fill character. Note that if the fill character is the default ' ' then no separator is printed at all. Also if the fill character is not ' ', the the streams width parameter is set before each individual element of the colllection. @return the stream printed to. */ virtual void PrintOn( ostream &strm ///< Output stream to print the collection. ) const; //@} /**@name Common functions for collections */ //@{ /**Append a new object to the collection. The exact semantics depends on the specific type of the collection. So the function may not place the object at the "end" of the collection at all. For example, in a #PSortedList# the object is placed in the correct ordinal position in the list. @return index of the newly added object. */ virtual PINDEX Append( PObject * obj ///< New object to place into the collection. ) = 0; /**Insert a new object immediately before the specified object. If the object to insert before is not in the collection then the equivalent of the #Append()# function is performed. The exact semantics depends on the specific type of the collection. So the function may not place the object before the specified object at all. For example, in a #PSortedList# the object is placed in the correct ordinal position in the list. Note that the object values are compared for the search of the #before# parameter, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. @return index of the newly inserted object. */ virtual PINDEX Insert( const PObject & before, ///< Object value to insert before. PObject * obj ///< New object to place into the collection. ) = 0; /**Insert a new object at the specified ordinal index. If the index is greater than the number of objects in the collection then the equivalent of the #Append()# function is performed. The exact semantics depends on the specific type of the collection. So the function may not place the object at the specified index at all. For example, in a #PSortedList# the object is placed in the correct ordinal position in the list. @return index of the newly inserted object. */ virtual PINDEX InsertAt( PINDEX index, ///< Index position in collection to place the object. PObject * obj ///< New object to place into the collection. ) = 0; /**Remove the object from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note that the comparison for searching for the object in collection is made by pointer, not by value. Thus the parameter must point to the same instance of the object that is in the collection. @return TRUE if the object was in the collection. */ virtual BOOL Remove( const PObject * obj ///< Existing object to remove from the collection. ) = 0; /**Remove the object at the specified ordinal index from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note if the index is beyond the size of the collection then the function will assert. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PObject * RemoveAt( PINDEX index ///< Index position in collection to place the object. ) = 0; /**Remove all of the elements in the collection. This operates by continually calling #RemoveAt()# until there are no objects left. The objects are removed from the last, at index #(GetSize()-1)# toward the first at index zero. */ virtual void RemoveAll(); /**Set the object at the specified ordinal position to the new value. This will overwrite the existing entry. If the AllowDeleteObjects option is set then the old object is also deleted. The exact semantics depends on the specific type of the collection. For some, eg #PSortedList#, the object inserted will not stay at the ordinal position. Also the exact behaviour when the index is greater than the size of the collection depends on the collection type, eg in an array collection the array is expanded to accommodate the new index, whereas in a list it will return FALSE. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( PINDEX index, ///< Index position in collection to set. PObject * val ///< New value to place into the collection. ) = 0; /**Get the object at the specified ordinal position. If the index was greater than the size of the collection then NULL is returned. @return pointer to object at the specified index. */ virtual PObject * GetAt( PINDEX index ///< Index position in the collection of the object. ) const = 0; /**Search the collection for the specific instance of the object. The object pointers are compared, not the values. The fastest search algorithm is employed depending on the collection type. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetObjectsIndex( const PObject * obj ///< Object to search for. ) const = 0; /**Search the collection for the specified value of the object. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The fastest search algorithm is employed depending on the collection type. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetValuesIndex( const PObject & obj ///< Object to search for. ) const = 0; /**Allow or disallow the deletion of the objects contained in the collection. If TRUE then whenever an object is removed, overwritten or the colelction is deleted due to all references being destroyed, the object is deleted. For example: \begin{verbatim} coll.SetAt(2, new PString("one")); coll.SetAt(2, new PString("Two")); \end{verbatim} would automatically delete the string containing "one" on the second call to SetAt(). */ PINLINE void AllowDeleteObjects( BOOL yes = TRUE ///< New value for flag for deleting objects ); /**Disallow the deletion of the objects contained in the collection. See the #AllowDeleteObjects()# function for more details. */ void DisallowDeleteObjects(); //@} protected: /**Constructor used in support of the Clone() function. This creates a new unique reference of a copy of the contents. It does {\bf not} create another reference. The dummy parameter is there to prevent the contructor from being invoked automatically by the compiler when a pointer is used by accident when a normal instance or reference was expected. The container would be silently cloned and the copy used instead of the container expected leading to unpredictable results. */ PINLINE PCollection( int dummy, ///< Dummy to prevent accidental use of the constructor. const PCollection * coll ///< Collection class to clone. ); }; /////////////////////////////////////////////////////////////////////////////// // The abstract array class #include /////////////////////////////////////////////////////////////////////////////// // The abstract array class #include /////////////////////////////////////////////////////////////////////////////// // PString class (specialised version of PBASEARRAY(char)) #include /////////////////////////////////////////////////////////////////////////////// // PString class #include /////////////////////////////////////////////////////////////////////////////// // Fill in all the inline functions #if P_USE_INLINES #include #endif #endif // _CONTAIN_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/contain.inl0100644000176200056700000004424310057011142020270 0ustar releasepostincr/* * contain.inl * * Container Class Inline Function Definitions * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: contain.inl,v $ * Revision 1.54 2004/06/01 05:21:38 csoutheren * Added conversions between std::string and PString, and vector and PStringArray * * Revision 1.53 2004/05/04 11:10:36 rjongbloed * Fixed usage of MakeEmpty() with PStringStream. * * Revision 1.52 2004/04/24 06:27:56 rjongbloed * Fixed GCC 3.4.0 warnings about PAssertNULL and improved recoverability on * NULL pointer usage in various bits of code. * * Revision 1.51 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.50 2004/04/09 03:42:34 csoutheren * Removed all usages of "virtual inline" and "inline virtual" * * Revision 1.49 2004/01/18 13:43:48 rjongbloed * Fixed broken PString::MakeEmpty() function and moved implementations to .inl file. * * Revision 1.48 2002/10/31 05:52:37 robertj * Now comprehensively stated that a PString is ALWAYS an 8 bit string as * there are far too many inheerent assumptions every to make it 16 bit. * * Revision 1.47 2002/10/04 01:47:44 robertj * Added various increment and decrement operators to POrdinalKey. * * Revision 1.46 2002/08/14 00:43:39 robertj * Added ability to have fixed maximum length PStringStream's so does not do * unwanted malloc()'s while outputing data. * * Revision 1.45 2002/02/15 04:29:49 robertj * Added PString::Empty() to return the primordial empty string. Saves on a * couple of memory allocations for every empty string ever used. * * Revision 1.44 2002/01/22 01:03:57 craigs * Added operator += and operator + functions to PStringArray and PStringList * Added AppendString operator to PStringArray * * Revision 1.43 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.42 1999/08/22 12:13:42 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.41 1999/03/09 03:08:39 robertj * Changes for new documentation system * * Revision 1.40 1998/09/23 06:20:25 robertj * Added open source copyright license. * * Revision 1.39 1997/12/11 10:27:15 robertj * Added type correct Contains() function to dictionaries. * * Revision 1.38 1997/02/14 13:53:58 robertj * Major rewrite of sorted list to use sentinel record instead of NULL pointers. * * Revision 1.37 1996/09/14 12:54:18 robertj * Added operator! for !IsEmpty(). * * Revision 1.36 1996/07/15 10:32:49 robertj * Fixed bug in sorted list (crash on remove). * * Revision 1.35 1996/02/08 11:47:57 robertj * Moved Contains function from PSet to PHashTable so available for dictionaries. * Added caseless compare operator and spaced concatenation operator. * * Revision 1.34 1996/01/23 13:10:45 robertj * String searching algorithm rewrite. * Added Replace() function to strings. * * Revision 1.33 1995/12/23 03:48:40 robertj * Added operators for string set include and exclude. * * Revision 1.32 1995/08/24 12:34:09 robertj * Added assert for list index out of bounds. * * Revision 1.31 1995/03/25 02:12:16 robertj * Fixed PStringXXX containers so can correctly contain PCaselessString etc. * * Revision 1.30 1995/03/12 04:38:01 robertj * Added assignment operator for const char * for efficiency. * * Revision 1.29 1995/01/09 12:36:28 robertj * Changes due to Mac port. * * Revision 1.28 1994/12/12 13:13:12 robertj * Fixed bugs in PString mods just made. * * Revision 1.27 1994/12/12 10:16:20 robertj * Restructuring and documentation of container classes. * Renaming of some macros for declaring container classes. * Added some extra functionality to PString. * Added start to 2 byte characters in PString. * Fixed incorrect overrides in PCaselessString. * * Revision 1.26 1994/12/05 11:19:09 robertj * Moved SetMinSize from PAbstractArray to PContainer. * * Revision 1.25 1994/11/28 12:33:46 robertj * Added dummy parameter for cls* constructor in containers. This prevents some very * strange an undesirable default construction of clones. * * Revision 1.24 1994/10/30 11:50:27 robertj * Split into Object classes and Container classes. * Changed mechanism for doing notification callback functions. * * Revision 1.23 1994/10/23 04:41:45 robertj * Added implemtation for PString constructor used by Clone(). * Added PStringDictionary function. * * Revision 1.22 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.21 1994/07/25 03:31:00 robertj * Fixed missing PINLINEs. * * Revision 1.20 1994/07/17 10:46:06 robertj * Added string container functions for searching. * * Revision 1.19 1994/07/02 03:03:49 robertj * Addition of container searching facilities. * * Revision 1.18 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.17 1994/04/20 12:17:44 robertj * assert stuff * * Revision 1.16 1994/04/01 14:05:46 robertj * Added PString specific containers. * * Revision 1.15 1994/03/07 07:45:40 robertj * Major upgrade * * Revision 1.14 1994/01/15 02:48:55 robertj * Rearranged PString assignment operator for NT portability. * * Revision 1.13 1994/01/13 08:42:29 robertj * Fixed missing copy constuctor and assignment operator for PString. * * Revision 1.12 1994/01/13 05:33:41 robertj * Added contructor to get caseless string from ordinary string. * * Revision 1.11 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.10 1993/12/31 06:48:46 robertj * Made inlines optional for debugging purposes. * Added PImgIcon class. * * Revision 1.9 1993/12/24 04:20:52 robertj * Mac CFront port. * * Revision 1.8 1993/12/22 05:54:08 robertj * Checked for severe out of memory condition in containers. * * Revision 1.7 1993/12/16 00:51:46 robertj * Made some container functions const. * * Revision 1.6 1993/12/15 21:10:10 robertj * Fixed reference system used by container classes. * * Revision 1.5 1993/08/27 18:17:47 robertj * Fixed bugs in PSortedList default size. * * Revision 1.4 1993/07/16 14:40:55 robertj * Added PString constructor for individual characters. * Added string to C style literal format. * * Revision 1.3 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ /////////////////////////////////////////////////////////////////////////////// PINLINE PContainer & PContainer::operator=(const PContainer & cont) { AssignContents(cont); return *this; } PINLINE void PContainer::CloneContents(const PContainer *) { } PINLINE void PContainer::CopyContents(const PContainer &) { } PINLINE PINDEX PContainer::GetSize() const { return PAssertNULL(reference)->size; } PINLINE BOOL PContainer::IsEmpty() const { return GetSize() == 0; } PINLINE BOOL PContainer::IsUnique() const { return PAssertNULL(reference)->count <= 1; } /////////////////////////////////////////////////////////////////////////////// PINLINE PString::PString() : PCharArray(1) { } PINLINE PString::PString(const PString & str) : PCharArray(str) { } PINLINE PString::PString(int, const PString * str) : PCharArray(*str) { } PINLINE PString::PString(const std::string & str) : PCharArray(PString(str.c_str())) { } PINLINE PString::PString(char c) : PCharArray(2) { SetAt(0, c); } PINLINE PString PString::Empty() { return PString(); } PINLINE PString & PString::operator=(const PString & str) { AssignContents(str); return *this; } PINLINE PString & PString::operator=(const char * cstr) { AssignContents(PString(cstr)); return *this; } PINLINE PString & PString::operator=(char ch) { AssignContents(PString(ch)); return *this; } PINLINE BOOL PString::MakeMinimumSize() { return SetSize(GetLength()+1); } PINLINE PINDEX PString::GetLength() const { return strlen(theArray); } PINLINE bool PString::operator!() const { return !IsEmpty(); } PINLINE PString PString::operator+(const PString & str) const { return operator+((const char *)str); } PINLINE PString operator+(const char * cstr, const PString & str) { return PString(cstr) + str; } PINLINE PString operator+(char c, const PString & str) { return PString(c) + str; } PINLINE PString & PString::operator+=(const PString & str) { return operator+=((const char *)str); } PINLINE PString PString::operator&(const PString & str) const { return operator&((const char *)str); } PINLINE PString operator&(const char * cstr, const PString & str) { return PString(cstr) & str; } PINLINE PString operator&(char c, const PString & str) { return PString(c) & str; } PINLINE PString & PString::operator&=(const PString & str) { return operator&=((const char *)str); } PINLINE bool PString::operator==(const PObject & obj) const { return PObject::operator==(obj); } PINLINE bool PString::operator!=(const PObject & obj) const { return PObject::operator!=(obj); } PINLINE bool PString::operator<(const PObject & obj) const { return PObject::operator<(obj); } PINLINE bool PString::operator>(const PObject & obj) const { return PObject::operator>(obj); } PINLINE bool PString::operator<=(const PObject & obj) const { return PObject::operator<=(obj); } PINLINE bool PString::operator>=(const PObject & obj) const { return PObject::operator>=(obj); } PINLINE bool PString::operator*=(const PString & str) const { return operator*=((const char *)str); } PINLINE bool PString::operator==(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) == EqualTo; } PINLINE bool PString::operator!=(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) != EqualTo; } PINLINE bool PString::operator<(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) == LessThan; } PINLINE bool PString::operator>(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) == GreaterThan; } PINLINE bool PString::operator<=(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) != GreaterThan; } PINLINE bool PString::operator>=(const char * cstr) const { return InternalCompare(0, P_MAX_INDEX, cstr) != LessThan; } PINLINE PINDEX PString::Find(const PString & str, PINDEX offset) const { return Find((const char *)str, offset); } PINLINE PINDEX PString::FindLast(const PString & str, PINDEX offset) const { return FindLast((const char *)str, offset); } PINLINE PINDEX PString::FindOneOf(const PString & str, PINDEX offset) const { return FindOneOf((const char *)str, offset); } PINLINE void PString::Splice(const PString & str, PINDEX pos, PINDEX len) { Splice((const char *)str, pos, len); } PINLINE PStringArray PString::Tokenise(const PString & separators, BOOL onePerSeparator) const { return Tokenise((const char *)separators, onePerSeparator); } PINLINE PString::operator const unsigned char *() const { return (const unsigned char *)theArray; } PINLINE PString & PString::vsprintf(const PString & fmt, va_list args) { return vsprintf((const char *)fmt, args); } PINLINE PString pvsprintf(const PString & fmt, va_list args) { return pvsprintf((const char *)fmt, args); } /////////////////////////////////////////////////////////////////////////////// PINLINE PCaselessString::PCaselessString() : PString() { } PINLINE PCaselessString::PCaselessString(const char * cstr) : PString(cstr) { } PINLINE PCaselessString::PCaselessString(const PString & str) : PString(str) { } PINLINE PCaselessString::PCaselessString(int dummy,const PCaselessString * str) : PString(dummy, str) { } PINLINE PCaselessString & PCaselessString::operator=(const PString & str) { AssignContents(str); return *this; } PINLINE PCaselessString & PCaselessString::operator=(const char * cstr) { AssignContents(PString(cstr)); return *this; } PINLINE PCaselessString & PCaselessString::operator=(char ch) { AssignContents(PString(ch)); return *this; } /////////////////////////////////////////////////////////////////////////////// PINLINE PStringStream::Buffer::Buffer(const Buffer & b) : string(b.string) { } PINLINE PStringStream::Buffer& PStringStream::Buffer::operator=(const Buffer&b) { string = b.string; return *this; } PINLINE PStringStream & PStringStream::operator=(const PStringStream & strm) { AssignContents(strm); return *this; } PINLINE PStringStream & PStringStream::operator=(const PString & str) { AssignContents(str); return *this; } PINLINE PStringStream & PStringStream::operator=(const char * cstr) { AssignContents(PString(cstr)); return *this; } PINLINE PStringStream & PStringStream::operator=(char ch) { AssignContents(PString(ch)); return *this; } /////////////////////////////////////////////////////////////////////////////// PINLINE PCollection::PCollection(PINDEX initialSize) : PContainer(initialSize) { } PINLINE PCollection::PCollection(int dummy, const PCollection * c) : PContainer(dummy, c) { } PINLINE void PCollection::AllowDeleteObjects(BOOL yes) { reference->deleteObjects = yes; } PINLINE void PCollection::DisallowDeleteObjects() { AllowDeleteObjects(FALSE); } /////////////////////////////////////////////////////////////////////////////// PINLINE PArrayObjects::PArrayObjects(PINDEX initialSize) : theArray(PNEW ObjPtrArray(initialSize)) { } /////////////////////////////////////////////////////////////////////////////// PINLINE PINDEX PStringArray::AppendString(const PString & str) { return Append(str.Clone()); } PINLINE PStringArray & PStringArray::operator += (const PString & str) { Append(str.Clone()); return *this; } PINLINE PStringArray PStringArray::operator + (const PStringArray & v) { PStringArray arr = *this; arr += v; return arr; } PINLINE PStringArray PStringArray::operator + (const PString & v) { PStringArray arr = *this; arr += v; return arr; } PINLINE PINDEX PStringArray::GetStringsIndex(const PString & str) const { return GetValuesIndex(str); } /////////////////////////////////////////////////////////////////////////////// PINLINE PAbstractList::PAbstractList() : info(new Info) { PAssert(info != NULL, POutOfMemory); } PINLINE PObject & PAbstractList::GetReferenceAt(PINDEX index) const { PObject * obj = GetAt(index); PAssert(obj != NULL, PInvalidArrayIndex); return *obj; } /////////////////////////////////////////////////////////////////////////////// PINLINE PINDEX PStringList::AppendString(const PString & str) { return Append(str.Clone()); } PINLINE PINDEX PStringList::InsertString( const PString & before, const PString & str) { return Insert(before, str.Clone()); } PINLINE PStringList & PStringList::operator += (const PString & str) { Append(str.Clone()); return *this; } PINLINE PStringList PStringList::operator + (const PStringList & v) { PStringList arr = *this; arr += v; return arr; } PINLINE PStringList PStringList::operator + (const PString & v) { PStringList arr = *this; arr += v; return arr; } PINLINE PINDEX PStringList::GetStringsIndex(const PString & str) const { return GetValuesIndex(str); } /////////////////////////////////////////////////////////////////////////////// PINLINE PINDEX PSortedStringList::AppendString(const PString & str) { return Append(str.Clone()); } PINLINE PINDEX PSortedStringList::GetStringsIndex(const PString & str) const { return GetValuesIndex(str); } /////////////////////////////////////////////////////////////////////////////// PINLINE POrdinalKey::POrdinalKey(PINDEX newKey) : theKey(newKey) { } PINLINE POrdinalKey & POrdinalKey::operator=(PINDEX newKey) { theKey = newKey; return *this; } PINLINE POrdinalKey::operator PINDEX() const { return theKey; } PINLINE PINDEX POrdinalKey::operator++() { return ++theKey; } PINLINE PINDEX POrdinalKey::operator++(int) { return theKey++; } PINLINE PINDEX POrdinalKey::operator--() { return --theKey; } PINLINE PINDEX POrdinalKey::operator--(int) { return theKey--; } PINLINE POrdinalKey & POrdinalKey::operator+=(PINDEX add) { theKey += add; return *this; } PINLINE POrdinalKey & POrdinalKey::operator-=(PINDEX minus) { theKey -= minus; return *this; } /////////////////////////////////////////////////////////////////////////////// PINLINE BOOL PHashTable::AbstractContains(const PObject & key) const { return hashTable->GetElementAt(key) != NULL; } /////////////////////////////////////////////////////////////////////////////// PINLINE PAbstractSet::PAbstractSet() { hashTable->deleteKeys = reference->deleteObjects; } PINLINE void PStringSet::Include(const PString & str) { PAbstractSet::Append(str.Clone()); } PINLINE PStringSet & PStringSet::operator+=(const PString & str) { PAbstractSet::Append(str.Clone()); return *this; } PINLINE void PStringSet::Exclude(const PString & str) { PAbstractSet::Remove(&str); } PINLINE PStringSet & PStringSet::operator-=(const PString & str) { PAbstractSet::Remove(&str); return *this; } /////////////////////////////////////////////////////////////////////////////// PINLINE PAbstractDictionary::PAbstractDictionary() { hashTable->deleteKeys = TRUE; } PINLINE PAbstractDictionary::PAbstractDictionary(int dummy, const PAbstractDictionary * c) : PHashTable(dummy, c) { } // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/critsec.h0100644000176200056700000001731110366313334017745 0ustar releasepostincr/* * critsec.h * * Critical section mutex class. * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: critsec.h,v $ * Revision 1.15.2.1 2006/01/27 03:43:24 csoutheren * Backported changes to CVS head into Phobos * * Revision 1.16 2006/01/18 07:17:59 csoutheren * Added explicit copy constructor for PCriticalSection on Windows * * Revision 1.15 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.14 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.13 2005/11/14 22:29:13 csoutheren * Reverted Wait and Signal to non-const - there is no way we can guarantee that all * descendant classes everywhere will be changed over, so we have to keep the * original API * * Revision 1.12 2005/11/08 10:44:37 dsandras * Fixed deadlock with code using the old API. * * Revision 1.11 2005/11/04 07:20:30 csoutheren * Provide backwards compatibility functions and typedefs * * Revision 1.10 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.9 2004/05/16 23:31:07 csoutheren * Updated API documentation * * Revision 1.8 2004/05/12 04:36:13 csoutheren * Fixed problems with using sem_wait and friends on systems that do not * support atomic integers * * Revision 1.7 2004/04/21 11:22:56 csoutheren * Modified to work with gcc 3.4.0 * * Revision 1.6 2004/04/14 06:58:00 csoutheren * Fixed PAtomicInteger and PSmartPointer to use real atomic operations * * Revision 1.5 2004/04/12 03:35:26 csoutheren * Fixed problems with non-recursuve mutexes and critical sections on * older compilers and libc * * Revision 1.4 2004/04/12 00:58:45 csoutheren * Fixed PAtomicInteger on Linux, and modified PMutex to use it * * Revision 1.3 2004/04/12 00:36:04 csoutheren * Added new class PAtomicInteger and added Windows implementation * * Revision 1.2 2004/04/11 03:20:41 csoutheren * Added Unix implementation of PCriticalSection * * Revision 1.1 2004/04/11 02:55:17 csoutheren * Added PCriticalSection for Windows * Added compile time option for PContainer to use critical sections to provide thread safety under some circumstances * */ #ifndef _PCRITICALSECTION #define _PCRITICALSECTION #include #if P_HAS_ATOMIC_INT #if P_NEEDS_GNU_CXX_NAMESPACE #define EXCHANGE_AND_ADD(v,i) __gnu_cxx::__exchange_and_add(v,i) #else #define EXCHANGE_AND_ADD(v,i) __exchange_and_add(v,i) #endif #endif /** This class implements critical section mutexes using the most * efficient mechanism available on the host platform. * For Windows, CriticalSection is used. * On other platforms, the sem_wait call is used. */ class PCriticalSection : public PSync { PCLASSINFO(PCriticalSection, PSync); public: /**@name Construction */ //@{ /**Create a new critical section object . */ PCriticalSection(); PCriticalSection(const PCriticalSection &); /**Destroy the critical section object */ ~PCriticalSection(); //@} /**@name Operations */ //@{ /** Enter the critical section by waiting for exclusive access. */ void Wait(); inline void Enter() { Wait(); } /** Leave the critical section by unlocking the mutex */ void Signal(); inline void Leave() { Signal(); } //@} private: PCriticalSection & operator=(const PCriticalSection &) { return *this; } // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/critsec.h" #else #include "unix/ptlib/critsec.h" #endif }; typedef PWaitAndSignal PEnterAndLeave; /** This class implements an integer that can be atomically * incremented and decremented in a thread-safe manner. * On Windows, the integer is of type long and this class is implemented using InterlockedIncrement * and InterlockedDecrement integer is of type long. * On Unix systems with GNU std++ support for EXCHANGE_AND_ADD, the integer is of type _Atomic_word (normally int) * On all other systems, this class is implemented using PCriticalSection and the integer is of type int. */ class PAtomicInteger { #if defined(_WIN32) || defined(DOC_PLUS_PLUS) public: /** Create a PAtomicInteger with the specified initial value */ inline PAtomicInteger( long v = 0 ///< initial value ) : value(v) { } /** * Test if an atomic integer has a zero value. Note that this * is a non-atomic test - use the return value of the operator++() or * operator--() tests to perform atomic operations * * @return TRUE if the integer has a value of zero */ BOOL IsZero() const { return value == 0; } /** * atomically increment the integer value * * @return Returns the value of the integer after the increment */ inline long operator++() { return InterlockedIncrement(&value); } /** * atomically decrement the integer value * * @return Returns the value of the integer after the decrement */ inline long operator--() { return InterlockedDecrement(&value); } /** * @return Returns the value of the integer */ inline operator long () const { return value; } /** * Set the value of the integer */ inline void SetValue( long v ///< value to set ) { value = v; } protected: long value; #elif P_HAS_ATOMIC_INT public: inline PAtomicInteger(int v = 0) : value(v) { } BOOL IsZero() const { return value == 0; } inline int operator++() { return EXCHANGE_AND_ADD(&value, 1) + 1; } inline int unsigned operator--() { return EXCHANGE_AND_ADD(&value, -1) - 1; } inline operator int () const { return value; } inline void SetValue(int v) { value = v; } protected: _Atomic_word value; #else protected: PCriticalSection critSec; public: inline PAtomicInteger(int v = 0) : value(v) { } BOOL IsZero() const { return value == 0; } inline int operator++() { PWaitAndSignal m(critSec); value++; return value;} inline int operator--() { PWaitAndSignal m(critSec); value--; return value;} inline operator int () const { return value; } inline void SetValue(int v) { value = v; } private: PAtomicInteger & operator=(const PAtomicInteger & ref) { value = (int)ref; return *this; } protected: int value; #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/dict.h0100644000176200056700000013712010341504163017230 0ustar releasepostincr/* * dict.h * * Dictionary (hash table) Container classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: dict.h,v $ * Revision 1.35 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.34 2004/11/23 11:33:08 csoutheren * Fixed problem with RemoveAt returning invalid pointer in some cases, * and added extra documentation on this case. * Thanks to Diego Tartara for pointing out this potential problem * * Revision 1.33 2004/04/09 03:42:34 csoutheren * Removed all usages of "virtual inline" and "inline virtual" * * Revision 1.32 2004/04/03 23:53:09 csoutheren * Added various changes to improce compatibility with the Sun Forte compiler * Thanks to Brian Cameron * Added detection of readdir_r version * * Revision 1.31 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.30 2003/03/31 01:23:56 robertj * Added ReadFrom functions for standard container classes such as * PIntArray and PStringList etc * * Revision 1.29 2002/10/04 01:47:29 robertj * Added various increment and decrement operators to POrdinalKey. * * Revision 1.28 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.27 2002/06/14 13:22:12 robertj * Fixed ability to remove elements from a PSet by value. * Added by value add and remove functions to a PSet. * Added a POrdinalSet class. * Fixed some documentation. * * Revision 1.26 2002/02/06 00:53:25 robertj * Fixed missing const on PSet::Contains and operator[], thanks Francisco Olarte Sanz * * Revision 1.25 1999/11/30 00:22:54 robertj * Updated documentation for doc++ * * Revision 1.24 1999/08/22 12:13:43 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.23 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.22 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.21 1998/09/23 06:20:27 robertj * Added open source copyright license. * * Revision 1.20 1998/01/05 10:39:34 robertj * Fixed "typesafe" templates/macros for dictionaries, especially on GNU. * * Revision 1.19 1997/12/11 10:27:16 robertj * Added type correct Contains() function to dictionaries. * * Revision 1.18 1997/07/08 13:15:05 robertj * DLL support. * * Revision 1.17 1997/06/08 04:49:11 robertj * Fixed non-template class descendent order. * * Revision 1.16 1996/08/17 10:00:22 robertj * Changes for Windows DLL support. * * Revision 1.15 1996/03/31 08:44:10 robertj * Added RemoveAt() function to remove entries from dictionaries. * * Revision 1.14 1996/02/08 11:50:01 robertj * Moved Contains function from PSet to PHashTable so available for dictionaries. * Added print for dictionaries key=data\n. * Added GetAt(PINDEX) to template classes to make identical to macro. * * Revision 1.13 1996/02/03 11:00:28 robertj * Temporary removal of SetAt() and GetAt() functions in dictionary macro. * * Revision 1.12 1996/01/24 14:43:11 robertj * Added initialisers to string dictionaries. * * Revision 1.11 1996/01/23 13:11:12 robertj * Mac Metrowerks compiler support. * * Revision 1.10 1995/06/17 11:12:29 robertj * Documentation update. * * Revision 1.9 1995/06/04 08:45:57 robertj * Better C++ compatibility (with BC++) * * Revision 1.8 1995/03/14 12:41:19 robertj * Updated documentation to use HTML codes. * * Revision 1.7 1995/02/22 10:50:29 robertj * Changes required for compiling release (optimised) version. * * Revision 1.6 1995/02/11 04:10:35 robertj * Fixed dictionary MACRO for templates. * * Revision 1.5 1995/02/05 00:48:03 robertj * Fixed template version. * * Revision 1.4 1995/01/09 12:35:31 robertj * Removed unnecesary return value from I/O functions. * Changes due to Mac port. * * Revision 1.3 1994/12/21 11:52:51 robertj * Documentation and variable normalisation. * * Revision 1.2 1994/12/17 01:36:57 robertj * Fixed memory leak in PStringSet * * Revision 1.1 1994/12/12 09:59:32 robertj * Initial revision * */ #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // PDictionary classes /**This class is used when an ordinal index value is the key for #PSet# and #PDictionary# classes. */ class POrdinalKey : public PObject { PCLASSINFO(POrdinalKey, PObject); public: /**@name Construction */ //@{ /** Create a new key for ordinal index values. */ PINLINE POrdinalKey( PINDEX newKey = 0 ///< Ordinal index value to use as a key. ); /**Operator to assign the ordinal. */ PINLINE POrdinalKey & operator=(PINDEX); //@} /**@name Overrides from class PObject */ //@{ /// Create a duplicate of the POrdinalKey. virtual PObject * Clone() const; /* Get the relative rank of the ordinal index. This is a simpel comparison of the objects PINDEX values. @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare(const PObject & obj) const; /**This function calculates a hash table index value for the implementation of #PSet# and #PDictionary# classes. @return hash table bucket number. */ virtual PINDEX HashFunction() const; /**Output the ordinal index to the specified stream. This is identical to outputting the PINDEX, ie integer, value. @return stream that the index was output to. */ virtual void PrintOn(ostream & strm) const; //@} /**@name New functions for class */ //@{ /** Operator so that a POrdinalKey can be used as a PINDEX value. */ PINLINE operator PINDEX() const; /**Operator to pre-increment the ordinal. */ PINLINE PINDEX operator++(); /**Operator to post-increment the ordinal. */ PINLINE PINDEX operator++(int); /**Operator to pre-decrement the ordinal. */ PINLINE PINDEX operator--(); /**Operator to post-decrement the ordinal. */ PINLINE PINDEX operator--(int); /**Operator to add the ordinal. */ PINLINE POrdinalKey & operator+=(PINDEX); /**Operator to subtract from the ordinal. */ PINLINE POrdinalKey & operator-=(PINDEX ); //@} private: PINDEX theKey; }; ////////////////////////////////////////////////////////////////////////////// /**The hash table class is the basis for implementing the #PSet# and #PDictionary# classes. The hash table allows for very fast searches for an object based on a "hash function". This function yields an index into an array which is directly looked up to locate the object. When two key values have the same hash function value, then a linear search of a linked list is made to locate the object. Thus the efficiency of the hash table is highly dependent on the quality of the hash function for the data being used as keys. */ class PHashTable : public PCollection { PCONTAINERINFO(PHashTable, PCollection); public: /**@name Construction */ //@{ /// Create a new, empty, hash table. PHashTable(); //@} /**@name Overrides from class PObject */ //@{ /**Get the relative rank of the two hash tables. Actally ranking hash tables is really meaningless, so only equality is returned by the comparison. Equality is only achieved if the two instances reference the same hash table. @return comparison of the two objects, #EqualTo# if the same reference and #GreaterThan# if not. */ virtual Comparison Compare( const PObject & obj ///< Other PHashTable to compare against. ) const; //@} protected: /**@name Overrides from class PContainer */ //@{ /**This function is meaningless for hash table. The size of the collection is determined by the addition and removal of objects. The size cannot be set in any other way. @return Always TRUE. */ virtual BOOL SetSize( PINDEX newSize ///< New size for the hash table, this is ignored. ); //@} /**@name New functions for class */ //@{ /**Determine if the value of the object is contained in the hash table. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return TRUE if the object value is in the set. */ PINLINE BOOL AbstractContains( const PObject & key ///< Key to look for in the set. ) const; /**Get the key in the hash table at the ordinal index position. The ordinal position in the hash table is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. This function is primarily used by the descendent template classes, or macro, with the appropriate type conversion. @return reference to key at the index position. */ virtual const PObject & AbstractGetKeyAt( PINDEX index ///< Ordinal position in the hash table. ) const; /**Get the data in the hash table at the ordinal index position. The ordinal position in the hash table is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. This function is primarily used by the descendent template classes, or macro, with the appropriate type conversion. @return reference to key at the index position. */ virtual PObject & AbstractGetDataAt( PINDEX index ///< Ordinal position in the hash table. ) const; //@} // Member variables class Element { public: friend class Table; PObject * key; PObject * data; Element * next; Element * prev; }; PDECLARE_BASEARRAY(Table, Element *) #ifdef DOC_PLUS_PLUS { #endif public: virtual ~Table() { Destruct(); } virtual void DestroyContents(); PINDEX AppendElement(PObject * key, PObject * data); PObject * RemoveElement(const PObject & key); BOOL SetLastElementAt(PINDEX index); Element * GetElementAt(const PObject & key); PINDEX GetElementsIndex(const PObject*obj,BOOL byVal,BOOL keys) const; PINDEX lastIndex; PINDEX lastBucket; Element * lastElement; BOOL deleteKeys; friend class PHashTable; friend class PAbstractSet; }; friend class Table; Table * hashTable; }; ////////////////////////////////////////////////////////////////////////////// /** Abstract set of PObjects. */ class PAbstractSet : public PHashTable { PCONTAINERINFO(PAbstractSet, PHashTable); public: /**@name Construction */ //@{ /**Create a new, empty, set. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PINLINE PAbstractSet(); //@} /**@name Overrides from class PCollection */ //@{ /**Add a new object to the collection. If the objects value is already in the set then the object is {\bf not} included. If the #AllowDeleteObjects# option is set then the #obj# parameter is also deleted. @return hash function value of the newly added object. */ virtual PINDEX Append( PObject * obj ///< New object to place into the collection. ); /**Add a new object to the collection. If the objects value is already in the set then the object is {\bf not} included. If the AllowDeleteObjects option is set then the #obj# parameter is also deleted. The object is always placed in the an ordinal position dependent on its hash function. It is not placed at the specified position. The #before# parameter is ignored. @return hash function value of the newly added object. */ virtual PINDEX Insert( const PObject & before, ///< Object value to insert before. PObject * obj ///< New object to place into the collection. ); /**Add a new object to the collection. If the objects value is already in the set then the object is {\bf not} included. If the AllowDeleteObjects option is set then the #obj# parameter is also deleted. The object is always placed in the an ordinal position dependent on its hash function. It is not placed at the specified position. The #index# parameter is ignored. @return hash function value of the newly added object. */ virtual PINDEX InsertAt( PINDEX index, ///< Index position in collection to place the object. PObject * obj ///< New object to place into the collection. ); /**Remove the object from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note that the comparison for searching for the object in collection is made by pointer, not by value. Thus the parameter must point to the same instance of the object that is in the collection. @return TRUE if the object was in the collection. */ virtual BOOL Remove( const PObject * obj ///< Existing object to remove from the collection. ); /**Remove an object at the specified index. If the #AllowDeleteObjects# option is set then the object is also deleted. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PObject * RemoveAt( PINDEX index ///< Index position in collection to place the object. ); /**This function is the same as PHashTable::AbstractGetKeyAt(). @return Always NULL. */ virtual PObject * GetAt( PINDEX index ///< Index position in the collection of the object. ) const; /**Add a new object to the collection. If the objects value is already in the set then the object is {\bf not} included. If the AllowDeleteObjects option is set then the #obj# parameter is also deleted. The object is always placed in the an ordinal position dependent on its hash function. It is not placed at the specified position. The #index# parameter is ignored. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( PINDEX index, ///< Index position in collection to set. PObject * val ///< New value to place into the collection. ); /**Search the collection for the specific instance of the object. The object pointers are compared, not the values. The hash table is used to locate the entry. Note that that will require value comparisons to be made to find the equivalent entry and then a final check is made with the pointers to see if they are the same instance. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetObjectsIndex( const PObject * obj ///< Object to find. ) const; /**Search the collection for the specified value of the object. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetValuesIndex( const PObject & obj ///< Object to find equal value. ) const; //@} }; #ifdef PHAS_TEMPLATES /**This template class maps the PAbstractSet to a specific object type. The functions in this class primarily do all the appropriate casting of types. By default, objects placed into the set will {\bf not} be deleted when removed or when all references to the set are destroyed. This is different from the default on most collection classes. Note that if templates are not used the #PDECLARE_SET# macro will simulate the template instantiation. */ template class PSet : public PAbstractSet { PCLASSINFO(PSet, PAbstractSet); public: /**@name Construction */ //@{ /**Create a new, empty, dictionary. The parameter indicates whether to delete objects that are removed from the set. Note that by default, objects placed into the set will {\bf not} be deleted when removed or when all references to the set are destroyed. This is different from the default on most collection classes. */ inline PSet(BOOL initialDeleteObjects = FALSE) : PAbstractSet() { AllowDeleteObjects(initialDeleteObjects); } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the set. Note that all objects in the array are also cloned, so this will make a complete copy of the set. */ virtual PObject * Clone() const { return PNEW PSet(0, this); } //@} /**@name New functions for class */ //@{ /**Include the specified object into the set. If the objects value is already in the set then the object is {\bf not} included. If the AllowDeleteObjects option is set then the #obj# parameter is also deleted. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. */ void Include( const T * obj // New object to include in the set. ) { Append((PObject *)obj); } /**Include the specified objects value into the set. If the objects value is already in the set then the object is {\bf not} included. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. */ PSet & operator+=( const T & obj // New object to include in the set. ) { Append(obj.Clone()); return *this; } /**Remove the object from the set. If the AllowDeleteObjects option is set then the object is also deleted. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. */ void Exclude( const T * obj // New object to exclude in the set. ) { Remove(obj); } /**Remove the objects value from the set. If the AllowDeleteObjects option is set then the object is also deleted. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. */ PSet & operator-=( const T & obj // New object to exclude in the set. ) { RemoveAt(GetValuesIndex(obj)); return *this; } /**Determine if the value of the object is contained in the set. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return TRUE if the object value is in the set. */ BOOL Contains( const T & key ///< Key to look for in the set. ) const { return AbstractContains(key); } /**Determine if the value of the object is contained in the set. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return TRUE if the object value is in the set. */ BOOL operator[]( const T & key ///< Key to look for in the set. ) const { return AbstractContains(key); } /**Get the key in the set at the ordinal index position. The ordinal position in the set is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to key at the index position. */ virtual const T & GetKeyAt( PINDEX index ///< Index of value to get. ) const { return (const T &)AbstractGetKeyAt(index); } //@} protected: PSet(int dummy, const PSet * c) : PAbstractSet(dummy, c) { reference->deleteObjects = c->reference->deleteObjects; } }; /**Declare set class. This macro is used to declare a descendent of PAbstractSet class, customised for a particular object type {\bf T}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PSet# template class. See the #PSet# class and #PDECLARE_SET# macro for more information. */ #define PSET(cls, T) typedef PSet cls /**Begin declaration of a set class. This macro is used to declare a descendent of PAbstractSet class, customised for a particular object type {\bf T}. If the compilation is using templates then this macro produces a descendent of the #PSet# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PSet# and #PAbstractSet# classes for more information. */ #define PDECLARE_SET(cls, T, initDelObj) \ PSET(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls(BOOL initialDeleteObjects = initDelObj) \ : cls##_PTemplate(initialDeleteObjects) { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #else // PHAS_TEMPLATES #define PSET(cls, K) \ class cls : public PAbstractSet { \ PCLASSINFO(cls, PAbstractSet); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractSet(dummy, c) \ { reference->deleteObjects = c->reference->deleteObjects; } \ public: \ inline cls(BOOL initialDeleteObjects = FALSE) \ : PAbstractSet() { AllowDeleteObjects(initialDeleteObjects); } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ inline void Include(const PObject * key) \ { Append((PObject *)key); } \ inline void Exclude(const PObject * key) \ { Remove(key); } \ inline BOOL operator[](const K & key) const \ { return AbstractContains(key); } \ inline BOOL Contains(const K & key) const \ { return AbstractContains(key); } \ virtual const K & GetKeyAt(PINDEX index) const \ { return (const K &)AbstractGetKeyAt(index); } \ } #define PDECLARE_SET(cls, K, initDelObj) \ PSET(cls##_PTemplate, K); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ inline cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ inline cls(BOOL initialDeleteObjects = initDelObj) \ : cls##_PTemplate() { AllowDeleteObjects(initialDeleteObjects); } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #endif // PHAS_TEMPLATES PSET(POrdinalSet, POrdinalKey); ////////////////////////////////////////////////////////////////////////////// /**An abstract dictionary container. */ class PAbstractDictionary : public PHashTable { PCLASSINFO(PAbstractDictionary, PHashTable); public: /**@name Construction */ //@{ /**Create a new, empty, dictionary. Note that by default, objects placed into the dictionary will be deleted when removed or when all references to the dictionary are destroyed. */ PINLINE PAbstractDictionary(); //@} /**@name Overrides from class PObject */ //@{ /**Output the contents of the object to the stream. The exact output is dependent on the exact semantics of the descendent class. This is primarily used by the standard ##operator<<## function. The default behaviour is to print the class name. */ virtual void PrintOn( ostream &strm ///< Stream to print the object into. ) const; //@} /**@name Overrides from class PCollection */ //@{ /**Insert a new object into the dictionary. The semantics of this function is different from that of the #PCollection# class. This function is exactly equivalent to the SetAt() function that sets a data value at the key value location. @return Always zero. */ virtual PINDEX Insert( const PObject & key, ///< Object value to use as the key. PObject * obj ///< New object to place into the collection. ); /**Insert a new object at the specified index. The index is as is used in the #GetKeyAt()# function. @return #index# parameter. */ virtual PINDEX InsertAt( PINDEX index, ///< Index position in collection to place the object. PObject * obj ///< New object to place into the collection. ); /**Remove an object at the specified index. The index is as is used in the #GetKeyAt()# function. The returned pointer is then removed using the #SetAt()# function to set that key value to NULL. If the #AllowDeleteObjects# option is set then the object is also deleted. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PObject * RemoveAt( PINDEX index ///< Index position in collection to place the object. ); /**Set the object at the specified index to the new value. The index is as is used in the #GetKeyAt()# function. This will overwrite the existing entry. If the AllowDeleteObjects option is set then the old object is also deleted. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( PINDEX index, ///< Index position in collection to set. PObject * val ///< New value to place into the collection. ); /**Get the object at the specified index position. The index is as is used in the #GetKeyAt()# function. If the index was not in the collection then NULL is returned. @return pointer to object at the specified index. */ virtual PObject * GetAt( PINDEX index ///< Index position in the collection of the object. ) const; /**Search the collection for the specific instance of the object. The object pointers are compared, not the values. The hash table is used to locate the entry. Note that that will require value comparisons to be made to find the equivalent entry and then a final check is made with the pointers to see if they are the same instance. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetObjectsIndex( const PObject * obj ///< Object to find. ) const; /**Search the collection for the specified value of the object. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetValuesIndex( const PObject & obj ///< Object to find value of. ) const; //@} /**@name New functions for class */ //@{ /**Set the data at the specified ordinal index position in the dictionary. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. @return TRUE if the new object could be placed into the dictionary. */ virtual BOOL SetDataAt( PINDEX index, ///< Ordinal index in the dictionary. PObject * obj ///< New object to put into the dictionary. ); /**Add a new object to the collection. If the objects value is already in the dictionary then the object is overrides the previous value. If the AllowDeleteObjects option is set then the old object is also deleted. The object is placed in the an ordinal position dependent on the keys hash function. Subsequent searches use the has function to speed access to the data item. @return TRUE if the object was successfully added. */ virtual BOOL AbstractSetAt( const PObject & key, ///< Key for position in dictionary to add object. PObject * obj ///< New object to put into the dictionary. ); /**Get the object at the specified key position. If the key was not in the collection then this function asserts. This function is primarily for use by the #operator[]# function is descendent template classes. @return reference to object at the specified key. */ virtual PObject & GetRefAt( const PObject & key ///< Key for position in dictionary to get object. ) const; /**Get the object at the specified key position. If the key was not in the collection then NULL is returned. @return pointer to object at the specified key. */ virtual PObject * AbstractGetAt( const PObject & key ///< Key for position in dictionary to get object. ) const; //@} protected: PINLINE PAbstractDictionary(int dummy, const PAbstractDictionary * c); private: virtual PINDEX Append( PObject * obj // New object to place into the collection. ); /* This function is meaningless and will assert. @return Always zero. */ virtual BOOL Remove( const PObject * obj // Existing object to remove from the collection. ); /* Remove the object from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note that the comparison for searching for the object in collection is made by pointer, not by value. Thus the parameter must point to the same instance of the object that is in the collection. @return TRUE if the object was in the collection. */ }; #ifdef PHAS_TEMPLATES /**This template class maps the PAbstractDictionary to a specific key and data types. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PDECLARE_DICTIONARY# macro will simulate the template instantiation. */ template class PDictionary : public PAbstractDictionary { PCLASSINFO(PDictionary, PAbstractDictionary); public: /**@name Construction */ //@{ /**Create a new, empty, dictionary. Note that by default, objects placed into the dictionary will be deleted when removed or when all references to the dictionary are destroyed. */ PDictionary() : PAbstractDictionary() { } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the dictionary. Note that all objects in the array are also cloned, so this will make a complete copy of the dictionary. */ virtual PObject * Clone() const { return PNEW PDictionary(0, this); } //@} /**@name New functions for class */ //@{ /**Get the object contained in the dictionary at the #key# position. The hash table is used to locate the data quickly via the hash function provided by the #key#. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to the object indexed by the key. */ D & operator[]( const K & key ///< Key to look for in the dictionary. ) const { return (D &)GetRefAt(key); } /**Determine if the value of the object is contained in the hash table. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return TRUE if the object value is in the dictionary. */ BOOL Contains( const K & key ///< Key to look for in the dictionary. ) const { return AbstractContains(key); } /**Remove an object at the specified key. The returned pointer is then removed using the #SetAt()# function to set that key value to NULL. If the #AllowDeleteObjects# option is set then the object is also deleted. @return pointer to the object being removed, or NULL if the key was not present in the dictionary. If the dictionary is set to delete objects upon removal, the value -1 is returned if the key existed prior to removal rather than returning an illegal pointer */ virtual D * RemoveAt( const K & key ///< Key for position in dictionary to get object. ) { D * obj = GetAt(key); AbstractSetAt(key, NULL); return reference->deleteObjects ? (obj ? (D *)-1 : NULL) : obj; } /**Add a new object to the collection. If the objects value is already in the dictionary then the object is overrides the previous value. If the AllowDeleteObjects option is set then the old object is also deleted. The object is placed in the an ordinal position dependent on the keys hash function. Subsequent searches use the has function to speed access to the data item. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( const K & key, // Key for position in dictionary to add object. D * obj // New object to put into the dictionary. ) { return AbstractSetAt(key, obj); } /**Get the object at the specified key position. If the key was not in the collection then NULL is returned. @return pointer to object at the specified key. */ virtual D * GetAt( const K & key // Key for position in dictionary to get object. ) const { return (D *)AbstractGetAt(key); } /**Get the key in the dictionary at the ordinal index position. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to key at the index position. */ const K & GetKeyAt( PINDEX index ///< Ordinal position in dictionary for key. ) const { return (const K &)AbstractGetKeyAt(index); } /**Get the data in the dictionary at the ordinal index position. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to data at the index position. */ D & GetDataAt( PINDEX index ///< Ordinal position in dictionary for data. ) const { return (D &)AbstractGetDataAt(index); } //@} protected: PDictionary(int dummy, const PDictionary * c) : PAbstractDictionary(dummy, c) { } }; /**Declare a dictionary class. This macro is used to declare a descendent of PAbstractDictionary class, customised for a particular key type {\bf K} and data object type {\bf D}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PDictionary# template class. See the #PDictionary# class and #PDECLARE_DICTIONARY# macro for more information. */ #define PDICTIONARY(cls, K, D) typedef PDictionary cls /**Begin declaration of dictionary class. This macro is used to declare a descendent of PAbstractDictionary class, customised for a particular key type {\bf K} and data object type {\bf D}. If the compilation is using templates then this macro produces a descendent of the #PDictionary# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PDictionary# and #PAbstractDictionary# classes for more information. */ #define PDECLARE_DICTIONARY(cls, K, D) \ PDICTIONARY(cls##_PTemplate, K, D); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ /**This template class maps the #PAbstractDictionary# to a specific key type and a #POrdinalKey# data type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PDECLARE_ORDINAL_DICTIONARY# macro will simulate the template instantiation. */ template class POrdinalDictionary : public PAbstractDictionary { PCLASSINFO(POrdinalDictionary, PAbstractDictionary); public: /**@name Construction */ //@{ /**Create a new, empty, dictionary. Note that by default, objects placed into the dictionary will be deleted when removed or when all references to the dictionary are destroyed. */ POrdinalDictionary() : PAbstractDictionary() { } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the dictionary. Note that all objects in the array are also cloned, so this will make a complete copy of the dictionary. */ virtual PObject * Clone() const { return PNEW POrdinalDictionary(0, this); } //@} /**@name New functions for class */ //@{ /**Get the object contained in the dictionary at the #key# position. The hash table is used to locate the data quickly via the hash function provided by the key. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to the object indexed by the key. */ PINDEX operator[]( const K & key // Key to look for in the dictionary. ) const { return (POrdinalKey &)GetRefAt(key); } /**Determine if the value of the object is contained in the hash table. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return TRUE if the object value is in the dictionary. */ BOOL Contains( const K & key ///< Key to look for in the dictionary. ) const { return AbstractContains(key); } virtual POrdinalKey * GetAt( const K & key ///< Key for position in dictionary to get object. ) const { return (POrdinalKey *)AbstractGetAt(key); } /* Get the object at the specified key position. If the key was not in the collection then NULL is returned. @return pointer to object at the specified key. */ /**Set the data at the specified ordinal index position in the dictionary. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. @return TRUE if the new object could be placed into the dictionary. */ virtual BOOL SetDataAt( PINDEX index, ///< Ordinal index in the dictionary. PINDEX ordinal ///< New ordinal value to put into the dictionary. ) { return PAbstractDictionary::SetDataAt(index, PNEW POrdinalKey(ordinal)); } /**Add a new object to the collection. If the objects value is already in the dictionary then the object is overrides the previous value. If the AllowDeleteObjects option is set then the old object is also deleted. The object is placed in the an ordinal position dependent on the keys hash function. Subsequent searches use the has function to speed access to the data item. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( const K & key, ///< Key for position in dictionary to add object. PINDEX ordinal ///< New ordinal value to put into the dictionary. ) { return AbstractSetAt(key, PNEW POrdinalKey(ordinal)); } /**Remove an object at the specified key. The returned pointer is then removed using the #SetAt()# function to set that key value to NULL. If the #AllowDeleteObjects# option is set then the object is also deleted. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PINDEX RemoveAt( const K & key ///< Key for position in dictionary to get object. ) { PINDEX ord = *GetAt(key); AbstractSetAt(key, NULL); return ord; } /**Get the key in the dictionary at the ordinal index position. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to key at the index position. */ const K & GetKeyAt( PINDEX index ///< Ordinal position in dictionary for key. ) const { return (const K &)AbstractGetKeyAt(index); } /**Get the data in the dictionary at the ordinal index position. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to data at the index position. */ PINDEX GetDataAt( PINDEX index ///< Ordinal position in dictionary for data. ) const { return (POrdinalKey &)AbstractGetDataAt(index); } //@} protected: POrdinalDictionary(int dummy, const POrdinalDictionary * c) : PAbstractDictionary(dummy, c) { } }; /**Declare an ordinal dictionary class. This macro is used to declare a descendent of PAbstractDictionary class, customised for a particular key type {\bf K} and data object type of #POrdinalKey#. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #POrdinalDictionary# template class. See the #POrdinalDictionary# class and #PDECLARE_ORDINAL_DICTIONARY# macro for more information. */ #define PORDINAL_DICTIONARY(cls, K) typedef POrdinalDictionary cls /**Begin declaration of an ordinal dictionary class. This macro is used to declare a descendent of PAbstractList class, customised for a particular key type {\bf K} and data object type of #POrdinalKey#. If the compilation is using templates then this macro produces a descendent of the #POrdinalDictionary# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #POrdinalDictionary# and #PAbstractDictionary# classes for more information. */ #define PDECLARE_ORDINAL_DICTIONARY(cls, K) \ PORDINAL_DICTIONARY(cls##_PTemplate, K); \ PDECLARE_CLASS(cls, POrdinalDictionary) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #else // PHAS_TEMPLATES #define PDICTIONARY(cls, K, D) \ class cls : public PAbstractDictionary { \ PCLASSINFO(cls, PAbstractDictionary); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractDictionary(dummy, c) { } \ public: \ cls() \ : PAbstractDictionary() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ D & operator[](const K & key) const \ { return (D &)GetRefAt(key); } \ virtual BOOL Contains(const K & key) const \ { return AbstractContains(key); } \ virtual D * RemoveAt(const K & key) \ { D * obj = GetAt(key); AbstractSetAt(key, NULL); return obj; } \ virtual BOOL SetAt(const K & key, D * obj) \ { return AbstractSetAt(key, obj); } \ virtual D * GetAt(const K & key) const \ { return (D *)AbstractGetAt(key); } \ const K & GetKeyAt(PINDEX index) const \ { return (const K &)AbstractGetKeyAt(index); } \ D & GetDataAt(PINDEX index) const \ { return (D &)AbstractGetDataAt(index); } \ } #define PDECLARE_DICTIONARY(cls, K, D) \ PDICTIONARY(cls##_PTemplate, K, D); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #define PORDINAL_DICTIONARY(cls, K) \ class cls : public PAbstractDictionary { \ PCLASSINFO(cls, PAbstractDictionary); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractDictionary(dummy, c) { } \ public: \ inline cls() \ : PAbstractDictionary() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ inline PINDEX operator[](const K & key) const \ { return (POrdinalKey &)GetRefAt(key); } \ virtual BOOL Contains(const K & key) const \ { return AbstractContains(key); } \ virtual POrdinalKey * GetAt(const K & key) const \ { return (POrdinalKey *)AbstractGetAt(key); } \ virtual BOOL SetDataAt(PINDEX index, PINDEX ordinal) \ { return PAbstractDictionary::SetDataAt(index, PNEW POrdinalKey(ordinal)); } \ virtual BOOL SetAt(const K & key, PINDEX ordinal) \ { return AbstractSetAt(key, PNEW POrdinalKey(ordinal)); } \ virtual PINDEX RemoveAt(const K & key) \ { PINDEX ord = *GetAt(key); AbstractSetAt(key, NULL); return ord; } \ inline const K & GetKeyAt(PINDEX index) const \ { return (const K &)AbstractGetKeyAt(index); } \ inline PINDEX GetDataAt(PINDEX index) const \ { return (POrdinalKey &)AbstractGetDataAt(index); } \ } #define PDECLARE_ORDINAL_DICTIONARY(cls, K) \ PORDINAL_DICTIONARY(cls##_PTemplate, K); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #endif // PHAS_TEMPLATES // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/dynalink.h0100644000176200056700000001310310341504163020110 0ustar releasepostincr/* * dynalink.h * * Dynamic Link Library abstraction class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: dynalink.h,v $ * Revision 1.17 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.16 2004/07/11 07:56:35 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.15 2004/02/22 02:38:33 ykiryanov * Removed ifndef BEOS when declaring PDynalink * * Revision 1.14 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.13 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.12 2003/05/14 00:42:32 rjongbloed * Added missing virtual keyword to PDynaLink functions. * * Revision 1.11 2003/01/24 10:21:06 robertj * Fixed issues in RTEMS support, thanks Vladimir Nesic * * Revision 1.10 2002/10/10 04:43:43 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.9 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.8 2001/06/30 06:59:06 yurik * Jac Goudsmit from Be submit these changes 6/28. Implemented by Yuri Kiryanov * * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.5 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.4 1998/09/23 06:20:29 robertj * Added open source copyright license. * * Revision 1.3 1997/06/16 13:15:52 robertj * Added function to get a dyna-link libraries name. * * Revision 1.2 1997/06/08 04:49:20 robertj * Added DLL file extension string function. * * Revision 1.1 1995/03/14 12:44:08 robertj * Initial revision * */ #ifndef _PDYNALINK #define _PDYNALINK #if !defined(P_RTEMS) #ifdef P_USE_PRAGMA #pragma interface #endif /**A dynamic link library. This allows the loading at run time of code modules for use by an application. */ class PDynaLink : public PObject { PCLASSINFO(PDynaLink, PObject); public: /**@name Construction */ //@{ /**Create a new dyna-link, loading the specified module. The first, parameterless, form does load a library. */ PDynaLink(); /**Create a new dyna-link, loading the specified module. The first, parameterless, form does load a library. */ PDynaLink( const PString & name ///< Name of the dynamically loadable module. ); /**Destroy the dyna-link, freeing the module. */ ~PDynaLink(); //@} /**@name Load/Unload function */ //@{ /* Open a new dyna-link, loading the specified module. @return TRUE if the library was loaded. */ virtual BOOL Open( const PString & name ///< Name of the dynamically loadable module. ); /**Close the dyna-link library. */ virtual void Close(); /**Dyna-link module is loaded and may be accessed. */ virtual BOOL IsLoaded() const; /**Get the name of the loaded library. If the library is not loaded this may return an empty string. If #full# is TRUE then the full pathname of the library is returned otherwise only the name part is returned. @return String for the library name. */ virtual PString GetName( BOOL full = FALSE ///< Flag for full or short path name ) const; /**Get the extension used by this platform for dynamic link libraries. @return String for file extension. */ static PString GetExtension(); //@} /**@name DLL entry point functions */ //@{ /// Primitive pointer to a function for a dynamic link module. typedef void (*Function)(); /**Get a pointer to the function in the dynamically loadable module. @return TRUE if function was found. */ BOOL GetFunction( PINDEX index, ///< Ordinal number of the function to get. Function & func ///< Refrence to point to function to get. ); /**Get a pointer to the function in the dynamically loadable module. @return TRUE if function was found. */ BOOL GetFunction( const PString & name, ///< Name of the function to get. Function & func ///< Refrence to point to function to get. ); //@} // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/dynalink.h" #else #include "unix/ptlib/dynalink.h" #endif }; #endif // !defined(P_RTEMS) #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/ethsock.h0100644000176200056700000003366310341504163017754 0ustar releasepostincr/* * ethsock.h * * Direct Ethernet socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ethsock.h,v $ * Revision 1.18 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.17 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.16 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.15 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.14 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.13 2001/10/03 03:15:05 robertj * Changed to allow use of NULL pointer to indicate address of all zeros. * * Revision 1.12 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.11 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.10 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.9 1998/11/20 03:18:24 robertj * Split rad and write buffers to separate pools. * * Revision 1.8 1998/11/19 05:18:21 robertj * Added route table manipulation functions to PIPSocket class. * * Revision 1.7 1998/10/12 09:34:40 robertj * New method for getting IP addresses of interfaces. * * Revision 1.6 1998/09/23 06:20:31 robertj * Added open source copyright license. * * Revision 1.5 1998/09/14 12:27:21 robertj * Added function to parse type out of ethernet/802.2 frame. * * Revision 1.4 1998/08/25 11:06:34 robertj * Fixed output of PEthSocket::Address variables to streams. * * Revision 1.3 1998/08/22 04:07:42 robertj * Fixed GNU problem with structure packing * * Revision 1.2 1998/08/21 05:26:34 robertj * Fine tuning of interface. * * Revision 1.1 1998/08/20 05:46:45 robertj * Initial revision * */ #ifndef _PETHSOCKET #define _PETHSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include #ifdef _WIN32 class PWin32PacketDriver; class PWin32SnmpLibrary; class PWin32PacketBuffer; PARRAY(PWin32PackBufArray, PWin32PacketBuffer); #endif /**This class describes a type of socket that will communicate using raw ethernet packets. */ class PEthSocket : public PSocket { PCLASSINFO(PEthSocket, PSocket); public: /**@name Constructor */ //@{ /**Create a new ethernet packet socket. Some platforms require a set of buffers to be allocated to avoid losing frequent packets. */ PEthSocket( PINDEX nReadBuffers = 8, ///< Number of buffers used for reading. PINDEX nWriteBuffers = 1, ///< Number of buffers used for writing. PINDEX size = 1514 ///< Size of each buffer. ); /// Close the socket ~PEthSocket(); //@} public: #pragma pack(1) /** An ethernet MAC Address specification. */ union Address { BYTE b[6]; WORD w[3]; struct { DWORD l; WORD s; } ls; Address(); Address(const BYTE * addr); Address(const Address & addr); Address(const PString & str); Address & operator=(const Address & addr); Address & operator=(const PString & str); bool operator==(const BYTE * eth) const; bool operator!=(const BYTE * eth) const; bool operator==(const Address & eth) const { return ls.l == eth.ls.l && ls.s == eth.ls.s; } bool operator!=(const Address & eth) const { return ls.l != eth.ls.l || ls.s != eth.ls.s; } operator PString() const; friend ostream & operator<<(ostream & s, const Address & a) { return s << (PString)a; } }; /** An ethernet MAC frame. */ struct Frame { Address dst_addr; Address src_addr; union { struct { WORD type; BYTE payload[1500]; } ether; struct { WORD length; BYTE dsap; BYTE ssap; BYTE ctrl; BYTE oui[3]; WORD type; BYTE payload[1492]; } snap; }; /**Parse the Ethernet Frame to extract the frame type and the address of the payload. The length should be the original bytes read in the frame and may be altered to information contained in the frame, if available. */ void Parse( WORD & type, // Type of frame BYTE * & payload, // Pointer to payload PINDEX & length // Length of payload (on input is full frame length) ); }; #pragma pack() /**@name Overrides from class PChannel */ //@{ /**Close the channel, shutting down the link to the data source. @return TRUE if the channel successfully closed. */ virtual BOOL Close(); /**Low level read from the channel. This function may block until the requested number of characters were read or the read timeout was reached. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); //@} /**@name Overrides from class PSocket */ //@{ /**Connect a socket to an interface. The first form opens an interface by a name as returned by the EnumInterfaces() function. The second opens the interface that has the specified MAC address. @return TRUE if the channel was successfully connected to the interface. */ virtual BOOL Connect( const PString & address ///< Name of interface to connect to. ); /**This function is illegal and will assert if attempted. You must be connected to an interface using Connect() to do I/O on the socket. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Cant listen more than once. ); //@} /**@name Information functions */ //@{ /**Enumerate all the interfaces that are capable of being accessed at the ethernet level. Begin with index 0, and increment until the function returns FALSE. The name string returned can be passed, unchanged, to the Connect() function. Note that the driver does not need to be open for this function to work. @return TRUE if an interface has the index supplied. */ BOOL EnumInterfaces( PINDEX idx, ///< Index of interface PString & name ///< Interface name ); /**Get the low level MAC address of the open interface. @return TRUE if the address is returned, FALSE on error. */ BOOL GetAddress( Address & addr ///< Variable to receive the MAC address. ); /**Get the prime IP number bound to the open interface. @return TRUE if the address is returned, FALSE on error. */ BOOL GetIpAddress( PIPSocket::Address & addr ///< Variable to receive the IP address. ); /**Get the prime IP number bound to the open interface. This also returns the net mask associated with the open interface. @return TRUE if the address is returned, FALSE on error. */ BOOL GetIpAddress( PIPSocket::Address & addr, ///< Variable to receive the IP address. PIPSocket::Address & netMask ///< Variable to receive the net mask. ); /**Enumerate all of the IP addresses and net masks bound to the open interface. This allows all the addresses to be found on multi-homed hosts. Begin with index 0 and increment until the function returns FALSE to enumerate all the addresses. @return TRUE if the address is returned, FALSE on error or if there are no more addresses bound to the interface. */ BOOL EnumIpAddress( PINDEX idx, ///< Index PIPSocket::Address & addr, ///< Variable to receive the IP address. PIPSocket::Address & netMask ///< Variable to receive the net mask. ); /// Medium types for the open interface. enum MediumTypes { /// A Loopback Network MediumLoop, /// An ethernet Network Interface Card (10base2, 10baseT etc) Medium802_3, /// A Wide Area Network (modem etc) MediumWan, /// Something else MediumUnknown, NumMediumTypes }; /**Return the type of the interface. @return Type enum for the interface, or NumMediumTypes if interface not open. */ MediumTypes GetMedium(); //@} /**@name Filtering functions */ //@{ /// Type codes for ethernet frames. enum EthTypes { /// All frames (3 is value for Linux) TypeAll = 3, /// Internet Protocol TypeIP = 0x800, /// X.25 TypeX25 = 0x805, /// Address Resolution Protocol TypeARP = 0x806, /// Appletalk DDP TypeAtalk = 0x809B, /// Appletalk AARP TypeAARP = 0x80F3, /// Novell IPX TypeIPX = 0x8137, /// Bluebook IPv6 TypeIPv6 = 0x86DD }; /// Mask filter bits for GetFilter() function. enum FilterMask { /// Packets directed at the interface. FilterDirected = 0x01, /// Multicast packets directed at the interface. FilterMulticast = 0x02, /// All multicast packets. FilterAllMulticast = 0x04, /// Packets with a broadcast address. FilterBroadcast = 0x08, /// All packets. FilterPromiscuous = 0x10 }; /**Get the current filtering criteria for receiving packets. A bit-wise OR of the FilterMask values will filter packets so that they do not appear in the Read() function at all. The type is be the specific frame type to accept. A value of TypeAll may be used to match all frame types. @return A bit mask is returned, a value of 0 indicates an error. */ BOOL GetFilter( unsigned & mask, ///< Bits for filtering on address WORD & type ///< Code for filtering on type. ); /**Set the current filtering criteria for receiving packets. A bit-wise OR of the FilterMask values will filter packets so that they do not appear in the Read() function at all. The type is be the specific frame type to accept. A value of TypeAll may be used to match all frame types. A value of zero for the filter mask is useless and will assert. @return TRUE if the address is returned, FALSE on error. */ BOOL SetFilter( unsigned mask, ///< Bits for filtering on address WORD type = TypeAll ///< Code for filtering on type. ); //@} /**@name I/O functions */ //@{ /**Reset the interface. */ BOOL ResetAdaptor(); /**Read a packet from the interface and parse out the information specified by the parameters. This will automatically adjust for 802.2 and 802.3 ethernet frames. @return TRUE if the packet read, FALSE on error. */ BOOL ReadPacket( PBYTEArray & buffer, ///< Buffer to receive the raw packet Address & dest, ///< Destination address of packet Address & src, ///< Source address of packet WORD & type, ///< Packet frame type ID PINDEX & len, ///< Length of payload BYTE * & payload ///< Pointer into #buffer# of payload. ); //@} protected: virtual BOOL OpenSocket(); virtual const char * GetProtocolName() const; WORD filterType; // Remember the set filter frame type // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/ethsock.h" #else #include "unix/ptlib/ethsock.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/file.h0100644000176200056700000005572210341504163017233 0ustar releasepostincr/* * file.h * * Operating System file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: file.h,v $ * Revision 1.43 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.42 2003/09/26 09:58:50 rogerhardiman * Move #include from the unix file.h to the main file.h * FreeBSD's sys/stat.h includes extern "C" for some prototypes and you * cannot have an extern "C" in the middle of a C++ class * * Revision 1.41 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.40 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.39 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.38 2002/07/02 08:00:55 craigs * Also made GetPosition, SetPosition and SetLength virtual as well * * Revision 1.37 2002/07/02 07:59:42 craigs * Added virtual to GetLength call * * Revision 1.36 2002/01/13 20:54:55 rogerh * Make the other Open() virtual so it can be overridden (eg in PWAVFile) * * Revision 1.35 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.34 2000/09/27 05:58:07 craigs * Added virtual to PFile::Open to allow overriding in descandant classes * * Revision 1.33 2000/07/09 14:05:46 robertj * Added file share options. * * Revision 1.32 1999/06/13 13:54:07 robertj * Added PConsoleChannel class for access to stdin/stdout/stderr. * * Revision 1.31 1999/06/09 02:05:20 robertj * Added ability to open file as standard input, output and error streams. * * Revision 1.30 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.29 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.28 1998/09/23 06:20:35 robertj * Added open source copyright license. * * Revision 1.27 1995/07/31 12:15:43 robertj * Removed PContainer from PChannel ancestor. * * Revision 1.26 1995/06/17 11:12:33 robertj * Documentation update. * * Revision 1.25 1995/04/22 00:43:57 robertj * Added Move() function and changed semantics of Rename(). * Changed all file name strings to PFilePath objects. * * Revision 1.24 1995/03/14 12:41:23 robertj * Updated documentation to use HTML codes. * * Revision 1.23 1995/03/12 04:37:13 robertj * Moved GetHandle() function from PFile to PChannel. * * Revision 1.22 1995/01/14 06:22:11 robertj * Documentation * * Revision 1.21 1994/12/21 11:52:54 robertj * Documentation and variable normalisation. * * Revision 1.20 1994/08/23 11:32:52 robertj * Oops * * Revision 1.19 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.18 1994/08/21 23:43:02 robertj * Added "remove on close" feature for temporary files. * Added "force" option to Remove/Rename etc to override write protection. * Added function to set file permissions. * * Revision 1.17 1994/07/17 10:46:06 robertj * Moved data to platform dependent files. * * Revision 1.16 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.15 1994/04/20 12:17:44 robertj * Split name into PFilePath * * Revision 1.14 1994/04/01 14:11:03 robertj * Added const to functions. * Added SetName function. * * Revision 1.13 1994/03/07 07:38:19 robertj * Major enhancementsacross the board. * * Revision 1.12 1994/01/13 03:40:22 robertj * Added hidden flag to file info. * * Revision 1.12 1994/01/13 03:36:48 robertj * Created intermediate class PInteractorLayout for dialog-ish windows. * * Revision 1.11 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.10 1993/12/31 06:45:38 robertj * Made inlines optional for debugging purposes. * * Revision 1.9 1993/09/27 16:35:25 robertj * Changed GetName() to GetTitle(), better naming convention. * Moved internal functions to private section. * * Revision 1.8 1993/08/31 03:38:02 robertj * Changed PFile::Status to PFile::Info due to X-Windows compatibility. * * Revision 1.7 1993/08/27 18:17:47 robertj * Moved code from MS-DOS platform to common files. * * Revision 1.6 1993/08/21 04:40:19 robertj * Added Copy() function. * * Revision 1.5 1993/08/21 01:50:33 robertj * Made Clone() function optional, default will assert if called. * * Revision 1.4 1993/08/01 14:05:27 robertj * Added GetFileName() function required for proper portability. * Improved some comments. * * Revision 1.3 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PFILE #define _PFILE #ifdef P_USE_PRAGMA #pragma interface #endif #ifndef _WIN32 #include #endif /////////////////////////////////////////////////////////////////////////////// // Binary Files /**This class represents a disk file. This is a particular type of I/O channel that has certain attributes. All platforms have a disk file, though exact details of naming convertions etc may be different. The basic model for files is that they are a named sequence of bytes that persists within a directory structure. The transfer of data to and from the file is made at a current position in the file. This may be set to random locations within the file. */ class PFile : public PChannel { PCLASSINFO(PFile, PChannel); public: /**@name Construction */ //@{ /**Create a file object but do not open it. It does not initially have a valid file name. However, an attempt to open the file using the #Open()# function will generate a unique temporary file. */ PFile(); /**When a file is opened, it may restrict the access available to operations on the object instance. A value from this enum is passed to the #Open()# function to set the mode. */ enum OpenMode { /// File can be read but not written. ReadOnly, /// File can be written but not read. WriteOnly, /// File can be both read and written. ReadWrite }; /**When a file is opened, a number of options may be associated with the open file. These describe what action to take on opening the file and what to do on closure. A value from this enum is passed to the #Open()# function to set the options. The #ModeDefault# option will use the following values: \begin{tabular}{rr} Mode & Options \\ \hline #ReadOnly# & #MustExist# \\ #WriteOnly# & #Create | Truncate# \\ #ReadWrite# & #Create# \\ \hline \end{tabular} */ enum OpenOptions { /// File options depend on the OpenMode parameter. ModeDefault = -1, /// File open fails if file does not exist. MustExist = 0, /// File is created if it does not exist. Create = 1, /// File is set to zero length if it already exists. Truncate = 2, /// File open fails if file already exists. Exclusive = 4, /// File is temporary and is to be deleted when closed. Temporary = 8, /// File may not be read by another process. DenySharedRead = 16, /// File may not be written by another process. DenySharedWrite = 32 }; /**Create a unique temporary file name, and open the file in the specified mode and using the specified options. Note that opening a new, unique, temporary file name in ReadOnly mode will always fail. This would only be usefull in a mode and options that will create the file. The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PFile( OpenMode mode, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); /**Create a file object with the specified name and open it in the specified mode and with the specified options. The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PFile( const PFilePath & name, ///< Name of file to open. OpenMode mode = ReadWrite, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); /// Close the file on destruction. ~PFile(); //@} /**@name Overrides from class PObject */ //@{ /**Determine the relative rank of the two objects. This is essentially the string comparison of the #PFilePath# names of the files. @return relative rank of the file paths. */ Comparison Compare( const PObject & obj ///< Other file to compare against. ) const; //@} /**@name Overrides from class PChannel */ //@{ /**Get the platform and I/O channel type name of the channel. For example, it would return the filename in #PFile# type channels. @return the name of the channel. */ virtual PString GetName() const; /**Low level read from the file channel. The read timeout is ignored for file I/O. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the file channel. The write timeout is ignored for file I/O. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** Close the file channel. @return TRUE if close was OK. */ virtual BOOL Close(); //@} /**@name File manipulation functions */ //@{ /**Check for file existance. Determine if the file specified actually exists within the platforms file system. @return TRUE if the file exists. */ static BOOL Exists( const PFilePath & name ///< Name of file to see if exists. ); /**Check for file existance. Determine if the file path specification associated with the instance of the object actually exists within the platforms file system. @return TRUE if the file exists. */ BOOL Exists() const; /**Check for file access modes. Determine if the file specified may be opened in the specified mode. This would check the current access rights to the file for the mode. For example, for a file that is read only, using mode == ReadWrite would return FALSE but mode == ReadOnly would return TRUE. @return TRUE if a file open would succeed. */ static BOOL Access( const PFilePath & name, ///< Name of file to have its access checked. OpenMode mode ///< Mode in which the file open would be done. ); /**Check for file access modes. Determine if the file path specification associated with the instance of the object may be opened in the specified mode. This would check the current access rights to the file for the mode. For example, for a file that is read only, using mode == ReadWrite would return FALSE but mode == ReadOnly would return TRUE. @return TRUE if a file open would succeed. */ BOOL Access( OpenMode mode ///< Mode in which the file open would be done. ); /**Delete the specified file. If #force# is FALSE and the file is protected against being deleted then the function fails. If #force# is TRUE then the protection is ignored. What constitutes file deletion protection is platform dependent, eg on DOS is the Read Only attribute and on a Novell network it is a Delete trustee right. Some protection may not be able to overridden with the #force# parameter at all, eg on a Unix system and you are not the owner of the file. @return TRUE if the file was deleted. */ static BOOL Remove( const PFilePath & name, // Name of file to delete. BOOL force = FALSE // Force deletion even if file is protected. ); /**Delete the current file. If #force# is FALSE and the file is protected against being deleted then the function fails. If #force# is TRUE then the protection is ignored. What constitutes file deletion protection is platform dependent, eg on DOS is the Read Only attribute and on a Novell network it is a Delete trustee right. Some protection may not be able to overridden with the #force# parameter at all, eg on a Unix system and you are not the owner of the file. @return TRUE if the file was deleted. */ BOOL Remove( BOOL force = FALSE // Force deletion even if file is protected. ); /**Change the specified files name. This does not move the file in the directory hierarchy, it only changes the name of the directory entry. The #newname# parameter must consist only of the file name part, as returned by the #PFilePath::GetFileName()# function. Any other file path parts will cause an error. The first form uses the file path specification associated with the instance of the object. The name within the instance is changed to the new name if the function succeeds. The second static function uses an arbitrary file specified by name. @return TRUE if the file was renamed. */ static BOOL Rename( const PFilePath & oldname, ///< Old name of the file. const PString & newname, ///< New name for the file. BOOL force = FALSE ///< Delete file if a destination exists with the same name. ); /**Change the current files name. This does not move the file in the directory hierarchy, it only changes the name of the directory entry. The #newname# parameter must consist only of the file name part, as returned by the #PFilePath::GetFileName()# function. Any other file path parts will cause an error. The first form uses the file path specification associated with the instance of the object. The name within the instance is changed to the new name if the function succeeds. The second static function uses an arbitrary file specified by name. @return TRUE if the file was renamed. */ BOOL Rename( const PString & newname, ///< New name for the file. BOOL force = FALSE ///< Delete file if a destination exists with the same name. ); /**Make a copy of the specified file. @return TRUE if the file was renamed. */ static BOOL Copy( const PFilePath & oldname, ///< Old name of the file. const PFilePath & newname, ///< New name for the file. BOOL force = FALSE ///< Delete file if a destination exists with the same name. ); /**Make a copy of the current file. @return TRUE if the file was renamed. */ BOOL Copy( const PFilePath & newname, ///< New name for the file. BOOL force = FALSE ///< Delete file if a destination exists with the same name. ); /**Move the specified file. This will move the file from one position in the directory hierarchy to another position. The actual operation is platform dependent but the reslt is the same. For instance, for Unix, if the move is within a file system then a simple rename is done, if it is across file systems then a copy and a delete is performed. @return TRUE if the file was moved. */ static BOOL Move( const PFilePath & oldname, ///< Old path and name of the file. const PFilePath & newname, ///< New path and name for the file. BOOL force = FALSE ///< Delete file if a destination exists with the same name. ); /**Move the current file. This will move the file from one position in the directory hierarchy to another position. The actual operation is platform dependent but the reslt is the same. For instance, for Unix, if the move is within a file system then a simple rename is done, if it is across file systems then a copy and a delete is performed. @return TRUE if the file was moved. */ BOOL Move( const PFilePath & newname, ///< New path and name for the file. BOOL force = FALSE ///< Delete file if a destination exists with the same name. ); //@} /**@name File channel functions */ //@{ /**Get the full path name of the file. The #PFilePath# object describes the full file name specification for the particular platform. @return the name of the file. */ const PFilePath & GetFilePath() const; /**Set the full path name of the file. The #PFilePath# object describes the full file name specification for the particular platform. */ void SetFilePath( const PString & path ///< New file path. ); /**Open the current file in the specified mode and with the specified options. If the file object already has an open file then it is closed. If there has not been a filename attached to the file object (via #SetFilePath()#, the #name# parameter or a previous open) then a new unique temporary filename is generated. @return TRUE if the file was successfully opened. */ virtual BOOL Open( OpenMode mode = ReadWrite, // Mode in which to open the file. int opts = ModeDefault // Options for open operation. ); /**Open the specified file name in the specified mode and with the specified options. If the file object already has an open file then it is closed. Note: if #mode# is StandardInput, StandardOutput or StandardError, then the #name# parameter is ignored. @return TRUE if the file was successfully opened. */ virtual BOOL Open( const PFilePath & name, // Name of file to open. OpenMode mode = ReadWrite, // Mode in which to open the file. int opts = ModeDefault // #OpenOptions enum# for open operation. ); /**Get the current size of the file. @return length of file in bytes. */ virtual off_t GetLength() const; /**Set the size of the file, padding with 0 bytes if it would require expanding the file, or truncating it if being made shorter. @return TRUE if the file size was changed to the length specified. */ virtual BOOL SetLength( off_t len // New length of file. ); /// Options for the origin in setting the file position. enum FilePositionOrigin { /// Set position relative to start of file. Start = SEEK_SET, /// Set position relative to current file position. Current = SEEK_CUR, /// Set position relative to end of file. End = SEEK_END }; /**Set the current active position in the file for the next read or write operation. The #pos# variable is a signed number which is added to the specified origin. For #origin == PFile::Start# only positive values for #pos# are meaningful. For #origin == PFile::End# only negative values for #pos# are meaningful. @return TRUE if the new file position was set. */ virtual BOOL SetPosition( off_t pos, ///< New position to set. FilePositionOrigin origin = Start ///< Origin for position change. ); /**Get the current active position in the file for the next read or write operation. @return current file position relative to start of file. */ virtual off_t GetPosition() const; /**Determine if the current file position is at the end of the file. If this is TRUE then any read operation will fail. @return TRUE if at end of file. */ BOOL IsEndOfFile() const; /**Get information (eg protection, timestamps) on the specified file. @return TRUE if the file info was retrieved. */ static BOOL GetInfo( const PFilePath & name, // Name of file to get the information on. PFileInfo & info // #PFileInfo# structure to receive the information. ); /**Get information (eg protection, timestamps) on the current file. @return TRUE if the file info was retrieved. */ BOOL GetInfo( PFileInfo & info // #PFileInfo# structure to receive the information. ); /**Set permissions on the specified file. @return TRUE if the file was renamed. */ static BOOL SetPermissions( const PFilePath & name, // Name of file to change the permission of. int permissions // New permissions mask for the file. ); /**Set permissions on the current file. @return TRUE if the file was renamed. */ BOOL SetPermissions( int permissions // New permissions mask for the file. ); //@} protected: // Member variables /// The fully qualified path name for the file. PFilePath path; /// File is to be removed when closed. BOOL removeOnClose; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/file.h" #else #include "unix/ptlib/file.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/filepath.h0100644000176200056700000003033110341504163020075 0ustar releasepostincr/* * filepath.h * * File system path string abstraction class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: filepath.h,v $ * Revision 1.22 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.21 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.20 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.19 2002/11/19 10:32:26 robertj * Changed PFilePath so can be empty string, indicating illegal path. * * Revision 1.18 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.17 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.16 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.15 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.14 1999/02/16 08:07:11 robertj * MSVC 6.0 compatibility changes. * * Revision 1.13 1998/11/30 08:57:16 robertj * Fixed problem where if += is used on PFilePath, it no longer may be normalised. * * Revision 1.12 1998/09/23 06:20:37 robertj * Added open source copyright license. * * Revision 1.11 1998/02/16 00:14:57 robertj * Added functions to validate characters in a filename. * * Revision 1.10 1995/07/31 12:03:37 robertj * Added copy constructor and assignment operator for right types. * * Revision 1.9 1995/04/22 00:43:43 robertj * Added Move() function and changed semantics of Rename(). * Changed all file name strings to PFilePath objects. * * Revision 1.8 1995/03/14 12:41:25 robertj * Updated documentation to use HTML codes. * * Revision 1.7 1994/12/21 11:52:57 robertj * Documentation and variable normalisation. * * Revision 1.6 1994/10/24 00:06:58 robertj * Changed PFilePath and PDirectory so descends from either PString or * PCaselessString depending on the platform. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/08/21 23:43:02 robertj * Changed parameter before variable argument list to NOT be a reference. * * Revision 1.2 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.1 1994/04/20 12:17:44 robertj * Initial revision * */ #ifndef _PFILEPATH #define _PFILEPATH #ifdef P_USE_PRAGMA #pragma interface #endif #ifdef DOC_PLUS_PLUS /** Base string type for a file path. For platforms where filenames are case significant (eg Unix) this class is a synonym for #PString#. If it is for a platform where case is not significant (eg Win32, Mac) then this is a synonym for #PCaselessString#. */ class PFilePathString : public PString { }; #endif /////////////////////////////////////////////////////////////////////////////// // File Specification /**This class describes a full description for a file on the particular platform. This will always uniquely identify the file on currently mounted volumes. An empty string for a PFilePath indicates an illegal path. The ancestor class is dependent on the platform. For file systems that are case sensitive, eg Unix, the ancestor is #PString#. For other platforms, the ancestor class is #PCaselessString#. */ class PFilePath : public PFilePathString { PCLASSINFO(PFilePath, PFilePathString); public: /**@name Construction */ //@{ /**Create a file specification object. */ PFilePath(); /**Create a file specification object with the specified file name. The string passed in may be a full or partial specification for a file as determined by the platform. It is unusual for this to be a literal string, unless only the file title is specified, as that would be platform specific. The partial file specification is translated into a canonical form which always absolutely references the file. */ PFilePath( const char * cstr ///< Partial C string for file name. ); /**Create a file specification object with the specified file name. The string passed in may be a full or partial specification for a file as determined by the platform. It is unusual for this to be a literal string, unless only the file title is specified, as that would be platform specific. The partial file specification is translated into a canonical form which always absolutely references the file. */ PFilePath( const PString & str ///< Partial PString for file name. ); /**Create a file specification object with the specified file name. */ PFilePath( const PFilePath & path ///< Previous path for file name. ); /**Create a file spec object with a generated temporary name. The first parameter is a prefix for the filename to which a unique number is appended. The second parameter is the directory in which the file is to be placed. If this is NULL a system standard directory is used. */ PFilePath( const char * prefix, ///< Prefix string for file title. const char * dir ///< Directory in which to place the file. ); /**Change the file specification object to the specified file name. */ PFilePath & operator=( const PFilePath & path ///< Previous path for file name. ); /**Change the file specification object to the specified file name. The string passed in may be a full or partial specifiaction for a file as determined by the platform. It is unusual for this to be a literal string, unless only the file title is specified, as that would be platform specific. The partial file specification is translated into a canonical form which always absolutely references the file. */ PFilePath & operator=( const PString & str ///< Partial PString for file name. ); /**Change the file specification object to the specified file name. The string passed in may be a full or partial specifiaction for a file as determined by the platform. It is unusual for this to be a literal string, unless only the file title is specified, as that would be platform specific. The partial file specification is translated into a canonical form which always absolutely references the file. */ PFilePath & operator=( const char * cstr ///< Partial "C" string for file name. ); //@} /**@name Path addition functions */ //@{ /**Concatenate a string to the file path, modifiying that path. @return reference to string that was concatenated to. */ PFilePath & operator+=( const PString & str ///< String to concatenate. ); /**Concatenate a C string to a path, modifiying that path. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr += "fred"; \end{verbatim} @return reference to string that was concatenated to. */ PFilePath & operator+=( const char * cstr ///< C string to concatenate. ); /**Concatenate a single character to a path. The #ch# parameter is typically a literal, eg: \begin{verbatim} myStr += '!'; \end{verbatim} @return new string with concatenation of the object and parameter. */ PFilePath & operator+=( char ch // Character to concatenate. ); //@} /**@name Path decoding access functions */ //@{ /**Get the drive/volume name component of the full file specification. This is very platform specific. For example in DOS & NT it is the drive letter followed by a colon ("C:"), for Macintosh it is the volume name ("Untitled") and for Unix it is empty (""). @return string for the volume name part of the file specification.. */ PFilePathString GetVolume() const; /**Get the directory path component of the full file specification. This will include leading and trailing directory separators. For example on DOS this could be "\SRC\PWLIB\", for Macintosh ":Source:PwLib:" and for Unix "/users/equivalence/src/pwlib/". @return string for the path part of the file specification. */ PFilePathString GetPath() const; /**Get the title component of the full file specification, eg for the DOS file "C:\SRC\PWLIB\FRED.DAT" this would be "FRED". @return string for the title part of the file specification. */ PFilePathString GetTitle() const; /**Get the file type of the file. Note that on some platforms this may actually be part of the full name string. eg for DOS file "C:\SRC\PWLIB\FRED.TXT" this would be ".TXT" but on the Macintosh this might be "TEXT". Note there are standard translations from file extensions, eg ".TXT" and some Macintosh file types, eg "TEXT". @return string for the type part of the file specification. */ PFilePathString GetType() const; /**Get the actual directory entry name component of the full file specification. This may be identical to #GetTitle() + GetType()# or simply #GetTitle()# depending on the platform. eg for DOS file "C:\SRC\PWLIB\FRED.TXT" this would be "FRED.TXT". @return string for the file name part of the file specification. */ PFilePathString GetFileName() const; /**Get the the directory that the file is contained in. This may be identical to #GetVolume() + GetPath()# depending on the platform. eg for DOS file "C:\SRC\PWLIB\FRED.TXT" this would be "C:\SRC\PWLIB\". Note that for Unix platforms, this returns the {\bf physical} path of the directory. That is all symlinks are resolved. Thus the directory returned may not be the same as the value of #GetPath()#. @return Directory that the file is contained in. */ PDirectory GetDirectory() const; /**Set the type component of the full file specification, eg for the DOS file "C:\SRC\PWLIB\FRED.DAT" would become "C:\SRC\PWLIB\FRED.TXT". */ void SetType( const PFilePathString & type ///< New type of the file. ); //@} /**@name Miscellaneous functions */ //@{ /**Test if the character is valid in a filename. @return TRUE if the character is valid for a filename. */ static BOOL IsValid( char c ///< Character to test for validity. ); /**Test if all the characters are valid in a filename. @return TRUE if the character is valid for a filename. */ static BOOL IsValid( const PString & str ///< String to test for validity. ); //@} protected: virtual void AssignContents(const PContainer & cont); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/filepath.h" #else #include "unix/ptlib/filepath.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/icmpsock.h0100644000176200056700000001343510341504163020117 0ustar releasepostincr/* * icmpsock.h * * Internet Control Message Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: icmpsock.h,v $ * Revision 1.16 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.15 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.14 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.13 2003/02/11 06:47:19 craigs * Added missing OpenSocket function * * Revision 1.12 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.11 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.10 1999/08/07 15:22:20 craigs * Changed Success to PingSuccess to avoid namespace collision with X define of the same name * * Revision 1.9 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.8 1999/02/16 08:20:48 robertj * MSVC 6.0 compatibility changes. * * Revision 1.7 1998/09/23 06:20:39 robertj * Added open source copyright license. * * Revision 1.6 1998/01/26 00:30:41 robertj * Added error codes, TTL and data buffer to Ping. * * Revision 1.5 1997/02/05 11:52:07 robertj * Changed current process function to return reference and validate objects descendancy. * * Revision 1.4 1996/11/04 03:57:16 robertj * Rewrite of ping for Win32 support. * * Revision 1.3 1996/09/14 13:09:19 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.2 1996/06/03 10:03:22 robertj * Changed ping to return more parameters. * * Revision 1.1 1996/05/15 21:11:16 robertj * Initial revision * */ #ifndef _PICMPSOCKET #define _PICMPSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif /**Create a socket channel that uses allows ICMP commands in the Internal Protocol. */ class PICMPSocket : public PIPDatagramSocket { PCLASSINFO(PICMPSocket, PIPDatagramSocket); public: /**@name Construction */ //@{ /**Create a TCP/IP protocol socket channel. If a remote machine address or a "listening" socket is specified then the channel is also opened. */ PICMPSocket(); //@} /**@name Status & Information */ //@{ /// Results of ICMP operation. enum PingStatus { PingSuccess, // don't use Success - X11 defines this! NetworkUnreachable, HostUnreachable, PacketTooBig, RequestTimedOut, BadRoute, TtlExpiredTransmit, TtlExpiredReassembly, SourceQuench, MtuChange, GeneralError, NumStatuses }; /// Information used by and obtained by the ping operation. class PingInfo { public: /// Create Ping information structure. PingInfo(WORD id = (WORD)PProcess::Current().GetProcessID()); /**@name Supplied data */ //@{ /// Arbitrary identifier for the ping. WORD identifier; /// Sequence number for ping packet. WORD sequenceNum; /// Time To Live for packet. BYTE ttl; /// Send buffer (if NULL, defaults to 32 bytes). const BYTE * buffer; /// Size of buffer (< 64k). PINDEX bufferSize; //@} /**@name Returned data */ //@{ /// Time for packet to make trip. PTimeInterval delay; /// Source address of reply packet. Address remoteAddr; /// Destination address of reply packet. Address localAddr; /// Status of the last ping operation PingStatus status; //@} }; //@} /**@name Ping */ //@{ /**Send an ECHO_REPLY message to the specified host and wait for a reply to be sent back. @return FALSE if host not found or no response. */ BOOL Ping( const PString & host ///< Host to send ping. ); /**Send an ECHO_REPLY message to the specified host and wait for a reply to be sent back. @return FALSE if host not found or no response. */ BOOL Ping( const PString & host, ///< Host to send ping. PingInfo & info ///< Information on the ping and reply. ); //@} protected: const char * GetProtocolName() const; virtual BOOL OpenSocket(); virtual BOOL OpenSocket(int ipAdressFamily); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/icmpsock.h" #else #include "unix/ptlib/icmpsock.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/indchan.h0100644000176200056700000002572610341504163017721 0ustar releasepostincr/* * indchan.h * * Indirect I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: indchan.h,v $ * Revision 1.10 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.9 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.8 2001/09/10 02:51:22 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 2000/11/14 08:25:25 robertj * Added function to propagate the error text through to indirect channel. * * Revision 1.5 1999/06/17 13:38:11 robertj * Fixed race condition on indirect channel close, mutex needed in PIndirectChannel. * * Revision 1.4 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.3 1999/02/16 08:12:00 robertj * MSVC 6.0 compatibility changes. * * Revision 1.2 1998/09/23 06:20:41 robertj * Added open source copyright license. * * Revision 1.1 1996/09/14 13:00:56 robertj * Initial revision * */ #ifndef _PINDIRECTCHANNEL #define _PINDIRECTCHANNEL #ifdef P_USE_PRAGMA #pragma interface #endif /**This is a channel that operates indirectly through another channel(s). This allows for a protocol to operate through a "channel" mechanism and for its low level byte exchange (Read and Write) to operate via a completely different channel, eg TCP or Serial port etc. */ class PIndirectChannel : public PChannel { PCLASSINFO(PIndirectChannel, PChannel); public: /**@name Construction */ //@{ /**Create a new indirect channel without any channels to redirect to. If an attempt to read or write is made before Open() is called the the functions will assert. */ PIndirectChannel(); /// Close the indirect channel, deleting read/write channels if desired. ~PIndirectChannel(); //@} /**@name Overrides from class PObject */ //@{ /**Determine if the two objects refer to the same indirect channel. This actually compares the channel pointers. @return EqualTo if channel pointer identical. */ Comparison Compare( const PObject & obj ///< Another indirect channel to compare against. ) const; //@} /**@name Overrides from class PChannel */ //@{ /**Get the name of the channel. This is a combination of the channel pointers names (or simply the channel pointers name if the read and write channels are the same) or empty string if both null. @return string for the channel names. */ virtual PString GetName() const; /**Close the channel. This will detach itself from the read and write channels and delete both of them if they are auto delete. @return TRUE if the channel is closed. */ virtual BOOL Close(); /**Determine if the channel is currently open and read and write operations can be executed on it. For example, in the #PFile# class it returns if the file is currently open. @return TRUE if the channel is open. */ virtual BOOL IsOpen() const; /**Low level read from the channel. This function may block until the requested number of characters were read or the read timeout was reached. The GetLastReadCount() function returns the actual number of bytes read. This will use the #readChannel# pointer to actually do the read. If #readChannel# is null the this asserts. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. This will use the #writeChannel# pointer to actually do the write. If #writeChannel# is null the this asserts. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /**Close one or both of the data streams associated with a channel. The behavour here is to pass the shutdown on to its read and write channels. @return TRUE if the shutdown was successfully performed. */ virtual BOOL Shutdown( ShutdownValue option ///< Flag for shut down of read, write or both. ); /**This function returns the eventual base channel for reading of a series of indirect channels provided by descendents of #PIndirectChannel#. The behaviour for this function is to return "this". @return Pointer to base I/O channel for the indirect channel. */ virtual PChannel * GetBaseReadChannel() const; /**This function returns the eventual base channel for writing of a series of indirect channels provided by descendents of #PIndirectChannel#. The behaviour for this function is to return "this". @return Pointer to base I/O channel for the indirect channel. */ virtual PChannel * GetBaseWriteChannel() const; /** Get error message description. Return a string indicating the error message that may be displayed to the user. The error for the last I/O operation in this object is used. @return Operating System error description string. */ virtual PString GetErrorText( ErrorGroup group = NumErrorGroups ///< Error group to get ) const; //@} /**@name Channel establish functions */ //@{ /**Set the channel for both read and write operations. This then checks that they are open and then calls the OnOpen() virtual function. If it in turn returns TRUE then the Open() function returns success. @return TRUE if both channels are set, open and OnOpen() returns TRUE. */ BOOL Open( PChannel & channel ///< Channel to be used for both read and write operations. ); /**Set the channel for both read and write operations. This then checks that they are open and then calls the OnOpen() virtual function. If it in turn returns TRUE then the Open() function returns success. The channel pointed to by #channel# may be automatically deleted when the PIndirectChannel is destroyed or a new subchannel opened. @return TRUE if both channels are set, open and OnOpen() returns TRUE. */ BOOL Open( PChannel * channel, ///< Channel to be used for both read and write operations. BOOL autoDelete = TRUE ///< Automatically delete the channel ); /**Set the channel for both read and write operations. This then checks that they are open and then calls the OnOpen() virtual function. If it in turn returns TRUE then the Open() function returns success. The channels pointed to by #readChannel# and #writeChannel# may be automatically deleted when the PIndirectChannel is destroyed or a new subchannel opened. @return TRUE if both channels are set, open and OnOpen() returns TRUE. */ BOOL Open( PChannel * readChannel, ///< Channel to be used for both read operations. PChannel * writeChannel, ///< Channel to be used for both write operations. BOOL autoDeleteRead = TRUE, ///< Automatically delete the read channel BOOL autoDeleteWrite = TRUE ///< Automatically delete the write channel ); /**Get the channel used for read operations. @return pointer to the read channel. */ PChannel * GetReadChannel() const; /**Set the channel for read operations. @return Returns TRUE if both channels are set and are both open. */ BOOL SetReadChannel( PChannel * channel, ///< Channel to be used for both read operations. BOOL autoDelete = TRUE ///< Automatically delete the channel ); /**Get the channel used for write operations. @return pointer to the write channel. */ PChannel * GetWriteChannel() const; /**Set the channel for read operations. @return Returns TRUE if both channels are set and are both open. */ BOOL SetWriteChannel( PChannel * channel, ///< Channel to be used for both write operations. BOOL autoDelete = TRUE ///< Automatically delete the channel ); //@} protected: /**This callback is executed when the Open() function is called with open channels. It may be used by descendent channels to do any handshaking required by the protocol that channel embodies. The default behaviour is to simply return TRUE. @return Returns TRUE if the protocol handshaking is successful. */ virtual BOOL OnOpen(); // Member variables /// Channel for read operations. PChannel * readChannel; /// Automatically delete read channel on destruction. BOOL readAutoDelete; /// Channel for write operations. PChannel * writeChannel; /// Automatically delete write channel on destruction. BOOL writeAutoDelete; /// Race condition prevention on closing channel PReadWriteMutex channelPointerMutex; }; #endif // _PINDIRECTCHANNEL // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/int64.h0100644000176200056700000001450707732021602017256 0ustar releasepostincr#ifndef _P_INT64_H #define _P_INT64_H /////////////////////////////////////////////////////////////////////////////// // Really big integer class for architectures without #ifdef P_NEEDS_INT64 class PInt64__ { public: operator long() const { return (long)low; } operator int() const { return (int)low; } operator short() const { return (short)low; } operator char() const { return (char)low; } operator unsigned long() const { return (unsigned long)low; } operator unsigned int() const { return (unsigned int)low; } operator unsigned short() const { return (unsigned short)low; } operator unsigned char() const { return (unsigned char)low; } protected: PInt64__() { } PInt64__(unsigned long l) : low(l), high(0) { } PInt64__(unsigned long l, unsigned long h) : low(l), high(h) { } void operator=(const PInt64__ & v) { low = v.low; high = v.high; } void Inc() { if (++low == 0) ++high; } void Dec() { if (--low == 0) --high; } void Or (long v) { low |= v; } void And(long v) { low &= v; } void Xor(long v) { low ^= v; } void Add(const PInt64__ & v); void Sub(const PInt64__ & v); void Mul(const PInt64__ & v); void Div(const PInt64__ & v); void Mod(const PInt64__ & v); void Or (const PInt64__ & v) { low |= v.low; high |= v.high; } void And(const PInt64__ & v) { low &= v.low; high &= v.high; } void Xor(const PInt64__ & v) { low ^= v.low; high ^= v.high; } void ShiftLeft(int bits); void ShiftRight(int bits); BOOL Eq(unsigned long v) const { return low == v && high == 0; } BOOL Ne(unsigned long v) const { return low != v || high != 0; } BOOL Eq(const PInt64__ & v) const { return low == v.low && high == v.high; } BOOL Ne(const PInt64__ & v) const { return low != v.low || high != v.high; } unsigned long low, high; }; #define DECL_OPS(cls, type) \ const cls & operator=(type v) { PInt64__::operator=(cls(v)); return *this; } \ cls operator+(type v) const { cls t = *this; t.Add(v); return t; } \ cls operator-(type v) const { cls t = *this; t.Sub(v); return t; } \ cls operator*(type v) const { cls t = *this; t.Mul(v); return t; } \ cls operator/(type v) const { cls t = *this; t.Div(v); return t; } \ cls operator%(type v) const { cls t = *this; t.Mod(v); return t; } \ cls operator|(type v) const { cls t = *this; t.Or (v); return t; } \ cls operator&(type v) const { cls t = *this; t.And(v); return t; } \ cls operator^(type v) const { cls t = *this; t.Xor(v); return t; } \ cls operator<<(type v) const { cls t = *this; t.ShiftLeft((int)v); return t; } \ cls operator>>(type v) const { cls t = *this; t.ShiftRight((int)v); return t; } \ const cls & operator+=(type v) { Add(v); return *this; } \ const cls & operator-=(type v) { Sub(v); return *this; } \ const cls & operator*=(type v) { Mul(v); return *this; } \ const cls & operator/=(type v) { Div(v); return *this; } \ const cls & operator|=(type v) { Or (v); return *this; } \ const cls & operator&=(type v) { And(v); return *this; } \ const cls & operator^=(type v) { Xor(v); return *this; } \ const cls & operator<<=(type v) { ShiftLeft((int)v); return *this; } \ const cls & operator>>=(type v) { ShiftRight((int)v); return *this; } \ BOOL operator==(type v) const { return Eq(v); } \ BOOL operator!=(type v) const { return Ne(v); } \ BOOL operator< (type v) const { return Lt(v); } \ BOOL operator> (type v) const { return Gt(v); } \ BOOL operator>=(type v) const { return !Gt(v); } \ BOOL operator<=(type v) const { return !Lt(v); } \ class PInt64 : public PInt64__ { public: PInt64() { } PInt64(long l) : PInt64__(l, l < 0 ? -1 : 0) { } PInt64(unsigned long l, long h) : PInt64__(l, h) { } PInt64(const PInt64__ & v) : PInt64__(v) { } PInt64 operator~() const { return PInt64(~low, ~high); } PInt64 operator-() const { return operator~()+1; } PInt64 operator++() { Inc(); return *this; } PInt64 operator--() { Dec(); return *this; } PInt64 operator++(int) { PInt64 t = *this; Inc(); return t; } PInt64 operator--(int) { PInt64 t = *this; Dec(); return t; } DECL_OPS(PInt64, char) DECL_OPS(PInt64, unsigned char) DECL_OPS(PInt64, short) DECL_OPS(PInt64, unsigned short) DECL_OPS(PInt64, int) DECL_OPS(PInt64, unsigned int) DECL_OPS(PInt64, long) DECL_OPS(PInt64, unsigned long) DECL_OPS(PInt64, const PInt64 &) friend ostream & operator<<(ostream &, const PInt64 &); friend istream & operator>>(istream &, PInt64 &); protected: void Add(long v) { Add(PInt64(v)); } void Sub(long v) { Sub(PInt64(v)); } void Mul(long v) { Mul(PInt64(v)); } void Div(long v) { Div(PInt64(v)); } void Mod(long v) { Mod(PInt64(v)); } BOOL Lt(long v) const { return Lt(PInt64(v)); } BOOL Gt(long v) const { return Gt(PInt64(v)); } BOOL Lt(const PInt64 &) const; BOOL Gt(const PInt64 &) const; }; class PUInt64 : public PInt64__ { public: PUInt64() { } PUInt64(unsigned long l) : PInt64__(l, 0) { } PUInt64(unsigned long l, unsigned long h) : PInt64__(l, h) { } PUInt64(const PInt64__ & v) : PInt64__(v) { } PUInt64 operator~() const { return PUInt64(~low, ~high); } const PUInt64 & operator++() { Inc(); return *this; } const PUInt64 & operator--() { Dec(); return *this; } PUInt64 operator++(int) { PUInt64 t = *this; Inc(); return t; } PUInt64 operator--(int) { PUInt64 t = *this; Dec(); return t; } DECL_OPS(PUInt64, char) DECL_OPS(PUInt64, unsigned char) DECL_OPS(PUInt64, short) DECL_OPS(PUInt64, unsigned short) DECL_OPS(PUInt64, int) DECL_OPS(PUInt64, unsigned int) DECL_OPS(PUInt64, long) DECL_OPS(PUInt64, unsigned long) DECL_OPS(PUInt64, const PUInt64 &) friend ostream & operator<<(ostream &, const PUInt64 &); friend istream & operator>>(istream &, PUInt64 &); protected: void Add(long v) { Add(PUInt64(v)); } void Sub(long v) { Sub(PUInt64(v)); } void Mul(long v) { Mul(PUInt64(v)); } void Div(long v) { Div(PUInt64(v)); } void Mod(long v) { Mod(PUInt64(v)); } BOOL Lt(long v) const { return Lt(PUInt64(v)); } BOOL Gt(long v) const { return Gt(PUInt64(v)); } BOOL Lt(const PUInt64 &) const; BOOL Gt(const PUInt64 &) const; }; #undef DECL_OPS #endif // P_NEEDS_INT64 #endif // P_INT64_H pwlib_v1_10_2/include/ptlib/ipdsock.h0100644000176200056700000000754410341504163017747 0ustar releasepostincr/* * ipdsock.h * * IP Datagram socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipdsock.h,v $ * Revision 1.11 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.10 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.9 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.8 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 1999/03/09 02:59:49 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.5 1999/02/16 08:12:00 robertj * MSVC 6.0 compatibility changes. * * Revision 1.4 1998/11/14 06:28:09 robertj * Fixed error in documentation * * Revision 1.3 1998/09/23 06:20:43 robertj * Added open source copyright license. * * Revision 1.2 1996/09/14 13:09:20 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.1 1996/05/15 21:11:16 robertj * Initial revision * */ #ifndef _PIPDATAGRAMSOCKET #define _PIPDATAGRAMSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif /** Internet Protocol Datagram Socket class. */ class PIPDatagramSocket : public PIPSocket { PCLASSINFO(PIPDatagramSocket, PIPSocket); protected: /**Create a TCP/IP protocol socket channel. If a remote machine address or a "listening" socket is specified then the channel is also opened. */ PIPDatagramSocket(); public: // New functions for class /**Read a datagram from a remote computer. @return TRUE if any bytes were sucessfully read. */ virtual BOOL ReadFrom( void * buf, ///< Data to be written as URGENT TCP data. PINDEX len, ///< Number of bytes pointed to by #buf#. Address & addr, ///< Address from which the datagram was received. WORD & port ///< Port from which the datagram was received. ); /**Write a datagram to a remote computer. @return TRUE if all the bytes were sucessfully written. */ virtual BOOL WriteTo( const void * buf, ///< Data to be written as URGENT TCP data. PINDEX len, ///< Number of bytes pointed to by #buf#. const Address & addr, ///< Address to which the datagram is sent. WORD port ///< Port to which the datagram is sent. ); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/ipdsock.h" #else #include "unix/ptlib/ipdsock.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/ipsock.h0100644000176200056700000007732710405110207017602 0ustar releasepostincr/* * ipsock.h * * Internet Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipsock.h,v $ * Revision 1.79.2.1 2006/03/12 21:20:07 dsandras * More backports from HEAD. * * Revision 1.80 2006/02/26 11:51:20 csoutheren * Extended DNS test program to include URL based SRV lookups * Re-arranged SRV lookup code to allow access to internal routine * Reformatted code * * Revision 1.79 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.78 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.77 2005/07/13 11:48:41 csoutheren * Backported QOS changes from isvo branch * * Revision 1.76.2.1 2005/04/25 13:30:41 shorne * Extra support for DHCP Environment (Win32) * * Revision 1.76 2005/03/22 07:29:29 csoutheren * Fixed problem where PStrings sometimes get case into * PIPSocket::Address when outputting to an ostream * * Revision 1.75 2005/02/13 23:01:35 csoutheren * Fixed problem with not detecting mapped IPV6 addresses within the RFC1918 * address range as RFC1918 * * Revision 1.74 2005/02/07 12:12:33 csoutheren * Expanded interface list routines to include IPV6 addresses * Added IPV6 to GetLocalAddress * * Revision 1.73 2005/02/07 00:47:17 csoutheren * Changed IPV6 code to use standard IPV6 macros * * Revision 1.72 2005/02/04 05:50:27 csoutheren * Extended IsRFC1918 to handle IPV6 * * Revision 1.71 2005/01/16 21:27:01 csoutheren * Changed PIPSocket::IsAny to be const * * Revision 1.70 2004/12/20 07:59:33 csoutheren * Fixed operator *= for IPV6 * * Revision 1.69 2004/12/14 14:24:19 csoutheren * Added PIPSocket::Address::operator*= to compare IPV4 addresses * to IPV4-compatible IPV6 addresses. More documentation needed * once this is tested as working * * Revision 1.68 2004/12/14 06:20:29 csoutheren * Added function to get address of network interface * * Revision 1.67 2004/08/24 07:08:13 csoutheren * Added use of recvmsg to determine which interface UDP packets arrive on * * Revision 1.66 2004/07/11 07:56:35 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.65 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.64 2004/04/07 05:29:50 csoutheren * Added function to detect RFC 1918 addresses * * Revision 1.63 2004/02/23 17:27:19 ykiryanov * Added == and != operators for in_addr_t on BeOS as suggested by Craig Southeren to please compiler * * Revision 1.62 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.61 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.60 2003/05/21 09:34:43 rjongbloed * Name lookup support for IPv6, thanks again Sbastien Josset * * Revision 1.59 2003/04/28 02:55:08 robertj * Added function to see at run time if IPv6 available, thanks Sebastien Josset * * Revision 1.58 2003/04/03 08:43:23 robertj * Added IPv4 mapping into IPv6, thanks Sebastien Josset * * Revision 1.57 2003/03/26 05:36:37 robertj * More IPv6 support (INADDR_ANY handling), thanks Sbastien Josset * * Revision 1.56 2003/02/03 11:23:32 robertj * Added function to get pointer to IP address data. * * Revision 1.55 2003/02/03 08:51:44 robertj * Fixed compatibility with old code so taking address of PIPSocket::Address * gets address of 4 or 16 byte IP address. * * Revision 1.54 2002/12/02 03:57:18 robertj * More RTEMS support patches, thank you Vladimir Nesic. * * Revision 1.53 2002/11/02 00:32:21 robertj * Further fixes to VxWorks (Tornado) port, thanks Andreas Sikkema. * * Revision 1.52 2002/10/29 07:59:45 robertj * Changed in_addr6 to more universally used in6_addr. * * Revision 1.51 2002/10/08 14:31:43 robertj * Changed for IPv6 support, thanks Sbastien Josset. * * Revision 1.50 2002/10/08 12:41:51 robertj * Changed for IPv6 support, thanks Sbastien Josset. * * Revision 1.49 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.48 2001/12/13 09:17:01 robertj * Added function to convert PString to IP address with error checking that can * distinguish between 0.0.0.0 or 255.255.255.255 and illegal address. * * Revision 1.47 2001/09/14 08:00:38 robertj * Added new versions of Conenct() to allow binding to a specific local interface. * * Revision 1.46 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.45 2001/03/05 04:18:27 robertj * Added net mask to interface info returned by GetInterfaceTable() * * Revision 1.44 2001/01/29 06:41:18 robertj * Added printing of entry of interface table. * * Revision 1.43 2000/06/26 11:17:19 robertj * Nucleus++ port (incomplete). * * Revision 1.42 1999/09/10 04:35:42 robertj * Added Windows version of PIPSocket::GetInterfaceTable() function. * * Revision 1.41 1999/09/10 02:31:42 craigs * Added interface table routines * * Revision 1.40 1999/08/30 02:21:03 robertj * Added ability to listen to specific interfaces for IP sockets. * * Revision 1.39 1999/08/08 09:04:01 robertj * Added operator>> for PIPSocket::Address class. * * Revision 1.38 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.37 1999/02/23 07:19:22 robertj * Added [] operator PIPSocket::Address to get the bytes out of an IP address. * * Revision 1.36 1999/02/16 08:12:00 robertj * MSVC 6.0 compatibility changes. * * Revision 1.35 1998/12/21 07:22:50 robertj * Virtualised functions for SOCKS support. * * Revision 1.34 1998/12/18 04:34:14 robertj * PPC Linux GNU C compatibility. * * Revision 1.33 1998/11/30 08:57:32 robertj * New directory structure * * Revision 1.32 1998/11/22 11:30:08 robertj * Check route table function to get a list * * Revision 1.31 1998/11/19 05:18:22 robertj * Added route table manipulation functions to PIPSocket class. * * Revision 1.30 1998/09/23 06:20:45 robertj * Added open source copyright license. * * Revision 1.29 1997/12/11 10:28:57 robertj * Added operators for IP address to DWORD conversions. * * Revision 1.28 1996/12/17 11:08:05 robertj * Added DNS name cache clear command. * * Revision 1.27 1996/11/30 12:10:00 robertj * Added Connect() variant so can set the local port number on link. * * Revision 1.26 1996/11/16 10:48:49 robertj * Fixed missing const in PIPSocket::Address stream output operator.. * * Revision 1.25 1996/11/04 03:40:54 robertj * Moved address printer from inline to source. * * Revision 1.24 1996/09/14 13:09:21 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.23 1996/08/25 09:33:55 robertj * Added function to detect "local" host name. * * Revision 1.22 1996/03/26 00:51:13 robertj * Added GetLocalAddress() variant that returns port number as well. * * Revision 1.21 1996/03/16 04:41:30 robertj * Changed all the get host name and get host address functions to be more consistent. * * Revision 1.20 1996/03/03 07:37:56 robertj * Added Reusability clause to the Listen() function on sockets. * * Revision 1.19 1996/02/25 03:00:31 robertj * Added operator<< to PIPSocket::Address. * Moved some socket functions to platform dependent code. * * Revision 1.18 1996/02/08 12:11:19 robertj * Added GetPeerAddress that returns a port. * * Revision 1.17 1996/01/28 14:07:31 robertj * Changed service parameter to PString for ease of use in GetPortByService function * Fixed up comments. * * Revision 1.16 1995/12/23 03:44:59 robertj * Fixed unix portability issues. * * Revision 1.15 1995/12/10 11:32:11 robertj * Numerous fixes for sockets. * * Revision 1.14 1995/10/14 14:57:26 robertj * Added internet address to string conversion functionality. * * Revision 1.13 1995/07/02 01:18:19 robertj * Added static functions to get the current host name/address. * * Revision 1.12 1995/06/17 00:41:40 robertj * More logical design of port numbers and service names. * * Revision 1.11 1995/03/18 06:26:44 robertj * Changed IP address variable for GNU compatibility. * * Revision 1.10 1995/03/14 12:41:38 robertj * Updated documentation to use HTML codes. * * Revision 1.9 1995/03/12 04:38:41 robertj * Added more functionality. * * Revision 1.8 1995/01/02 12:28:24 robertj * Documentation. * Added more socket functions. * * Revision 1.7 1995/01/01 01:07:33 robertj * More implementation. * * Revision 1.6 1994/12/15 12:47:14 robertj * Documentation. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/08/21 23:43:02 robertj * Spelt Berkeley correctly. * * Revision 1.2 1994/07/25 03:36:03 robertj * Added sockets to common, normalising to same comment standard. * */ #ifndef _PIPSOCKET #define _PIPSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include #ifdef P_HAS_QOS #ifdef _WIN32 #ifdef P_KNOCKOUT_WINSOCK2 #include "IPExport.h" #endif // KNOCKOUT_WINSOCK2 #endif // _WIN32 #endif // P_HAS_QOS /** This class describes a type of socket that will communicate using the Internet Protocol. If P_HAS_IPV6 is not set, IPv4 only is supported. If P_HAS_IPV6 is set, both IPv4 and IPv6 adresses are supported, with IPv4 as default. This allows to transparently use IPv4, IPv6 or Dual stack operating systems. */ class PIPSocket : public PSocket { PCLASSINFO(PIPSocket, PSocket); protected: /* Create a new Internet Protocol socket based on the port number specified. */ PIPSocket(); public: /** A class describing an IP address */ class Address : public PObject { public: /**@name Address constructors */ //@{ /// Create an IPv4 address with the default address: 127.0.0.1 (loopback) Address(); /** Create an IP address from string notation. eg dot notation x.x.x.x. for IPv4, or colon notation x:x:x::xxx for IPv6 */ Address(const PString & dotNotation); /// Create an IPv4 or IPv6 address from 4 or 16 byte values Address(PINDEX len, const BYTE * bytes); /// Create an IP address from four byte values Address(BYTE b1, BYTE b2, BYTE b3, BYTE b4); /// Create an IPv4 address from a four byte value in network byte order Address(DWORD dw); /// Create an IPv4 address from an in_addr structure Address(const in_addr & addr); #if P_HAS_IPV6 /// Create an IPv6 address from an in_addr structure Address(const in6_addr & addr); /// Create an IP (v4 or v6) address from a sockaddr (sockaddr_in, /// sockaddr_in6 or sockaddr_in6_old) structure Address(const int ai_family, const int ai_addrlen,struct sockaddr *ai_addr); #endif #ifdef __NUCLEUS_NET__ Address(const struct id_struct & addr); Address & operator=(const struct id_struct & addr); #endif /// Copy an address from another IP v4 address Address & operator=(const in_addr & addr); #if P_HAS_IPV6 /// Copy an address from another IPv6 address Address & operator=(const in6_addr & addr); #endif /// Copy an address from a string Address & operator=(const PString & dotNotation); /// Copy an address from a four byte value in network order Address & operator=(DWORD dw); //@} /// Compare two adresses for absolute (in)equality Comparison Compare(const PObject & obj) const; bool operator==(const Address & addr) const { return Compare(addr) == EqualTo; } bool operator!=(const Address & addr) const { return Compare(addr) != EqualTo; } #if P_HAS_IPV6 bool operator==(in6_addr & addr) const; bool operator!=(in6_addr & addr) const { return !operator==(addr); } #endif bool operator==(in_addr & addr) const; bool operator!=(in_addr & addr) const { return !operator==(addr); } bool operator==(DWORD dw) const; bool operator!=(DWORD dw) const { return !operator==(dw); } #ifdef P_VXWORKS bool operator==(long unsigned int u) const { return operator==((DWORD)u); } bool operator!=(long unsigned int u) const { return !operator==((DWORD)u); } #endif #ifdef _WIN32 bool operator==(unsigned u) const { return operator==((DWORD)u); } bool operator!=(unsigned u) const { return !operator==((DWORD)u); } #endif #ifdef P_RTEMS bool operator==(u_long u) const { return operator==((DWORD)u); } bool operator!=(u_long u) const { return !operator==((DWORD)u); } #endif #ifdef __BEOS__ bool operator==(in_addr_t a) const { return operator==((DWORD)a); } bool operator!=(in_addr_t a) const { return !operator==((DWORD)a); } #endif bool operator==(int i) const { return operator==((DWORD)i); } bool operator!=(int i) const { return !operator==((DWORD)i); } /// Compare two addresses for equivalence. This will return TRUE /// if the two addresses are equivalent even if they are IPV6 and IPV4 #if P_HAS_IPV6 bool operator*=(const Address & addr) const; #else bool operator*=(const Address & addr) const { return operator==(addr); } #endif /// Format an address as a string PString AsString() const; /// Convert string to IP address. Returns TRUE if was a valid address. BOOL FromString( const PString & str ); /// Format an address as a string operator PString() const; /// Return IPv4 address in network order operator in_addr() const; #if P_HAS_IPV6 /// Return IPv4 address in network order operator in6_addr() const; #endif /// Return IPv4 address in network order operator DWORD() const; /// Return first byte of IPv4 address BYTE Byte1() const; /// Return second byte of IPv4 address BYTE Byte2() const; /// Return third byte of IPv4 address BYTE Byte3() const; /// Return fourth byte of IPv4 address BYTE Byte4() const; /// return specified byte of IPv4 or IPv6 address BYTE operator[](PINDEX idx) const; /// Get the address length (will be either 4 or 16) PINDEX GetSize() const; /// Get the pointer to IP address data const char * GetPointer() const { return (const char *)&v; } /// Get the version of the IP address being used unsigned GetVersion() const { return version; } /// Check address 0.0.0.0 or :: BOOL IsValid() const; BOOL IsAny() const; /// Check address 127.0.0.1 or ::1 BOOL IsLoopback() const; /// Check for Broadcast address 255.255.255.255 BOOL IsBroadcast() const; // Check if the remote address is a private address. // For IPV4 this is specified RFC 1918 as the following ranges: // 10.0.0.0 - 10.255.255.255.255 // 172.16.0.0 - 172.31.255.255 // 192.168.0.0 - 192.168.255.255 // For IPV6 this is specified as any address having "1111 1110 1 for the first nine bits BOOL IsRFC1918() const ; #if P_HAS_IPV6 /// Check for v4 mapped i nv6 address ::ffff:a.b.c.d BOOL IsV4Mapped() const; #endif static const Address & GetLoopback(); #if P_HAS_IPV6 static const Address & GetLoopback6(); static const Address & GetAny6(); #endif static const Address & GetBroadcast(); protected: /// Runtime test of IP addresse type union { in_addr four; #if P_HAS_IPV6 in6_addr six; #endif } v; unsigned version; /// need this to avoid intepreting string as addresses friend ostream & operator<<(ostream & s, const PString & str); /// output IPv6 & IPv4 address as a string to the specified string friend ostream & operator<<(ostream & s, const Address & a); /// input IPv4 (not IPv6 yet!) address as a string from the specified string friend istream & operator>>(istream & s, Address & a); }; // Overrides from class PChannel /** Get the platform and I/O channel type name of the channel. For an IP socket this returns the host name of the peer the socket is connected to, followed by the socket number it is connected to. @return the name of the channel. */ virtual PString GetName() const; // Set the default IP address familly. // Needed as lot of IPv6 stack are not able to receive IPv4 packets in IPv6 sockets // They are not RFC 2553, chapter 7.3, compliant. // As a concequence, when opening a socket to listen to port 1720 (for exemple) from any remot host // one must decide whether this an IPv4 or an IPv6 socket... static int GetDefaultIpAddressFamily(); static void SetDefaultIpAddressFamily(int ipAdressFamily); // PF_INET, PF_INET6 static void SetDefaultIpAddressFamilyV4(); // PF_INET #if P_HAS_IPV6 static void SetDefaultIpAddressFamilyV6(); // PF_INET6 static BOOL IsIpAddressFamilyV6Supported(); #endif static PIPSocket::Address GetDefaultIpAny(); // Open an IPv4 or IPv6 socket virtual BOOL OpenSocket( int ipAdressFamily=PF_INET ) = 0; // Overrides from class PSocket. /** Connect a socket to a remote host on the specified port number. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. The port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address ///< Address of remote machine to connect to. ); virtual BOOL Connect( const Address & addr ///< Address of remote machine to connect to. ); virtual BOOL Connect( WORD localPort, ///< Local port number for connection const Address & addr ///< Address of remote machine to connect to. ); virtual BOOL Connect( const Address & iface, ///< Address of local interface to us. const Address & addr ///< Address of remote machine to connect to. ); virtual BOOL Connect( const Address & iface, ///< Address of local interface to us. WORD localPort, ///< Local port number for connection const Address & addr ///< Address of remote machine to connect to. ); /** Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the #port# parameter is zero then the port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. For the UDP protocol, the #queueSize# parameter is ignored. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Cant listen more than once. ); virtual BOOL Listen( const Address & bind, ///< Local interface address to bind to. unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Can't listen more than once. ); // New functions for class /** Get the "official" host name for the host specified or if none, the host this process is running on. The host may be specified as an IP number or a hostname alias and is resolved to the canonical form. @return Name of the host or IP number of host. */ static PString GetHostName(); static PString GetHostName( const PString & hostname ///< Hosts IP address to get name for ); static PString GetHostName( const Address & addr ///< Hosts IP address to get name for ); /** Get the Internet Protocol address for the specified host, or if none specified, for the host this process is running on. @return TRUE if the IP number was returned. */ static BOOL GetHostAddress( Address & addr ///< Variable to receive hosts IP address ); static BOOL GetHostAddress( const PString & hostname, /* Name of host to get address for. This may be either a domain name or an IP number in "dot" format. */ Address & addr ///< Variable to receive hosts IP address ); /** Get the alias host names for the specified host. This includes all DNS names, CNAMEs, names in the local hosts file and IP numbers (as "dot" format strings) for the host. @return array of strings for each alias for the host. */ static PStringArray GetHostAliases( const PString & hostname /* Name of host to get address for. This may be either a domain name or an IP number in "dot" format. */ ); static PStringArray GetHostAliases( const Address & addr ///< Hosts IP address /* Name of host to get address for. This may be either a domain name or an IP number in "dot" format. */ ); /** Determine if the specified host is actually the local machine. This can be any of the host aliases or multi-homed IP numbers or even the special number 127.0.0.1 for the loopback device. @return TRUE if the host is the local machine. */ static BOOL IsLocalHost( const PString & hostname /* Name of host to get address for. This may be either a domain name or an IP number in "dot" format. */ ); /** Get the Internet Protocol address for the local host. @return TRUE if the IP number was returned. */ virtual BOOL GetLocalAddress( Address & addr ///< Variable to receive hosts IP address ); virtual BOOL GetLocalAddress( Address & addr, ///< Variable to receive peer hosts IP address WORD & port ///< Variable to receive peer hosts port number ); /** Get the Internet Protocol address for the peer host the socket is connected to. @return TRUE if the IP number was returned. */ virtual BOOL GetPeerAddress( Address & addr ///< Variable to receive hosts IP address ); virtual BOOL GetPeerAddress( Address & addr, ///< Variable to receive peer hosts IP address WORD & port ///< Variable to receive peer hosts port number ); /** Get the host name for the local host. @return Name of the host, or an empty string if an error occurs. */ PString GetLocalHostName(); /** Get the host name for the peer host the socket is connected to. @return Name of the host, or an empty string if an error occurs. */ PString GetPeerHostName(); /** Clear the name (DNS) cache. */ static void ClearNameCache(); /** Get the IP address that is being used as the gateway, that is, the computer that packets on the default route will be sent. The string returned may be used in the Connect() function to open that interface. Note that the driver does not need to be open for this function to work. @return TRUE if there was a gateway. */ static BOOL GetGatewayAddress( Address & addr ///< Variable to receive the IP address. ); /** Get the name for the interface that is being used as the gateway, that is, the interface that packets on the default route will be sent. The string returned may be used in the Connect() function to open that interface. Note that the driver does not need to be open for this function to work. @return String name of the gateway device, or empty string if there is none. */ static PString GetGatewayInterface(); #ifdef _WIN32 /** Get the IP address for the interface that is being used as the gateway, that is, the interface that packets on the default route will be sent. This Function can be used to Bind the Listener to only the default Packet route in DHCP Environs. Note that the driver does not need to be open for this function to work. @return The Local Interface IP Address for Gatway Access */ static PIPSocket::Address GetGatewayInterfaceAddress(); /** Retrieve the Local IP Address for which packets would have be routed to the to reach the remote Address. @return Local Address */ static PIPSocket::Address GetRouteAddress(PIPSocket::Address RemoteAddress); /** IP Address to a Numerical Representation */ static unsigned AsNumeric(Address addr); /** Check if packets on Interface Address can reach the remote IP Address. */ static BOOL IsAddressReachable(PIPSocket::Address LocalIP, PIPSocket::Address LocalMask, PIPSocket::Address RemoteIP); /** Get the Interface Name for a given local Interface Address */ static PString GetInterface(PIPSocket::Address addr); #endif /** Describes a route table entry */ class RouteEntry : public PObject { PCLASSINFO(RouteEntry, PObject); public: /// create a route table entry from an IP address RouteEntry(const Address & addr) : network(addr) { } /// Get the network address associated with the route table entry Address GetNetwork() const { return network; } /// Get the network address mask associated with the route table entry Address GetNetMask() const { return net_mask; } /// Get the default gateway address associated with the route table entry Address GetDestination() const { return destination; } /// Get the network address name associated with the route table entry const PString & GetInterface() const { return interfaceName; } /// Get the network metric associated with the route table entry long GetMetric() const { return metric; } protected: Address network; Address net_mask; Address destination; PString interfaceName; long metric; friend class PIPSocket; }; PLIST(RouteTable, RouteEntry); /** Get the systems route table. @return TRUE if the route table is returned, FALSE if an error occurs. */ static BOOL GetRouteTable( RouteTable & table ///< Route table ); /** Describes an interface table entry */ class InterfaceEntry : public PObject { PCLASSINFO(InterfaceEntry, PObject) public: /// create an interface entry from a name, IP addr and MAC addr InterfaceEntry( const PString & _name, const Address & _addr, const Address & _mask, const PString & _macAddr #if P_HAS_IPV6 , const PString & _ip6Addr = PString::Empty() #endif ); /// Print to specified stream virtual void PrintOn( ostream &strm // Stream to print the object into. ) const; /// Get the name of the interface const PString & GetName() const { return name; } /// Get the address associated with the interface Address GetAddress() const { return ipAddr; } BOOL HasIP6Address() const #if ! P_HAS_IPV6 { return FALSE;} #else { return !ip6Addr.IsEmpty();} /// Get the address associated with the interface Address GetIP6Address() const { return ip6Addr; } #endif /// Get the net mask associated with the interface Address GetNetMask() const { return netMask; } /// Get the MAC address associate with the interface const PString & GetMACAddress() const { return macAddr; } protected: PString name; Address ipAddr; Address netMask; PString macAddr; #if P_HAS_IPV6 PString ip6Addr; #endif }; PLIST(InterfaceTable, InterfaceEntry); /** Get a list of all interfaces @return TRUE if the interface table is returned, FALSE if an error occurs. */ static BOOL GetInterfaceTable( InterfaceTable & table ///< interface table ); /** Get the address of an interface that corresponds to a real network @return FALSE if only loopback interfaces could be found, else TRUE */ static BOOL GetNetworkInterface(PIPSocket::Address & addr); #if P_HAS_RECVMSG /** * Set flag to capture destination address for incoming packets * * @return TRUE if host is able to capture incoming address, else FALSE */ BOOL SetCaptureReceiveToAddress() { if (!SetOption(IP_PKTINFO, 1, SOL_IP)) return FALSE; catchReceiveToAddr = TRUE; return TRUE; } /** * return the interface address of the last incoming packet */ PIPSocket::Address GetLastReceiveToAddress() const { return lastReceiveToAddr; } protected: void SetLastReceiveAddr(void * addr, int addrLen) { if (addrLen == sizeof(in_addr)) lastReceiveToAddr = *(in_addr *)addr; } PIPSocket::Address lastReceiveToAddr; #else /** * Set flag to capture interface address for incoming packets * * @return TRUE if host is able to capture incoming address, else FALSE */ BOOL SetCaptureReceiveToAddress() { return FALSE; } /** * return the interface address of the last incoming packet */ PIPSocket::Address GetLastReceiveToAddress() const { return PIPSocket::Address(); } #endif // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/ipsock.h" #else #include "unix/ptlib/ipsock.h" #endif }; class PIPSocketAddressAndPort { public: PIPSocketAddressAndPort() : port(0) { } PIPSocket::Address address; WORD port; }; typedef std::vector PIPSocketAddressAndPortVector; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/ipxsock.h0100644000176200056700000002417410341504163017771 0ustar releasepostincr/* * ipxsock.h * * IPX protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ipxsock.h,v $ * Revision 1.12 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.11 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.10 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.9 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.8 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.7 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.6 1999/02/16 08:12:00 robertj * MSVC 6.0 compatibility changes. * * Revision 1.5 1998/11/30 02:50:58 robertj * New directory structure * * Revision 1.4 1998/09/23 06:20:47 robertj * Added open source copyright license. * * Revision 1.3 1996/10/08 13:21:04 robertj * More IPX implementation. * * Revision 1.1 1996/09/14 13:00:56 robertj * Initial revision * */ #ifndef _PIPXSOCKET #define _PIPXSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include /**This class describes a type of socket that will communicate using the IPX/SPX protocols. */ class PIPXSocket : public PSocket { PCLASSINFO(PIPXSocket, PSocket); public: /**Create a new IPX datagram socket. */ PIPXSocket( WORD port = 0 ///< Port number to use for the connection. ); public: /** IPX protocol address specification. */ class Address { public: union { struct { BYTE b1,b2,b3,b4; } b; struct { WORD w1,s_w2; } w; DWORD dw; } network; BYTE node[6]; /** Create new, invalid, address. */ Address(); /** Create copy of existing address */ Address(const Address & addr /** Address to copy */); /** Create address from string representation. */ Address(const PString & str /** String representation of address */); /** Create address from node and net numbers. */ Address( DWORD netNum, ///< IPX network number. const char * nodeNum ///< IPX node number (MAC address) ); /** Create copy of existing address */ Address & operator=(const Address & addr /** Address to copy */); /** Get string representation of IPX address */ operator PString() const; /** Determine if address is valid. Note that this does not mean that the host is online. @return TRUE is address is valid. */ BOOL IsValid() const; /** Output string representation of IPX address to stream. */ friend ostream & operator<<( ostream & strm, ///< Stream to output to Address & addr ///< Address to output ) { return strm << (PString)addr; } }; /**@name Overrides from class PChannel */ //@{ /**Get the platform and I/O channel type name of the channel. For an IPX/SPX socket this returns the network number, node number of the peer the socket is connected to, followed by the socket number it is connected to. @return the name of the channel. */ virtual PString GetName() const; //@} /**@name Overrides from class PSocket */ //@{ /**Connect a socket to a remote host on the port number of the socket. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. The port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address ///< Address of remote machine to connect to. ); /**Connect a socket to a remote host on the port number of the socket. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. The port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const Address & address ///< Address of remote machine to connect to. ); /**Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the #port# parameter is zero then the port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. For the UDP protocol, the #queueSize# parameter is ignored. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Cant listen more than once. ); //@} /**@name Address and name space look up functions */ //@{ /**Get the host name for the host specified server. @return Name of the host or IPX number of host. */ static PString GetHostName( const Address & addr ///< Hosts IP address to get name for ); /**Get the IPX address for the specified host. @return TRUE if the IPX number was returned. */ static BOOL GetHostAddress( Address & addr ///< Variable to receive this hosts IP address ); /**Get the IPX address for the specified host. @return TRUE if the IPX number was returned. */ static BOOL GetHostAddress( const PString & hostname, /** Name of host to get address for. This may be either a server name or an IPX number in "colon" format. */ Address & addr ///< Variable to receive hosts IPX address ); /**Get the IPX/SPX address for the local host. @return TRUE if the IPX number was returned. */ BOOL GetLocalAddress( Address & addr ///< Variable to receive hosts IPX address ); /**Get the IPX/SPX address for the local host. @return TRUE if the IPX number was returned. */ BOOL GetLocalAddress( Address & addr, ///< Variable to receive peer hosts IPX address WORD & port ///< Variable to receive peer hosts port number ); /**Get the IPX/SPX address for the peer host the socket is connected to. @return TRUE if the IPX number was returned. */ BOOL GetPeerAddress( Address & addr ///< Variable to receive hosts IPX address ); /**Get the IPX/SPX address for the peer host the socket is connected to. @return TRUE if the IPX number was returned. */ BOOL GetPeerAddress( Address & addr, ///< Variable to receive peer hosts IPX address WORD & port ///< Variable to receive peer hosts port number ); //@} /**@name I/O functions */ //@{ /**Sets the packet type for datagrams sent by this socket. @return TRUE if the type was successfully set. */ BOOL SetPacketType( int type ///< IPX packet type for this socket. ); /**Gets the packet type for datagrams sent by this socket. @return type of packets or -1 if error. */ int GetPacketType(); /**Read a datagram from a remote computer. @return TRUE if all the bytes were sucessfully written. */ virtual BOOL ReadFrom( void * buf, ///< Data to be written as URGENT TCP data. PINDEX len, ///< Number of bytes pointed to by #buf#. Address & addr, ///< Address from which the datagram was received. WORD & port ///< Port from which the datagram was received. ); /**Write a datagram to a remote computer. @return TRUE if all the bytes were sucessfully written. */ virtual BOOL WriteTo( const void * buf, ///< Data to be written as URGENT TCP data. PINDEX len, ///< Number of bytes pointed to by #buf#. const Address & addr, ///< Address to which the datagram is sent. WORD port ///< Port to which the datagram is sent. ); //@} protected: virtual BOOL OpenSocket(); virtual const char * GetProtocolName() const; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/ipxsock.h" #else #include "unix/ptlib/ipxsock.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/lists.h0100644000176200056700000011631510341504163017446 0ustar releasepostincr/* * lists.h * * List Container Classes * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: lists.h,v $ * Revision 1.32 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.31 2005/01/25 06:35:27 csoutheren * Removed warnings under MSVC * * Revision 1.30 2005/01/09 06:35:03 rjongbloed * Fixed ability to make Clone() or MakeUnique() of a sorted list. * * Revision 1.29 2004/04/09 03:42:34 csoutheren * Removed all usages of "virtual inline" and "inline virtual" * * Revision 1.28 2004/04/04 07:39:57 csoutheren * Fixed cut-and-paste typo in VS.net 2003 changes that made all PLists sorted. Yikes! * * Revision 1.27 2004/04/03 23:53:09 csoutheren * Added various changes to improce compatibility with the Sun Forte compiler * Thanks to Brian Cameron * Added detection of readdir_r version * * Revision 1.26 2004/04/03 06:54:21 rjongbloed * Many and various changes to support new Visual C++ 2003 * * Revision 1.25 2004/02/15 03:04:52 rjongbloed * Fixed problem with PSortedList nil variable and assignment between instances, * pointed out by Ben Lear. * * Revision 1.24 2004/02/09 06:23:32 csoutheren * Added fix for gcc 3.3.1 problem. Apparently, it is unable to correctly resolve * a function argument that is a reference to a const pointer. Changing the argument * to be a pointer to a pointer solves the problem. Go figure * * Revision 1.23 2004/02/08 11:13:10 rjongbloed * Fixed crash in heavily loaded multi-threaded systems using simultaneous sorted * lists, Thanks Federico Pinna, Fabrizio Ammollo and the gang at Reitek S.p.A. * * Revision 1.22 2003/08/31 22:11:29 dereksmithies * Fix from Diego Tartara for the SetAt function. Many thanks. * * Revision 1.21 2002/11/12 08:55:53 robertj * Changed scope of PAbstraSortedList::Element class so descendant classes * can get at it. * * Revision 1.20 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.19 2000/04/14 07:19:32 craigs * Fixed problem with assert when dequeueing from an empty queue * * Revision 1.18 1999/08/22 12:13:43 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.17 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.16 1999/02/16 08:12:00 robertj * MSVC 6.0 compatibility changes. * * Revision 1.15 1998/09/23 06:20:49 robertj * Added open source copyright license. * * Revision 1.14 1997/06/08 04:49:12 robertj * Fixed non-template class descendent order. * * Revision 1.13 1997/04/27 05:50:10 robertj * DLL support. * * Revision 1.12 1997/02/14 13:53:59 robertj * Major rewrite of sorted list to use sentinel record instead of NULL pointers. * * Revision 1.11 1996/07/15 10:32:50 robertj * Fixed bug in sorted list (crash on remove). * * Revision 1.10 1996/05/26 03:25:13 robertj * Compatibility to GNU 2.7.x * * Revision 1.9 1996/01/23 13:13:32 robertj * Fixed bug in sorted list GetObjectsIndex not checking if is same object * * Revision 1.8 1995/08/24 12:35:00 robertj * Added assert for list index out of bounds. * * Revision 1.7 1995/06/17 11:12:43 robertj * Documentation update. * * Revision 1.6 1995/03/14 12:41:41 robertj * Updated documentation to use HTML codes. * * Revision 1.5 1995/02/22 10:50:30 robertj * Changes required for compiling release (optimised) version. * * Revision 1.4 1995/02/05 00:48:05 robertj * Fixed template version. * * Revision 1.3 1995/01/15 04:49:23 robertj * Fixed errors in template version. * * Revision 1.2 1994/12/21 11:53:12 robertj * Documentation and variable normalisation. * * Revision 1.1 1994/12/12 09:59:35 robertj * Initial revision * */ #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // PList container class /**This class is a collection of objects which are descendents of the #PObject# class. It is implemeted as a doubly linked list. The implementation of a list allows very fast inserting and deleting of objects in the collection, but has severe penalties for random access. All object access should be done sequentially to avoid these speed penalties. The class remembers the last accessed element. This state information is used to optimise access by the "virtual array" model of collections. If access via ordinal index is made sequentially there is little overhead. The PAbstractList class would very rarely be descended from directly by the user. The #PDECLARE_LIST# and #PLIST# macros would normally be used to create descendent classes. They will instantiate the template based on #PList# or directly declare and define the class (using inline functions) if templates are not being used. The #PList# class or #PDECLARE_LIST# macro will define the correctly typed operators for subscript access (#operator[]#). */ class PAbstractList : public PCollection { PCONTAINERINFO(PAbstractList, PCollection); public: /**@name Construction */ //@{ /**Create a new, empty, list. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PINLINE PAbstractList(); //@} // Overrides from class PObject /**Get the relative rank of the two lists. The following algorithm is employed for the comparison: \begin{description} \item[#EqualTo#] if the two lists are identical in length and each objects values, not pointer, are equal. \item[#LessThan#] if the instances object value at an ordinal position is less than the corresponding objects value in the #obj# parameters list. This is also returned if all objects are equal and the instances list length is less than the #obj# parameters list length. \item[#GreaterThan#] if the instances object value at an ordinal position is greater than the corresponding objects value in the #obj# parameters list. This is also returned if all objects are equal and the instances list length is greater than the #obj# parameters list length. \end{description} @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare(const PObject & obj) const; /**@name Overrides from class PContainer */ //@{ /**This function is meaningless for lists. The size of the collection is determined by the addition and removal of objects. The size cannot be set in any other way. @return Always TRUE. */ virtual BOOL SetSize( PINDEX newSize ///< New size for the list, this is ignored. ); //@} /**@name Overrides from class PCollection */ //@{ /**Append a new object to the collection. This places a new link at the "tail" of the list. @return index of the newly added object. */ virtual PINDEX Append( PObject * obj ///< New object to place into the collection. ); /**Insert a new object immediately before the specified object. If the object to insert before is not in the collection then the equivalent of the #Append()# function is performed. Note that the object values are compared for the search of the #before# parameter, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. @return index of the newly inserted object. */ virtual PINDEX Insert( const PObject & before, ///< Object value to insert before. PObject * obj ///< New object to place into the collection. ); /**Insert a new object at the specified ordinal index. If the index is greater than the number of objects in the collection then the equivalent of the #Append()# function is performed. @return index of the newly inserted object. */ virtual PINDEX InsertAt( PINDEX index, ///< Index position in collection to place the object. PObject * obj ///< New object to place into the collection. ); /**Remove the object from the collection. If the AllowDeleteObjects option is set then the object is also deleted. @return TRUE if the object was in the collection. */ virtual BOOL Remove( const PObject * obj ///< Existing object to remove from the collection. ); /**Remove the object at the specified ordinal index from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note if the index is beyond the size of the collection then the function will assert. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PObject * RemoveAt( PINDEX index ///< Index position in collection to place the object. ); /**Set the object at the specified ordinal position to the new value. This will overwrite the existing entry. This method will NOT delete the old object independently of the AllowDeleteObjects option. Use #ReplaceAt()# instead. Note if the index is beyond the size of the collection then the function will assert. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( PINDEX index, ///< Index position in collection to set. PObject * val ///< New value to place into the collection. ); /**Set the object at the specified ordinal position to the new value. This will overwrite the existing entry. If the AllowDeleteObjects option is set then the old object is also deleted. Note if the index is beyond the size of the collection then the function will assert. @return TRUE if the object was successfully replaced. */ virtual BOOL ReplaceAt( PINDEX index, ///< Index position in collection to set. PObject * val ///< New value to place into the collection. ); /**Get the object at the specified ordinal position. If the index was greater than the size of the collection then NULL is returned. The object accessed in this way is remembered by the class and further access will be fast. Access to elements one either side of that saved element, and the head and tail of the list, will always be fast. @return pointer to object at the specified index. */ virtual PObject * GetAt( PINDEX index ///< Index position in the collection of the object. ) const; /**Search the collection for the specific instance of the object. The object pointers are compared, not the values. A simple linear search from "head" of the list is performed. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetObjectsIndex( const PObject * obj ///< Object to find. ) const; /**Search the collection for the specified value of the object. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. A simple linear search from "head" of the list is performed. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetValuesIndex( const PObject & obj ///< Object to find value of. ) const; //@} protected: /**Get the object at the specified ordinal position. If the index was greater than the size of the collection then this asserts. The object accessed in this way is remembered by the class and further access will be fast. Access to elements one either side of that saved element, and the head and tail of the list, will always be fast. @return reference to object at the specified index. */ PINLINE PObject & GetReferenceAt( PINDEX index ///< Ordinal index of the list element to set as current. ) const; /**Move the internal "cursor" to the index position specified. This function will optimise the sequential move taking into account the previous current position and the position at the head and tail of the list. Whichever of these three points is closes is used as the starting point for a sequential move to the required index. @return TRUE if the index could be set as the current element. */ BOOL SetCurrent( PINDEX index ///< Ordinal index of the list element to set as current. ) const; class Element { public: friend class Info; Element(PObject * theData); Element * prev; Element * next; PObject * data; }; class Info { public: Info() { head = tail = lastElement = NULL; } Element * head; Element * tail; Element * lastElement; PINDEX lastIndex; } * info; }; #ifdef PHAS_TEMPLATES /**This template class maps the PAbstractList to a specific object type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PDECLARE_LIST# macro will simulate the template instantiation. */ template class PList : public PAbstractList { PCLASSINFO(PList, PAbstractList); public: /**@name Construction */ //@{ /**Create a new, empty, list. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PList() : PAbstractList() { } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the list. Note that all objects in the array are also cloned, so this will make a complete copy of the list. */ virtual PObject * Clone() const { return PNEW PList(0, this); } //@} /**@name New functions for class */ //@{ /**Retrieve a reference to the object in the list. If there was not an object at that ordinal position or the index was beyond the size of the array then the function asserts. The object accessed in this way is remembered by the class and further access will be fast. Access to elements one either side of that saved element, and the head and tail of the list, will always be fast. @return reference to the object at #index# position. */ T & operator[](PINDEX index) const { return (T &)GetReferenceAt(index); } //@} protected: PList(int dummy, const PList * c) : PAbstractList(dummy, c) { } }; /**Declare a list class. This macro is used to declare a descendent of PAbstractList class, customised for a particular object type {\bf T}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PList# template class. See the #PList# class and #PDECLARE_LIST# macro for more information. */ #define PLIST(cls, T) typedef PList cls /**Begin declaration of list class. This macro is used to declare a descendent of PAbstractList class, customised for a particular object type {\bf T}. If the compilation is using templates then this macro produces a descendent of the #PList# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PList# and #PAbstractList# classes for more information. */ #define PDECLARE_LIST(cls, T) \ PLIST(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, PList) \ protected: \ cls(int dummy, const cls * c) \ : PList(dummy, c) { } \ public: \ cls() \ : PList() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ /**This template class maps the PAbstractList to a specific object type, and adds functionality that allows the list to be used as a first in first out queue. The functions in this class primarily do all the appropriate casting of types. By default, objects placed into the set will {\bf not} be deleted when removed or when all references to the set are destroyed. This is different from the default on most collection classes. Note that if templates are not used the #PDECLARE_QUEUE# macro will simulate the template instantiation. */ template class PQueue : public PAbstractList { PCLASSINFO(PQueue, PAbstractList); public: /**@name Construction */ //@{ /**Create a new, empty, queue. Note that by default, objects placed into the queue will {\bf not} be deleted when removed or when all references to the queue are destroyed. This is different from the default on most collection classes. */ PQueue() : PAbstractList() { DisallowDeleteObjects(); } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the list. Note that all objects in the array are also cloned, so this will make a complete copy of the list. */ virtual PObject * Clone() const { return PNEW PQueue(0, this); } //@} /**@name New functions for class */ //@{ /**Add a new object to the queue. This places a new link at the "tail" of the list, which is the "in" side of the queue. */ virtual void Enqueue( T * obj ///< Object to add to the queue. ) { PAbstractList::Append(obj); } /**Remove an object that was added to the queue. @return first object added to the queue or NULL if queue empty. */ virtual T * Dequeue() { if (GetSize() == 0) return NULL; else return (T *)PAbstractList::RemoveAt(0);} //@} protected: PQueue(int dummy, const PQueue * c) : PAbstractList(dummy, c) { reference->deleteObjects = c->reference->deleteObjects; } }; /**Declare a queue class. This macro is used to declare a descendent of PAbstractList class, customised for a particular object type {\bf T}, and adds functionality that allows the list to be used as a first in first out queue. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PQueue# template class. See the #PList# class and #PDECLARE_QUEUE# macro for more information. */ #define PQUEUE(cls, T) typedef PQueue cls /**Begin declataion of a queue class. This macro is used to declare a descendent of PAbstractList class, customised for a particular object type {\bf T}, and adds functionality that allows the list to be used as a first in first out queue. If the compilation is using templates then this macro produces a descendent of the #PQueue# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PQueue# and #PAbstractList# classes for more information. */ #define PDECLARE_QUEUE(cls, T) \ PQUEUE(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ /**This template class maps the PAbstractList to a specific object type, and adds functionality that allows the list to be used as a last in first out stack. The functions in this class primarily do all the appropriate casting of types. By default, objects placed into the set will {\bf not} be deleted when removed or when all references to the set are destroyed. This is different from the default on most collection classes. Note that if templates are not used the #PDECLARE_STACK# macro will simulate the template instantiation. */ template class PStack : public PAbstractList { PCLASSINFO(PStack, PAbstractList); public: /**@name Construction */ //@{ /**Create a new, empty, stack. Note that by default, objects placed into the stack will {\bf not} be deleted when removed or when all references to the stack are destroyed. This is different from the default on most collection classes. */ PStack() : PAbstractList() { DisallowDeleteObjects(); } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the stack. Note that all objects in the array are also cloned, so this will make a complete copy of the stack. */ virtual PObject * Clone() const { return PNEW PStack(0, this); } //@} /**@name New functions for class */ //@{ /**Add an object to the stack. This object will be on "top" of the stack and will be the object returned by the #Pop()# function. */ virtual void Push( T * obj ///< Object to add to the stack. ) { PAbstractList::InsertAt(0, obj); } /**Remove the last object pushed onto the stack. @return object on top of the stack. */ virtual T * Pop() { return (T *)PAbstractList::RemoveAt(0); } /**Get the element that is currently on top of the stack without removing it. @return reference to object on top of the stack. */ virtual T & Top() { PAssert(GetSize() > 0, PStackEmpty); return *(T *)GetAt(0); } //@} protected: PStack(int dummy, const PStack * c) : PAbstractList(dummy, c) { reference->deleteObjects = c->reference->deleteObjects; } }; /**Declare a stack class. This macro is used to declare a descendent of PAbstractList class, customised for a particular object type {\bf T}, and adds functionality that allows the list to be used as a last in first out stack. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PStack# template class. See the #PStack# class and #PDECLARE_STACK# macro for more information. */ #define PSTACK(cls, T) typedef PStack cls /**Begin declaration of a stack class. This macro is used to declare a descendent of PAbstractList class, customised for a particular object type {\bf T}, and adds functionality that allows the list to be used as a last in first out stack. If the compilation is using templates then this macro produces a descendent of the #PStack# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PStack# and #PAbstractList# classes for more information. */ #define PDECLARE_STACK(cls, T) \ PSTACK(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #else // PHAS_TEMPLATES #define PLIST(cls, T) \ class cls : public PAbstractList { \ PCLASSINFO(cls, PAbstractList); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractList(dummy, c) { } \ public: \ inline cls() \ : PAbstractList() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ inline T & operator[](PINDEX index) const \ { return (T &)GetReferenceAt(index); } \ } #define PDECLARE_LIST(cls, T) \ PLIST(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #define PQUEUE(cls, T) \ class cls : public PAbstractList { \ PCLASSINFO(cls, PAbstractList); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractList(dummy, c) \ { reference->deleteObjects = c->reference->deleteObjects; } \ public: \ inline cls() \ : PAbstractList() { DisallowDeleteObjects(); } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ virtual void Enqueue(T * t) \ { PAbstractList::Append(t); } \ virtual T * Dequeue() \ { if (GetSize() == 0) return NULL; else return (T *)PAbstractList::RemoveAt(0);} \ } #define PDECLARE_QUEUE(cls, T) \ PQUEUE(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #define PSTACK(cls, T) \ class cls : public PAbstractList { \ PCLASSINFO(cls, PAbstractList); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractList(dummy, c) \ { reference->deleteObjects = c->reference->deleteObjects; } \ public: \ inline cls() \ : PAbstractList() { DisallowDeleteObjects(); } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ virtual void Push(T * t) \ { PAbstractList::InsertAt(0, t); } \ virtual T * Pop() \ { PAssert(GetSize() > 0, PStackEmpty); return (T *)PAbstractList::RemoveAt(0); } \ virtual T & Top() \ { PAssert(GetSize() > 0, PStackEmpty); return *(T *)GetAt(0); } \ } #define PDECLARE_STACK(cls, T) \ PSTACK(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #endif // PHAS_TEMPLATES /////////////////////////////////////////////////////////////////////////////// // Sorted List of PObjects /**This class is a collection of objects which are descendents of the #PObject# class. It is implemeted as a Red-Black binary tree to maintain the objects in rank order. Note that this requires that the #PObject::Compare()# function be fully implemented oin objects contained in the collection. The implementation of a sorted list allows fast inserting and deleting as well as random access of objects in the collection. As the objects are being kept sorted, "fast" is a relative term. All operations take o(lg n) unless a particular object is repeatedly accessed. The class remembers the last accessed element. This state information is used to optimise access by the "virtual array" model of collections. If repeated access via ordinal index is made there is little overhead. All other access incurs a minimum overhead, but not insignificant. The PAbstractSortedList class would very rarely be descended from directly by the user. The #PDECLARE_LIST# and #PLIST# macros would normally be used to create descendent classes. They will instantiate the template based on #PSortedList# or directly declare and define the class (using inline functions) if templates are not being used. The #PSortedList# class or #PDECLARE_SORTED_LIST# macro will define the correctly typed operators for subscript access (#operator[]#). */ class PAbstractSortedList : public PCollection { PCONTAINERINFO(PAbstractSortedList, PCollection); public: /**@name Construction */ //@{ /**Create a new, empty, sorted list. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PAbstractSortedList(); //@} /**@name Overrides from class PObject */ //@{ /**Get the relative rank of the two lists. The following algorithm is employed for the comparison: \begin{descriptions} \item[#EqualTo#] if the two lists are identical in length and each objects values, not pointer, are equal. \item[#LessThan#] if the instances object value at an ordinal position is less than the corresponding objects value in the #obj# parameters list. This is also returned if all objects are equal and the instances list length is less than the #obj# parameters list length. \item[#GreaterThan#] if the instances object value at an ordinal position is greater than the corresponding objects value in the #obj# parameters list. This is also returned if all objects are equal and the instances list length is greater than the #obj# parameters list length. \end{descriptions} @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare(const PObject & obj) const; //@} /**@name Overrides from class PContainer */ //@{ /**This function is meaningless for lists. The size of the collection is determined by the addition and removal of objects. The size cannot be set in any other way. @return Always TRUE. */ virtual BOOL SetSize( PINDEX newSize // New size for the sorted list, this is ignored. ); //@} /**@name Overrides from class PCollection */ //@{ /**Add a new object to the collection. The object is always placed in the correct ordinal position in the list. It is not placed at the "end". @return index of the newly added object. */ virtual PINDEX Append( PObject * obj // New object to place into the collection. ); /**Add a new object to the collection. The object is always placed in the correct ordinal position in the list. It is not placed at the specified position. The #before# parameter is ignored. @return index of the newly inserted object. */ virtual PINDEX Insert( const PObject & before, // Object value to insert before. PObject * obj // New object to place into the collection. ); /**Add a new object to the collection. The object is always placed in the correct ordinal position in the list. It is not placed at the specified position. The #index# parameter is ignored. @return index of the newly inserted object. */ virtual PINDEX InsertAt( PINDEX index, // Index position in collection to place the object. PObject * obj // New object to place into the collection. ); /**Remove the object from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note that the comparison for searching for the object in collection is made by pointer, not by value. Thus the parameter must point to the same instance of the object that is in the collection. @return TRUE if the object was in the collection. */ virtual BOOL Remove( const PObject * obj // Existing object to remove from the collection. ); /**Remove the object at the specified ordinal index from the collection. If the AllowDeleteObjects option is set then the object is also deleted. Note if the index is beyond the size of the collection then the function will assert. @return pointer to the object being removed, or NULL if it was deleted. */ virtual PObject * RemoveAt( PINDEX index // Index position in collection to place the object. ); /**Remove all of the elements in the collection. This operates by continually calling #RemoveAt()# until there are no objects left. The objects are removed from the last, at index #(GetSize()-1)# toward the first at index zero. */ virtual void RemoveAll(); /**This method simply returns FALSE as the list order is mantained by the class. Kept to mimic #PAbstractList# interface. @return FALSE allways */ virtual BOOL SetAt( PINDEX index, // Index position in collection to set. PObject * val // New value to place into the collection. ); /**Get the object at the specified ordinal position. If the index was greater than the size of the collection then NULL is returned. @return pointer to object at the specified index. */ virtual PObject * GetAt( PINDEX index // Index position in the collection of the object. ) const; /**Search the collection for the specific instance of the object. The object pointers are compared, not the values. A binary search is employed to locate the entry. Note that that will require value comparisons to be made to find the equivalent entry and then a final check is made with the pointers to see if they are the same instance. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetObjectsIndex( const PObject * obj ) const; /**Search the collection for the specified value of the object. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. A binary search is employed to locate the entry. @return ordinal index position of the object, or P_MAX_INDEX. */ virtual PINDEX GetValuesIndex( const PObject & obj ) const; //@} struct Element { friend class Info; Element * parent; Element * left; Element * right; PObject * data; PINDEX subTreeSize; enum { Red, Black } colour; }; protected: struct Info { Info(); Element * root; Element * lastElement; PINDEX lastIndex; Element nil; Element * Successor(const Element * node) const; Element * Predecessor(const Element * node) const; Element * OrderSelect(Element * node, PINDEX index) const; } * info; // New functions for class void RemoveElement(Element * node); void LeftRotate(Element * node); void RightRotate(Element * node); void DeleteSubTrees(Element * node, BOOL deleteObject); PINDEX ValueSelect(const Element * node, const PObject & obj, const Element ** lastElement) const; }; #ifdef PHAS_TEMPLATES /**This template class maps the PAbstractSortedList to a specific object type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PDECLARE_SORTED_LIST# macro will simulate the template instantiation. */ template class PSortedList : public PAbstractSortedList { PCLASSINFO(PSortedList, PAbstractSortedList); public: /**@name Construction */ //@{ /**Create a new, empty, sorted list. Note that by default, objects placed into the list will be deleted when removed or when all references to the list are destroyed. */ PSortedList() : PAbstractSortedList() { } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the list. Note that all objects in the array are also cloned, so this will make a complete copy of the list. */ virtual PObject * Clone() const { return PNEW PSortedList(0, this); } //@} /**@name New functions for class */ //@{ /**Retrieve a reference to the object in the list. If there was not an object at that ordinal position or the index was beyond the size of the array then the function asserts. The object accessed in this way is remembered by the class and further access will be fast. @return reference to the object at #index# position. */ T & operator[](PINDEX index) const { return *(T *)GetAt(index); } //@} protected: PSortedList(int dummy, const PSortedList * c) : PAbstractSortedList(dummy, c) { } }; /**Declare a sorted list class. This macro is used to declare a descendent of PAbstractSortedList class, customised for a particular object type {\bf T}. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PSortedList# template class. See the #PSortedList# class and #PDECLARE_SORTED_LIST# macro for more information. */ #define PSORTED_LIST(cls, T) typedef PSortedList cls /**Begin declaration of a sorted list class. This macro is used to declare a descendent of PAbstractSortedList class, customised for a particular object type {\bf T}. If the compilation is using templates then this macro produces a descendent of the #PSortedList# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PSortedList# and #PAbstractSortedList# classes for more information. */ #define PDECLARE_SORTED_LIST(cls, T) \ PSORTED_LIST(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, PSortedList) \ protected: \ cls(int dummy, const cls * c) \ : PSortedList(dummy, c) { } \ public: \ cls() \ : PSortedList() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #else // PHAS_TEMPLATES #define PSORTED_LIST(cls, T) \ class cls : public PAbstractSortedList { \ PCLASSINFO(cls, PAbstractSortedList); \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractSortedList(dummy, c) { } \ public: \ inline cls() \ : PAbstractSortedList() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ inline T & operator[](PINDEX index) const \ { return *(T *)GetAt(index); } \ } #define PDECLARE_SORTED_LIST(cls, T) \ PSORTED_LIST(cls##_PTemplate, T); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #endif // PHAS_TEMPLATES // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/mail.h0100644000176200056700000002613310341504163017230 0ustar releasepostincr/* * mail.h * * Electronic Mail abstraction class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: mail.h,v $ * Revision 1.14 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.13 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.12 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.11 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.10 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.9 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.8 1999/02/16 08:12:00 robertj * MSVC 6.0 compatibility changes. * * Revision 1.7 1999/02/10 13:20:53 robertj * Added ability to have attachments in mail messages. * * Revision 1.6 1998/09/23 06:20:51 robertj * Added open source copyright license. * * Revision 1.5 1997/05/16 12:14:08 robertj * Added BCC capability to send mail. * * Revision 1.4 1995/07/02 01:19:46 robertj * Change GetMessageBidy to return BOOL and have body string as * parameter, due to slight change in semantics for large bodies. * * Revision 1.3 1995/06/17 00:42:22 robertj * Added mail reading interface. * Changed name to simply PMail * * Revision 1.2 1995/04/01 08:27:57 robertj * Added GUI support. * * Revision 1.1 1995/03/14 12:44:11 robertj * Initial revision * */ #ifndef _PMAIL #define _PMAIL #ifdef P_USE_PRAGMA #pragma interface #endif #ifdef _WIN32 # ifndef P_HAS_MAPI # define P_HAS_MAPI 1 # endif # ifndef P_HAS_CMC # define P_HAS_CMC 1 # endif # if P_HAS_MAPI # include # endif # if P_HAS_CMC # include # endif #endif // _WIN32 /**This class establishes a mail session with the platforms mail system. */ class PMail : public PObject { PCLASSINFO(PMail, PObject); public: /**@name Construction */ //@{ /**Create a mail session. It is initially not logged in. */ PMail(); /**Create a mail session. Attempt to log in using the parameters provided. */ PMail( const PString & username, ///< User withing mail system to use. const PString & password ///< Password for user in mail system. ); /**Create a mail session. Attempt to log in using the parameters provided. */ PMail( const PString & username, ///< User withing mail system to use. const PString & password, ///< Password for user in mail system. const PString & service /**A platform dependent string indicating the location of the underlying messaging service, eg the path to a message store or node name of the mail server. */ ); virtual ~PMail(); /* Destroy the mail session, logging off the mail system if necessary. */ //@} /**@name Log in/out functions */ //@{ /**Attempt to log on to the mail system using the parameters provided. @return TRUE if successfully logged on. */ BOOL LogOn( const PString & username, ///< User withing mail system to use. const PString & password ///< Password for user in mail system. ); /**Attempt to log on to the mail system using the parameters provided. @return TRUE if successfully logged on. */ BOOL LogOn( const PString & username, ///< User withing mail system to use. const PString & password, ///< Password for user in mail system. const PString & service /**A platform dependent string indicating the location of the underlying messaging service, eg the path to a message store or node name of the mail server. */ ); /**Log off from the mail system. @return TRUE if successfully logged off. */ virtual BOOL LogOff(); /**Determine if the mail session is active and logged into the mail system. @return TRUE if logged into the mail system. */ BOOL IsLoggedOn() const; //@} /**@name Send message functions */ //@{ /**Send a new simple mail message. @return TRUE if the mail message was successfully queued. Note that this does {\bf not} mean that it has been delivered. */ BOOL SendNote( const PString & recipient, ///< Name of recipient of the mail message. const PString & subject, ///< Subject name for the mail message. const char * body ///< Text body of the mail message. ); /**Send a new simple mail message. @return TRUE if the mail message was successfully queued. Note that this does {\bf not} mean that it has been delivered. */ BOOL SendNote( const PString & recipient, ///< Name of recipient of the mail message. const PString & subject, ///< Subject name for the mail message. const char * body, ///< Text body of the mail message. const PStringList & attachments ///< List of files to attach to the mail message. ); /**Send a new simple mail message. @return TRUE if the mail message was successfully queued. Note that this does {\bf not} mean that it has been delivered. */ BOOL SendNote( const PString & recipient, ///< Name of recipient of the mail message. const PStringList & carbonCopies, ///< Name of CC recipients. const PStringList & blindCarbons, ///< Name of BCC recipients. const PString & subject, ///< Subject name for the mail message. const char * body, ///< Text body of the mail message. const PStringList & attachments ///< List of files to attach to the mail message. ); //@} /**@name Read message functions */ //@{ /**Get a list of ID strings for all messages in the mail box. @return An array of ID strings. */ PStringArray GetMessageIDs( BOOL unreadOnly = TRUE ///< Only get the IDs for unread messages. ); /// Message header for each mail item. struct Header { /// Subject for message. PString subject; /// Full name of message originator. PString originatorName; /// Return address of message originator. PString originatorAddress; /// Time message received. PTime received; }; /**Get the header information for a message. @return TRUE if header information was successfully obtained. */ BOOL GetMessageHeader( const PString & id, ///< Identifier of message to get header. Header & hdrInfo ///< Header info for the message. ); /**Get the body text for a message into the #body# string parameter. Note that if the body text for the mail message is very large, the function will return FALSE. To tell between an error getting the message body and having a large message body the #GetErrorCode()# function must be used. To get a large message body, the #GetMessageAttachments()# should be used with the #includeBody# parameter set to TRUE so that the message body is placed into a disk file. @return TRUE if the body text was retrieved, FALSE if the body was too large or some other error occurred. */ BOOL GetMessageBody( const PString & id, ///< Identifier of message to get body. PString & body, ///< Body text of mail message. BOOL markAsRead = FALSE ///< Mark the message as read. ); /**Get all of the attachments for a message as disk files. @return TRUE if attachments were successfully obtained. */ BOOL GetMessageAttachments( const PString & id, ///< Identifier of message to get attachments. PStringArray & filenames, ///< File names for each attachment. BOOL includeBody = FALSE, ///< Include the message body as first attachment BOOL markAsRead = FALSE ///< Mark the message as read ); /**Mark the message as read. @return TRUE if message was successfully marked as read. */ BOOL MarkMessageRead( const PString & id ///< Identifier of message to get header. ); /**Delete the message from the system. @return TRUE if message was successfully deleted. */ BOOL DeleteMessage( const PString & id ///< Identifier of message to get header. ); //@} /**@name User look up functions */ //@{ /// Result of a lookup operation with the #LookUp()# function. enum LookUpResult { /// User name is unknown in mail system. UnknownUser, /// User is ambiguous in mail system. AmbiguousUser, /// User is a valid, unique name in mail system. ValidUser, /// An error occurred during the look up LookUpError }; /**Look up the specified name and verify that they are a valid address in the mail system. @return result of the name lookup. */ LookUpResult LookUp( const PString & name, ///< Name to look up. PString * fullName = NULL /**String to receive full name of user passed in #name#. If NULL then the full name is {\bf not} returned. */ ); //@} /**@name Error functions */ //@{ /**Get the internal error code for the last error by a function in this mail session. @return integer error code for last operation. */ int GetErrorCode() const; /**Get the internal error description for the last error by a function in this mail session. @return string error text for last operation. */ PString GetErrorText() const; //@} protected: void Construct(); // Common construction code. /// Flag indicating the session is active. BOOL loggedOn; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/mail.h" #else #include "unix/ptlib/mail.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/mutex.h0100644000176200056700000001166310341452564017461 0ustar releasepostincr/* * mutex.h * * Mutual exclusion thread synchonisation class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: mutex.h,v $ * Revision 1.14 2005/11/25 00:06:12 csoutheren * Applied patch #1364593 from Hannes Friederich * Also changed so PTimesMutex is no longer descended from PSemaphore on * non-Windows platforms * * Revision 1.13 2005/11/08 22:31:00 csoutheren * Moved declaration of PMutex * * Revision 1.12 2005/11/08 22:18:31 csoutheren * Changed PMutex to use PTimedMutex on non-Windows platforms because * sem_wait is not recursive. Very sad. * Thanks to Frederic Heem for finding this problem * * Revision 1.11 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.10 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.9 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.8 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.7 2002/01/23 04:26:36 craigs * Added copy constructors for PSemaphore, PMutex and PSyncPoint to allow * use of default copy constructors for objects containing instances of * these classes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.4 1999/02/16 08:12:22 robertj * MSVC 6.0 compatibility changes. * * Revision 1.3 1998/11/30 02:50:59 robertj * New directory structure * * Revision 1.2 1998/09/23 06:20:55 robertj * Added open source copyright license. * * Revision 1.1 1998/03/23 02:41:31 robertj * Initial revision * */ #ifndef _PMUTEX #define _PMUTEX #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /**This class defines a thread mutual exclusion object. A mutex is where a piece of code or data cannot be accessed by more than one thread at a time. To prevent this the PMutex is used in the following manner: \begin{verbatim} PMutex mutex; ... mutex.Wait(); ... critical section - only one thread at a time here. mutex.Signal(); ... \end{verbatim} The first thread will pass through the #Wait()# function, a second thread will block on that function until the first calls the #Signal()# function, releasing the second thread. */ /* * On Windows, It is convenient for PTimedMutex to be an ancestor of PSemaphore * But that is the only platform where it is - every other platform (i.e. Unix) * uses different constructs for these objects, so there is no need for a PTimedMute * to carry around all of the PSemaphore members */ #ifdef _WIN32 class PTimedMutex : public PSemaphore { PCLASSINFO(PTimedMutex, PSemaphore); #else class PTimedMutex : public PSync { PCLASSINFO(PTimedMutex, PSync) #endif public: /* Create a new mutex. Initially the mutex will not be "set", so the first call to Wait() will never wait. */ PTimedMutex(); PTimedMutex(const PTimedMutex & mutex); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/mutex.h" #else #include "unix/ptlib/mutex.h" #endif }; // On Windows, critical sections are recursive and so we can use them for mutexes // The only Posix mutex that is recursive is pthread_mutex, so we have to use that #ifdef _WIN32 typedef PCriticalSection PMutex; #else typedef PTimedMutex PMutex; #endif #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/notifier.h0100644000176200056700000001435210341504163020125 0ustar releasepostincr#ifndef _PNOTIFIER_H #define _PNOTIFIER_H #include #include /////////////////////////////////////////////////////////////////////////////// // General notification mechanism from one object to another /** This class is the #PSmartObject# contents of the #PNotifier# class. This is an abstract class for which a descendent is declared for every function that may be called. The #PDECLARE_NOTIFIER# macro makes this declaration. The #PNotifier# and PNotifierFunction classes build a completely type safe mechanism for calling arbitrary member functions on classes. The "pointer to a member function" capability built into C++ makes the assumption that the function name exists in an ancestor class. If you wish to call a member function name that does {\bf not} exist in any ancestor class, very type unsafe casting of the member functions must be made. Some compilers will even refuse to do it at all! To overcome this problem, as this mechanism is highly desirable for callback functions in the GUI part of the PWLib library, these classes and a macro are used to create all the classes and declarations to use polymorphism as the link between the caller, which has no knowledege of the function, and the receiver object and member function. This is most often used as the notification of actions being take by interactors in the PWLib library. */ class PNotifierFunction : public PSmartObject { PCLASSINFO(PNotifierFunction, PSmartObject); public: /// Create a notification function instance. PNotifierFunction( void * obj ///< Object instance that the function will be called on. ) { object = PAssertNULL(obj); } /** Execute the call to the actual notification function on the object instance contained in this object. */ virtual void Call( PObject & notifier, ///< Object that is making the notification. INT extra ///< Extra information that may be passed to function. ) const = 0; protected: // Member variables /** Object instance to receive the notification function call. */ void * object; }; /** This class is the #PSmartPointer# to the #PNotifierFunction# class. The PNotifier and #PNotifierFunction# classes build a completely type safe mechanism for calling arbitrary member functions on classes. The "pointer to a member function" capability built into C++ makes the assumption that the function name exists in an ancestor class. If you wish to call a member function name that does {\bf not} exist in any ancestor class, very type unsafe casting of the member functions must be made. Some compilers will even refuse to do it at all! To overcome this problem, as this mechanism is highly desirable for callback functions in the GUI part of the PWLib library, these classes and a macro are used to create all the classes and declarations to use polymorphism as the link between the caller, which has no knowledege of the function, and the receiver object and member function. This is most often used as the notification of actions being take by interactors in the PWLib library. */ class PNotifier : public PSmartPointer { PCLASSINFO(PNotifier, PSmartPointer); public: /** Create a new notification function smart pointer. */ PNotifier( PNotifierFunction * func = NULL ///< Notifier function to call. ) : PSmartPointer(func) { } /**Execute the call to the actual notification function on the object instance contained in this object. This will make a polymorphic call to the function declared by the #PDECLARE_NOTIFIER# macro which in turn calls the required function in the destination object. */ virtual void operator()( PObject & notifier, ///< Object that is making the notification. INT extra ///< Extra information that may be passed to function. ) const { if (PAssertNULL(object) != NULL) ((PNotifierFunction*)object)->Call(notifier,extra); } }; /** Declare a notifier object class. This macro declares the descendent class of #PNotifierFunction# that will be used in instances of #PNotifier# created by the #PCREATE_NOTIFIER# or #PCREATE_NOTIFIER2# macros. The macro is expected to be used inside a class declaration. The class it declares will therefore be a nested class within the class being declared. The name of the new nested class is derived from the member function name which should guarentee the class names are unique. The #notifier# parameter is the class of the function that will be calling the notification function. The #notifiee# parameter is the class to which the called member function belongs. Finally the #func# parameter is the name of the member function to be declared. This macro will also declare the member function itself. This will be: \begin{verbatim} void func(notifier & n, INT extra) \end{verbatim} The implementation of the function is left for the user. */ #define PDECLARE_NOTIFIER(notifier, notifiee, func) \ class func##_PNotifier : public PNotifierFunction { \ public: \ func##_PNotifier(notifiee * obj) : PNotifierFunction(obj) { } \ virtual void Call(PObject & note, INT extra) const \ { ((notifiee*)object)->func((notifier &)note, extra); } \ }; \ friend class func##_PNotifier; \ virtual void func(notifier & note, INT extra) /** Create a notifier object instance. This macro creates an instance of the particular #PNotifier# class using the #func# parameter as the member function to call. The #obj# parameter is the instance to call the function against. If the instance to be called is the current instance, ie #obj# is to #this# the the #PCREATE_NOTIFIER# macro should be used. */ #define PCREATE_NOTIFIER2(obj, func) PNotifier(new func##_PNotifier(obj)) /** Create a notifier object instance. This macro creates an instance of the particular #PNotifier# class using the #func# parameter as the member function to call. The #this# object is used as the instance to call the function against. The #PCREATE_NOTIFIER2# macro may be used if the instance to be called is not the current object instance. */ #define PCREATE_NOTIFIER(func) PCREATE_NOTIFIER2(this, func) #endif pwlib_v1_10_2/include/ptlib/notifier_ext.h0100644000176200056700000001062410343317551021010 0ustar releasepostincr/* * notifier_ext.h * * Smart Notifiers and Notifier Lists * * Portable Windows Library * * Copyright (c) 2004 Reitek S.p.A. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: notifier_ext.h,v $ * Revision 1.5 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.4 2004/05/17 11:02:39 csoutheren * Added extra documentation * * Revision 1.3 2004/05/09 07:23:48 rjongbloed * More work on XMPP, thanks Federico Pinna and Reitek S.p.A. * * Revision 1.2 2004/04/26 01:34:58 rjongbloed * Change nofier list to be able to used in containers, thanks Federico Pinna, Reitek S.p.A. * * Revision 1.1 2004/04/22 12:31:00 rjongbloed * Added PNotifier extensions and XMPP (Jabber) support, * thanks to Federico Pinna and Reitek S.p.A. * * */ #ifndef _PNOTIFIER_EXT #define _PNOTIFIER_EXT #ifdef P_USE_PRAGMA #pragma interface #endif /** Implements a function similar to the PNotifier, but uses an "id" to link the caller * and callee rather than using a pointer. This has the advantage that if the pointer * becomes invalid, the caller can gracefully fail the notification rather than * simply crashing due to an invalid pointer access. * * These classes were created to support of the XMPP classes */ class PSmartNotifieeRegistrar { public: PSmartNotifieeRegistrar() : m_ID(P_MAX_INDEX) {} ~PSmartNotifieeRegistrar() { UnregisterNotifiee(m_ID); } void Init(void * obj) { if (m_ID == P_MAX_INDEX) m_ID = RegisterNotifiee(obj); } unsigned GetID() const { return m_ID; } static unsigned RegisterNotifiee(void * obj); static BOOL UnregisterNotifiee(unsigned id); static BOOL UnregisterNotifiee(void * obj); static void * GetNotifiee(unsigned id); protected: unsigned m_ID; }; class PSmartNotifierFunction : public PNotifierFunction { PCLASSINFO(PSmartNotifierFunction, PNotifierFunction); protected: unsigned m_NotifieeID; public: PSmartNotifierFunction(unsigned id) : PNotifierFunction(&id), m_NotifieeID(id) { } unsigned GetNotifieeID() const { return m_NotifieeID; } void * GetNotifiee() const { return PSmartNotifieeRegistrar::GetNotifiee(m_NotifieeID); } BOOL IsValid() const { return GetNotifiee() != 0; } }; #define PDECLARE_SMART_NOTIFIEE \ PSmartNotifieeRegistrar m_Registrar; \ #define PCREATE_SMART_NOTIFIEE m_Registrar.Init(this) #define PDECLARE_SMART_NOTIFIER(notifier, notifiee, func) \ class func##_PSmartNotifier : public PSmartNotifierFunction { \ public: \ func##_PSmartNotifier(unsigned id) : PSmartNotifierFunction(id) { } \ virtual void Call(PObject & note, INT extra) const \ { \ void * obj = GetNotifiee(); \ if (obj) \ ((notifiee*)obj)->func((notifier &)note, extra); \ else \ PTRACE(2, "Invalid notifiee"); \ } \ }; \ friend class func##_PSmartNotifier; \ virtual void func(notifier & note, INT extra) #define PCREATE_SMART_NOTIFIER(func) PNotifier(new func##_PSmartNotifier(m_Registrar.GetID())) class PNotifierList : public PObject { PCLASSINFO(PNotifierList, PObject); private: PLIST(_PNotifierList, PNotifier); _PNotifierList m_TheList; // Removes smart pointers to deleted objects void Cleanup(); public: PINDEX GetSize() const { return m_TheList.GetSize(); } void Add(PNotifier * handler) { m_TheList.Append(handler); } void Remove(PNotifier * handler) { m_TheList.Remove(handler); } BOOL RemoveTarget(PObject * obj); BOOL Fire(PObject& obj, INT val = 0); // Moves all the notifiers in "that" to "this" void Move(PNotifierList& that); }; #endif // _PNOTIFIER_EXT // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/object.h0100644000176200056700000017177510343317551017576 0ustar releasepostincr/* * object.h * * Mother of all ancestor classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: object.h,v $ * Revision 1.115 2005/11/30 12:47:37 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.114 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.113 2005/09/18 11:05:36 dominance * include/ptlib/channel.h, include/ptlib/pstring.h, src/ptlib/common/contain.cxx, * src/ptlib/common/pchannel.cxx: * correct the STL defined checking to use proper syntax. * * include/ptlib/object.h: * re-add typedef to compile on mingw * * make/ptlib-config.in: * import a long-standing fix from the Debian packs which allows usage of * ptlib-config without manually adding -lpt for each of the subsequent * projects * * Revision 1.112 2005/08/30 06:36:39 csoutheren * Added ability to rotate output logs on a daily basis * * Revision 1.111 2005/03/10 06:37:20 csoutheren * Removed use of typeid on WIndows to get class name because it is not threadsafe * In fact, lets just use #classname everywhere because that will always work * Thanks to Vyacheslav Frolov * * Revision 1.110 2004/08/14 14:17:29 csoutheren * Fixed problem with PAssert and associated functions caused by using expressions * as statements. inline functions are your friend :) * * Revision 1.109 2004/08/05 12:09:35 rjongbloed * Added macros for "remove const" and "down cast" funcions with and without RTTI. * Added ability to disable Asserts. * Change PAssert macros so pass through the boolean result so that they can be used * in if statements, allowing a chance to continue if ignore assert. * * Revision 1.108 2004/07/11 07:56:35 csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.107 2004/07/03 06:49:49 rjongbloed * Added PTRACE_PARAM() macro to fix warnings on parameters used in PTRACE * macros only. * * Revision 1.106 2004/06/01 07:42:19 csoutheren * Restored memory allocation checking * Added configure flag to enable, thanks to Derek Smithies * * Revision 1.105 2004/06/01 05:22:43 csoutheren * Restored memory check functionality * * Revision 1.104 2004/05/12 04:36:17 csoutheren * Fixed problems with using sem_wait and friends on systems that do not * support atomic integers * * Revision 1.103 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.102 2004/04/11 13:26:25 csoutheren * Removed namespace problems and removed warnings for Windows * * Revision 1.101 2004/04/11 03:20:41 csoutheren * Added Unix implementation of PCriticalSection * * Revision 1.100 2004/04/11 02:55:17 csoutheren * Added PCriticalSection for Windows * Added compile time option for PContainer to use critical sections to provide thread safety under some circumstances * * Revision 1.99 2004/04/09 11:54:46 csoutheren * Added configure.in check for STL streams, and tested with gcc 2.95.3, * gcc 3.3.1, and gcc 3.3.3 * * Revision 1.98 2004/04/09 07:53:51 rjongbloed * Fixed backward compatibility after STL streams change * * Revision 1.97 2004/04/09 00:56:35 csoutheren * Fixed problem with new class name code * * Revision 1.96 2004/04/09 00:42:58 csoutheren * Changed Unix build to use slightly different method for * keep class names, as GCC does not use actual class names for typeinfo * * Revision 1.95 2004/04/04 13:24:18 rjongbloed * Changes to support native C++ Run Time Type Information * * Revision 1.94 2004/04/03 08:57:31 csoutheren * Replaced pseudo-RTTI with real RTTI * * Revision 1.93 2004/04/03 08:22:20 csoutheren * Remove pseudo-RTTI and replaced with real RTTI * * Revision 1.92 2004/04/03 07:41:00 csoutheren * Fixed compile problem with ostringstream/ostrstream * * Revision 1.91 2004/04/03 07:16:05 rjongbloed * Fixed backward compatibility with MSVC 6 * * Revision 1.90 2004/04/03 06:54:22 rjongbloed * Many and various changes to support new Visual C++ 2003 * * Revision 1.89 2003/09/17 09:00:59 csoutheren * Moved PSmartPointer and PNotifier into seperate files * Added detection for system regex libraries on all platforms * * Revision 1.88 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.87 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.86 2002/10/14 21:42:37 rogerh * Only use malloc.h on Windows * * Revision 1.85 2002/10/10 04:43:43 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.84 2002/10/08 12:41:51 robertj * Changed for IPv6 support, thanks Sbastien Josset. * * Revision 1.83 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.82 2002/08/06 02:27:58 robertj * GNU C++ v3 compatibility. * * Revision 1.81 2002/06/25 02:22:47 robertj * Improved assertion system to allow C++ class name to be displayed if * desired, especially relevant to container classes. * * Revision 1.80 2002/06/14 10:29:43 rogerh * STL + gcc 3.1 compile fix. Submitted by Klaus Kaempf * * Revision 1.79 2002/06/13 08:34:05 rogerh * gcc 3.1 needs iostream instead of iostream.h * * Revision 1.78 2002/05/22 00:23:31 craigs * Added GMTTime flag to tracing options * * Revision 1.77 2002/04/19 00:20:51 craigs * Added option to append to log file rather than create anew each time * * Revision 1.76 2002/01/26 23:55:55 craigs * Changed for GCC 3.0 compatibility, thanks to manty@manty.net * * Revision 1.75 2001/10/18 19:56:26 yurik * Fixed WinCE x86 compilation problems with memory check off * * Revision 1.74 2001/08/12 11:26:07 robertj * Put back PMEMORY_CHECK taken out by the Carbon port. * * Revision 1.73 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.72 2001/05/03 06:27:29 robertj * Added return value to PMemoryCheck::SetIgnoreAllocations() so get previous state. * * Revision 1.71 2001/03/24 01:11:10 robertj * Added missing PTRACE_IF define in non PTRACING mode. * * Revision 1.70 2001/03/23 05:34:09 robertj * Added PTRACE_IF to output trace if a conditional is TRUE. * * Revision 1.69 2001/03/01 02:15:16 robertj * Fixed PTRACE_LINE() so drops filename and line which may not be in trace otherwise. * * Revision 1.68 2001/02/22 08:16:41 robertj * Added standard trace file setup subroutine. * * Revision 1.67 2001/02/13 03:27:24 robertj * Added function to do heap validation. * * Revision 1.66 2001/02/09 04:41:27 robertj * Removed added non memrycheck implementations of new/delete when using GNU C++. * * Revision 1.65 2001/02/07 04:47:49 robertj * Added changes for possible random crashes in multi DLL environment * due to memory allocation wierdness, thanks Milan Dimitrijevic. * * Revision 1.64 2001/01/24 06:15:44 yurik * Windows CE port-related declarations * * Revision 1.63 2000/07/28 05:13:47 robertj * Fixed silly mistake in runtime_malloc() function, should return a pointer! * * Revision 1.62 2000/07/20 05:46:34 robertj * Added runtime_malloc() function for cases where memory check code must be bypassed. * * Revision 1.61 2000/07/13 15:45:35 robertj * Removed #define std that causes everyone so much grief! * * Revision 1.60 2000/06/26 11:17:19 robertj * Nucleus++ port (incomplete). * * Revision 1.59 2000/02/29 12:26:14 robertj * Added named threads to tracing, thanks to Dave Harvey * * Revision 1.58 2000/01/07 12:31:12 robertj * Fixed 8 byte alignment on memory heap checking. * * Revision 1.57 2000/01/05 00:29:12 robertj * Fixed alignment problems in memory checking debug functions. * * Revision 1.56 1999/11/30 00:22:54 robertj * Updated documentation for doc++ * * Revision 1.55 1999/11/01 00:10:27 robertj * Added override of new functions for MSVC memory check code. * * Revision 1.54 1999/10/19 09:21:30 robertj * Added functions to get current trace options and level. * * Revision 1.53 1999/09/13 13:15:06 robertj * Changed PTRACE so will output to system log in PServiceProcess applications. * * Revision 1.52 1999/08/24 08:15:23 robertj * Added missing operator on smart pointer to return the pointer! * * Revision 1.51 1999/08/24 06:54:36 robertj * Cleaned up the smart pointer code (macros). * * Revision 1.50 1999/08/22 13:38:39 robertj * Fixed termination hang up problem with memory check code under unix pthreads. * * Revision 1.49 1999/08/17 03:46:40 robertj * Fixed usage of inlines in optimised version. * * Revision 1.48 1999/08/10 10:45:09 robertj * Added mutex in memory check detection code. * * Revision 1.47 1999/07/18 15:08:24 robertj * Fixed 64 bit compatibility * * Revision 1.46 1999/06/14 07:59:37 robertj * Enhanced tracing again to add options to trace output (timestamps etc). * * Revision 1.45 1999/05/01 11:29:19 robertj * Alpha linux port changes. * * Revision 1.44 1999/04/18 12:58:39 robertj * MSVC 5 backward compatibility * * Revision 1.43 1999/03/09 10:30:17 robertj * Fixed ability to have PMEMORY_CHECK on/off on both debug/release versions. * * Revision 1.42 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.41 1999/02/23 07:11:26 robertj * Improved trace facility adding trace levels and #define to remove all trace code. * * Revision 1.40 1999/02/22 10:48:14 robertj * Fixed delete operator prototypes for MSVC6 and GNU compatibility. * * Revision 1.39 1999/02/19 11:33:02 robertj * Fixed compatibility problems with GNU/MSVC6 * * Revision 1.38 1999/02/16 08:12:22 robertj * MSVC 6.0 compatibility changes. * * Revision 1.37 1999/01/07 03:35:35 robertj * Added default for PCHAR8 to ANSI, removes need for compiler option. * * Revision 1.36 1998/12/15 09:00:29 robertj * Fixed 8 byte alignment problem in memory leak check code for sparc. * * Revision 1.35 1998/11/03 00:57:19 robertj * Added allocation breakpoint variable. * * Revision 1.34 1998/10/26 11:05:26 robertj * Added raw free for things allocated within the runtime library. * * Revision 1.33 1998/10/18 14:26:55 robertj * Improved tracing functions. * * Revision 1.32 1998/10/15 07:47:21 robertj * Added ability to ignore G++lib memory leaks. * * Revision 1.31 1998/10/15 01:53:58 robertj * GNU compatibility. * * Revision 1.30 1998/10/13 14:23:29 robertj * Complete rewrite of memory leak detection. * * Revision 1.29 1998/09/23 06:20:57 robertj * Added open source copyright license. * * Revision 1.28 1998/09/14 12:29:11 robertj * Fixed memory leak dump under windows to not include static globals. * Fixed problem with notifier declaration not allowing implementation inline after macro. * * Revision 1.27 1997/07/08 13:13:45 robertj * DLL support. * * Revision 1.26 1997/04/27 05:50:11 robertj * DLL support. * * Revision 1.25 1997/02/05 11:54:10 robertj * Fixed problems with memory check and leak detection. * * Revision 1.24 1996/09/16 12:57:23 robertj * DLL support * * Revision 1.23 1996/08/17 10:00:23 robertj * Changes for Windows DLL support. * * Revision 1.22 1996/07/15 10:27:51 robertj * Changed endian classes to be memory mapped. * * Revision 1.21 1996/05/09 12:14:48 robertj * Fixed up 64 bit integer class for Mac platform. * * Revision 1.20 1996/02/24 14:19:29 robertj * Fixed bug in endian independent integer code for memory transfers. * * Revision 1.19 1996/01/28 02:46:43 robertj * Removal of MemoryPointer classes as usage didn't work for GNU. * Added missing bit shift operators to 64 bit integer class. * * Revision 1.18 1996/01/23 13:14:32 robertj * Added const version of PMemoryPointer. * Added constructor to endian classes for the base type. * * Revision 1.17 1996/01/02 11:54:11 robertj * Mac OS compatibility changes. * * Revision 1.16 1995/11/09 12:17:10 robertj * Added platform independent base type access classes. * * Revision 1.15 1995/06/17 11:12:47 robertj * Documentation update. * * Revision 1.14 1995/06/04 12:34:19 robertj * Added trace functions. * * Revision 1.13 1995/04/25 12:04:35 robertj * Fixed borland compatibility. * Fixed function hiding ancestor virtuals. * * Revision 1.12 1995/03/14 12:41:54 robertj * Updated documentation to use HTML codes. * * Revision 1.11 1995/03/12 04:40:55 robertj * Changed standard error code for not open from file to channel. * * Revision 1.10 1995/02/19 04:19:14 robertj * Added dynamically linked command processing. * * Revision 1.9 1995/02/05 00:48:07 robertj * Fixed template version. * * Revision 1.8 1995/01/15 04:51:31 robertj * Mac compatibility. * Added levels of memory checking. * * Revision 1.7 1995/01/09 12:38:31 robertj * Changed variable names around during documentation run. * Fixed smart pointer comparison. * Fixed serialisation stuff. * Documentation. * * Revision 1.6 1995/01/03 09:39:06 robertj * Put standard malloc style memory allocation etc into memory check system. * * Revision 1.5 1994/12/12 10:08:30 robertj * Renamed PWrapper to PSmartPointer.. * * Revision 1.4 1994/12/05 11:23:28 robertj * Fixed PWrapper macros. * * Revision 1.3 1994/11/19 00:22:55 robertj * Changed PInteger to be INT, ie standard type like BOOL/WORD etc. * Moved null object check in notifier to construction rather than use. * Added virtual to the callback function in notifier destination class. * * Revision 1.2 1994/11/03 09:25:30 robertj * Made notifier destination object not to be descendent of PObject. * * Revision 1.1 1994/10/30 12:01:37 robertj * Initial revision * */ #ifndef _POBJECT_H #define _POBJECT_H #ifdef P_USE_PRAGMA #pragma interface #endif #ifdef _WIN32 #include "msos/ptlib/contain.h" #else #include "unix/ptlib/contain.h" #endif #if defined(P_VXWORKS) #include #endif #include #include #include #ifdef _WIN32 #include #endif #include #ifdef __USE_STL__ #include #include #include #if (__GNUC__ >= 3) #include typedef std::ostringstream ostrstream; #else #include #endif //using namespace std; #else #if (__GNUC__ >= 3) #include #ifndef __MWERKS__ #include #endif #else #include #ifdef __GNUC__ #include #else #include #endif #ifndef __MWERKS__ #include #endif #endif #endif #ifdef _WIN32_WCE #include #endif #if (__GNUC__ < 3) typedef long _Ios_Fmtflags; #endif #if _MSC_VER<1300 #define _BADOFF -1 #endif /////////////////////////////////////////////////////////////////////////////// // Disable inlines when debugging for faster compiles (the compiler doesn't // actually inline the function with debug on any way). #ifndef P_USE_INLINES #ifdef _DEBUG #define P_USE_INLINES 0 #else #define P_USE_INLINES 0 #endif #endif #if P_USE_INLINES #define PINLINE inline #else #define PINLINE #endif /////////////////////////////////////////////////////////////////////////////// // Declare the debugging support #ifndef P_USE_ASSERTS #define P_USE_ASSERTS 1 #endif #if !P_USE_ASSERTS #define PAssert(b, m) (b) #define PAssert2(b, c, m) (b) #define PAssertOS(b) (b) #define PAssertNULL(p) (p) #define PAssertAlways(m) #define PAssertAlways2(c, m) #else // P_USE_ASSERTS /// Standard assert messages for the PAssert macro. enum PStandardAssertMessage { PLogicError, // A logic error occurred. POutOfMemory, // A new or malloc failed. PNullPointerReference, // A reference was made through a NULL pointer. PInvalidCast, // An invalid cast to descendant is required. PInvalidArrayIndex, // An index into an array was negative. PInvalidArrayElement, // A NULL array element object was accessed. PStackEmpty, // A Pop() was made of a stack with no elements. PUnimplementedFunction, // Funtion is not implemented. PInvalidParameter, // Invalid parameter was passed to a function. POperatingSystemError, // Error was returned by Operating System. PChannelNotOpen, // Operation attempted when channel not open. PUnsupportedFeature, // Feature is not supported. PInvalidWindow, // Access through invalid window. PMaxStandardAssertMessage }; #define __CLASS__ NULL void PAssertFunc(const char * file, int line, const char * className, PStandardAssertMessage msg); void PAssertFunc(const char * file, int line, const char * className, const char * msg); void PAssertFunc(const char * full_msg); inline bool PAssertFuncInline(bool b, const char * file, int line, const char * className, PStandardAssertMessage msg) { if (!b) PAssertFunc(file, line, className, msg); return b; } inline bool PAssertFuncInline(bool b, const char * file, int line, const char * className, const char * msg) { if (!b) PAssertFunc(file, line, className, msg); return b; } /** This macro is used to assert that a condition must be TRUE. If the condition is FALSE then an assert function is called with the source file and line number the macro was instantiated on, plus the message described by the #msg# parameter. This parameter may be either a standard value from the #PStandardAssertMessage# enum or a literal string. */ #define PAssert(b, m) PAssertFuncInline((b), __FILE__,__LINE__,__CLASS__,(m)) /** This macro is used to assert that a condition must be TRUE. If the condition is FALSE then an assert function is called with the source file and line number the macro was instantiated on, plus the message described by the #msg# parameter. This parameter may be either a standard value from the #PStandardAssertMessage# enum or a literal string. The #c# parameter specifies the class name that the error occurred in */ #define PAssert2(b, c, m) PAssertFuncInline((b), __FILE__,__LINE__,(c),(m)) /** This macro is used to assert that an operating system call succeeds. If the condition is FALSE then an assert function is called with the source file and line number the macro was instantiated on, plus the message described by the #POperatingSystemError# value in the #PStandardAssertMessage# enum. */ #define PAssertOS(b) PAssertFuncInline((b), __FILE__,__LINE__,__CLASS__,POperatingSystemError) /** This macro is used to assert that a pointer must be non-null. If the pointer is NULL then an assert function is called with the source file and line number the macro was instantiated on, plus the message described by the PNullPointerReference value in the #PStandardAssertMessage# enum. Note that this evaluates the expression defined by #ptr# twice. To prevent incorrect behaviour with this, the macro will assume that the #ptr# parameter is an L-Value. */ #define PAssertNULL(p) ((&(p)&&(p)!=NULL)?(p): \ (PAssertFunc(__FILE__,__LINE__, __CLASS__, PNullPointerReference),(p))) /** This macro is used to assert immediately. The assert function is called with the source file and line number the macro was instantiated on, plus the message described by the #msg# parameter. This parameter may be either a standard value from the #PStandardAssertMessage# enum or a literal string. */ #define PAssertAlways(m) PAssertFunc(__FILE__,__LINE__,__CLASS__,(m)) /** This macro is used to assert immediately. The assert function is called with the source file and line number the macro was instantiated on, plus the message described by the #msg# parameter. This parameter may be either a standard value from the #PStandardAssertMessage# enum or a literal string. */ #define PAssertAlways2(c, m) PAssertFunc(__FILE__,__LINE__,(c),(m)) #endif // P_USE_ASSERTS /** Get the stream being used for error output. This stream is used for all trace output using the various trace functions and macros. */ ostream & PGetErrorStream(); /** Set the stream to be used for error output. This stream is used for all error output using the #PError# macro. */ void PSetErrorStream(ostream * strm /** New stream for error output */ ); /** This macro is used to access the platform specific error output stream. This is to be used in preference to assuming #cerr# is always available. On Unix platforms this {\bfis} #cerr# but for MS-Windows this is another stream that uses the OutputDebugString() Windows API function. Note that a MS-DOS or Windows NT console application would still use #cerr#. The #PError# stream would normally only be used for debugging information as a suitable display is not always available in windowed environments. The macro is a wrapper for a global variable #PErrorStream# which is a pointer to an #ostream#. The variable is initialised to #cerr# for all but MS-Windows and NT GUI applications. An application could change this pointer to a #ofstream# variable of #PError# output is wished to be redirected to a file. */ #define PError (PGetErrorStream()) /////////////////////////////////////////////////////////////////////////////// // Debug and tracing #ifndef PTRACING #ifndef _DEBUG #define PTRACING 0 #else #define PTRACING 1 #endif #endif /**Class to encapsulate tracing functions. This class does not require any instances and is only being used as a method of grouping functions together in a name space. */ class PTrace { public: /// Options for trace output. enum Options { /**Include PTrace::Block constructs in output If this is bit is clear, all PTrace::Block output is inhibited regardless of the trace level. If set, the PTrace::Block may occur provided the trace level is greater than zero. */ Blocks = 1, /// Include date and time in all output DateAndTime = 2, /// Include (millisecond) timestamp in all output Timestamp = 4, /// Include identifier for thread trace is made from in all output Thread = 8, /// Include trace level in all output TraceLevel = 16, /// Include the file and line for the trace call in all output FileAndLine = 32, /// Include thread object pointer address in all trace output ThreadAddress = 64, /// Append to log file rather than resetting every time AppendToFile = 128, /** Output timestamps in GMT time rather than local time */ GMTTime = 256, /** If set, log file will be rotated daily */ RotateDaily = 512, /** SystemLog flag for tracing within a PServiceProcess application. Must be set in conjection with SetStream(new PSystemLog). */ SystemLogStream = 32768 }; /**Set the most common trace options. If filename is not NULL then a PTextFile is created and attached the trace output stream. This object is never closed or deleted until the termination of the program. A trace output of the program name version and OS is written as well. */ static void Initialise( unsigned level, const char * filename = NULL, unsigned options = Timestamp | Thread | Blocks ); /** Set the trace options. The PTRACE(), PTRACE_BLOCK() and PTRACE_LINE() macros output trace text that may contain assorted values. These are defined by the Options enum. Note this function OR's the bits included in the options parameter. */ static void SetOptions(unsigned options /** New level for trace */ ); /** Clear the trace options. The PTRACE(), PTRACE_BLOCK() and PTRACE_LINE() macros output trace text that may contain assorted values. These are defined by the Options enum. Note this function AND's the complement of the bits included in the options parameter. */ static void ClearOptions(unsigned options /** New level for trace */ ); /** Get the current trace options. The PTRACE(), PTRACE_BLOCK() and PTRACE_LINE() macros output trace text that may contain assorted values. These are defined by the Options enum. */ static unsigned GetOptions(); /** Set the trace level. The PTRACE() macro checks to see if its level is equal to or lower then the level set by this function. If so then the trace text is output to the trace stream. */ static void SetLevel(unsigned level /** New level for trace */ ); /** Get the trace level. The PTRACE() macro checks to see if its level is equal to or lower then the level set by this function. If so then the trace text is output to the trace stream. */ static unsigned GetLevel(); /** Determine if the level may cause trace output. This checks against the current global trace level set by #PSetTraceLevel# for if the trace output may be emitted. This is used by the PTRACE macro. */ static BOOL CanTrace(unsigned level /** Trace level to check */); /** Set the stream to be used for trace output. This stream is used for all trace output using the various trace functions and macros. */ static void SetStream(ostream * out /** New output stream from trace. */ ); /** Begin a trace output. If the trace stream output is used outside of the provided macros, it should be noted that a mutex is obtained on the call to #PBeginTrace# which will prevent any other threads from using the trace stream until the #PEndTrace# function is called. So a typical usage would be: \begin{verbatim} ostream & s = PTrace::Begin(3, __FILE__, __LINE__); s << "hello"; if (want_there) s << " there"; s << '!' << PTrace::End(); \end{verbatim} */ static ostream & Begin( unsigned level, ///< Log level for output const char * fileName, ///< Filename of source file being traced int lineNum ///< Line number of source file being traced. ); /** End a trace output. If the trace stream output is used outside of the provided macros, the #PEndTrace# function must be used at the end of the section of trace output. A mutex is obtained on the call to #PBeginTrace# which will prevent any other threads from using the trace stream until the PEndTrace. The #PEndTrace# is used in a similar manner to #::endl# or #::flush#. So a typical usage would be: \begin{verbatim} ostream & s = PTrace::Begin(); s << "hello"; if (want_there) s << " there"; s << '!' << PTrace::End(); \end{verbatim} */ static ostream & End(ostream & strm /** Trace output stream being completed */); /** Class to trace Execution blocks. This class is used for tracing the entry and exit of program blocks. Upon construction it outputs an entry trace message and on destruction outputs an exit trace message. This is normally only used from in the PTRACE_BLOCK macro. */ class Block { public: /** Output entry trace message. */ Block( const char * fileName, ///< Filename of source file being traced int lineNum, ///< Line number of source file being traced. const char * traceName ///< String to be output with trace, typically it is the function name. ); /// Output exit trace message. ~Block(); private: const char * file; int line; const char * name; }; }; #if !PTRACING #define PTRACE_PARAM(param) #define PTRACE_BLOCK(n) #define PTRACE_LINE() #define PTRACE(level, arg) #define PTRACE_IF(level, cond, args) #else /* Macro to conditionally declare a parameter to a function to avoid compiler warning due that parameter only being used in a PTRACE */ #define PTRACE_PARAM(param) param /** Trace an execution block. This macro creates a trace variable for tracking the entry and exit of program blocks. It creates an instance of the PTraceBlock class that will output a trace message at the line PTRACE_BLOCK is called and then on exit from the scope it is defined in. */ #define PTRACE_BLOCK(name) PTrace::Block __trace_block_instance(__FILE__, __LINE__, name) /** Trace the execution of a line. This macro outputs a trace of a source file line execution. */ #define PTRACE_LINE() \ if (!PTrace::CanTrace(1)) ; else \ PTrace::Begin(1, __FILE__, __LINE__) << __FILE__ << '(' << __LINE__ << ')' << PTrace::End /** Output trace. This macro outputs a trace of any information needed, using standard stream output operators. The output is only made if the trace level set by the #PSetTraceLevel# function is greater than or equal to the #level# argument. */ #define PTRACE(level, args) \ if (!PTrace::CanTrace(level)) ; else \ PTrace::Begin(level, __FILE__, __LINE__) << args << PTrace::End /** Output trace on condition. This macro outputs a trace of any information needed, using standard stream output operators. The output is only made if the trace level set by the #PSetTraceLevel# function is greater than or equal to the #level# argument and the conditional is TRUE. Note the conditional is only evaluated if the trace level is sufficient. */ #define PTRACE_IF(level, cond, args) \ if (!(PTrace::CanTrace(level) && (cond))) ; else \ PTrace::Begin(level, __FILE__, __LINE__) << args << PTrace::End #endif #if PMEMORY_CHECK /** Memory heap checking class. This class implements the memory heap checking and validation functions. It maintains lists of allocated block so that memory leaks can be detected. It also initialises memory on allocation and deallocation to help catch errors involving the use of dangling pointers. */ class PMemoryHeap { protected: /// Initialise the memory checking subsystem. PMemoryHeap(); public: // Clear up the memory checking subsystem, dumping memory leaks. ~PMemoryHeap(); /** Allocate a memory block. This allocates a new memory block and keeps track of it. The memory block is filled with the value in the #allocFillChar# member variable to help detect uninitialised structures. @return pointer to newly allocated memory block. */ static void * Allocate( size_t nSize, ///< Number of bytes to allocate. const char * file, ///< Source file name for allocating function. int line, ///< Source file line for allocating function. const char * className ///< Class name for allocating function. ); /** Allocate a memory block. This allocates a new memory block and keeps track of it. The memory block is filled with the value in the #allocFillChar# member variable to help detect uninitialised structures. @return pointer to newly allocated memory block. */ static void * Allocate( size_t count, ///< Number of items to allocate. size_t iSize, ///< Size in bytes of each item. const char * file, ///< Source file name for allocating function. int line ///< Source file line for allocating function. ); /** Change the size of an allocated memory block. This allocates a new memory block and keeps track of it. The memory block is filled with the value in the #allocFillChar# member variable to help detect uninitialised structures. @return pointer to reallocated memory block. Note this may {\em not} be the same as the pointer passed into the function. */ static void * Reallocate( void * ptr, ///< Pointer to memory block to reallocate. size_t nSize, ///< New number of bytes to allocate. const char * file, ///< Source file name for allocating function. int line ///< Source file line for allocating function. ); /** Free a memory block. The memory is deallocated, a warning is displayed if it was never allocated. The block of memory is filled with the value in the #freeFillChar# member variable. */ static void Deallocate( void * ptr, ///< Pointer to memory block to deallocate. const char * className ///< Class name for deallocating function. ); /** Validation result. */ enum Validation { Ok, Bad, Trashed }; /** Validate the memory pointer. The #ptr# parameter is validated as a currently allocated heap variable. @return Ok for pointer is in heap, Bad for pointer is not in the heap or Trashed if the pointer is in the heap but has overwritten the guard bytes before or after the actual data part of the memory block. */ static Validation Validate( void * ptr, ///< Pointer to memory block to check const char * className, ///< Class name it should be. ostream * error ///< Stream to receive error message (may be NULL) ); /** Validate all objects in memory. This effectively calls Validate() on every object in the heap. @return TRUE if every object in heap is Ok. */ static BOOL ValidateHeap( ostream * error = NULL ///< Stream to output, use default if NULL ); /** Ignore/Monitor allocations. Set internal flag so that allocations are not included in the memory leak check on program termination. Returns the previous state. */ static BOOL SetIgnoreAllocations( BOOL ignore ///< New flag for allocation ignoring. ); /** Get memory check system statistics. Dump statistics output to the default stream. */ static void DumpStatistics(); /** Get memory check system statistics. Dump statistics output to the specified stream. */ static void DumpStatistics(ostream & strm /** Stream to output to */); /* Get number of allocation. Each allocation is counted and if desired the next allocation request number may be obtained via this function. @return Allocation request number. */ static DWORD GetAllocationRequest(); /** Dump allocated objects. Dump ojects allocated and not deallocated since the specified object number. This would be a value returned by the #GetAllocationRequest()# function. Output is to the default stream. */ static void DumpObjectsSince( DWORD objectNumber ///< Memory object to begin dump from. ); /** Dump allocated objects. Dump ojects allocated and not deallocated since the specified object number. This would be a value returned by the #GetAllocationRequest()# function. */ static void DumpObjectsSince( DWORD objectNumber, ///< Memory object to begin dump from. ostream & strm ///< Stream to output dump ); /** Set break point allocation number. Set the allocation request number to cause an assert. This allows a developer to cause a halt in a debugger on a certain allocation allowing them to determine memory leaks allocation point. */ static void SetAllocationBreakpoint( DWORD point ///< Allocation number to stop at. ); protected: void * InternalAllocate( size_t nSize, // Number of bytes to allocate. const char * file, // Source file name for allocating function. int line, // Source file line for allocating function. const char * className // Class name for allocating function. ); Validation InternalValidate( void * ptr, // Pointer to memory block to check const char * className, // Class name it should be. ostream * error // Stream to receive error message (may be NULL) ); void InternalDumpStatistics(ostream & strm); void InternalDumpObjectsSince(DWORD objectNumber, ostream & strm); class Wrapper { public: Wrapper(); ~Wrapper(); PMemoryHeap * operator->() const { return instance; } private: PMemoryHeap * instance; }; friend class Wrapper; enum Flags { NoLeakPrint = 1 }; #pragma pack(1) struct Header { enum { // Assure that the Header struct is aligned to 8 byte boundary NumGuardBytes = 16 - (sizeof(Header *) + sizeof(Header *) + sizeof(const char *) + sizeof(const char *) + sizeof(size_t) + sizeof(DWORD) + sizeof(WORD) + sizeof(BYTE))%8 }; Header * prev; Header * next; const char * className; const char * fileName; size_t size; DWORD request; WORD line; BYTE flags; char guard[NumGuardBytes]; static char GuardBytes[NumGuardBytes]; }; #pragma pack() BOOL isDestroyed; Header * listHead; Header * listTail; static DWORD allocationBreakpoint; DWORD allocationRequest; DWORD firstRealObject; BYTE flags; char allocFillChar; char freeFillChar; DWORD currentMemoryUsage; DWORD peakMemoryUsage; DWORD currentObjects; DWORD peakObjects; DWORD totalObjects; ostream * leakDumpStream; #if defined(_WIN32) CRITICAL_SECTION mutex; #elif defined(P_PTHREADS) pthread_mutex_t mutex; #elif defined(P_VXWORKS) void * mutex; #endif }; /** Allocate memory for the run time library. This version of free is used for data that is not to be allocated using the memory check system, ie will be free'ed inside the C run time library. */ inline void * runtime_malloc(size_t bytes /** Size of block to allocate */ ) { return malloc(bytes); } /** Free memory allocated by run time library. This version of free is used for data that is not allocated using the memory check system, ie was malloc'ed inside the C run time library. */ inline void runtime_free(void * ptr /** Memory block to free */ ) { free(ptr); } /** Override of system call for memory check system. This macro is used to allocate memory via the memory check system selected with the #PMEMORY_CHECK# compile time option. It will include the source file and line into the memory allocation to allow the PMemoryHeap class to keep track of the memory block. */ #define malloc(s) PMemoryHeap::Allocate(s, __FILE__, __LINE__, NULL) /** Override of system call for memory check system. This macro is used to allocate memory via the memory check system selected with the #PMEMORY_CHECK# compile time option. It will include the source file and line into the memory allocation to allow the PMemoryHeap class to keep track of the memory block. */ #define calloc(n,s) PMemoryHeap::Allocate(n, s, __FILE__, __LINE__) /** Override of system call for memory check system. This macro is used to allocate memory via the memory check system selected with the #PMEMORY_CHECK# compile time option. It will include the source file and line into the memory allocation to allow the PMemoryHeap class to keep track of the memory block. */ #define realloc(p,s) PMemoryHeap::Reallocate(p, s, __FILE__, __LINE__) /** Override of system call for memory check system. This macro is used to deallocate memory via the memory check system selected with the #PMEMORY_CHECK# compile time option. It will include the source file and line into the memory allocation to allow the PMemoryHeap class to keep track of the memory block. */ #define free(p) PMemoryHeap::Deallocate(p, NULL) /** Override of system call for memory check system. This macro is used to deallocate memory via the memory check system selected with the #PMEMORY_CHECK# compile time option. It will include the source file and line into the memory allocation to allow the PMemoryHeap class to keep track of the memory block. */ #define cfree(p) PMemoryHeap::Deallocate(p, NULL) /** Macro for overriding system default #new# operator. This macro is used to allocate memory via the memory check system selected with the PMEMORY_CHECK compile time option. It will include the source file and line into the memory allocation to allow the PMemoryHeap class to keep track of the memory block. This macro could be used instead of the system #new# operator. Or you can place the line \begin{verbatim} #define new PNEW \end{verbatim} at the begining of the source file, after all declarations that use the PCLASSINFO macro. */ #define PNEW new (__FILE__, __LINE__) #if !defined(_MSC_VER) || _MSC_VER<1200 #define PSPECIAL_DELETE_FUNCTION #else #define PSPECIAL_DELETE_FUNCTION \ void operator delete(void * ptr, const char *, int) \ { PMemoryHeap::Deallocate(ptr, Class()); } \ void operator delete[](void * ptr, const char *, int) \ { PMemoryHeap::Deallocate(ptr, Class()); } #endif #define PNEW_AND_DELETE_FUNCTIONS \ void * operator new(size_t nSize, const char * file, int line) \ { return PMemoryHeap::Allocate(nSize, file, line, Class()); } \ void * operator new(size_t nSize) \ { return PMemoryHeap::Allocate(nSize, NULL, 0, Class()); } \ void operator delete(void * ptr) \ { PMemoryHeap::Deallocate(ptr, Class()); } \ void * operator new[](size_t nSize, const char * file, int line) \ { return PMemoryHeap::Allocate(nSize, file, line, Class()); } \ void * operator new[](size_t nSize) \ { return PMemoryHeap::Allocate(nSize, NULL, 0, Class()); } \ void operator delete[](void * ptr) \ { PMemoryHeap::Deallocate(ptr, Class()); } \ PSPECIAL_DELETE_FUNCTION inline void * operator new(size_t nSize, const char * file, int line) { return PMemoryHeap::Allocate(nSize, file, line, NULL); } inline void * operator new[](size_t nSize, const char * file, int line) { return PMemoryHeap::Allocate(nSize, file, line, NULL); } #ifndef __GNUC__ void * operator new(size_t nSize); void * operator new[](size_t nSize); void operator delete(void * ptr); void operator delete[](void * ptr); #if defined(_MSC_VER) && _MSC_VER>=1200 inline void operator delete(void * ptr, const char *, int) { PMemoryHeap::Deallocate(ptr, NULL); } inline void operator delete[](void * ptr, const char *, int) { PMemoryHeap::Deallocate(ptr, NULL); } #endif #endif #else // PMEMORY_CHECK #define PNEW new #if defined(__GNUC__) || (defined(_WIN32_WCE) && defined(_X86_)) #define PNEW_AND_DELETE_FUNCTIONS #else #define PNEW_AND_DELETE_FUNCTIONS \ void * operator new(size_t nSize) \ { return malloc(nSize); } \ void operator delete(void * ptr) \ { free(ptr); } \ void * operator new[](size_t nSize) \ { return malloc(nSize); } \ void operator delete[](void * ptr) \ { free(ptr); } void * operator new(size_t nSize); void * operator new[](size_t nSize); void operator delete(void * ptr); void operator delete[](void * ptr); #endif #define runtime_malloc(s) malloc(s) #define runtime_free(p) free(p) #endif // PMEMORY_CHECK /** Declare all the standard PWlib class information. This macro is used to provide the basic run-time typing capability needed by the library. All descendent classes from the #PObject# class require these functions for correct operation. Either use this macro or the #PDECLARE_CLASS# macro. The use of the #PDECLARE_CLASS# macro is no longer recommended for reasons of compatibility with documentation systems. */ /* ORIGINAL #define PCLASSINFO(cls, par) \ public: \ static const char * Class() \ { return #cls; } \ virtual const char * GetClass(unsigned ancestor = 0) const \ { return ancestor > 0 ? par::GetClass(ancestor-1) : cls::Class(); } \ virtual BOOL IsClass(const char * clsName) const \ { return strcmp(clsName, cls::Class()) == 0; } \ virtual BOOL IsDescendant(const char * clsName) const \ { return strcmp(clsName, cls::Class()) == 0 || par::IsDescendant(clsName); } \ virtual Comparison CompareObjectMemoryDirect(const PObject & obj) const \ { return (Comparison)memcmp(this, &obj, sizeof(cls)); } */ #if P_HAS_TYPEINFO #define PIsDescendant(ptr, cls) (dynamic_cast(ptr) != NULL) #define PIsDescendantStr(ptr, str) ((ptr)->InternalIsDescendant(str)) #define PRemoveConst(cls, ptr) (const_cast(ptr)) #if P_USE_ASSERTS template inline BaseClass * PAssertCast(BaseClass * obj, const char * file, int line) { if (obj == NULL) PAssertFunc(file, line, BaseClass::Class(), PInvalidCast); return obj; } #define PDownCast(cls, ptr) PAssertCast(dynamic_cast(ptr),__FILE__,__LINE__) #else #define PDownCast(cls, ptr) (dynamic_cast(ptr)) #endif #include #define PCLASSNAME(cls) (#cls) #define PBASECLASSINFO(cls, par) \ public: \ static inline const char * Class() \ { return PCLASSNAME(cls); } \ virtual BOOL InternalIsDescendant(const char * clsName) const \ { return strcmp(clsName, PCLASSNAME(cls)) == 0 || par::InternalIsDescendant(clsName); } \ #else // P_HAS_TYPEINFO #define PIsDescendant(ptr, cls) ((ptr)->InternalIsDescendant(cls::Class())) #define PIsDescendantStr(ptr, str) ((ptr)->InternalIsDescendant(str)) #define PRemoveConst(cls, ptr) ((cls*)(ptr)) #if P_USE_ASSERTS template inline BaseClass * PAssertCast(PObject * obj, const char * file, int line) { if (obj->InternalIsDescendant(BaseClass::Class()) return (BaseClass *)obj; PAssertFunc(file, line, BaseClass::Class(), PInvalidCast); return NULL; } #define PDownCast(cls, ptr) PAssertCast((ptr),__FILE__,__LINE__) #else #define PDownCast(cls, ptr) ((cls*)(ptr)) #endif #define PBASECLASSINFO(cls, par) \ public: \ static const char * Class() \ { return #cls; } \ virtual BOOL InternalIsDescendant(const char * clsName) const \ { return strcmp(clsName, cls::Class()) == 0 || par::InternalIsDescendant(clsName); } \ #endif // P_HAS_TYPEINFO #define PCLASSINFO(cls, par) \ PBASECLASSINFO(cls, par) \ virtual const char * GetClass(unsigned ancestor = 0) const \ { return ancestor > 0 ? par::GetClass(ancestor-1) : cls::Class(); } \ virtual Comparison CompareObjectMemoryDirect(const PObject & obj) const \ { return (Comparison)memcmp(this, &obj, sizeof(cls)); } \ /** Declare a class with PWLib class information. This macro is used to declare a new class with a single public ancestor. It starts the class declaration and then uses the #PCLASSINFO# macro to get all the run-time type functions. The use of this macro is no longer recommended for reasons of compatibility with documentation systems. */ #define PDECLARE_CLASS(cls, par) class cls : public par { PCLASSINFO(cls, par) #ifdef DOC_PLUS_PLUS } Match previous opening brace in doc++ #endif /////////////////////////////////////////////////////////////////////////////// // The root of all evil ... umm classes /** Ultimate parent class for all objects in the class library. This provides functionality provided to all classes, eg run-time types, default comparison operations, simple stream I/O and serialisation support. */ class PObject { protected: /** Constructor for PObject, make protected so cannot ever create one on its own. */ PObject() { } public: /* Destructor required to get the "virtual". A PObject really has nothing to destroy. */ virtual ~PObject() { } /**@name Run Time Type functions */ //@{ /** Get the name of the class as a C string. This is a static function which returns the type of a specific class. When comparing class names, always use the #strcmp()# function rather than comparing pointers. The pointers are not necessarily the same over compilation units depending on the compiler, platform etc. @return pointer to C string literal. */ static inline const char * Class() { return PCLASSNAME(PObject); } /** Get the current dynamic type of the object instance. When comparing class names, always use the #strcmp()# function rather than comparing pointers. The pointers are not necessarily the same over compilation units depending on the compiler, platform etc. The #PCLASSINFO# macro declares an override of this function for the particular class. The user need not implement it. @return pointer to C string literal. */ virtual const char * GetClass(unsigned /*ancestor*/ = 0) const { return Class(); } BOOL IsClass(const char * cls) const { return strcmp(cls, GetClass()) == 0; } /** Determine if the dynamic type of the current instance is a descendent of the specified class. The class name is usually provided by the #Class()# static function of the desired class. The #PCLASSINFO# macro declares an override of this function for the particular class. The user need not implement it. @return TRUE if object is descended from the class. */ virtual BOOL InternalIsDescendant( const char * clsName // Ancestor class name to compare against. ) const { return IsClass(clsName); } //@} /**@name Comparison functions */ //@{ /** Result of the comparison operation performed by the #Compare()# function. */ enum Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }; /** Compare the two objects and return their relative rank. This function is usually overridden by descendent classes to yield the ranking according to the semantics of the object. The default function is to use the #CompareObjectMemoryDirect()# function to do a byte wise memory comparison of the two objects. @return #LessThan#, #EqualTo# or #GreaterThan# according to the relative rank of the objects. */ virtual Comparison Compare( const PObject & obj // Object to compare against. ) const; /** Determine the byte wise comparison of two objects. This is the default comparison operation for objects that do not explicitly override the #Compare()# function. The #PCLASSINFO# macro declares an override of this function for the particular class. The user need not implement it. @return #LessThan#, #EqualTo# or #GreaterThan# according to the result #memcpy()# function. */ virtual Comparison CompareObjectMemoryDirect( const PObject & obj // Object to compare against. ) const; /** Compare the two objects. @return TRUE if objects are equal. */ bool operator==( const PObject & obj // Object to compare against. ) const { return Compare(obj) == EqualTo; } /** Compare the two objects. @return TRUE if objects are not equal. */ bool operator!=( const PObject & obj // Object to compare against. ) const { return Compare(obj) != EqualTo; } /** Compare the two objects. @return TRUE if objects are less than. */ bool operator<( const PObject & obj // Object to compare against. ) const { return Compare(obj) == LessThan; } /** Compare the two objects. @return TRUE if objects are greater than. */ bool operator>( const PObject & obj // Object to compare against. ) const { return Compare(obj) == GreaterThan; } /** Compare the two objects. @return TRUE if objects are less than or equal. */ bool operator<=( const PObject & obj // Object to compare against. ) const { return Compare(obj) != GreaterThan; } /** Compare the two objects. @return TRUE if objects are greater than or equal. */ bool operator>=( const PObject & obj // Object to compare against. ) const { return Compare(obj) != LessThan; } //@} /**@name I/O functions */ //@{ /** Output the contents of the object to the stream. The exact output is dependent on the exact semantics of the descendent class. This is primarily used by the standard #operator<<# function. The default behaviour is to print the class name. */ virtual void PrintOn( ostream &strm // Stream to print the object into. ) const; /** Input the contents of the object from the stream. The exact input is dependent on the exact semantics of the descendent class. This is primarily used by the standard #operator>># function. The default behaviour is to do nothing. */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); /** Global function for using the standard << operator on objects descended from PObject. This simply calls the objects #PrintOn()# function. @return the #strm# parameter. */ inline friend ostream & operator<<( ostream &strm, // Stream to print the object into. const PObject & obj // Object to print to the stream. ) { obj.PrintOn(strm); return strm; } /** Global function for using the standard >> operator on objects descended from PObject. This simply calls the objects #ReadFrom()# function. @return the #strm# parameter. */ inline friend istream & operator>>( istream &strm, // Stream to read the objects contents from. PObject & obj // Object to read inormation into. ) { obj.ReadFrom(strm); return strm; } /**@name Miscellaneous functions */ //@{ /** Create a copy of the class on the heap. The exact semantics of the descendent class determine what is required to make a duplicate of the instance. Not all classes can even {\bf do} a clone operation. The main user of the clone function is the #PDictionary# class as it requires copies of the dictionary keys. The default behaviour is for this function to assert. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; /** This function yields a hash value required by the #PDictionary# class. A descendent class that is required to be the key of a dictionary should override this function. The precise values returned is dependent on the semantics of the class. For example, the #PString# class overrides it to provide a hash function for distinguishing text strings. The default behaviour is to return the value zero. @return hash function value for class instance. */ virtual PINDEX HashFunction() const; //@} }; /////////////////////////////////////////////////////////////////////////////// // Platform independent types // All these classes encapsulate primitive types such that they may be // transfered in a platform independent manner. In particular it is used to // do byte swapping for little endien and big endien processor architectures // as well as accommodating structure packing rules for memory structures. #define PANSI_CHAR 1 #define PLITTLE_ENDIAN 2 #define PBIG_ENDIAN 3 #if 0 class PStandardType /* Encapsulate a standard 8 bit character into a portable format. This would rarely need to do translation, only if the target platform uses EBCDIC would it do anything. The platform independent form here is always 8 bit ANSI. */ { public: PStandardType( type newVal // Value to initialise data in platform dependent form. ) { data = newVal; } /* Create a new instance of the platform independent type using platform dependent data, or platform independent streams. */ operator type() { return data; } /* Get the platform dependent value for the type. @return data for instance. */ friend ostream & operator<<(ostream & strm, const PStandardType & val) { return strm << (type)val; } /* Output the platform dependent value for the type to the stream. @return the stream output was made to. */ friend istream & operator>>(istream & strm, PStandardType & val) { type data; strm >> data; val = PStandardType(data); return strm; } /* Input the platform dependent value for the type from the stream. @return the stream input was made from. */ private: type data; }; #endif #define PI_SAME(name, type) \ struct name { \ name() { } \ name(type value) { data = value; } \ name(const name & value) { data = value.data; } \ name & operator =(type value) { data = value; return *this; } \ name & operator =(const name & value) { data = value.data; return *this; } \ operator type() const { return data; } \ friend ostream & operator<<(ostream & s, const name & v) { return s << v.data; } \ friend istream & operator>>(istream & s, name & v) { return s >> v.data; } \ private: type data; \ } #define PI_LOOP(src, dst) \ BYTE *s = ((BYTE *)&src)+sizeof(src); BYTE *d = (BYTE *)&dst; \ while (s != (BYTE *)&src) *d++ = *--s; #define PI_DIFF(name, type) \ struct name { \ name() { } \ name(type value) { operator=(value); } \ name(const name & value) { data = value.data; } \ name & operator =(type value) { PI_LOOP(value, data); return *this; } \ name & operator =(const name & value) { data = value.data; return *this; } \ operator type() const { type value; PI_LOOP(data, value); return value; } \ friend ostream & operator<<(ostream & s, const name & value) { return s << (type)value; } \ friend istream & operator>>(istream & s, name & v) { type val; s >> val; v = val; return s; } \ private: type data; \ } #ifndef PCHAR8 #define PCHAR8 PANSI_CHAR #endif #if PCHAR8==PANSI_CHAR PI_SAME(PChar8, char); #endif PI_SAME(PInt8, signed char); PI_SAME(PUInt8, unsigned char); #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PInt16l, PInt16); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PInt16l, PInt16); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PInt16b, PInt16); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PInt16b, PInt16); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PUInt16l, WORD); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PUInt16l, WORD); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PUInt16b, WORD); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PUInt16b, WORD); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PInt32l, PInt32); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PInt32l, PInt32); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PInt32b, PInt32); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PInt32b, PInt32); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PUInt32l, DWORD); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PUInt32l, DWORD); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PUInt32b, DWORD); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PUInt32b, DWORD); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PInt64l, PInt64); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PInt64l, PInt64); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PInt64b, PInt64); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PInt64b, PInt64); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PUInt64l, PUInt64); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PUInt64l, PUInt64); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PUInt64b, PUInt64); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PUInt64b, PUInt64); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PFloat32l, float); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PFloat32l, float); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PFloat32b, float); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PFloat32b, float); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PFloat64l, double); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PFloat64l, double); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PFloat64b, double); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PFloat64b, double); #endif #ifndef NO_LONG_DOUBLE // stupid OSX compiler #if PBYTE_ORDER==PLITTLE_ENDIAN PI_SAME(PFloat80l, long double); #elif PBYTE_ORDER==PBIG_ENDIAN PI_DIFF(PFloat80l, long double); #endif #if PBYTE_ORDER==PLITTLE_ENDIAN PI_DIFF(PFloat80b, long double); #elif PBYTE_ORDER==PBIG_ENDIAN PI_SAME(PFloat80b, long double); #endif #endif #undef PI_LOOP #undef PI_SAME #undef PI_DIFF /////////////////////////////////////////////////////////////////////////////// // Miscellaneous /*$MACRO PARRAYSIZE(array) This macro is used to calculate the number of array elements in a static array. */ #define PARRAYSIZE(array) ((PINDEX)(sizeof(array)/sizeof(array[0]))) /*$MACRO PMIN(v1, v2) This macro is used to calculate the minimum of two values. As this is a macro the expression in #v1# or #v2# is executed twice so extreme care should be made in its use. */ #define PMIN(v1, v2) ((v1) < (v2) ? (v1) : (v2)) /*$MACRO PMAX(v1, v2) This macro is used to calculate the maximum of two values. As this is a macro the expression in #v1# or #v2# is executed twice so extreme care should be made in its use. */ #define PMAX(v1, v2) ((v1) > (v2) ? (v1) : (v2)) /*$MACRO PABS(val) This macro is used to calculate an absolute value. As this is a macro the expression in #val# is executed twice so extreme care should be made in its use. */ #define PABS(v) ((v) < 0 ? -(v) : (v)) #endif // _POBJECT_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/osutil.inl0100644000176200056700000006604710332600354020167 0ustar releasepostincr/* * osutil.inl * * Operating System Classes Inline Function Definitions * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: osutil.inl,v $ * Revision 1.91 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.90 2005/01/26 05:37:45 csoutheren * Added ability to remove config file support * * Revision 1.89 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.88 2003/12/19 04:30:24 csoutheren * Changed GetLastReadCount and GetLastWriteCount to be virtual * * Revision 1.87 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.86 2002/12/18 05:05:43 robertj * Fixed problem with returning DWORD time interval when PTimeInterval is * out of range, especially when negative! * * Revision 1.85 2002/10/29 00:07:21 robertj * Added IsValid() function to indicate that a PTime is set correctly. * * Revision 1.84 2002/10/17 07:17:42 robertj * Added ability to increase maximum file handles on a process. * * Revision 1.83 2002/01/26 23:55:55 craigs * Changed for GCC 3.0 compatibility, thanks to manty@manty.net * * Revision 1.82 2001/11/23 00:55:18 robertj * Changed PWaitAndSignal so works inside const functions. * * Revision 1.81 2001/11/14 06:06:26 robertj * Added functions on PTimer to get reset value and restart timer to it. * * Revision 1.80 2001/09/10 02:51:22 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.79 2001/07/10 02:55:16 robertj * Added unary minus operator * * Revision 1.78 2001/04/23 00:34:29 robertj * Added ability for PWaitAndSignal to not wait on semaphore. * * Revision 1.77 2001/02/13 06:55:21 robertj * Fixed problem with operator= in PDirectory class, part of larger change previously made. * * Revision 1.76 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.75 2000/10/05 23:36:26 robertj * Fixed compiler ambiguities in PTimeInterval constructor. * * Revision 1.74 2000/05/25 11:07:26 robertj * Added PConfig::HasKey() function to determine if value actually set. * * Revision 1.73 2000/04/05 02:50:16 robertj * Added microseconds to PTime class. * * Revision 1.72 2000/01/06 14:09:42 robertj * Fixed problems with starting up timers,losing up to 10 seconds * * Revision 1.71 1999/08/22 12:13:43 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.70 1999/07/06 04:45:59 robertj * Fixed being able to case an unsigned to a PTimeInterval. * Improved resolution of PTimer::Tick() to be millisecond accurate. * * Revision 1.69 1999/03/09 03:08:39 robertj * Changes for new documentation system * * Revision 1.68 1998/11/30 08:57:17 robertj * Fixed problem where if += is used on PFilePath, it no longer may be normalised. * * Revision 1.67 1998/11/19 05:17:35 robertj * Added PWaitAndSignal class for easier mutexing. * * Revision 1.66 1998/11/01 04:56:52 robertj * Added BOOl return value to Parse() to indicate there are parameters available. * * Revision 1.65 1998/10/30 12:23:56 robertj * Added ability to get all key values as a dictionary. * * Revision 1.64 1998/10/30 05:24:30 robertj * Added return value to << and >> operators for shifting arguments. * * Revision 1.63 1998/10/29 05:35:16 robertj * Fixed porblem with GetCount() == 0 if do not call Parse() function. * * Revision 1.62 1998/10/28 03:26:42 robertj * Added multi character arguments (-abc style) and options precede parameters mode. * * Revision 1.61 1998/10/28 00:59:48 robertj * New improved argument parsing. * * Revision 1.60 1998/09/24 07:24:00 robertj * Moved structured fiel into separate module so don't need silly implementation file for GNU C. * * Revision 1.59 1998/09/23 06:21:04 robertj * Added open source copyright license. * * Revision 1.58 1998/01/26 00:31:38 robertj * Added functions to get/set 64bit integers from a PConfig. * Added multiply and divide operators to PTimeInterval. * * Revision 1.57 1998/01/04 08:04:27 robertj * Changed gmtime and locatime to use operating system specific functions. * * Revision 1.56 1997/10/03 13:38:26 robertj * Fixed race condition on socket close in Select() function. * * Revision 1.55 1997/08/07 11:58:02 robertj * Added ability to get registry data from other applications and anywhere in system registry. * * Revision 1.54 1997/02/09 03:55:22 robertj * Changed PProcess::Current() from pointer to reference. * * Revision 1.53 1997/01/12 04:21:39 robertj * Added IsPast() and IsFuture() functions for time comparison. * * Revision 1.52 1996/09/14 13:09:23 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.51 1996/05/23 09:59:04 robertj * Added mutex to timer list. * * Revision 1.50 1996/05/18 09:18:25 robertj * Added mutex to timer list. * * Revision 1.49 1996/05/15 10:09:53 robertj * Changed millisecond access functions to get 64 bit integer. * * Revision 1.48 1996/05/09 12:15:34 robertj * Resolved C++ problems with 64 bit PTimeInterval for Mac platform. * * Revision 1.47 1996/04/15 12:33:04 robertj * Fixed SetReadTimeout/SetWriteTimeout to use const reference so works with GNU compiler. * * Revision 1.46 1996/04/15 10:57:57 robertj * Moved some functions from INL to serial.cxx so unix linker can make smaller executables. * * Revision 1.45 1996/04/14 02:53:32 robertj * Split serial and pipe channel into separate compilation units for Linux executable size reduction. * * Revision 1.44 1996/04/09 03:31:33 robertj * Fixed bug in config GetTime() cannot use PTime(0) in western hemisphere. * * Revision 1.43 1996/03/31 08:48:14 robertj * Fixed WriteString() so works with sockets. * * Revision 1.42 1996/03/17 05:43:21 robertj * Changed PTimeInterval to 64 bit integer. * * Revision 1.41 1996/02/25 03:02:45 robertj * Added consts to all GetXxxx functions in PConfig. * * Revision 1.40 1996/02/15 14:47:33 robertj * Fixed bugs in time zone compensation (some in the C library). * * Revision 1.39 1996/02/13 13:06:55 robertj * Changed GetTimeZone() so can specify the standard/daylight time. * * Revision 1.38 1996/02/08 12:12:01 robertj * Changed zone parameter in PTime to indicate the time zone as minutes not enum. * * Revision 1.37 1996/01/28 14:10:12 robertj * Added time functions to PConfig. * * Revision 1.36 1996/01/28 02:51:59 robertj * Added assert into all Compare functions to assure comparison between compatible objects. * * Revision 1.35 1996/01/03 23:15:34 robertj * Fixed some PTime bugs. * * Revision 1.34 1996/01/03 11:09:33 robertj * Added Universal Time and Time Zones to PTime class. * * Revision 1.33 1995/12/23 03:49:46 robertj * Chnaged version numbers. * Added directory constructor from C string literal. * * Revision 1.32 1995/12/10 11:32:44 robertj * Added extra user information to processes and applications. * * Revision 1.31 1995/08/12 22:30:05 robertj * Work around for GNU bug: can't have private copy constructor with multiple inheritance. * * Revision 1.30 1995/07/31 12:15:44 robertj * Removed PContainer from PChannel ancestor. * * Revision 1.29 1995/04/22 00:49:19 robertj * Fixed missing common construct code call in edit box constructor. * * Revision 1.28 1995/03/12 04:41:16 robertj * Moved GetHandle() function from PFile to PChannel. * * Revision 1.27 1995/01/27 11:11:19 robertj * Changed single string default constructor to be section name not file name. * * Revision 1.26 1995/01/18 09:00:40 robertj * Added notifiers to timers. * * Revision 1.25 1995/01/15 04:51:09 robertj * Mac compatibility. * Added structure function to structured files. * * Revision 1.24 1995/01/11 09:45:02 robertj * Documentation and normalisation. * * Revision 1.23 1995/01/09 12:34:25 robertj * Removed unnecesary return value from I/O functions. * * Revision 1.22 1994/10/24 00:07:01 robertj * Changed PFilePath and PDirectory so descends from either PString or * PCaselessString depending on the platform. * * Revision 1.21 1994/10/23 04:49:00 robertj * Chnaged PDirectory to descend of PString. * Added PDirectory Exists() function. * Implemented PPipeChannel. * * Revision 1.20 1994/09/25 10:41:19 robertj * Moved PFile::DestroyContents() to cxx file. * Added PTextFile constructors for DOS/NT platforms. * Added Pipe channel. * * Revision 1.19 1994/08/21 23:43:02 robertj * Added "remove on close" feature for temporary files. * Added "force" option to Remove/Rename etc to override write protection. * Removed default argument when of PString type (MSC crashes). * * Revision 1.18 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.17 1994/07/21 12:33:49 robertj * Moved cooperative threads to common. * * Revision 1.16 1994/07/17 10:46:06 robertj * Moved file handle to PChannel. * * Revision 1.15 1994/07/02 03:03:49 robertj * Time interval and timer redesign. * * Revision 1.14 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.13 1994/04/20 12:17:44 robertj * assert stuff * * Revision 1.12 1994/04/01 14:06:48 robertj * Text file streams. * * Revision 1.11 1994/03/07 07:45:40 robertj * Major upgrade * * Revision 1.10 1994/01/13 03:14:51 robertj * Added AsString() function to convert a time to a string. * * Revision 1.9 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.8 1993/12/31 06:47:59 robertj * Made inlines optional for debugging purposes. * * Revision 1.7 1993/08/31 03:38:02 robertj * Changed PFile::Status to PFile::Info due to X-Windows compatibility. * Added copy constructor and assignement operator due to G++ wierdness. * * Revision 1.6 1993/08/27 18:17:47 robertj * Moved a lot of code from MS-DOS platform specific to common files. * * Revision 1.5 1993/08/21 04:40:19 robertj * Added Copy() function. * * Revision 1.4 1993/08/21 01:50:33 robertj * Made Clone() function optional, default will assert if called. * * Revision 1.3 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ /////////////////////////////////////////////////////////////////////////////// // PTimeInterval PINLINE PTimeInterval::PTimeInterval(PInt64 millisecs) : milliseconds(millisecs) { } PINLINE PObject * PTimeInterval::Clone() const { return PNEW PTimeInterval(milliseconds); } PINLINE PInt64 PTimeInterval::GetMilliSeconds() const { return milliseconds; } PINLINE long PTimeInterval::GetSeconds() const { return (long)(milliseconds/1000); } PINLINE long PTimeInterval::GetMinutes() const { return (long)(milliseconds/60000); } PINLINE int PTimeInterval::GetHours() const { return (int)(milliseconds/3600000); } PINLINE int PTimeInterval::GetDays() const { return (int)(milliseconds/86400000); } PINLINE PTimeInterval PTimeInterval::operator-() const { return PTimeInterval(-milliseconds); } PINLINE PTimeInterval PTimeInterval::operator+(const PTimeInterval & t) const { return PTimeInterval(milliseconds + t.milliseconds); } PINLINE PTimeInterval & PTimeInterval::operator+=(const PTimeInterval & t) { milliseconds += t.milliseconds; return *this; } PINLINE PTimeInterval PTimeInterval::operator-(const PTimeInterval & t) const { return PTimeInterval(milliseconds - t.milliseconds); } PINLINE PTimeInterval & PTimeInterval::operator-=(const PTimeInterval & t) { milliseconds -= t.milliseconds; return *this; } PINLINE PTimeInterval PTimeInterval::operator*(int f) const { return PTimeInterval(milliseconds * f); } PINLINE PTimeInterval & PTimeInterval::operator*=(int f) { milliseconds *= f; return *this; } PINLINE PTimeInterval PTimeInterval::operator/(int f) const { return PTimeInterval(milliseconds / f); } PINLINE PTimeInterval & PTimeInterval::operator/=(int f) { milliseconds /= f; return *this; } PINLINE bool PTimeInterval::operator==(const PTimeInterval & t) const { return milliseconds == t.milliseconds; } PINLINE bool PTimeInterval::operator!=(const PTimeInterval & t) const { return milliseconds != t.milliseconds; } PINLINE bool PTimeInterval::operator> (const PTimeInterval & t) const { return milliseconds > t.milliseconds; } PINLINE bool PTimeInterval::operator>=(const PTimeInterval & t) const { return milliseconds >= t.milliseconds; } PINLINE bool PTimeInterval::operator< (const PTimeInterval & t) const { return milliseconds < t.milliseconds; } PINLINE bool PTimeInterval::operator<=(const PTimeInterval & t) const { return milliseconds <= t.milliseconds; } PINLINE bool PTimeInterval::operator==(long msecs) const { return (long)milliseconds == msecs; } PINLINE bool PTimeInterval::operator!=(long msecs) const { return (long)milliseconds != msecs; } PINLINE bool PTimeInterval::operator> (long msecs) const { return (long)milliseconds > msecs; } PINLINE bool PTimeInterval::operator>=(long msecs) const { return (long)milliseconds >= msecs; } PINLINE bool PTimeInterval::operator< (long msecs) const { return (long)milliseconds < msecs; } PINLINE bool PTimeInterval::operator<=(long msecs) const { return (long)milliseconds <= msecs; } /////////////////////////////////////////////////////////////////////////////// // PTime PINLINE PObject * PTime::Clone() const { return PNEW PTime(theTime, microseconds); } PINLINE void PTime::PrintOn(ostream & strm) const { strm << AsString(); } PINLINE BOOL PTime::IsValid() const { return theTime > 46800; } PINLINE PInt64 PTime::GetTimestamp() const { return theTime*(PInt64)1000000 + microseconds; } PINLINE time_t PTime::GetTimeInSeconds() const { return theTime; } PINLINE long PTime::GetMicrosecond() const { return microseconds; } PINLINE int PTime::GetSecond() const { struct tm ts; return os_localtime(&theTime, &ts)->tm_sec; } PINLINE int PTime::GetMinute() const { struct tm ts; return os_localtime(&theTime, &ts)->tm_min; } PINLINE int PTime::GetHour() const { struct tm ts; return os_localtime(&theTime, &ts)->tm_hour; } PINLINE int PTime::GetDay() const { struct tm ts; return os_localtime(&theTime, &ts)->tm_mday; } PINLINE PTime::Months PTime::GetMonth() const { struct tm ts; return (Months)(os_localtime(&theTime, &ts)->tm_mon+January); } PINLINE int PTime::GetYear() const { struct tm ts; return os_localtime(&theTime, &ts)->tm_year+1900; } PINLINE PTime::Weekdays PTime::GetDayOfWeek() const { struct tm ts; return (Weekdays)os_localtime(&theTime, &ts)->tm_wday; } PINLINE int PTime::GetDayOfYear() const { struct tm ts; return os_localtime(&theTime, &ts)->tm_yday; } PINLINE BOOL PTime::IsPast() const { return theTime < time(NULL); } PINLINE BOOL PTime::IsFuture() const { return theTime > time(NULL); } PINLINE PString PTime::AsString(const PString & format, int zone) const { return AsString((const char *)format, zone); } PINLINE int PTime::GetTimeZone() { return GetTimeZone(IsDaylightSavings() ? DaylightSavings : StandardTime); } /////////////////////////////////////////////////////////////////////////////// // PTimer PINLINE BOOL PTimer::IsRunning() const { return state == Starting || state == Running; } PINLINE BOOL PTimer::IsPaused() const { return state == Paused; } PINLINE const PTimeInterval & PTimer::GetResetTime() const { return resetTime; } PINLINE const PNotifier & PTimer::GetNotifier() const { return callback; } PINLINE void PTimer::SetNotifier(const PNotifier & func) { callback = func; } /////////////////////////////////////////////////////////////////////////////// PINLINE PChannelStreamBuffer::PChannelStreamBuffer(const PChannelStreamBuffer & sbuf) : channel(sbuf.channel) { } PINLINE PChannelStreamBuffer & PChannelStreamBuffer::operator=(const PChannelStreamBuffer & sbuf) { channel = sbuf.channel; return *this; } PINLINE PChannel::PChannel(const PChannel &) : iostream(cout.rdbuf()) { PAssertAlways("Cannot copy channels"); } PINLINE PChannel & PChannel::operator=(const PChannel &) { PAssertAlways("Cannot assign channels"); return *this; } PINLINE void PChannel::SetReadTimeout(const PTimeInterval & time) { readTimeout = time; } PINLINE PTimeInterval PChannel::GetReadTimeout() const { return readTimeout; } PINLINE void PChannel::SetWriteTimeout(const PTimeInterval & time) { writeTimeout = time; } PINLINE PTimeInterval PChannel::GetWriteTimeout() const { return writeTimeout; } PINLINE int PChannel::GetHandle() const { return os_handle; } PINLINE PChannel::Errors PChannel::GetErrorCode(ErrorGroup group) const { return lastErrorCode[group]; } PINLINE int PChannel::GetErrorNumber(ErrorGroup group) const { return lastErrorNumber[group]; } PINLINE void PChannel::AbortCommandString() { abortCommandString = TRUE; } /////////////////////////////////////////////////////////////////////////////// // PIndirectChannel PINLINE PIndirectChannel::~PIndirectChannel() { Close(); } PINLINE PChannel * PIndirectChannel::GetReadChannel() const { return readChannel; } PINLINE PChannel * PIndirectChannel::GetWriteChannel() const { return writeChannel; } /////////////////////////////////////////////////////////////////////////////// // PDirectory PINLINE PDirectory::PDirectory() : PFilePathString(".") { Construct(); } PINLINE PDirectory::PDirectory(const char * cpathname) : PFilePathString(cpathname) { Construct(); } PINLINE PDirectory::PDirectory(const PString & pathname) : PFilePathString(pathname) { Construct(); } PINLINE PDirectory & PDirectory::operator=(const PString & str) { AssignContents(PDirectory(str)); return *this; } PINLINE PDirectory & PDirectory::operator=(const char * cstr) { AssignContents(PDirectory(cstr)); return *this; } PINLINE void PDirectory::DestroyContents() { Close(); PFilePathString::DestroyContents(); } PINLINE BOOL PDirectory::Exists() const { return Exists(*this); } PINLINE BOOL PDirectory::Change() const { return Change(*this); } PINLINE BOOL PDirectory::Create(int perm) const { return Create(*this, perm); } PINLINE BOOL PDirectory::Remove() { Close(); return Remove(*this); } /////////////////////////////////////////////////////////////////////////////// PINLINE PFilePath::PFilePath() { } PINLINE PFilePath::PFilePath(const PFilePath & path) : PFilePathString(path) { } PINLINE PFilePath & PFilePath::operator=(const PFilePath & path) { AssignContents(path); return *this; } PINLINE PFilePath & PFilePath::operator=(const PString & str) { AssignContents(str); return *this; } PINLINE PFilePath & PFilePath::operator=(const char * cstr) { AssignContents(PString(cstr)); return *this; } PINLINE PFilePath & PFilePath::operator+=(const PString & str) { AssignContents(*this + str); return *this; } PINLINE PFilePath & PFilePath::operator+=(const char * cstr) { AssignContents(*this + cstr); return *this; } /////////////////////////////////////////////////////////////////////////////// PINLINE PFile::PFile() { os_handle = -1; removeOnClose = FALSE; } PINLINE PFile::PFile(OpenMode mode, int opts) { os_handle = -1; removeOnClose = FALSE; Open(mode, opts); } PINLINE PFile::PFile(const PFilePath & name, OpenMode mode, int opts) { os_handle = -1; removeOnClose = FALSE; Open(name, mode, opts); } PINLINE BOOL PFile::Exists() const { return Exists(path); } PINLINE BOOL PFile::Access(OpenMode mode) { return ConvertOSError(Access(path, mode) ? 0 : -1); } PINLINE BOOL PFile::Remove(BOOL force) { Close(); return ConvertOSError(Remove(path, force) ? 0 : -1); } PINLINE BOOL PFile::Copy(const PFilePath & newname, BOOL force) { return ConvertOSError(Copy(path, newname, force) ? 0 : -1); } PINLINE BOOL PFile::GetInfo(PFileInfo & info) { return ConvertOSError(GetInfo(path, info) ? 0 : -1); } PINLINE BOOL PFile::SetPermissions(int permissions) { return ConvertOSError(SetPermissions(path, permissions) ? 0 : -1); } PINLINE const PFilePath & PFile::GetFilePath() const { return path; } PINLINE PString PFile::GetName() const { return path; } PINLINE off_t PFile::GetPosition() const { return _lseek(GetHandle(), 0, SEEK_CUR); } /////////////////////////////////////////////////////////////////////////////// PINLINE PTextFile::PTextFile() { } PINLINE PTextFile::PTextFile(OpenMode mode, int opts) { Open(mode, opts); } PINLINE PTextFile::PTextFile(const PFilePath & name, OpenMode mode, int opts) { Open(name, mode, opts); } /////////////////////////////////////////////////////////////////////////////// // PConfig #ifdef P_CONFIG_FILE PINLINE PConfig::PConfig(Source src) : defaultSection("Options") { Construct(src, "", ""); } PINLINE PConfig::PConfig(Source src, const PString & appname) : defaultSection("Options") { Construct(src, appname, ""); } PINLINE PConfig::PConfig(Source src, const PString & appname, const PString & manuf) : defaultSection("Options") { Construct(src, appname, manuf); } PINLINE PConfig::PConfig(const PString & section, Source src) : defaultSection(section) { Construct(src, "", ""); } PINLINE PConfig::PConfig(const PString & section, Source src, const PString & appname) : defaultSection(section) { Construct(src, appname, ""); } PINLINE PConfig::PConfig(const PString & section, Source src, const PString & appname, const PString & manuf) : defaultSection(section) { Construct(src, appname, manuf); } PINLINE PConfig::PConfig(const PFilePath & filename, const PString & section) : defaultSection(section) { Construct(filename); } PINLINE void PConfig::SetDefaultSection(const PString & section) { defaultSection = section; } PINLINE PString PConfig::GetDefaultSection() const { return defaultSection; } PINLINE PStringList PConfig::GetKeys() const { return GetKeys(defaultSection); } PINLINE PStringToString PConfig::GetAllKeyValues() const { return GetAllKeyValues(defaultSection); } PINLINE void PConfig::DeleteSection() { DeleteSection(defaultSection); } PINLINE void PConfig::DeleteKey(const PString & key) { DeleteKey(defaultSection, key); } PINLINE BOOL PConfig::HasKey(const PString & key) const { return HasKey(defaultSection, key); } PINLINE PString PConfig::GetString(const PString & key) const { return GetString(defaultSection, key, PString()); } PINLINE PString PConfig::GetString(const PString & key, const PString & dflt) const { return GetString(defaultSection, key, dflt); } PINLINE void PConfig::SetString(const PString & key, const PString & value) { SetString(defaultSection, key, value); } PINLINE BOOL PConfig::GetBoolean(const PString & key, BOOL dflt) const { return GetBoolean(defaultSection, key, dflt); } PINLINE void PConfig::SetBoolean(const PString & key, BOOL value) { SetBoolean(defaultSection, key, value); } PINLINE long PConfig::GetInteger(const PString & key, long dflt) const { return GetInteger(defaultSection, key, dflt); } PINLINE void PConfig::SetInteger(const PString & key, long value) { SetInteger(defaultSection, key, value); } PINLINE PInt64 PConfig::GetInt64(const PString & key, PInt64 dflt) const { return GetInt64(defaultSection, key, dflt); } PINLINE void PConfig::SetInt64(const PString & key, PInt64 value) { SetInt64(defaultSection, key, value); } PINLINE double PConfig::GetReal(const PString & key, double dflt) const { return GetReal(defaultSection, key, dflt); } PINLINE void PConfig::SetReal(const PString & key, double value) { SetReal(defaultSection, key, value); } PINLINE PTime PConfig::GetTime(const PString & key) const { return GetTime(defaultSection, key); } PINLINE PTime PConfig::GetTime(const PString & key, const PTime & dflt) const { return GetTime(defaultSection, key, dflt); } PINLINE void PConfig::SetTime(const PString & key, const PTime & value) { SetTime(defaultSection, key, value); } #endif // P_CONFIG_FILE /////////////////////////////////////////////////////////////////////////////// // PArgList PINLINE void PArgList::SetArgs(int argc, char ** argv) { SetArgs(PStringArray(argc, argv)); } PINLINE BOOL PArgList::Parse(const PString & theArgumentSpec, BOOL optionsBeforeParams) { return Parse((const char *)theArgumentSpec, optionsBeforeParams); } PINLINE BOOL PArgList::HasOption(char option) const { return GetOptionCount(option) != 0; } PINLINE BOOL PArgList::HasOption(const char * option) const { return GetOptionCount(option) != 0; } PINLINE BOOL PArgList::HasOption(const PString & option) const { return GetOptionCount(option) != 0; } PINLINE PINDEX PArgList::GetCount() const { return parameterIndex.GetSize()-shift; } PINLINE PString PArgList::operator[](PINDEX num) const { return GetParameter(num); } PINLINE PArgList & PArgList::operator<<(int sh) { Shift(sh); return *this; } PINLINE PArgList & PArgList::operator>>(int sh) { Shift(-sh); return *this; } /////////////////////////////////////////////////////////////////////////////// // PProcess PINLINE PArgList & PProcess::GetArguments() { return arguments; } PINLINE const PString & PProcess::GetManufacturer() const { return manufacturer; } PINLINE const PString & PProcess::GetName() const { return productName; } PINLINE const PFilePath & PProcess::GetFile() const { return executableFile; } PINLINE int PProcess::GetMaxHandles() const { return maxHandles; } PINLINE PTimerList * PProcess::GetTimerList() { return &timers; } PINLINE void PProcess::SetTerminationValue(int value) { terminationValue = value; } PINLINE int PProcess::GetTerminationValue() const { return terminationValue; } // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/pdirect.h0100644000176200056700000004552610341504163017747 0ustar releasepostincr/* * pdirect.h * * File system directory class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pdirect.h,v $ * Revision 1.43 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.42 2004/09/17 03:51:15 csoutheren * More fixes for PDirectory problem * * Revision 1.42 2004/09/15 05:11:39 csoutheren * Fixed problem with PDirectory destructor not calling Close() * Thanks to Paul Long * * Revision 1.41 2003/09/17 05:41:58 csoutheren * Removed recursive includes * * Revision 1.40 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.39 2003/06/06 15:04:17 dsandras * * Fixed compilation warning with gcc 3.3 by removing the PINLINE * * Revision 1.38 2002/11/20 00:13:43 robertj * Fixed some documentation * * Revision 1.37 2002/11/19 12:07:02 robertj * Added function to get root directory. * * Revision 1.36 2002/11/19 10:34:59 robertj * Added function to extract a path as an array of directories components. * * Revision 1.35 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.34 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.33 2001/02/13 06:55:21 robertj * Fixed problem with operator= in PDirectory class, part of larger change previously made. * * Revision 1.32 2000/06/26 11:17:19 robertj * Nucleus++ port (incomplete). * * Revision 1.31 2000/04/03 18:41:27 robertj * Fixed BeOS compatibility problem with openlog() function. * * Revision 1.30 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.29 1999/02/16 08:11:09 robertj * MSVC 6.0 compatibility changes. * * Revision 1.28 1998/09/23 06:21:06 robertj * Added open source copyright license. * * Revision 1.27 1998/03/05 12:44:34 robertj * Added cluster size. * * Revision 1.26 1997/03/31 11:34:00 robertj * Fixed default permissions for directories , different from that for files. * * Revision 1.25 1997/01/12 04:22:21 robertj * Added function to get disk size and free space. * * Revision 1.24 1995/12/23 03:45:31 robertj * Added constructor for C string literals. * * Revision 1.23 1995/11/09 12:17:23 robertj * Added platform independent base type access classes. * * Revision 1.22 1995/10/14 15:02:22 robertj * Added function to get parent directory. * * Revision 1.21 1995/06/17 11:12:52 robertj * Documentation update. * * Revision 1.20 1995/03/14 12:42:00 robertj * Updated documentation to use HTML codes. * * Revision 1.19 1995/03/12 04:42:48 robertj * Updated documentation. * Changed return type of functions to the correct case string. * * Revision 1.18 1995/02/22 10:50:33 robertj * Changes required for compiling release (optimised) version. * * Revision 1.17 1995/01/06 10:42:25 robertj * Moved identifiers into different scope. * Changed file size to 64 bit integer. * Documentation * * Revision 1.16 1994/10/24 00:07:03 robertj * Changed PFilePath and PDirectory so descends from either PString or * PCaselessString depending on the platform. * * Revision 1.15 1994/10/23 04:49:25 robertj * Chnaged PDirectory to descend of PString. * Added PDirectory Exists() function. * * Revision 1.14 1994/08/23 11:32:52 robertj * Oops * * Revision 1.13 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.12 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.11 1994/04/20 12:17:44 robertj * Split name into PFilePath * * Revision 1.10 1994/04/11 14:16:27 robertj * Added function for determining if character is a valid directory separator. * * Revision 1.9 1994/04/01 14:14:57 robertj * Put platform independent file permissions and type codes back. * * Revision 1.7 1994/01/13 03:17:55 robertj * Added functions to get the name of the volume the directory is contained in * and a function to determine if the directory is a root directory of the * volume (ie is does not have a parent directory). * * Revision 1.6 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.5 1993/12/31 06:45:38 robertj * Made inlines optional for debugging purposes. * * Revision 1.4 1993/08/21 01:50:33 robertj * Made Clone() function optional, default will assert if called. * * Revision 1.3 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PDIRECTORY #define _PDIRECTORY #ifdef P_USE_PRAGMA #pragma interface #endif #ifdef Fifo #undef Fifo #endif #ifdef _WIN32 #define PDIR_SEPARATOR '\\' const PINDEX P_MAX_PATH = _MAX_PATH; typedef PCaselessString PFilePathString; #else #define PDIR_SEPARATOR '/' #define P_MAX_PATH (_POSIX_PATH_MAX) typedef PString PFilePathString; #endif /////////////////////////////////////////////////////////////////////////////// // File System /**Class containing the system information on a file path. Information can be obtained on any directory entry event if it is not a "file" in the strictest sense. Sub-directories, devices etc may also have information retrieved. */ class PFileInfo : public PObject { PCLASSINFO(PFileInfo, PObject); public: /**All types that a particular file path may be. Not all platforms support all of the file types. For example under DOS no file may be of the type #SymbolicLink#. */ enum FileTypes { /// Ordinary disk file. RegularFile = 1, /// File path is a symbolic link. SymbolicLink = 2, /// File path is a sub-directory SubDirectory = 4, /// File path is a character device name. CharDevice = 8, /// File path is a block device name. BlockDevice = 16, /// File path is a fifo (pipe) device. Fifo = 32, /// File path is a socket device. SocketDevice = 64, /// File path is of an unknown type. UnknownFileType = 256, /// Mask for all file types. AllFiles = 0x1ff }; /// File type for this file. Only one bit is set at a time here. FileTypes type; /**Time of file creation of the file. Not all platforms support a separate creation time in which case the last modified time is returned. */ PTime created; /// Time of last modifiaction of the file. PTime modified; /**Time of last access to the file. Not all platforms support a separate access time in which case the last modified time is returned. */ PTime accessed; /**Size of the file in bytes. This is a quadword or 8 byte value to allow for files greater than 4 gigabytes. */ PUInt64 size; /// File access permissions for the file. enum Permissions { /// File has world execute permission WorldExecute = 1, /// File has world write permission WorldWrite = 2, /// File has world read permission WorldRead = 4, /// File has group execute permission GroupExecute = 8, /// File has group write permission GroupWrite = 16, /// File has group read permission GroupRead = 32, /// File has owner execute permission UserExecute = 64, /// File has owner write permission UserWrite = 128, /// File has owner read permission UserRead = 256, /// All possible permissions. AllPermissions = 0x1ff, /// Owner read & write plus group and world read permissions. DefaultPerms = UserRead|UserWrite|GroupRead|WorldRead, /// Owner read & write & execute plus group and world read & exectute permissions. DefaultDirPerms = DefaultPerms|UserExecute|GroupExecute|WorldExecute }; /**A bit mask of all the file acces permissions. See the #Permissions enum# for the possible bit values. Not all platforms support all permissions. */ int permissions; /**File is a hidden file. What constitutes a hidden file is platform dependent, for example under unix it is a file beginning with a '.' character while under MS-DOS there is a file system attribute for it. */ BOOL hidden; }; /**Class to represent a directory in the operating system file system. A directory is a special file that contains a list of file paths. The directory paths are highly platform dependent and a minimum number of assumptions should be made. The PDirectory object is a string consisting of a possible volume name, and a series directory names in the path from the volumes root to the directory that the object represents. Each directory is separated by the platform dependent separator character which is defined by the PDIR_SEPARATOR macro. The path always has a trailing separator. Some platforms allow more than one character to act as a directory separator so when doing any processing the #IsSeparator()# function should be used to determine if a character is a possible separator. The directory may be opened to gain access to the list of files that it contains. Note that the directory does {\bf not} contain the "." and ".." entries that some platforms support. The ancestor class is dependent on the platform. For file systems that are case sensitive, eg Unix, the ancestor is #PString#. For other platforms, the ancestor class is #PCaselessString#. */ class PDirectory : public PFilePathString { PCONTAINERINFO(PDirectory, PFilePathString); public: /**@name Construction */ //@{ /// Create a directory object of the current working directory PDirectory(); /**Create a directory object of the specified directory. The #pathname# parameter may be a relative directory which is made absolute by the creation of the #PDirectory# object. */ PDirectory( const char * cpathname ///< Directory path name for new object. ); /**Create a directory object of the specified directory. The #pathname# parameter may be a relative directory which is made absolute by the creation of the #PDirectory# object. */ PDirectory( const PString & pathname ///< Directory path name for new object. ); /**Set the directory to the specified path. */ PDirectory & operator=( const PString & pathname ///< Directory path name for new object. ); /**Set the directory to the specified path. */ PDirectory & operator=( const char * cpathname ///< Directory path name for new object. ); //@} /**@name Access functions */ //@{ /**Get the directory for the parent to the current directory. If the directory is already the root directory it returns the root directory again. @return parent directory. */ PDirectory GetParent() const; /**Get the volume name that the directory is in. This is platform dependent, for example for MS-DOS it is the 11 character volume name for the drive, eg "DOS_DISK", and for Macintosh it is the disks volume name eg "Untitled". For a unix platform it is the device name for the file system eg "/dev/sda1". @return string for the directory volume. */ PFilePathString GetVolume() const; /**Determine if the directory is the root directory of a volume. @return TRUE if the object is a root directory. */ BOOL IsRoot() const; /**Get the root directory of a volume. @return root directory. */ PDirectory GetRoot() const; /**Get the directory path as an array of strings. The first element in the array is the volume string, eg under Win32 it is "c:" or "\\machine", while under unix it is an empty string. */ PStringArray GetPath() const; /**Determine if the character #ch# is a directory path separator. @return TRUE if may be used to separate directories in a path. */ PINLINE static BOOL IsSeparator( char ch ///< Character to check as being a separator. ); /**Determine the total number of bytes and number of bytes free on the volume that this directory is contained on. Note that the free space will be the physical limit and if user quotas are in force by the operating system, the use may not actually be able to use all of these bytes. @return TRUE if the information could be determined. */ BOOL GetVolumeSpace( PInt64 & total, ///< Total number of bytes available on volume PInt64 & free, ///< Number of bytes unused on the volume DWORD & clusterSize ///< "Quantisation factor" in bytes for files on volume ) const; //@} /**@name File system functions */ //@{ /**Test for if the directory exists. @return TRUE if directory exists. */ BOOL Exists() const; /**Test for if the specified directory exists. @return TRUE if directory exists. */ static BOOL Exists( const PString & path ///< Directory file path. ); /**Change the current working directory to the objects location. @return TRUE if current working directory was changed. */ BOOL Change() const; /**Change the current working directory to that specified.. @return TRUE if current working directory was changed. */ static BOOL Change( const PString & path ///< Directory file path. ); /**Create a new directory with the specified permissions. @return TRUE if directory created. */ BOOL Create( int perm = PFileInfo::DefaultDirPerms // Permission on new directory. ) const; /**Create a new directory as specified with the specified permissions. @return TRUE if directory created. */ static BOOL Create( const PString & p, ///< Directory file path. int perm = PFileInfo::DefaultDirPerms ///< Permission on new directory. ); /**Delete the directory. @return TRUE if directory was deleted. */ BOOL Remove(); /**Delete the specified directory. @return TRUE if directory was deleted. */ static BOOL Remove( const PString & path ///< Directory file path. ); //@} /**@name Directory listing functions */ //@{ /**Open the directory for scanning its list of files. Once opened the #GetEntryName()# function may be used to get the current directory entry and the #Next()# function used to move to the next directory entry. Only files that are of a type that is specified in the mask will be returned. Note that the directory scan will {\bf not} return the "." and ".." entries that some platforms support. @return TRUE if directory was successfully opened, and there was at least one file in it of the specified types. */ virtual BOOL Open( int scanMask = PFileInfo::AllFiles ///< Mask of files to provide. ); /**Restart file list scan from the beginning of directory. This is similar to the #Open()# command but does not require that the directory be closed (using #Close()#) first. Only files that are of a type that is specified in the mask will be returned. Note that the directory scan will {\bf not} return the "." and ".." entries that some platforms support. @return TRUE if directory was successfully opened, and there was at least one file in it of the specified types. */ virtual BOOL Restart( int scanMask = PFileInfo::AllFiles ///< Mask of files to provide. ); /**Move to the next file in the directory scan. Only files that are of a type that is specified in the mask passed to the #Open()# or #Restart()# functions will be returned. Note that the directory scan will {\bf not} return the "." and ".." entries that some platforms support. @return TRUE if there is another valid file in the directory. */ BOOL Next(); /// Close the directory during or after a file list scan. virtual void Close(); /**Get the name (without the volume or directory path) of the current entry in the directory scan. This may be the name of a file or a subdirectory or even a link or device for operating systems that support them. To get a full path name concatenate the PDirectory object itself with the entry name. Note that the directory scan will {\bf not} return the "." and ".." entries that some platforms support. @return string for directory entry. */ virtual PFilePathString GetEntryName() const; /**Determine if the directory entry currently being scanned is itself another directory entry. Note that the directory scan will {\bf not} return the "." and ".." entries that some platforms support. @return TRUE if entry is a subdirectory. */ virtual BOOL IsSubDir() const; /**Get file information on the current directory entry. @return TRUE if file information was successfully retrieved. */ virtual BOOL GetInfo( PFileInfo & info ///< Object to receive the file information. ) const; //@} protected: // New functions for class void Construct(); void Destruct() { Close(); PFilePathString::Destruct(); } // Member variables /// Mask of file types that the directory scan will return. int scanMask; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/pdirect.h" #else #include "unix/ptlib/pdirect.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/pfactory.h0100644000176200056700000003132710313262464020142 0ustar releasepostincr/* * factory.h * * Abstract Factory Classes * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: pfactory.h,v $ * Revision 1.22 2005/09/18 13:01:40 dominance * fixed pragma warnings when building with gcc. * * Revision 1.21 2005/05/03 11:58:45 csoutheren * Fixed various problems reported by valgrind * Thanks to Paul Cadach * * Revision 1.20 2005/01/04 07:44:02 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.19 2004/08/16 06:40:59 csoutheren * Added adapters template to make device plugins available via the abstract factory interface * * Revision 1.18 2004/07/12 09:17:20 csoutheren * Fixed warnings and errors under Linux * * Revision 1.17 2004/07/06 10:12:52 csoutheren * Added static integer o factory template to assist in ensuring factories are instantiated * * Revision 1.16 2004/07/06 04:26:44 csoutheren * Fixed problem when using factory maps with non-standard keys * * Revision 1.15 2004/07/02 03:14:47 csoutheren * Made factories non-singleton, by default * Added more docs * * Revision 1.14 2004/07/01 11:41:28 csoutheren * Fixed compile and run problems on Linux * * Revision 1.13 2004/07/01 04:33:57 csoutheren * Updated documentation on PFactory classes * * Revision 1.12 2004/06/30 12:17:04 rjongbloed * Rewrite of plug in system to use single global variable for all factories to avoid all sorts * of issues with startup orders and Windows DLL multiple instances. * * Revision 1.11 2004/06/17 06:35:12 csoutheren * Use attribute (( constructor )) to guarantee that factories are * instantiated when loaded from a shared library * * Revision 1.10 2004/06/03 13:30:57 csoutheren * Renamed INSTANTIATE_FACTORY to avoid potential namespace collisions * Added documentaton on new PINSTANTIATE_FACTORY macro * Added generic form of PINSTANTIATE_FACTORY * * Revision 1.9 2004/06/03 12:47:58 csoutheren * Decomposed PFactory declarations to hopefully avoid problems with Windows DLLs * * Revision 1.8 2004/06/01 05:44:12 csoutheren * Added typedefs to allow access to types * Changed singleton class to use new so as to allow full cleanup * * Revision 1.7 2004/05/23 12:33:56 rjongbloed * Made some subtle changes to the way the static variables are instantiated in * the factoris to fix problems with DLL's under windows. May not be final solution. * * Revision 1.6 2004/05/19 06:48:39 csoutheren * Added new functions to allow handling of singletons without concrete classes * * Revision 1.5 2004/05/18 06:01:06 csoutheren * Deferred plugin loading until after main has executed by using abstract factory classes * * Revision 1.4 2004/05/18 02:32:08 csoutheren * Fixed linking problems with PGenericFactory classes * * Revision 1.3 2004/05/13 15:10:51 csoutheren * Removed warnings under Windows * * Revision 1.2 2004/05/13 14:59:00 csoutheren * Removed warning under gcc * * Revision 1.1 2004/05/13 14:53:35 csoutheren * Add "abstract factory" template classes * */ #ifndef _PFACTORY_H #define _PFACTORY_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include #include #include #if defined(_MSC_VER) #pragma warning(disable:4786) #endif /** * * These templates implement an Abstract Factory that allows * creation of a class "factory" that can be used to create * "concrete" instance that are descended from a abstract base class * * Given an abstract class A with a descendant concrete class B, the * concrete class is registered by instantiating the PFactory template * as follows: * * PFactory::Worker aFactory("B"); * * To instantiate an object of type B, use the following: * * A * b = PFactory::CreateInstance("B"); * * A vector containing the names of all of the concrete classes for an * abstract type can be obtained as follows: * * PFactory::KeyList_T list = PFactory::GetKeyList() * * Note that these example assumes that the "key" type for the factory * registration is of the default type PString. If a different key type * is needed, then it is necessary to specify the key type: * * PFactory::Worker aFactory(42); * C * d = PFactory::CreateInstance(42); * PFactory::KeyList_T list = PFactory::GetKeyList() * * The factory functions also allow the creation of "singleton" factories that return a * single instance for all calls to CreateInstance. This can be done by passing a "true" * as a second paramater to the factory registration as shown below, which will cause a single * instance to be minted upon the first call to CreateInstance, and then returned for all * subsequent calls. * * PFactory::Worker eFactory("E", true); * * It is also possible to manually set the instance in cases where the object needs to be created non-trivially. * * The following types are defined as part of the PFactory template class: * * KeyList_T a vector<> of the key type (usually std::string) * Worker an abstract factory for a specified concrete type * KeyMap_T a map<> that converts from the key type to the Worker instance * for each concrete type registered for a specific abstract type * * As a side issue, note that the factory lists are all thread safe for addition, * creation, and obtaining the key lists. * */ /** Base class for generic factories. This classes reason for existance and the FactoryMap contained within it is to resolve issues with static global construction order and Windows DLL multiple instances issues. THis mechanism guarantees that the one and one only global variable (inside the GetFactories() function) is initialised before any other factory related instances of classes. */ class PFactoryBase { protected: PFactoryBase() { } public: virtual ~PFactoryBase() { } class FactoryMap : public std::map { public: FactoryMap() { } ~FactoryMap(); }; static FactoryMap & GetFactories(); static PMutex & GetFactoriesMutex(); PMutex mutex; private: PFactoryBase(const PFactoryBase &) {} void operator=(const PFactoryBase &) {} }; /** Template class for generic factories of an abstract class. */ template class PFactory : PFactoryBase { public: typedef _Key_T Key_T; typedef _Abstract_T Abstract_T; class WorkerBase { protected: WorkerBase(bool singleton = false) : isDynamic(false), isSingleton(singleton), singletonInstance(NULL), deleteSingleton(false) { } WorkerBase(Abstract_T * instance) : isDynamic(true), isSingleton(true), singletonInstance(instance), deleteSingleton(true) { } virtual ~WorkerBase() { if (deleteSingleton) delete singletonInstance; } Abstract_T * CreateInstance(const Key_T & key) { if (!isSingleton) return Create(key); if (singletonInstance == NULL) singletonInstance = Create(key); return singletonInstance; } virtual Abstract_T * Create(const Key_T & /*key*/) const { return singletonInstance; } bool isDynamic; bool isSingleton; Abstract_T * singletonInstance; bool deleteSingleton; friend class PFactory<_Abstract_T, _Key_T>; }; template class Worker : WorkerBase { public: Worker(const Key_T & key, bool singleton = false) : WorkerBase(singleton) { PFactory<_Abstract_T, _Key_T>::Register(key, this); // here } protected: virtual Abstract_T * Create(const Key_T & /*key*/) const { return new _Concrete_T; } }; typedef std::map<_Key_T, WorkerBase *> KeyMap_T; typedef std::vector<_Key_T> KeyList_T; static void Register(const _Key_T & key, WorkerBase * worker) { GetInstance().Register_Internal(key, worker); } static void Register(const _Key_T & key, Abstract_T * instance) { GetInstance().Register_Internal(key, new WorkerBase(instance)); } static void Unregister(const _Key_T & key) { GetInstance().Unregister_Internal(key); } static void UnregisterAll() { GetInstance().UnregisterAll_Internal(); } static bool IsRegistered(const _Key_T & key) { return GetInstance().IsRegistered_Internal(key); } static _Abstract_T * CreateInstance(const _Key_T & key) { return GetInstance().CreateInstance_Internal(key); } static BOOL IsSingleton(const _Key_T & key) { return GetInstance().IsSingleton_Internal(key); } static KeyList_T GetKeyList() { return GetInstance().GetKeyList_Internal(); } static KeyMap_T & GetKeyMap() { return GetInstance().keyMap; } static PMutex & GetMutex() { return GetInstance().mutex; } protected: PFactory() { } ~PFactory() { typename KeyMap_T::const_iterator entry; for (entry = keyMap.begin(); entry != keyMap.end(); ++entry) { if (entry->second->isDynamic) delete entry->second; } } static PFactory & GetInstance() { std::string className = typeid(PFactory).name(); PWaitAndSignal m(GetFactoriesMutex()); FactoryMap & factories = GetFactories(); FactoryMap::const_iterator entry = factories.find(className); if (entry != factories.end()) { PAssert(entry->second != NULL, "Factory map returned NULL for existing key"); PFactoryBase * b = entry->second; // don't use the following dynamic cast, because gcc does not like it //PFactory * f = dynamic_cast(b); return *(PFactory *)b; } PFactory * factory = new PFactory; factories[className] = factory; return *factory; } void Register_Internal(const _Key_T & key, WorkerBase * worker) { PWaitAndSignal m(mutex); if (keyMap.find(key) == keyMap.end()) keyMap[key] = worker; } void Unregister_Internal(const _Key_T & key) { PWaitAndSignal m(mutex); keyMap.erase(key); } void UnregisterAll_Internal() { PWaitAndSignal m(mutex); keyMap.erase(keyMap.begin(), keyMap.end()); } bool IsRegistered_Internal(const _Key_T & key) { PWaitAndSignal m(mutex); return keyMap.find(key) != keyMap.end(); } _Abstract_T * CreateInstance_Internal(const _Key_T & key) { PWaitAndSignal m(mutex); typename KeyMap_T::const_iterator entry = keyMap.find(key); if (entry != keyMap.end()) return entry->second->CreateInstance(key); return NULL; } bool IsSingleton_Internal(const _Key_T & key) { PWaitAndSignal m(mutex); if (keyMap.find(key) == keyMap.end()) return false; return keyMap[key]->isSingleton; } KeyList_T GetKeyList_Internal() { PWaitAndSignal m(mutex); KeyList_T list; typename KeyMap_T::const_iterator entry; for (entry = keyMap.begin(); entry != keyMap.end(); ++entry) list.push_back(entry->first); return list; } KeyMap_T keyMap; private: PFactory(const PFactory &) {} void operator=(const PFactory &) {} }; // // this macro is used to initialise the static member variable used to force factories to instantiate // #define PLOAD_FACTORY_DECLARE(AbstractType, KeyType) \ namespace PWLibFactoryLoader { extern int AbstractType##_##KeyType; } #define PLOAD_FACTORY(AbstractType, KeyType) \ PWLibFactoryLoader::AbstractType##_##KeyType = 1; // // this macro is used to instantiate a static variable that accesses the static member variable // in a factory forcing it to load // #define PINSTANTIATE_FACTORY(AbstractType, KeyType) \ namespace PWLibFactoryLoader { int AbstractType##_##KeyType; }; #endif // _PFACTORY_H pwlib_v1_10_2/include/ptlib/pipechan.h0100644000176200056700000004307610341504163020102 0ustar releasepostincr/* * pipechan.h * * Sub-process with communications using pipe I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pipechan.h,v $ * Revision 1.23 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.22 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.21 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.20 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.19 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.18 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.17 1999/02/16 08:11:09 robertj * MSVC 6.0 compatibility changes. * * Revision 1.16 1998/11/02 10:06:39 robertj * Added capability of pip output to go to stdout/stderr. * * Revision 1.15 1998/10/30 10:42:29 robertj * Better function arrangement for multi platforming. * * Revision 1.14 1998/10/29 11:29:17 robertj * Added ability to set environment in sub-process. * * Revision 1.13 1998/10/26 09:11:05 robertj * Added ability to separate out stdout from stderr on pipe channels. * * Revision 1.12 1998/09/23 06:21:08 robertj * Added open source copyright license. * * Revision 1.11 1997/01/03 05:25:05 robertj * Added Wait and Kill functions. * * Revision 1.10 1996/03/31 08:50:51 robertj * Changed string list to array. * Added function to idicate if sub-process is running. * * Revision 1.9 1995/07/31 12:15:45 robertj * Removed PContainer from PChannel ancestor. * * Revision 1.8 1995/06/17 11:12:53 robertj * Documentation update. * * Revision 1.7 1995/03/14 12:42:02 robertj * Updated documentation to use HTML codes. * * Revision 1.6 1995/01/09 12:39:01 robertj * Documentation. * * Revision 1.5 1994/10/23 04:50:55 robertj * Further refinement of semantics after implementation. * * Revision 1.4 1994/09/25 10:43:19 robertj * Added more implementation. * * Revision 1.3 1994/08/23 11:32:52 robertj * Oops * * Revision 1.2 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.1 1994/04/20 12:17:44 robertj * Initial revision * */ #ifndef _PPIPECHANNEL #define _PPIPECHANNEL #ifdef P_USE_PRAGMA #pragma interface #endif /**A channel that uses a operating system pipe between the current process and a sub-process. On platforms that support {\it multi-processing}, the sub-program is executed concurrently with the calling process. Where full multi-processing is not supported then the sub-program is run with its input supplied from, or output captured to, a disk file. The current process is then suspended during the execution of the sub-program. In the latter case the semantics of the #Execute()# and #Close()# functions change from the usual for channels. Note that for platforms that do not support multi-processing, the current process is suspended until the sub-program terminates. The input and output of the sub-program is transferred via a temporary file. The exact moment of execution of the sub-program depends on the mode. If mode is #ReadOnly# then it is executed immediately and its output captured. In #WriteOnly# mode the sub-program is run when the #Close()# function is called, or when the pipe channel is destroyed. In #ReadWrite# mode the sub-program is run when the #Execute()# function is called indicating that the output from the current process to the sub-program has completed and input is now desired. The #CanReadAndWrite()# function effectively determines whether full multi-processing is supported by the platform. Note that this is different to whether {\it multi-threading} is supported. */ class PPipeChannel : public PChannel { PCLASSINFO(PPipeChannel, PChannel); public: /**@name Construction */ //@{ /// Channel mode for the pipe to the sub-process. enum OpenMode { /// Pipe is only from the sub-process to the current process. ReadOnly, /// Pipe is only from the current process to the sub-process. WriteOnly, /// Pipe is bidirectional between current and sub-processes. ReadWrite, /**Pipe is bidirectional between current and sub-processes but the write side goes to stdout and stderr */ ReadWriteStd }; /**Create a new pipe channel. */ PPipeChannel(); /**Create a new pipe channel. This executes the subProgram and transfers data from its stdin/stdout/stderr. See the #Open()# function for details of various parameters. */ PPipeChannel( const PString & subProgram, ///< Sub program name or command line. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /**Create a new pipe channel. This executes the subProgram and transfers data from its stdin/stdout/stderr. See the #Open()# function for details of various parameters. */ PPipeChannel( const PString & subProgram, ///< Sub program name or command line. const PStringArray & argumentList, ///< Array of arguments to sub-program. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /**Create a new pipe channel. This executes the subProgram and transfers data from its stdin/stdout/stderr. See the #Open()# function for details of various parameters. */ PPipeChannel( const PString & subProgram, ///< Sub program name or command line. const PStringToString & environment, ///< Array of arguments to sub-program. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /**Create a new pipe channel. This executes the subProgram and transfers data from its stdin/stdout/stderr. See the #Open()# function for details of various parameters. */ PPipeChannel( const PString & subProgram, ///< Sub program name or command line. const PStringArray & argumentList, ///< Array of arguments to sub-program. const PStringToString & environment, ///< Array of arguments to sub-program. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /// Close the pipe channel, killing the sub-process. ~PPipeChannel(); //@} /**@name Overrides from class PObject */ //@{ /**Determine if the two objects refer to the same pipe channel. This actually compares the sub-program names that are passed into the constructor. @return Comparison value of the sub-program strings. */ Comparison Compare( const PObject & obj ///< Another pipe channel to compare against. ) const; //@} /**@name Overrides from class PChannel */ //@{ /**Get the name of the channel. @return string for the sub-program that is run. */ virtual PString GetName() const; /**Low level read from the channel. This function may block until the requested number of characters were read or the read timeout was reached. The GetLastReadCount() function returns the actual number of bytes read. If there are no more characters available as the sub-program has stopped then the number of characters available is returned. This is similar to end of file for the PFile channel. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ); /**Low level write to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. If the sub-program has completed its run then this function will fail returning FALSE. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /**Close the channel. This will kill the sub-program's process (on platforms where that is relevent). For #WriteOnly# or #ReadWrite# mode pipe channels on platforms that do no support concurrent multi-processing and have not yet called the #Execute()# function this will run the sub-program. */ virtual BOOL Close(); //@} /**@name New member functions */ //@{ /** Open a channel. */ BOOL Open( const PString & subProgram, ///< Sub program name or command line. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /** Open a channel. */ BOOL Open( const PString & subProgram, ///< Sub program name or command line. const PStringArray & argumentList, ///< Array of arguments to sub-program. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /** Open a channel. */ BOOL Open( const PString & subProgram, ///< Sub program name or command line. const PStringToString & environment, ///< Array of arguments to sub-program. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /**Open a new pipe channel allowing the subProgram to be executed and data transferred from its stdin/stdout/stderr. If the mode is #ReadOnly# then the #stdout# of the sub-program is supplied via the #Read()# calls of the PPipeChannel. The sub-programs input is set to the platforms null device (eg /dev/nul). If mode is #WriteOnly# then #Write()# calls of the PPipeChannel are suppied to the sub-programs #stdin# and its #stdout# is sent to the null device. If mode is #ReadWrite# then both read and write actions can occur. The #subProgram# parameter may contain just the path of the program to be run or a program name and space separated arguments, similar to that provided to the platforms command processing shell. Which use of this parameter is determiend by whether arguments are passed via the #argumentPointers# or #argumentList# parameters. The #searchPath# parameter indicates that the system PATH for executables should be searched for the sub-program. If FALSE then only the explicit or implicit path contained in the #subProgram# parameter is searched for the executable. The #stderrSeparate# parameter indicates that the standard error stream is not included in line with the standard output stream. In this case, data in this stream must be read using the #ReadStandardError()# function. The #environment# parameter is a null terminated sequence of null terminated strings of the form name=value. If NULL is passed then the same invironment as calling process uses is passed to the child process. */ BOOL Open( const PString & subProgram, ///< Sub program name or command line. const PStringArray & argumentList, ///< Array of arguments to sub-program. const PStringToString & environment, ///< Array of arguments to sub-program. OpenMode mode = ReadWrite, ///< Mode for the pipe channel. BOOL searchPath = TRUE, ///< Flag for system PATH to be searched. BOOL stderrSeparate = FALSE ///< Standard error is on separate pipe ); /**Get the full file path for the sub-programs executable file. @return file path name for sub-program. */ const PFilePath & GetSubProgram() const; /**Start execution of sub-program for platforms that do not support multi-processing, this will actually run the sub-program passing all data written to the PPipeChannel. For platforms that do support concurrent multi-processing this will close the pipe from the current process to the sub-process. As the sub-program is run immediately and concurrently, this will just give an end of file to the stdin of the remote process. This is often necessary. @return TRUE if execute was successful. */ BOOL Execute(); /**Determine if the program associated with the PPipeChannel is still executing. This is useful for determining the status of PPipeChannels which take a long time to execute on operating systems which support concurrent multi-processing. @return TRUE if the program associated with the PPipeChannel is still running */ BOOL IsRunning() const; /**Get the return code from the most recent Close; @return Return code from the closing process */ int GetReturnCode() const; /**This function will block and wait for the sub-program to terminate. @return Return code from the closing process */ int WaitForTermination(); /**This function will block and wait for the sub-program to terminate. It will wait only for the specified amount of time. @return Return code from the closing process, -1 if timed out. */ int WaitForTermination( const PTimeInterval & timeout ///< Amount of time to wait for process. ); /**This function will terminate the sub-program using the signal code specified. @return TRUE if the process received the signal. Note that this does not mean that the process has actually terminated. */ BOOL Kill( int signal = 9 ///< Signal code to be sent to process. ); /**Read all available data on the standard error stream of the sub-process. If the #wait# parameter is FALSE then only the text currently available is returned. If TRUE then the function blocks as long as necessary to get some number of bytes. @return TRUE indicates that at least one character was read from stderr. FALSE means no bytes were read due to timeout or some other I/O error. */ BOOL ReadStandardError( PString & errors, ///< String to receive standard error text. BOOL wait = FALSE ///< Flag to indicate if function should block ); /**Determine if the platform can support simultaneous read and writes from the PPipeChannel (eg MSDOS returns FALSE, Unix returns TRUE). @return TRUE if platform supports concurrent multi-processing. */ static BOOL CanReadAndWrite(); //@} protected: // Member variables /// The fully qualified path name for the sub-program executable. PFilePath subProgName; private: BOOL PlatformOpen(const PString & subProgram, const PStringArray & arguments, OpenMode mode, BOOL searchPath, BOOL stderrSeparate, const PStringToString * environment); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/pipechan.h" #else #include "unix/ptlib/pipechan.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/plugin.h0100644000176200056700000002245110360223144017601 0ustar releasepostincr/* * plugin.h * * Plugin Class Declarations * * Portable Windows Library * * Contributor(s): Snark at GnomeMeeting * * $Log: plugin.h,v $ * Revision 1.15 2006/01/08 14:49:08 dsandras * Several fixes to allow compilation on Open Solaris thanks to Brian Lu . Many thanks! * * Revision 1.14 2005/08/09 09:08:09 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.13.2.1 2005/07/17 09:27:04 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.13 2005/06/07 00:42:55 csoutheren * Apply patch 1214249 to fix crash with Suse 9.3. Thanks to Stefan Bruns * * Revision 1.12 2005/01/04 07:44:03 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.11 2004/08/16 11:57:47 csoutheren * More changes for VS.net * * Revision 1.10 2004/08/16 10:55:09 csoutheren * Fixed problems compiling under Linux * * Revision 1.9 2004/08/16 06:40:59 csoutheren * Added adapters template to make device plugins available via the abstract factory interface * * Revision 1.8 2004/06/21 10:40:02 csoutheren * Fixed problem with dynamic plugins * * Revision 1.7 2004/06/21 00:57:40 csoutheren * Changed service plugin static registration to use attribute (( constructor )) * * Revision 1.6 2003/12/19 00:34:27 csoutheren * Ensured that older compilers do not get confused about functions wth empty * parameter lists. Thanks to Kilian Krause * * Revision 1.5 2003/11/19 09:29:19 csoutheren * Added super hack to avoid problems with multiple plugins in a single file * * Revision 1.4 2003/11/12 10:24:35 csoutheren * Changes to allow operation of static plugins under Windows * * Revision 1.3 2003/11/12 06:58:21 csoutheren * Changes to help in making static plugins autoregister under Windows * * Revision 1.2 2003/11/12 03:26:17 csoutheren * Initial version of plugin code from Snark of GnomeMeeting with changes * by Craig Southeren os Post Increment * * */ #ifndef _PLUGIN_H #define _PLUGIN_H ////////////////////////////////////////////////////// // // these templates implement an adapter to make the old style device plugins appear in the new factory system // #include template class PDevicePluginFactory : public PFactory<_Abstract_T, _Key_T> { public: class Worker : public PFactory<_Abstract_T, _Key_T>::WorkerBase { public: Worker(const _Key_T & key, bool singleton = false) : PFactory<_Abstract_T, _Key_T>::WorkerBase(singleton) { PFactory<_Abstract_T, _Key_T>::Register(key, this); } ~Worker() { typedef typename PFactory<_Abstract_T, _Key_T>::WorkerBase WorkerBase_T; typedef std::map<_Key_T, WorkerBase_T *> KeyMap_T; _Key_T key; KeyMap_T km = PFactory<_Abstract_T, _Key_T>::GetKeyMap(); typename KeyMap_T::const_iterator entry; for (entry = km.begin(); entry != km.end(); ++entry) { if (entry->second == this) { key = entry->first; break; } } if (key != NULL) PFactory<_Abstract_T, _Key_T>::Unregister(key); } protected: virtual _Abstract_T * Create(const _Key_T & key) const; }; }; class PDevicePluginAdapterBase { public: PDevicePluginAdapterBase() { } virtual ~PDevicePluginAdapterBase() { } virtual void CreateFactory(const PString & device) = 0; }; template class PDevicePluginAdapter : public PDevicePluginAdapterBase { public: typedef PDevicePluginFactory Factory_T; typedef typename Factory_T::Worker Worker_T; void CreateFactory(const PString & device) { if (!(Factory_T::IsRegistered(device))) new Worker_T(device, FALSE); } }; #define PWLIB_PLUGIN_API_VERSION 0 ////////////////////////////////////////////////////// // // Ancestor Service descriptor for plugins // class PPluginServiceDescriptor { public: PPluginServiceDescriptor() { version = PWLIB_PLUGIN_API_VERSION; } virtual ~PPluginServiceDescriptor() { } virtual unsigned GetPluginAPIVersion() const { return version; } protected: unsigned version; }; class PDevicePluginServiceDescriptor : public PPluginServiceDescriptor { public: static const char SeparatorChar; virtual PObject * CreateInstance(int userData) const = 0; virtual PStringList GetDeviceNames(int userData) const = 0; virtual bool ValidateDeviceName(const PString & deviceName, int userData) const; }; ////////////////////////////////////////////////////// // // Define a service provided by a plugin, which consists of the following: // // serviceType - the base class name of the service which is used to identify // the service type, such as PSoundChannel, // // serviceName - the name of the service provided by the plugin. This will usually // be related to the class implementing the service, such as: // service name = OSS, class name = PSoundChannelOSS // // descriptor - a pointer to a class containing pointers to any static functions // for this class // // class PPluginService: public PObject { public: PPluginService(const PString & _serviceName, const PString & _serviceType, PPluginServiceDescriptor *_descriptor) { serviceName = _serviceName; serviceType = _serviceType; descriptor = _descriptor; } PString serviceName; PString serviceType; PPluginServiceDescriptor * descriptor; }; ////////////////////////////////////////////////////// // // These crazy macros are needed to cause automatic registration of // static plugins. They are made more complex by the arcane behaviour // of the Windows link system that requires an external reference in the // object module before it will instantiate any globals in in it // #define PCREATE_PLUGIN_REGISTERER(serviceName, serviceType, descriptor) \ class PPlugin_##serviceType##_##serviceName##_Registration { \ public: \ PPlugin_##serviceType##_##serviceName##_Registration(PPluginManager * pluginMgr) \ { \ static PDevicePluginFactory::Worker factory(#serviceName); \ pluginMgr->RegisterService(#serviceName, #serviceType, descriptor); \ } \ int kill_warning; \ }; \ #ifdef _WIN32 #define PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor) \ PCREATE_PLUGIN_REGISTERER(serviceName, serviceType, descriptor) \ PPlugin_##serviceType##_##serviceName##_Registration \ PPlugin_##serviceType##_##serviceName##_Registration_Instance(&PPluginManager::GetPluginManager()); \ #define PWLIB_STATIC_LOAD_PLUGIN(serviceName, serviceType) \ class PPlugin_##serviceType##_##serviceName##_Registration; \ extern PPlugin_##serviceType##_##serviceName##_Registration PPlugin_##serviceType##_##serviceName##_Registration_Instance; \ static PPlugin_##serviceType##_##serviceName##_Registration * PPlugin_##serviceType##_##serviceName##_Registration_Static_Library_Loader = &PPlugin_##serviceType##_##serviceName##_Registration_Instance; // Win32 onl;y has static plugins at present, maybe one day ... #define P_FORCE_STATIC_PLUGIN #else #ifdef USE_GCC #define PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor) \ static void __attribute__ (( constructor )) PWLIB_StaticLoader_##serviceName##_##serviceType() \ { PPluginManager::GetPluginManager().RegisterService(#serviceName, #serviceType, descriptor); } \ #else #define PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor) \ extern int PWLIB_gStaticLoader__##serviceName##_##serviceType; \ static int PWLIB_StaticLoader_##serviceName##_##serviceType() \ { PPluginManager::GetPluginManager().RegisterService(#serviceName, #serviceType, descriptor); return 1; } \ int PWLIB_gStaticLoader__##serviceName##_##serviceType = PWLIB_StaticLoader_##serviceName##_##serviceType(); #endif #define PWLIB_STATIC_LOAD_PLUGIN(serviceName, serviceType) #endif ////////////////////////////////////////////////////// #if defined(P_HAS_PLUGINS) && ! defined(P_FORCE_STATIC_PLUGIN) # define PCREATE_PLUGIN(serviceName, serviceType, descriptor) \ PCREATE_PLUGIN_REGISTERER(serviceName, serviceType, descriptor) \ extern "C" void PWLibPlugin_TriggerRegister (PPluginManager * pluginMgr) { \ PPlugin_##serviceType##_##serviceName##_Registration \ pplugin_##serviceType##_##serviceName##_Registration_Instance(pluginMgr); \ pplugin_##serviceType##_##serviceName##_Registration_Instance.kill_warning = 0; \ } \ extern "C" unsigned PWLibPlugin_GetAPIVersion (void) \ { return PWLIB_PLUGIN_API_VERSION; } #else # define PCREATE_PLUGIN(serviceName, serviceType, descriptor) \ PCREATE_PLUGIN_STATIC(serviceName, serviceType, descriptor) #endif ////////////////////////////////////////////////////// #endif pwlib_v1_10_2/include/ptlib/pluginmgr.h0100644000176200056700000001554510366313334020324 0ustar releasepostincr/* * pluginmgr.h * * Plugin Manager Class Declarations * * Portable Windows Library * * Contributor(s): Snark at GnomeMeeting * * $Log: pluginmgr.h,v $ * Revision 1.17.2.1 2006/01/27 03:43:24 csoutheren * Backported changes to CVS head into Phobos * * Revision 1.18 2006/01/21 13:43:05 dsandras * Allow the plugin manager to look for plugins in symlinked directories. * * Revision 1.17 2005/08/09 09:08:09 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.16.6.1 2005/07/17 09:27:04 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.16 2004/08/05 03:45:35 csoutheren * Fixed problems with plugin suffix not being propagated to sudirectories * * Revision 1.15 2004/06/24 23:10:27 csoutheren * Require plugins to have _pwplugin suffix * * Revision 1.14 2004/06/01 05:44:57 csoutheren * Added OnShutdown to allow cleanup on exit * * Revision 1.13 2004/05/19 06:54:11 csoutheren * Removed unused code * * Revision 1.12 2004/05/18 06:01:06 csoutheren * Deferred plugin loading until after main has executed by using abstract factory classes * * Revision 1.11 2004/05/17 06:05:20 csoutheren * Changed "make docs" to use doxygen * Added new config file and main page * * Revision 1.10 2004/04/22 11:43:47 csoutheren * Factored out functions useful for loading dynamic libraries * * Revision 1.9 2004/04/22 07:55:30 csoutheren * Fix problem with generic plugin manager having pure virtual. Thanks to Ben Lear * * Revision 1.8 2004/04/14 11:14:10 csoutheren * Final fix for generic plugin manager * * Revision 1.7 2004/04/14 10:57:38 csoutheren * Removed multiple definition of statc function in generic plugin functions * * Revision 1.6 2004/04/14 10:01:54 csoutheren * Fixed compile problem on Windows * * Revision 1.5 2004/04/14 08:12:02 csoutheren * Added support for generic plugin managers * * Revision 1.4 2004/03/23 04:43:42 csoutheren * Modified plugin manager to allow code modules to be notified when plugins * are loaded or unloaded * * Revision 1.3 2003/11/12 10:24:35 csoutheren * Changes to allow operation of static plugins under Windows * * Revision 1.2 2003/11/12 03:26:17 csoutheren * Initial version of plugin code from Snark of GnomeMeeting with changes * by Craig Southeren os Post Increment * * */ #ifndef _PLUGINMGR_H #define _PLUGINMGR_H #define DEFAULT_PLUGINDIR "/usr/lib/pwlib" #include template void PLoadPluginDirectory(C & obj, const PDirectory & directory, const char * suffix = NULL) { PDirectory dir = directory; if (!dir.Open()) { PTRACE(4, "Cannot open plugin directory " << dir); return; } PTRACE(4, "Enumerating plugin directory " << dir); do { PString entry = dir + dir.GetEntryName(); PDirectory subdir = entry; if (subdir.Open()) PLoadPluginDirectory(obj, entry, suffix); else { PFilePath fn(entry); if ( (fn.GetType() *= PDynaLink::GetExtension()) && ( (suffix == NULL) || (fn.GetTitle().Right(strlen(suffix)) *= suffix) ) ) obj.LoadPlugin(entry); } } while (dir.Next()); } ////////////////////////////////////////////////////// // // Manager for plugins // class PPluginManager : public PObject { PCLASSINFO(PPluginManager, PObject); public: // functions to load/unload a dynamic plugin BOOL LoadPlugin (const PString & fileName); void LoadPluginDirectory (const PDirectory & dir); // functions to access the plugins' services PStringList GetPluginTypes() const; PStringList GetPluginsProviding(const PString & serviceType) const; PPluginServiceDescriptor * GetServiceDescriptor(const PString & serviceName, const PString & serviceType) const; PObject * CreatePluginsDevice(const PString & serviceName, const PString & serviceType, int userData = 0) const; PObject * CreatePluginsDeviceByName(const PString & deviceName, const PString & serviceType, int userData = 0) const; PStringList GetPluginsDeviceNames(const PString & serviceName, const PString & serviceType, int userData = 0) const; // function to register a service (used by the plugins themselves) BOOL RegisterService (const PString & serviceName, const PString & serviceType, PPluginServiceDescriptor * descriptor); // Get the list of plugin directories static PStringArray GetPluginDirs(); // static functions for accessing global instances of plugin managers static PPluginManager & GetPluginManager(); /**Add a notifier to the plugin manager. The call back function is executed just after loading, or just after unloading, a plugin. To use define: PDECLARE_NOTIFIER(PDynaLink, YourClass, YourFunction); and void YourClass::YourFunction(PDynaLink & dll, INT code) { // code == 0 means loading // code == 1 means unloading } and to connect to the plugin manager: PPluginManager & mgr = PPluginManager::GetPluginManager(); mgr->AddNotifier((PCREATE_NOTIFIER(YourFunction)); */ void AddNotifier( const PNotifier & filterFunction, BOOL existing = FALSE ); void RemoveNotifier( const PNotifier & filterFunction ); protected: void CallNotifier(PDynaLink & dll, INT code); PMutex pluginListMutex; PList pluginList; PMutex serviceListMutex; PList serviceList; PMutex notifierMutex; PList notifierList; }; ////////////////////////////////////////////////////// // // Manager for plugin modules // class PPluginModuleManager : public PObject { public: typedef PDictionary PluginListType; PPluginModuleManager(const char * _signatureFunctionName, PPluginManager * pluginMgr = NULL); BOOL LoadPlugin(const PString & fileName) { if (pluginMgr == NULL) return FALSE; else return pluginMgr->LoadPlugin(fileName); } void LoadPluginDirectory(const PDirectory &directory) { if (pluginMgr != NULL) pluginMgr->LoadPluginDirectory(directory); } virtual void OnLoadPlugin(PDynaLink & /*dll*/, INT /*code*/) { } virtual PluginListType GetPluginList() const { return pluginList; } virtual void OnShutdown() { } protected: PluginListType pluginList; PDECLARE_NOTIFIER(PDynaLink, PPluginModuleManager, OnLoadModule); protected: const char * signatureFunctionName; PPluginManager * pluginMgr; }; #endif // ifndef _PLUGINMGR_H pwlib_v1_10_2/include/ptlib/pprocess.h0100644000176200056700000006510510343317552020154 0ustar releasepostincr/* * pprocess.h * * Operating System Process (running program executable) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pprocess.h,v $ * Revision 1.71 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.70 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.69 2005/01/26 05:37:54 csoutheren * Added ability to remove config file support * * Revision 1.68 2004/06/30 12:17:04 rjongbloed * Rewrite of plug in system to use single global variable for all factories to avoid all sorts * of issues with startup orders and Windows DLL multiple instances. * * Revision 1.67 2004/05/27 04:46:42 csoutheren * Removed vestigal Macintosh code * * Revision 1.66 2004/05/21 00:28:39 csoutheren * Moved PProcessStartup creation to PProcess::Initialise * Added PreShutdown function and called it from ~PProcess to handle PProcessStartup removal * * Revision 1.65 2004/05/19 22:27:19 csoutheren * Added fix for gcc 2.95 * * Revision 1.64 2004/05/18 21:49:25 csoutheren * Added ability to display trace output from program startup via environment * variable or by application creating a PProcessStartup descendant * * Revision 1.63 2004/05/18 06:01:06 csoutheren * Deferred plugin loading until after main has executed by using abstract factory classes * * Revision 1.62 2004/05/13 14:54:57 csoutheren * Implement PProcess startup and shutdown handling using abstract factory classes * * Revision 1.61 2003/11/25 08:28:13 rjongbloed * Removed ability to have platform without threads, win16 finally deprecated * * Revision 1.60 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.59 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.58 2002/12/11 22:23:59 robertj * Added ability to set user identity temporarily and permanently. * Added get and set users group functions. * * Revision 1.57 2002/12/02 03:57:18 robertj * More RTEMS support patches, thank you Vladimir Nesic. * * Revision 1.56 2002/10/17 13:44:27 robertj * Port to RTEMS, thanks Vladimir Nesic. * * Revision 1.55 2002/10/17 07:17:42 robertj * Added ability to increase maximum file handles on a process. * * Revision 1.54 2002/10/10 04:43:43 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.53 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.52 2002/07/30 02:55:48 craigs * Added program start time to PProcess * Added virtual to GetVersion etc * * Revision 1.51 2002/02/14 05:13:33 robertj * Fixed possible deadlock if a timer is deleted (however indirectly) in the * OnTimeout of another timer. * * Revision 1.50 2001/11/23 06:59:29 robertj * Added PProcess::SetUserName() function for effective user changes. * * Revision 1.49 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.48 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.47 2001/03/09 05:50:48 robertj * Added ability to set default PConfig file or path to find it. * * Revision 1.46 2001/01/02 07:47:44 robertj * Fixed very narrow race condition in timers (destroyed while in OnTimeout()). * * Revision 1.45 2000/08/30 03:16:59 robertj * Improved multithreaded reliability of the timers under stress. * * Revision 1.44 2000/04/03 18:42:40 robertj * Added function to determine if PProcess instance is initialised. * * Revision 1.43 2000/02/29 12:26:14 robertj * Added named threads to tracing, thanks to Dave Harvey * * Revision 1.42 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.41 1999/02/16 08:11:09 robertj * MSVC 6.0 compatibility changes. * * Revision 1.40 1999/01/30 14:28:10 robertj * Added GetOSConfigDir() function. * * Revision 1.39 1999/01/11 11:27:11 robertj * Added function to get the hardware process is running on. * * Revision 1.38 1998/11/30 02:51:00 robertj * New directory structure * * Revision 1.37 1998/10/18 14:28:44 robertj * Renamed argv/argc to eliminate accidental usage. * * Revision 1.36 1998/10/13 14:06:13 robertj * Complete rewrite of memory leak detection code. * * Revision 1.35 1998/09/23 06:21:10 robertj * Added open source copyright license. * * Revision 1.34 1998/09/14 12:30:38 robertj * Fixed memory leak dump under windows to not include static globals. * * Revision 1.33 1998/04/07 13:33:53 robertj * Changed startup code to support PApplication class. * * Revision 1.32 1998/04/01 01:56:21 robertj * Fixed standard console mode app main() function generation. * * Revision 1.31 1998/03/29 06:16:44 robertj * Rearranged initialisation sequence so PProcess descendent constructors can do "things". * * Revision 1.30 1998/03/20 03:16:10 robertj * Added special classes for specific sepahores, PMutex and PSyncPoint. * * Revision 1.29 1997/07/08 13:13:46 robertj * DLL support. * * Revision 1.28 1997/04/27 05:50:13 robertj * DLL support. * * Revision 1.27 1997/02/05 11:51:56 robertj * Changed current process function to return reference and validate objects descendancy. * * Revision 1.26 1996/06/28 13:17:08 robertj * Fixed incorrect declaration of internal timer list. * * Revision 1.25 1996/06/13 13:30:49 robertj * Rewrite of auto-delete threads, fixes Windows95 total crash. * * Revision 1.24 1996/05/23 09:58:47 robertj * Changed process.h to pprocess.h to avoid name conflict. * Added mutex to timer list. * * Revision 1.23 1996/05/18 09:18:30 robertj * Added mutex to timer list. * * Revision 1.22 1996/04/29 12:18:48 robertj * Added function to return process ID. * * Revision 1.21 1996/03/12 11:30:21 robertj * Moved destructor to platform dependent code. * * Revision 1.20 1996/02/25 11:15:26 robertj * Added platform dependent Construct function to PProcess. * * Revision 1.19 1996/02/03 11:54:09 robertj * Added operating system identification functions. * * Revision 1.18 1996/01/02 11:57:17 robertj * Added thread for timers. * * Revision 1.17 1995/12/23 03:46:02 robertj * Changed version numbers. * * Revision 1.16 1995/12/10 11:33:36 robertj * Added extra user information to processes and applications. * Changes to main() startup mechanism to support Mac. * * Revision 1.15 1995/06/17 11:13:05 robertj * Documentation update. * * Revision 1.14 1995/06/17 00:43:10 robertj * Made PreInitialise virtual for NT service support * * Revision 1.13 1995/03/14 12:42:14 robertj * Updated documentation to use HTML codes. * * Revision 1.12 1995/03/12 04:43:26 robertj * Remvoed redundent destructor. * * Revision 1.11 1995/01/11 09:45:09 robertj * Documentation and normalisation. * * Revision 1.10 1994/08/23 11:32:52 robertj * Oops * * Revision 1.9 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.8 1994/08/21 23:43:02 robertj * Added function to get the user name of the owner of a process. * * Revision 1.7 1994/08/04 11:51:04 robertj * Moved OperatingSystemYield() to protected for Unix. * * Revision 1.6 1994/08/01 03:42:23 robertj * Destructor needed for heap debugging. * * Revision 1.5 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.4 1994/07/21 12:33:49 robertj * Moved cooperative threads to common. * * Revision 1.3 1994/06/25 11:55:15 robertj * Unix version synchronisation. * */ #ifndef _PPROCESS #define _PPROCESS #ifdef P_USE_PRAGMA #pragma interface #endif #include #include #include /**Create a process. This macro is used to create the components necessary for a user PWLib process. For a PWLib program to work correctly on all platforms the #main()# function must be defined in the same module as the instance of the application. */ #ifdef P_VXWORKS #define PCREATE_PROCESS(cls) \ PProcess::PreInitialise(0, NULL, NULL); \ cls instance; \ instance._main(); #elif defined(P_RTEMS) #define PCREATE_PROCESS(cls) \ extern "C" {\ void* POSIX_Init( void* argument) \ { PProcess::PreInitialise(0, 0, 0); \ static cls instance; \ exit( instance._main() ); \ } \ } #else #define PCREATE_PROCESS(cls) \ int main(int argc, char ** argv, char ** envp) \ { PProcess::PreInitialise(argc, argv, envp); \ static cls instance; \ return instance._main(); \ } #endif // P_VXWORKS /*$MACRO PDECLARE_PROCESS(cls,ancestor,manuf,name,major,minor,status,build) This macro is used to declare the components necessary for a user PWLib process. This will declare the PProcess descendent class, eg PApplication, and create an instance of the class. See the #PCREATE_PROCESS# macro for more details. */ #define PDECLARE_PROCESS(cls,ancestor,manuf,name,major,minor,status,build) \ class cls : public ancestor { \ PCLASSINFO(cls, ancestor); \ public: \ cls() : ancestor(manuf, name, major, minor, status, build) { } \ private: \ virtual void Main(); \ }; PLIST(PInternalTimerList, PTimer); class PTimerList : PInternalTimerList // Want this to be private /* This class defines a list of #PTimer# objects. It is primarily used internally by the library and the user should never create an instance of it. The #PProcess# instance for the application maintains an instance of all of the timers created so that it may decrements them at regular intervals. */ { PCLASSINFO(PTimerList, PInternalTimerList); public: PTimerList(); // Create a new timer list PTimeInterval Process(); /* Decrement all the created timers and dispatch to their callback functions if they have expired. The #PTimer::Tick()# function value is used to determine the time elapsed since the last call to Process(). The return value is the number of milliseconds until the next timer needs to be despatched. The function need not be called again for this amount of time, though it can (and usually is). @return maximum time interval before function should be called again. */ private: PMutex listMutex, processingMutex, inTimeoutMutex; // Mutual exclusion for multi tasking PTimeInterval lastSample; // The last system timer tick value that was used to process timers. PTimer * currentTimer; // The timer which is currently being handled friend class PTimer; }; /////////////////////////////////////////////////////////////////////////////// // PProcess /**This class represents an operating system process. This is a running "programme" in the context of the operating system. Note that there can only be one instance of a PProcess class in a given programme. The instance of a PProcess or its GUI descendent #PApplication# is usually a static variable created by the application writer. This is the initial "anchor" point for all data structures in an application. As the application writer never needs to access the standard system #main()# function, it is in the library, the programmes execution begins with the virtual function #PThread::Main()# on a process. */ class PProcess : public PThread { PCLASSINFO(PProcess, PThread); public: /**@name Construction */ //@{ /// Release status for the program. enum CodeStatus { /// Code is still very much under construction. AlphaCode, /// Code is largely complete and is under test. BetaCode, /// Code has all known bugs removed and is shipping. ReleaseCode, NumCodeStatuses }; /** Create a new process instance. */ PProcess( const char * manuf = "", ///< Name of manufacturer const char * name = "", ///< Name of product WORD majorVersion = 1, ///< Major version number of the product WORD minorVersion = 0, ///< Minor version number of the product CodeStatus status = ReleaseCode, ///< Development status of the product WORD buildNumber = 1 ///< Build number of the product ); //@} /**@name Overrides from class PObject */ //@{ /**Compare two process instances. This should almost never be called as a programme only has access to a single process, its own. @return #EqualTo# if the two process object have the same name. */ Comparison Compare( const PObject & obj ///< Other process to compare against. ) const; //@} /**@name Overrides from class PThread */ //@{ /**Terminate the process. Usually only used in abnormal abort situation. */ virtual void Terminate(); /** Get the name of the thread. Thread names are a optional debugging aid. @return current thread name. */ virtual PString GetThreadName() const; /** Change the name of the thread. Thread names are a optional debugging aid. @return current thread name. */ virtual void SetThreadName( const PString & name ///< New name for the thread. ); //@} /**@name Process information functions */ //@{ /**Get the current processes object instance. The {\it current process} is the one the application is running in. @return pointer to current process instance. */ static PProcess & Current(); /**Determine if the current processes object instance has been initialised. If this returns TRUE it is safe to use the PProcess::Current() function. @return TRUE if process class has been initialised. */ static BOOL IsInitialised(); /**Set the termination value for the process. The termination value is an operating system dependent integer which indicates the processes termiantion value. It can be considered a "return value" for an entire programme. */ void SetTerminationValue( int value ///< Value to return a process termination status. ); /**Get the termination value for the process. The termination value is an operating system dependent integer which indicates the processes termiantion value. It can be considered a "return value" for an entire programme. @return integer termination value. */ int GetTerminationValue() const; /**Get the programme arguments. Programme arguments are a set of strings provided to the programme in a platform dependent manner. @return argument handling class instance. */ PArgList & GetArguments(); /**Get the name of the manufacturer of the software. This is used in the default "About" dialog box and for determining the location of the configuration information as used by the #PConfig# class. The default for this information is the empty string. @return string for the manufacturer name eg "Equivalence". */ virtual const PString & GetManufacturer() const; /**Get the name of the process. This is used in the default "About" dialog box and for determining the location of the configuration information as used by the #PConfig# class. The default is the title part of the executable image file. @return string for the process name eg "MyApp". */ virtual const PString & GetName() const; /**Get the version of the software. This is used in the default "About" dialog box and for determining the location of the configuration information as used by the #PConfig# class. If the #full# parameter is TRUE then a version string built from the major, minor, status and build veriosn codes is returned. If FALSE then only the major and minor versions are returned. The default for this information is "1.0". @return string for the version eg "1.0b3". */ virtual PString GetVersion( BOOL full = TRUE ///< TRUE for full version, FALSE for short version. ) const; /**Get the processes executable image file path. @return file path for program. */ const PFilePath & GetFile() const; /**Get the platform dependent process identifier for the process. This is an arbitrary (and unique) integer attached to a process by the operating system. @return Process ID for process. */ DWORD GetProcessID() const; /**Get the effective user name of the owner of the process, eg "root" etc. This is a platform dependent string only provided by platforms that are multi-user. Note that some value may be returned as a "simulated" user. For example, in MS-DOS an environment variable @return user name of processes owner. */ PString GetUserName() const; /**Set the effective owner of the process. This is a platform dependent string only provided by platforms that are multi-user. For unix systems if the username may consist exclusively of digits and there is no actual username consisting of that string then the numeric uid value is used. For example "0" is the superuser. For the rare occassions where the users name is the same as their uid, if the username field starts with a '#' then the numeric form is forced. If an empty string is provided then original user that executed the process in the first place (the real user) is set as the effective user. The permanent flag indicates that the user will not be able to simple change back to the original user as indicated above, ie for unix systems setuid() is used instead of seteuid(). This is not necessarily meaningful for all platforms. @return TRUE if processes owner changed. The most common reason for failure is that the process does not have the privilege to change the effective user. */ BOOL SetUserName( const PString & username, ///< New user name or uid BOOL permanent = FALSE ///< Flag for if effective or real user ); /**Get the effective group name of the owner of the process, eg "root" etc. This is a platform dependent string only provided by platforms that are multi-user. Note that some value may be returned as a "simulated" user. For example, in MS-DOS an environment variable @return group name of processes owner. */ PString GetGroupName() const; /**Set the effective group of the process. This is a platform dependent string only provided by platforms that are multi-user. For unix systems if the groupname may consist exclusively of digits and there is no actual groupname consisting of that string then the numeric uid value is used. For example "0" is the superuser. For the rare occassions where the groups name is the same as their uid, if the groupname field starts with a '#' then the numeric form is forced. If an empty string is provided then original group that executed the process in the first place (the real group) is set as the effective group. The permanent flag indicates that the group will not be able to simply change back to the original group as indicated above, ie for unix systems setgid() is used instead of setegid(). This is not necessarily meaningful for all platforms. @return TRUE if processes group changed. The most common reason for failure is that the process does not have the privilege to change the effective group. */ BOOL SetGroupName( const PString & groupname, ///< New group name or gid BOOL permanent = FALSE ///< Flag for if effective or real group ); /**Get the maximum file handle value for the process. For some platforms this is meaningless. @return user name of processes owner. */ int GetMaxHandles() const; /**Set the maximum number of file handles for the process. For unix systems the user must be run with the approriate privileges before this function can set the value above the system limit. For some platforms this is meaningless. @return TRUE if successfully set the maximum file hadles. */ BOOL SetMaxHandles( int newLimit ///< New limit on file handles ); #ifdef P_CONFIG_FILE /**Get the default file to use in PConfig instances. */ virtual PString GetConfigurationFile(); #endif /**Set the default file or set of directories to search for use in PConfig. To find the .ini file for use in the default PConfig() instance, this explicit filename is used, or if it is a set of directories separated by either ':' or ';' characters, then the application base name postfixed with ".ini" is searched for through those directories. The search is actually done when the GetConfigurationFile() is called, this function only sets the internal variable. Note for Windows, a path beginning with "HKEY_LOCAL_MACHINE\\" or "HKEY_CURRENT_USER\\" will actually search teh system registry for the application base name only (no ".ini") in that folder of the registry. */ void SetConfigurationPath( const PString & path ///< Explicit file or set of directories ); //@} /**@name Operating System information functions */ //@{ /**Get the class of the operating system the process is running on, eg "unix". @return String for OS class. */ static PString GetOSClass(); /**Get the name of the operating system the process is running on, eg "Linux". @return String for OS name. */ static PString GetOSName(); /**Get the hardware the process is running on, eg "sparc". @return String for OS name. */ static PString GetOSHardware(); /**Get the version of the operating system the process is running on, eg "2.0.33". @return String for OS version. */ static PString GetOSVersion(); /**Get the configuration directory of the operating system the process is running on, eg "/etc" for Unix, "c:\windows" for Win95 or "c:\winnt\system32\drivers\etc" for NT. @return Directory for OS configuration files. */ static PDirectory GetOSConfigDir(); //@} PTimerList * GetTimerList(); /* Get the list of timers handled by the application. This is an internal function and should not need to be called by the user. @return list of timers. */ static void PreInitialise( int argc, // Number of program arguments. char ** argv, // Array of strings for program arguments. char ** envp // Array of string for the system environment ); /* Internal initialisation function called directly from #_main()#. The user should never call this function. */ static void PreShutdown(); /* Internal shutdown function called directly from the ~PProcess #_main()#. The user should never call this function. */ virtual int _main(void * arg = NULL); // Main function for process, called from real main after initialisation PTime GetStartTime() const; /* return the time at which the program was started */ private: void Construct(); // Member variables static int p_argc; static char ** p_argv; static char ** p_envp; // main arguments int terminationValue; // Application return value PString manufacturer; // Application manufacturer name. PString productName; // Application executable base name from argv[0] WORD majorVersion; // Major version number of the product WORD minorVersion; // Minor version number of the product CodeStatus status; // Development status of the product WORD buildNumber; // Build number of the product PFilePath executableFile; // Application executable file from argv[0] (not open) PStringList configurationPaths; // Explicit file or set of directories to find default PConfig PArgList arguments; // The list of arguments PTimerList timers; // List of active timers in system PTime programStartTime; // time at which process was intantiated, i.e. started int maxHandles; // Maximum number of file handles process can open. friend class PThread; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/pprocess.h" #else #include "unix/ptlib/pprocess.h" #endif }; /* * one instance of this class (or any descendants) will be instantiated * via PGenericFactory one "main" has been started, and then * the OnStartup() function will be called. The OnShutdown function will * be called after main exits, and the instances will be destroyed if they * are not singletons */ class PProcessStartup : public PObject { PCLASSINFO(PProcessStartup, PObject) public: virtual void OnStartup() { } virtual void OnShutdown() { } }; typedef PFactory PProcessStartupFactory; // using an inline definition rather than a #define crashes gcc 2.95. Go figure #define P_DEFAULT_TRACE_OPTIONS ( PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine ) template class PTraceLevelSetStartup : public PProcessStartup { public: void OnStartup() { PTrace::Initialise(_level, NULL, _options); } }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/psharedptr.h0100644000176200056700000000550710135677541020500 0ustar releasepostincr/* * psharedptr.h * * SharedPtr template * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: psharedptr.h,v $ * Revision 1.3 2004/10/21 09:20:33 csoutheren * Fixed compile problems on gcc 2.95.x * * Revision 1.2 2004/10/01 08:08:50 csoutheren * Added Reset and auto_ptr conversions * * Revision 1.1 2004/10/01 07:17:18 csoutheren * Added PSharedptr class * */ #ifndef _PSHAREDPTR_H #define _PSHAREDPTR_H #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /** * * These templates implement an pointner class with an integral reference count * based on the PContainer base class. This allows the easy creation of an * a reference counted ptr that will autodestruct when the last reference * goes out of scope. */ template class PSharedPtr : public PContainer { PCLASSINFO(PSharedPtr, PContainer); public: typedef T element_type; PSharedPtr(element_type * _ptr = NULL) { ptr = _ptr; } PSharedPtr(const PSharedPtr & c) : PContainer(c) { CopyContents(c); } PSharedPtr(std::auto_ptr & v) { ptr = v.release(); } PSharedPtr & operator=(const PSharedPtr & c) { AssignContents(c); return *this; } virtual ~PSharedPtr() { Destruct(); } virtual BOOL MakeUnique() { if (PContainer::MakeUnique()) return TRUE; CloneContents(this); return FALSE; } BOOL SetSize(PINDEX) { return false; } T * Get() const { return ptr; } void Reset() const { AssignContents(PSharedPtr()); } T & operator*() const { return *ptr; } T * operator->() const { return ptr; } protected: PSharedPtr(int dummy, const PSharedPtr * c) : PContainer(dummy, c) { CloneContents(c); } void AssignContents(const PContainer & c) { PContainer::AssignContents(c); CopyContents((const PSharedPtr &)c); } void DestroyContents() { delete(ptr); } void CloneContents(const PContainer * src) { ptr = new element_type(*((const PSharedPtr *)src)->ptr); } void CopyContents(const PContainer & c) { ptr = ((const PSharedPtr &)c).ptr; } protected: T * ptr; }; #endif // _PSHAREDPTR_H pwlib_v1_10_2/include/ptlib/pstring.h0100644000176200056700000033143110350356272020002 0ustar releasepostincr/* * pstring.h * * Character string class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: pstring.h,v $ * Revision 1.85 2005/12/15 21:14:34 dsandras * Fixed from Alexander Larsson for gcc 4.1 compilation. Thanks! * * Revision 1.84 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.83 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.82 2005/09/18 11:05:36 dominance * include/ptlib/channel.h, include/ptlib/pstring.h, src/ptlib/common/contain.cxx, * src/ptlib/common/pchannel.cxx: * correct the STL defined checking to use proper syntax. * * include/ptlib/object.h: * re-add typedef to compile on mingw * * make/ptlib-config.in: * import a long-standing fix from the Debian packs which allows usage of * ptlib-config without manually adding -lpt for each of the subsequent * projects * * Revision 1.81 2004/12/22 04:04:36 dereksmithies * Modify description of parameters for PString::Replace() * * Revision 1.80 2004/11/23 11:33:08 csoutheren * Fixed problem with RemoveAt returning invalid pointer in some cases, * and added extra documentation on this case. * Thanks to Diego Tartara for pointing out this potential problem * * Revision 1.79 2004/10/21 13:04:20 rjongbloed * Fixed possibility of const operator[] on PStringArray returning a NULL reference. This * function should return a non-lvalue PString anyway as it is const! * * Revision 1.78 2004/08/16 08:49:59 csoutheren * Removed error when compiling with gcc * * Revision 1.77 2004/08/16 06:40:59 csoutheren * Added adapters template to make device plugins available via the abstract factory interface * * Revision 1.76 2004/06/01 05:54:18 csoutheren * Added and * * Revision 1.75 2004/06/01 05:21:38 csoutheren * Added conversions between std::string and PString, and vector and PStringArray * * Revision 1.74 2004/05/04 11:10:36 rjongbloed * Fixed usage of MakeEmpty() with PStringStream. * * Revision 1.73 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.72 2004/04/11 13:26:25 csoutheren * Removed namespace problems and removed warnings for Windows * * Revision 1.71 2004/04/09 06:38:10 rjongbloed * Fixed compatibility with STL based streams, eg as used by VC++2003 * * Revision 1.70 2004/04/09 03:42:34 csoutheren * Removed all usages of "virtual inline" and "inline virtual" * * Revision 1.69 2004/04/03 06:54:22 rjongbloed * Many and various changes to support new Visual C++ 2003 * * Revision 1.68 2004/02/23 00:44:38 csoutheren * A completely different, other regex include hack to avoid requiring * the sources when using a header-file only environment * * Revision 1.67 2004/02/23 00:26:05 csoutheren * Finally, a generic and elegant fix for the regex include hacks. Thanks to Roger Hardiman * * Revision 1.66 2004/02/11 05:09:14 csoutheren * Fixed problems with regex libraries on Solaris, and with host OS numbering * being a quoted string rather than a number. Thanks to Chad Attermann * Fixed problems SSL detection problems thanks to Michal Zygmuntowicz * * Revision 1.65 2004/02/08 11:13:11 rjongbloed * Fixed crash in heavily loaded multi-threaded systems using simultaneous sorted * lists, Thanks Federico Pinna, Fabrizio Ammollo and the gang at Reitek S.p.A. * * Revision 1.64 2004/01/18 13:43:48 rjongbloed * Fixed broken PString::MakeEmpty() function and moved implementations to .inl file. * * Revision 1.63 2004/01/17 18:15:24 csoutheren * Fixed multi-threading problem with PString::Empty * Created PString::MakeEmpty for efficient emptying of existing strings * * Revision 1.62 2004/01/16 13:24:37 csoutheren * Changed PString::Empty to be thread-safe * Fixed PContainer::SetMinSize and PAbstractArray::SetSize, thanks to 123@call2ua.com * Fixed PString::FindLast, thanks to Andreas Sikkema * * Revision 1.61 2003/12/13 23:08:46 csoutheren * Changed PRegularExpression to allow a copy constructor and operator = * * Revision 1.60 2003/12/10 03:28:50 csoutheren * Removed compile time warning under Linux * * Revision 1.59 2003/12/07 05:50:49 csoutheren * Blocked operator = for PRegularExpression * * Revision 1.58 2003/12/04 13:10:38 csoutheren * Made PRegularExpression copy constructor private to avoid accidental usage (and subsequent crash) * * Revision 1.57 2003/05/14 00:46:47 rjongbloed * Added constructor to string lists/arrays etc that takes a single PString. * * Revision 1.56 2003/03/31 01:23:56 robertj * Added ReadFrom functions for standard container classes such as * PIntArray and PStringList etc * * Revision 1.55 2003/03/05 08:48:32 robertj * Added PStringArray::ToCharAray() function at suggestion of Ravelli Rossano * * Revision 1.54 2002/11/12 09:17:44 robertj * Added PString::NumCompare() as functional equivalent of strncmp(). * Added PSortedStringList::GetNextStringsIndex() to do searches of binary * tree on partal strings. * * Revision 1.53 2002/10/31 05:53:44 robertj * Now comprehensively stated that a PString is ALWAYS an 8 bit string as * there are far too many inheerent assumptions every to make it 16 bit. * Added UTF-8/UCS-2 conversion functions to PString. * * Revision 1.52 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.51 2002/08/14 00:43:39 robertj * Added ability to have fixed maximum length PStringStream's so does not do * unwanted malloc()'s while outputing data. * * Revision 1.50 2002/04/09 02:30:18 robertj * Removed GCC3 variable as __GNUC__ can be used instead, thanks jason Spence * * Revision 1.49 2002/02/15 04:29:31 robertj * Added PString::Empty() to return the primordial empty string. Saves on a * couple of memory allocations for every empty string ever used. * * Revision 1.48 2002/01/26 23:55:55 craigs * Changed for GCC 3.0 compatibility, thanks to manty@manty.net * * Revision 1.47 2002/01/22 01:03:57 craigs * Added operator += and operator + functions to PStringArray and PStringList * Added AppendString operator to PStringArray * * Revision 1.46 2001/10/17 05:09:22 robertj * Added contructors and assigmnent operators so integer types can be * automatically converted to strings. * * Revision 1.45 2001/08/11 07:57:30 rogerh * Add Mac OS Carbon changes from John Woods * * Revision 1.44 2001/04/18 04:10:15 robertj * Removed hash function for caseless strings as confuses mixed dictionaries. * * Revision 1.43 2001/04/18 01:20:58 robertj * Fixed problem with hash function for short strings, thanks Patrick Koorevaar. * Also fixed hash function for caseless strings. * * Revision 1.42 2001/02/21 03:38:37 robertj * Added ability to copy between various string lists/arrays etc during construction. * * Revision 1.41 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.40 1999/08/22 12:13:43 robertj * Fixed warning when using inlines on older GNU compiler * * Revision 1.39 1999/05/28 14:01:22 robertj * Added initialisers to string containers (list, sorted list and set). * * Revision 1.38 1999/03/09 09:34:05 robertj * Fixed typo's. * * Revision 1.37 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.36 1999/02/16 08:11:09 robertj * MSVC 6.0 compatibility changes. * * Revision 1.35 1998/09/23 06:21:12 robertj * Added open source copyright license. * * Revision 1.34 1998/01/26 00:33:46 robertj * Added FindRegEx function to PString that returns position and length. * Added Execute() functions to PRegularExpression that take PINDEX references instead of PIntArrays. * Added static function to PRegularExpression to escape all special operator characters in a string. * * Revision 1.33 1998/01/05 10:39:35 robertj * Fixed "typesafe" templates/macros for dictionaries, especially on GNU. * * Revision 1.32 1997/12/11 13:32:47 robertj * Added AsUnsigned() function to convert string to DWORD. * * Revision 1.31 1997/12/11 10:29:49 robertj * Added type correct Contains() function to dictionaries. * * Revision 1.30 1997/07/08 13:13:47 robertj * DLL support. * * Revision 1.29 1997/06/10 11:36:32 craigs * Added inline statements to allow compilation uder Unix * * Revision 1.28 1997/06/08 04:48:58 robertj * Added regular expressions. * Fixed non-template class descendent order. * * Revision 1.27 1997/05/16 12:10:12 robertj * Fixed G++ compatibility bug. * * Revision 1.26 1996/10/08 13:13:38 robertj * Added operator += and &= for char so no implicit PString construction. * * Revision 1.25 1996/09/14 12:52:39 robertj * Added operator! for !IsEmpty(). * * Revision 1.24 1996/08/17 10:00:25 robertj * Changes for Windows DLL support. * * Revision 1.23 1996/05/26 03:27:02 robertj * Compatibility to GNU 2.7.x * * Revision 1.22 1996/03/31 08:51:22 robertj * Added RemoveAt() function to remove entries from dictionaries. * * Revision 1.21 1996/03/10 13:15:50 robertj * Added operator() to template version. * * Revision 1.20 1996/02/19 13:17:33 robertj * Removed PCaselessString hash function to fix dictionary match failure. * Added operator() to do string dictionary lookup with default value. * * Revision 1.19 1996/02/08 12:19:16 robertj * Added new operators to PString for case insensitive compare and spaced concatenate. * * Revision 1.18 1996/01/24 14:43:15 robertj * Added initialisers to string dictionaries. * * Revision 1.17 1996/01/23 13:15:17 robertj * Added Replace() function to strings. * Mac Metrowerks compiler support. * String searching algorithm rewrite. * * Revision 1.16 1996/01/02 12:04:31 robertj * Mac OS compatibility changes. * Removed requirement that PArray elements have parameterless constructor.. * * Revision 1.15 1995/12/23 03:46:23 robertj * Added operators for include and exclude from string set. * * Revision 1.14 1995/10/14 15:02:56 robertj * Changed arrays to not break references, but strings still need to. * * Revision 1.13 1995/06/17 11:13:08 robertj * Documentation update. * * Revision 1.12 1995/06/17 00:43:40 robertj * Added flag for PStringArray constructor to create caseless strings. * * Revision 1.11 1995/06/04 12:34:57 robertj * Better C++ compatibility (with BC++) * * Revision 1.10 1995/04/02 09:27:23 robertj * Added "balloon" help. * * Revision 1.9 1995/03/14 12:42:16 robertj * Updated documentation to use HTML codes. * * Revision 1.8 1995/03/12 04:44:39 robertj * Fixed use of PCaselessString as dictionary key. * * Revision 1.7 1995/02/05 00:48:09 robertj * Fixed template version. * * Revision 1.6 1995/01/15 04:50:20 robertj * Added inlines on friend functions, required by GNU compiler. * * Revision 1.5 1995/01/10 11:43:41 robertj * Removed PString parameter in stdarg function for GNU C++ compatibility. * * Revision 1.4 1995/01/09 12:33:44 robertj * Removed unnecesary return value from I/O functions. * Changed function names due to Mac port. * * Revision 1.3 1994/12/21 11:53:21 robertj * Documentation and variable normalisation. * * Revision 1.2 1994/12/12 13:13:13 robertj * Fixed bugs in PString mods just made. * * Revision 1.1 1994/12/12 09:59:37 robertj * Initial revision * */ #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /////////////////////////////////////////////////////////////////////////////// // PString class class PStringArray; class PRegularExpression; /**The character string class. It supports a wealth of additional functions for string processing and conversion. Operators are provided so that strings can virtually be treated as a basic type. An important feature of the string class, which is not present in other container classes, is that when the string contents is changed, that is resized or elements set, the string is "dereferenced", and a duplicate made of its contents. That is this instance of the array is disconnected from all other references to the string data, if any, and a new string array contents created. For example consider the following: \begin{verbatim} PString s1 = "String"; // New array allocated and set to "String" PString s2 = s1; // s2 has pointer to same array as s1 // and reference count is 2 for both s1[0] = 's'; // Breaks references into different strings \end{verbatim} at the end s1 is "string" and s2 is "String" both with reference count of 1. The functions that will "break" a reference are #SetSize()#, #SetMinSize()#, #GetPointer()#, #SetAt()# and #operator[]#. Note that the array is a '\0' terminated string as in C strings. Thus the memory allocated, and the length of the string may be different values. Also note that the PString is inherently an 8 bit string. The character set is not defined for most operations and it may be any 8 bit character set. However when conversions are being made to or from 2 byte formats then the PString is assumed to be the UTF-8 format. The 2 byte format is nominally UCS-2 (aka BMP string) and while it is not exactly the same as UNICODE they are compatible enough for them to be treated the same for most real world usage. */ class PString : public PCharArray { PCLASSINFO(PString, PCharArray); // using namespace std; public: /**@name Construction */ //@{ /**Construct an empty string. This will have one character in it which is the '\0' character. */ PINLINE PString(); /**Create a new reference to the specified string. The string memory is not copied, only the pointer to the data. */ PINLINE PString( const PString & str ///< String to create new reference to. ); /**Create a new string from the specified std::string */ PINLINE PString( const std::string & str ); /**Create a string from the C string array. This is most commonly used with a literal string, eg "hello". A new memory block is allocated of a size sufficient to take the length of the string and its terminating '\0' character. If UCS-2 is used then each char from the char pointer is mapped to a single UCS-2 character. */ PString( const char * cstr ///< Standard '\0' terminated C string. ); /**Create a string from the UCS-2 string array. A new memory block is allocated of a size sufficient to take the length of the string and its terminating '\0' character. */ PString( const WORD * ustr ///< UCS-2 null terminated string. ); /**Create a string from the array. A new memory block is allocated of a size equal to #len# plus one which is sufficient to take the string and a terminating '\0' character. If UCS-2 is used then each char from the char pointer is mapped to a single UCS-2 character. Note that this function will allow a string with embedded '\0' characters to be created, but most of the functions here will be unable to access characters beyond the first '\0'. Furthermore, if the #MakeMinimumSize()# function is called, all data beyond that first #'\0'# character will be lost. */ PString( const char * cstr, ///< Pointer to a string of characters. PINDEX len ///< Length of the string in bytes. ); /**Create a string from the UCS-2 array. A new memory block is allocated of a size equal to #len# plus one which is sufficient to take the string and a terminating '\0' character. Note that this function will allow a string with embedded '\0' characters to be created, but most of the functions here will be unable to access characters beyond the first '\0'. Furthermore, if the #MakeMinimumSize()# function is called, all data beyond that first #'\0'# character will be lost. */ PString( const WORD * ustr, ///< Pointer to a string of UCS-2 characters. PINDEX len ///< Length of the string in bytes. ); /**Create a string from the UCS-2 array. A new memory block is allocated of a size equal to #len# plus one which is sufficient to take the string and a terminating '\0' character. Note that this function will allow a string with embedded '\0' characters to be created, but most of the functions here will be unable to access characters beyond the first '\0'. Furthermore, if the #MakeMinimumSize()# function is called, all data beyond that first #'\0'# character will be lost. */ PString( const PWORDArray & ustr ///< UCS-2 null terminated string. ); /**Create a string from the single character. This is most commonly used as a type conversion constructor when a literal character, eg 'A' is used in a string expression. A new memory block is allocated of two characters to take the char and its terminating '\0' character. If UCS-2 is used then the char is mapped to a single UCS-2 character. */ PString( char ch ///< Single character to initialise string. ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( short n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( unsigned short n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( int n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( unsigned int n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( long n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( unsigned long n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( PInt64 n ///< Integer to convert ); /**Create a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString( PUInt64 n ///< Integer to convert ); enum ConversionType { Pascal, // Data is a length byte followed by characters. Basic, // Data is two length bytes followed by characters. Literal, // Data is C language style string with \ escape codes. Signed, // Convert a signed integer to a string. Unsigned, // Convert an unsigned integer to a string. Decimal, // Convert a real number to a string in decimal format. Exponent, // Convert a real number to a string in exponent format. Printf, // Formatted output, sprintf() style function. NumConversionTypes }; /* Type of conversion to make in the conversion constructors. */ /* Contruct a new string converting from the spcified data source into a string array. */ PString( ConversionType type, ///< Type of data source for conversion. const char * str, ///< String to convert. ... ///< Extra parameters for #sprintf()# call. ); PString( ConversionType type, ///< Type of data source for conversion. long value, ///< Integer value to convert. unsigned base = 10 ///< Number base to use for the integer conversion. ); PString( ConversionType type, ///< Type of data source for conversion. double value, ///< Floating point value to convert. unsigned places ///< Number of decimals in real number output. ); /**Assign the string to the current object. The current instance then becomes another reference to the same string in the #str# parameter. @return reference to the current PString object. */ PString & operator=( const PString & str ///< New string to assign. ); /**Assign the C string to the current object. The current instance then becomes a unique reference to a copy of the #cstr# parameter. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = "fred"; \end{verbatim} @return reference to the current PString object. */ PString & operator=( const char * cstr ///< C string to assign. ); /**Assign the character to the current object. The current instance then becomes a unique reference to a copy of the character parameter. eg: \begin{verbatim} myStr = 'A'; \end{verbatim} @return reference to the current PString object. */ PString & operator=( char ch ///< Character to assign. ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( short n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( unsigned short n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( int n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( unsigned int n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( long n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( unsigned long n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( PInt64 n ///< Integer to convert ); /**Assign a string from the integer type. This will create a simple base 10, shortest length conversion of the integer (with sign character if appropriate) into the string. */ PString & operator=( PUInt64 n ///< Integer to convert ); /**Make the current string empty */ virtual PString & MakeEmpty(); /**Return an empty string. */ static PString Empty(); //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the string. Note that the data in the array of characters is duplicated as well and the new object is a unique reference to that data. */ virtual PObject * Clone() const; /**Get the relative rank of the two strings. The system standard function, eg strcmp(), is used. @return comparison of the two objects, #EqualTo# for same, #LessThan# for #obj# logically less than the object and #GreaterThan# for #obj# logically greater than the object. */ virtual Comparison Compare( const PObject & obj ///< Other PString to compare against. ) const; /**Output the string to the specified stream. */ virtual void PrintOn( ostream & strm ///< I/O stream to output to. ) const; /**Input the string from the specified stream. This will read all characters until a end of line is reached. The end of line itself is {\bf not} placed in the string, however it {\bf is} removed from the stream. */ virtual void ReadFrom( istream & strm ///< I/O stream to input from. ); /**Calculate a hash value for use in sets and dictionaries. The hash function for strings will produce a value based on the sum of the first three characters of the string. This is a fairly basic function and make no assumptions about the string contents. A user may descend from PString and override the hash function if they can take advantage of the types of strings being used, eg if all strings start with the letter 'A' followed by 'B or 'C' then the current hash function will not perform very well. @return hash value for string. */ virtual PINDEX HashFunction() const; //@} /**@name Overrides from class PContainer */ //@{ /**Set the size of the string. A new string may be allocated to accomodate the new number of characters. If the string increases in size then the new characters are initialised to zero. If the string is made smaller then the data beyond the new size is lost. Note that this function will break the current instance from multiple references to an array. A new array is allocated and the data from the old array copied to it. @return TRUE if the memory for the array was allocated successfully. */ virtual BOOL SetSize( PINDEX newSize ///< New size of the array in elements. ); /**Determine if the string is empty. This is semantically slightly different from the usual #PContainer::IsEmpty()# function. It does not test for #PContainer::GetSize()# equal to zero, it tests for #GetLength()# equal to zero. @return TRUE if no non-null characters in string. */ virtual BOOL IsEmpty() const; /**Make this instance to be the one and only reference to the container contents. This implicitly does a clone of the contents of the container to make a unique reference. If the instance was already unique then the function does nothing. @return TRUE if the instance was already unique. */ virtual BOOL MakeUnique(); //@} /**@name Size/Length functions */ //@{ /**Set the actual memory block array size to the minimum required to hold the current string contents. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. @return TRUE if new memory block successfully allocated. */ BOOL MakeMinimumSize(); /**Determine the length of the null terminated string. This is different from #PContainer::GetSize()# which returns the amount of memory allocated to the string. This is often, though no necessarily, one larger than the length of the string. @return length of the null terminated string. */ PINLINE PINDEX GetLength() const; /**Determine if the string is NOT empty. This is semantically identical to executing !IsEmpty() on the string. @return TRUE if non-null characters in string. */ bool operator!() const; //@} /**@name Concatenation operators **/ //@{ /**Concatenate two strings to produce a third. The original strings are not modified, an entirely new unique reference to a string is created. @return new string with concatenation of the object and parameter. */ PString operator+( const PString & str ///< String to concatenate. ) const; /**Concatenate a C string to a PString to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = aStr + "fred"; \end{verbatim} @return new string with concatenation of the object and parameter. */ PString operator+( const char * cstr ///< C string to concatenate. ) const; /**Concatenate a single character to a PString to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #ch# parameter is typically a literal, eg: \begin{verbatim} myStr = aStr + '!'; \end{verbatim} @return new string with concatenation of the object and parameter. */ PString operator+( char ch ///< Character to concatenate. ) const; /**Concatenate a PString to a C string to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = "fred" + aStr; \end{verbatim} @return new string with concatenation of the object and parameter. */ friend PString operator+( const char * cstr, ///< C string to be concatenated to. const PString & str ///< String to concatenate. ); /**Concatenate a PString to a single character to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #c# parameter is typically a literal, eg: \begin{verbatim} myStr = '!' + aStr; \end{verbatim} @return new string with concatenation of the object and parameter. */ friend PString operator+( char c, ///< Character to be concatenated to. const PString & str ///< String to concatenate. ); /**Concatenate a string to another string, modifiying that string. @return reference to string that was concatenated to. */ PString & operator+=( const PString & str ///< String to concatenate. ); /**Concatenate a C string to a PString, modifiying that string. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr += "fred"; \end{verbatim} @return reference to string that was concatenated to. */ PString & operator+=( const char * cstr ///< C string to concatenate. ); /**Concatenate a single character to a PString. The #ch# parameter is typically a literal, eg: \begin{verbatim} myStr += '!'; \end{verbatim} @return new string with concatenation of the object and parameter. */ PString & operator+=( char ch ///< Character to concatenate. ); /**Concatenate two strings to produce a third. The original strings are not modified, an entirely new unique reference to a string is created. @return new string with concatenation of the object and parameter. */ PString operator&( const PString & str ///< String to concatenate. ) const; /**Concatenate a C string to a PString to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = aStr & "fred"; \end{verbatim} This function differes from operator+ in that it assures there is at least one space between the strings. Exactly one space is added if there is not a space at the end of the first or beggining of the last string. @return new string with concatenation of the object and parameter. */ PString operator&( const char * cstr ///< C string to concatenate. ) const; /**Concatenate a single character to a PString to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #ch# parameter is typically a literal, eg: \begin{verbatim} myStr = aStr & '!'; \end{verbatim} This function differes from operator+ in that it assures there is at least one space between the strings. Exactly one space is added if there is not a space at the end of the first or beggining of the last string. @return new string with concatenation of the object and parameter. */ PString operator&( char ch ///< Character to concatenate. ) const; /**Concatenate a PString to a C string to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = "fred" & aStr; \end{verbatim} This function differes from operator+ in that it assures there is at least one space between the strings. Exactly one space is added if there is not a space at the end of the first or beggining of the last string. @return new string with concatenation of the object and parameter. */ friend PString operator&( const char * cstr, ///< C string to be concatenated to. const PString & str ///< String to concatenate. ); /**Concatenate a PString to a single character to produce a third. The original string is not modified, an entirely new unique reference to a string is created. The #c# parameter is typically a literal, eg: \begin{verbatim} myStr = '!' & aStr; \end{verbatim} This function differes from #operator+# in that it assures there is at least one space between the strings. Exactly one space is added if there is not a space at the end of the first or beggining of the last string. @return new string with concatenation of the object and parameter. */ friend PString operator&( char ch, ///< Character to be concatenated to. const PString & str ///< String to concatenate. ); /**Concatenate a string to another string, modifiying that string. @return reference to string that was concatenated to. */ PString & operator&=( const PString & str ///< String to concatenate. ); /**Concatenate a C string to a PString, modifiying that string. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr &= "fred"; \end{verbatim} This function differes from operator+ in that it assures there is at least one space between the strings. Exactly one space is added if there is not a space at the end of the first or beggining of the last string. @return reference to string that was concatenated to. */ PString & operator&=( const char * cstr ///< C string to concatenate. ); /**Concatenate a character to a PString, modifiying that string. The #ch# parameter is typically a literal string, eg: \begin{verbatim} myStr &= '!'; \end{verbatim} This function differes from operator+ in that it assures there is at least one space between the strings. Exactly one space is added if there is not a space at the end of the first or beggining of the last string. @return reference to string that was concatenated to. */ PString & operator&=( char ch ///< Character to concatenate. ); //@} /**@name Comparison operators */ //@{ /**Compare two strings using case insensitive comparison. @return TRUE if equal. */ bool operator*=( const PString & str ///< PString object to compare against. ) const; /**Compare two strings using the #PObject::Compare()# function. This is identical to the #PObject# class function but is necessary due to other overloaded versions. @return TRUE if equal. */ bool operator==( const PObject & str ///< PString object to compare against. ) const; /**Compare two strings using the #PObject::Compare()# function. This is identical to the #PObject# class function but is necessary due to other overloaded versions. @return TRUE if not equal. */ bool operator!=( const PObject & str ///< PString object to compare against. ) const; /**Compare two strings using the #PObject::Compare()# function. This is identical to the #PObject# class function but is necessary due to other overloaded versions. @return TRUE if less than. */ bool operator<( const PObject & str ///< PString object to compare against. ) const; /**Compare two strings using the #PObject::Compare()# function. This is identical to the #PObject# class function but is necessary due to other overloaded versions. @return TRUE if greater than. */ bool operator>( const PObject & str ///< PString object to compare against. ) const; /**Compare two strings using the #PObject::Compare()# function. This is identical to the #PObject# class function but is necessary due to other overloaded versions. @return TRUE if less than or equal. */ bool operator<=( const PObject & str ///< PString object to compare against. ) const; /**Compare two strings using the #PObject::Compare()# function. This is identical to the #PObject# class function but is necessary due to other overloaded versions. @return TRUE if greater than or equal. */ bool operator>=( const PObject & str ///< PString object to compare against. ) const; /**Compare a PString to a C string using a case insensitive compare function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr == "fred") \end{verbatim} @return TRUE if equal. */ bool operator*=( const char * cstr ///< C string to compare against. ) const; /**Compare a PString to a C string using the ##Compare()## function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr == "fred") \end{verbatim} @return TRUE if equal. */ bool operator==( const char * cstr ///< C string to compare against. ) const; /**Compare a PString to a C string using the #PObject::Compare()# function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr != "fred") \end{verbatim} @return TRUE if not equal. */ bool operator!=( const char * cstr ///< C string to compare against. ) const; /**Compare a PString to a C string using the #PObject::Compare()# function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr < "fred") \end{verbatim} @return TRUE if less than. */ bool operator<( const char * cstr ///< C string to compare against. ) const; /**Compare a PString to a C string using the #PObject::Compare()# function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr > "fred") \end{verbatim} @return TRUE if greater than. */ bool operator>( const char * cstr ///< C string to compare against. ) const; /**Compare a PString to a C string using the #PObject::Compare()# function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr <= "fred") \end{verbatim} @return TRUE if less than or equal. */ bool operator<=( const char * cstr ///< C string to compare against. ) const; /**Compare a PString to a C string using the #PObject::Compare()# function. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} if (myStr >= "fred") \end{verbatim} @return TRUE if greater than or equal. */ bool operator>=( const char * cstr ///< C string to compare against. ) const; /**Compare a string against a substring of the object. This will compare at most #count# characters of the string, starting at the specified #offset#, against that many characters of the #str# parameter. If #count# greater than the length of the #str# parameter then the actual length of #str# is used. If #count# and the length of #str# are greater than the length of the string remaining from the #offset# then FALSE is returned. @return TRUE if str is a substring of . */ Comparison NumCompare( const PString & str, ///< PString object to compare against. PINDEX count = P_MAX_INDEX, ///< Number of chacracters in str to compare PINDEX offset = 0 ///< Offset into string to compare ) const; /**Compare a string against a substring of the object. This will compare at most #count# characters of the string, starting at the specified #offset#, against that many characters of the #str# parameter. If #count# greater than the length of the #str# parameter then the actual length of #str# is used. If #count# and the length of #str# are greater than the length of the string remaining from the #offset# then FALSE is returned. @return TRUE if str is a substring of . */ Comparison NumCompare( const char * cstr, ///< C string object to compare against. PINDEX count = P_MAX_INDEX, ///< Number of chacracters in str to compare PINDEX offset = 0 ///< Offset into string to compare ) const; //@} /**@name Search & replace functions */ //@{ /** Locate the position within the string of the character. */ PINDEX Find( char ch, ///< Character to search for in string. PINDEX offset = 0 ///< Offset into string to begin search. ) const; /** Locate the position within the string of the substring. */ PINDEX Find( const PString & str, ///< String to search for in string. PINDEX offset = 0 ///< Offset into string to begin search. ) const; /* Locate the position within the string of the character or substring. The search will begin at the character offset provided. If #offset# is beyond the length of the string, then the function will always return #P_MAX_INDEX#. The matching will be for identical character or string. If a search ignoring case is required then the string should be converted to a #PCaselessString# before the search is made. @return position of character or substring in the string, or P_MAX_INDEX if the character or substring is not in the string. */ PINDEX Find( const char * cstr, ///< C string to search for in string. PINDEX offset = 0 ///< Offset into string to begin search. ) const; /** Locate the position of the last matching character. */ PINDEX FindLast( char ch, ///< Character to search for in string. PINDEX offset = P_MAX_INDEX ///< Offset into string to begin search. ) const; /** Locate the position of the last matching substring. */ PINDEX FindLast( const PString & str, ///< String to search for in string. PINDEX offset = P_MAX_INDEX ///< Offset into string to begin search. ) const; /**Locate the position of the last matching substring. Locate the position within the string of the last matching character or substring. The search will begin at the character offset provided, moving backward through the string. If #offset# is beyond the length of the string, then the search begins at the end of the string. If #offset# is zero then the function always returns #P_MAX_INDEX#. The matching will be for identical character or string. If a search ignoring case is required then the string should be converted to a #PCaselessString# before the search is made. @return position of character or substring in the string, or P_MAX_INDEX if the character or substring is not in the string. */ PINDEX FindLast( const char * cstr, ///< C string to search for in string. PINDEX offset = P_MAX_INDEX ///< Offset into string to begin search. ) const; /** Locate the position of one of the characters in the set. */ PINDEX FindOneOf( const PString & set, ///< String of characters to search for in string. PINDEX offset = 0 ///< Offset into string to begin search. ) const; /**Locate the position of one of the characters in the set. The search will begin at the character offset provided. If #offset# is beyond the length of the string, then the function will always return #P_MAX_INDEX#. The matching will be for identical character or string. If a search ignoring case is required then the string should be converted to a #PCaselessString# before the search is made. @return position of character in the string, or P_MAX_INDEX if no characters from the set are in the string. */ PINDEX FindOneOf( const char * cset, ///< C string of characters to search for in string. PINDEX offset = 0 ///< Offset into string to begin search. ) const; /**Locate the position within the string of one of the regular expression. The search will begin at the character offset provided. If #offset# is beyond the length of the string, then the function will always return #P_MAX_INDEX#. @return position of regular expression in the string, or P_MAX_INDEX if no characters from the set are in the string. */ PINDEX FindRegEx( const PRegularExpression & regex, ///< regular expression to find PINDEX offset = 0 ///< Offset into string to begin search. ) const; /**Locate the position within the string of one of the regular expression. The search will begin at the character offset provided. If #offset# is beyond the length of the string, then the function will always return #P_MAX_INDEX#. @return position of regular expression in the string, or P_MAX_INDEX if no characters from the set are in the string. */ BOOL FindRegEx( const PRegularExpression & regex, ///< regular expression to find PINDEX & pos, ///< Position of matched expression PINDEX & len, ///< Length of matched expression PINDEX offset = 0, ///< Offset into string to begin search. PINDEX maxPos = P_MAX_INDEX ///< Maximum offset into string ) const; /**Locate the substring within the string and replace it with the specifed substring. The search will begin at the character offset provided. If #offset# is beyond the length of the string, then the function will do nothing. The matching will be for identical character or string. If a search ignoring case is required then the string should be converted to a #PCaselessString# before the search is made. */ void Replace( const PString & target, ///< Text to be removed. const PString & subs, ///< String to be inserted into the gaps created BOOL all = FALSE, ///< Replace all occurrences of target text. PINDEX offset = 0 ///< Offset into string to begin search. ); /**Splice the string into the current string at the specified position. The specified number of bytes are removed from the string. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. */ void Splice( const PString & str, ///< Substring to insert. PINDEX pos, ///< Position in string to insert the substring. PINDEX len = 0 ///< Length of section to remove. ); /**Splice the string into the current string at the specified position. The specified number of bytes are removed from the string. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. */ void Splice( const char * cstr, ///< Substring to insert. PINDEX pos, ///< Position in string to insert the substring. PINDEX len = 0 ///< Length of section to remove. ); /**Remove the substring from the string. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. */ void Delete( PINDEX start, ///< Position in string to remove. PINDEX len ///< Number of characters to delete. ); //@} /**@name Sub-string functions */ //@{ /**Extract a portion of the string into a new string. The original string is not changed and a new unique reference to a string is returned. The substring is returned inclusive of the characters at the #start# and #end# positions. If the #end# position is greater than the length of the string then all characters from the #start# up to the end of the string are returned. If #start# is greater than the length of the string or #end# is before #start# then an empty string is returned. @return substring of the source string. */ PString operator()( PINDEX start, ///< Starting position of the substring. PINDEX end ///< Ending position of the substring. ) const; /**Extract a portion of the string into a new string. The original string is not changed and a new unique reference to a string is returned. A substring from the beginning of the string for the number of characters specified is extracted. If #len# is greater than the length of the string then all characters to the end of the string are returned. If #len# is zero then an empty string is returned. @return substring of the source string. */ PString Left( PINDEX len ///< Number of characters to extract. ) const; /**Extract a portion of the string into a new string. The original string is not changed and a new unique reference to a string is returned. A substring from the end of the string for the number of characters specified is extracted. If #len# is greater than the length of the string then all characters to the beginning of the string are returned. If #len# is zero then an empty string is returned. @return substring of the source string. */ PString Right( PINDEX len ///< Number of characters to extract. ) const; /**Extract a portion of the string into a new string. The original string is not changed and a new unique reference to a string is returned. A substring from the #start# position for the number of characters specified is extracted. If #len# is greater than the length of the string from the #start# position then all characters to the end of the string are returned. If #start# is greater than the length of the string or #len# is zero then an empty string is returned. @return substring of the source string. */ PString Mid( PINDEX start, ///< Starting position of the substring. PINDEX len = P_MAX_INDEX ///< Number of characters to extract. ) const; /**Create a string consisting of all characters from the source string except all spaces at the beginning of the string. The original string is not changed and a new unique reference to a string is returned. @return string with leading spaces removed. */ PString LeftTrim() const; /**Create a string consisting of all characters from the source string except all spaces at the end of the string. The original string is not changed and a new unique reference to a string is returned. @return string with trailing spaces removed. */ PString RightTrim() const; /**Create a string consisting of all characters from the source string except all spaces at the beginning and end of the string. The original string is not changed and a new unique reference to a string is returned. @return string with leading and trailing spaces removed. */ PString Trim() const; /**Create a string consisting of all characters from the source string with all upper case letters converted to lower case. The original string is not changed and a new unique reference to a string is returned. @return string with upper case converted to lower case. */ PString ToLower() const; /**Create a string consisting of all characters from the source string with all lower case letters converted to upper case. The original string is not changed and a new unique reference to a string is returned. @return string with lower case converted to upper case. */ PString ToUpper() const; /** Split the string into an array of substrings. */ PStringArray Tokenise( const PString & separators, ///< A string for the set of separator characters that delimit tokens. BOOL onePerSeparator = TRUE ///< Flag for if there are empty tokens between consecutive separators. ) const; /**Split the string into an array of substrings. Divide the string into an array of substrings delimited by characters from the specified set. There are two options for the tokenisation, the first is where the #onePerSeparator# is TRUE. This form will produce a token for each delimiter found in the set. Thus the string ",two,three,,five" would be split into 5 substrings; "", "two", "three", "" and "five". The second form where #onePerSeparator# is FALSE is used where consecutive delimiters do not constitute a empty token. In this case the string " a list of words " would be split into 4 substrings; "a", "list", "of" and "words". There is an important distinction when there are delimiters at the beginning or end of the source string. In the first case there will be empty strings at the end of the array and in the second the delimiters are ignored. @return an array of substring for each token in the string. */ PStringArray Tokenise( const char * cseparators, ///< A C string for the set of separator characters that delimit tokens. BOOL onePerSeparator = TRUE ///< Flag for if there are empty tokens between consecutive separators. ) const; /**Split the string into individual lines. The line delimiters may be a carriage return ('\r'), a line feed ('\n') or a carriage return and line feed pair ("\r\n"). A line feed and carriage return pair ("\n\r") would yield a blank line. between the characters. The #Tokenise()# function should not be used to split a string into lines as a #"\r\n"# pair consitutes a single line ending. The #Tokenise()# function would produce a blank line in between them. @return string array with a substring for each line in the string. */ PStringArray Lines() const; //@} /**@name Conversion functions */ //@{ /**Concatenate a formatted output to the string. This is identical to the standard C library #sprintf()# function, but appends its output to the string. This function makes the assumption that there is less the 1000 characters of formatted output. The function will assert if this occurs. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. @return reference to the current string object. */ PString & sprintf( const char * cfmt, ///< C string for output format. ... ///< Extra parameters for #sprintf()# call. ); /**Produce formatted output as a string. This is identical to the standard C library #sprintf()# function, but sends its output to a #PString#. This function makes the assumption that there is less the 1000 characters of formatted output. The function will assert if this occurs. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. @return reference to the current string object. */ friend PString psprintf( const char * cfmt, ///< C string for output format. ... ///< Extra parameters for #sprintf()# call. ); /** Concatenate a formatted output to the string. */ PString & vsprintf( const PString & fmt, ///< String for output format. va_list args ///< Extra parameters for #sprintf()# call. ); /**Concatenate a formatted output to the string. This is identical to the standard C library #vsprintf()# function, but appends its output to the string. This function makes the assumption that there is less the 1000 characters of formatted output. The function will assert if this occurs. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. @return reference to the current string object. */ PString & vsprintf( const char * cfmt, ///< C string for output format. va_list args ///< Extra parameters for #sprintf()# call. ); /** Produce formatted output as a string. */ friend PString pvsprintf( const char * cfmt, ///< C string for output format. va_list args ///< Extra parameters for #sprintf()# call. ); /**Produce formatted output as a string. This is identical to the standard C library #vsprintf()# function, but sends its output to a #PString#. This function makes the assumption that there is less the 1000 characters of formatted output. The function will assert if this occurs. Note that this function will break the current instance from multiple references to the string. A new string buffer is allocated and the data from the old string buffer copied to it. @return reference to the current string object. */ friend PString pvsprintf( const PString & fmt, ///< String for output format. va_list args ///< Extra parameters for #sprintf()# call. ); /**Convert the string to an integer value using the specified number base. All characters up to the first illegal character for the number base are converted. Case is not significant for bases greater than 10. The number base may only be from 2 to 36 and the function will assert if it is not in this range. This function uses the standard C library #strtol()# function. @return integer value for the string. */ long AsInteger( unsigned base = 10 ///< Number base to convert the string in. ) const; /**Convert the string to an integer value using the specified number base. All characters up to the first illegal character for the number base are converted. Case is not significant for bases greater than 10. The number base may only be from 2 to 36 and the function will assert if it is not in this range. This function uses the standard C library #strtoul()# function. @return integer value for the string. */ DWORD AsUnsigned( unsigned base = 10 ///< Number base to convert the string in. ) const; /**Convert the string to an integer value using the specified number base. All characters up to the first illegal character for the number base are converted. Case is not significant for bases greater than 10. The number base may only be from 2 to 36 and the function will assert if it is not in this range. This function uses the standard C library #strtoq()# or #strtoul()# function. @return integer value for the string. */ PInt64 AsInt64( unsigned base = 10 ///< Number base to convert the string in. ) const; /**Convert the string to an integer value using the specified number base. All characters up to the first illegal character for the number base are converted. Case is not significant for bases greater than 10. The number base may only be from 2 to 36 and the function will assert if it is not in this range. This function uses the standard C library #strtouq()# or #strtoul()# function. @return integer value for the string. */ PUInt64 AsUnsigned64( unsigned base = 10 ///< Number base to convert the string in. ) const; /**Convert the string to a floating point number. This number may be in decimal or exponential form. All characters up to the first illegal character for a floting point number are converted. This function uses the standard C library #strtod()# function. @return floating point value for the string. */ double AsReal() const; /**Convert UTF-8 string to UCS-2. Note the resultant PWORDArray will have the trailing null included. */ PWORDArray AsUCS2() const; /**Convert a standard null terminated string to a "pascal" style string. This consists of a songle byte for the length of the string and then the string characters following it. This function will assert if the string is greater than 255 characters in length. @return byte array containing the "pascal" style string. */ PBYTEArray ToPascal() const; /**Convert the string to C literal string format. This will convert non printable characters to the \nnn form or for standard control characters such as line feed, to \n form. Any '"' characters are also escaped with a \ character and the entire string is enclosed in '"' characters. @return string converted to a C language literal form. */ PString ToLiteral() const; /**Get the internal buffer as a pointer to unsigned characters. The standard "operator const char *" function is provided by the #PCharArray# ancestor class. @return pointer to character buffer. */ operator const unsigned char *() const; //@} protected: void InternalFromUCS2( const WORD * ptr, PINDEX len ); virtual Comparison InternalCompare( PINDEX offset, // Offset into string to compare. char c // Character to compare against. ) const; virtual Comparison InternalCompare( PINDEX offset, // Offset into string to compare. PINDEX length, // Number of characters to compare. const char * cstr // C string to compare against. ) const; /* Internal function to compare the current string value against the specified C string. @return relative rank of the two strings. */ PString(int dummy, const PString * str); }; ////////////////////////////////////////////////////////////////////////////// /**This class is a variation of a string that ignores case. Thus in all standard comparison (#==#, #<# etc) and search (#Find()# etc) functions the case of the characters and strings is ignored. The characters in the string still maintain their case. Only the comparison operations are affected. So printing etc will still display the string as entered. */ class PCaselessString : public PString { PCLASSINFO(PCaselessString, PString); public: /**Create a new, empty, caseless string. */ PCaselessString(); /**Create a new caseless string, initialising it to the characters in the C string provided. */ PCaselessString( const char * cstr ///< C string to initialise the caseless string from. ); /**Create a caseless string, with a reference to the characters in the normal #PString# provided. A PCaselessString may also be provided to this constructor. */ PCaselessString( const PString & str ///< String to initialise the caseless string from. ); /**Assign the string to the current object. The current instance then becomes another reference to the same string in the #str# parameter. @return reference to the current PString object. */ PCaselessString & operator=( const PString & str ///< New string to assign. ); /**Assign the C string to the current object. The current instance then becomes a unique reference to a copy of the #cstr# parameter. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = "fred"; \end{verbatim} @return reference to the current PString object. */ PCaselessString & operator=( const char * cstr ///< C string to assign. ); /**Assign the character to the current object. The current instance then becomes a unique reference to a copy of the character parameter. eg: \begin{verbatim} myStr = 'A'; \end{verbatim} @return reference to the current PString object. */ PCaselessString & operator=( char ch ///< Character to assign. ); // Overrides from class PObject /**Make a complete duplicate of the string. Note that the data in the array of characters is duplicated as well and the new object is a unique reference to that data. */ virtual PObject * Clone() const; protected: // Overrides from class PString virtual Comparison InternalCompare( PINDEX offset, // Offset into string to compare. char c // Character to compare against. ) const; virtual Comparison InternalCompare( PINDEX offset, // Offset into string to compare. PINDEX length, // Number of characters to compare. const char * cstr // C string to compare against. ) const; /* Internal function to compare the current string value against the specified C string. @return relative rank of the two strings or characters. */ PCaselessString(int dummy, const PCaselessString * str); }; ////////////////////////////////////////////////////////////////////////////// class PStringStream; /**This class is a standard C++ stream class descendent for reading or writing streamed data to or from a #PString# class. All of the standard stream I/O operators, manipulators etc will operate on the PStringStream class. */ class PStringStream : public PString, public iostream { PCLASSINFO(PStringStream, PString); public: /**Create a new, empty, string stream. Data may be output to this stream, but attempts to input from it will return end of file. The internal string is continually grown as required during output. */ PStringStream(); /**Create a new, empty, string stream of a fixed size. Data may be output to this stream, but attempts to input from it will return end of file. When the fixed size is reached then no more data may be output to it. */ PStringStream( PINDEX fixedBufferSize ); /**Create a new string stream and initialise it to the provided value. The string stream references the same string buffer as the #str# parameter until any output to the string stream is attempted. The reference is then broken and the instance of the string stream becomes a unique reference to a string buffer. */ PStringStream( const PString & str ///< Initial value for string stream. ); /**Create a new string stream and initialise it with the provided value. The stream may be read or written from. Writes will append to the end of the string. */ PStringStream( const char * cstr ///< Initial value for the string stream. ); /**Make the current string empty */ virtual PString & MakeEmpty(); /**Assign the string part of the stream to the current object. The current instance then becomes another reference to the same string in the #strm# parameter. This will reset the read pointer for input to the beginning of the string. Also, any data output to the string up until the asasignement will be lost. @return reference to the current PStringStream object. */ PStringStream & operator=( const PStringStream & strm ); /**Assign the string to the current object. The current instance then becomes another reference to the same string in the #str# parameter. This will reset the read pointer for input to the beginning of the string. Also, any data output to the string up until the asasignement will be lost. @return reference to the current PStringStream object. */ PStringStream & operator=( const PString & str ///< New string to assign. ); /**Assign the C string to the string stream. The current instance then becomes a unique reference to a copy of the #cstr# parameter. The #cstr# parameter is typically a literal string, eg: \begin{verbatim} myStr = "fred"; \end{verbatim} This will reset the read pointer for input to the beginning of the string. Also, any data output to the string up until the asasignement will be lost. @return reference to the current PStringStream object. */ PStringStream & operator=( const char * cstr ///< C string to assign. ); /**Assign the character to the current object. The current instance then becomes a unique reference to a copy of the character parameter. eg: \begin{verbatim} myStr = 'A'; \end{verbatim} @return reference to the current PString object. */ PStringStream & operator=( char ch ///< Character to assign. ); /// Destroy the string stream, deleting the stream buffer virtual ~PStringStream(); protected: virtual void AssignContents(const PContainer & cont); private: PStringStream(int, const PStringStream &) : iostream(cout.rdbuf()) { } class Buffer : public streambuf { public: Buffer(PStringStream & str, PINDEX size); Buffer(const Buffer & sbuf); Buffer & operator=(const Buffer & sbuf); virtual int overflow(int=EOF); virtual int underflow(); virtual int sync(); #ifdef __USE_STL__ virtual pos_type seekoff(off_type, ios_base::seekdir, ios_base::openmode = ios_base::in | ios_base::out); virtual pos_type seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out); #else virtual streampos seekoff(streamoff, ios::seek_dir, int); #endif PStringStream & string; BOOL fixedBufferSize; }; }; class PStringList; class PSortedStringList; /**This is an array collection class of #PString# objects. It has all the usual functions for a collection, with the object types set to #PString# pointers. In addition some addition functions are added that take a const #PString# reference instead of a pointer as most standard collection functions do. This is more convenient for when string expressions are used as parameters to function in the collection. See the #PAbstractArray# and #PArray# classes and #PDECLARE_ARRAY# macro for more information. */ #ifdef DOC_PLUS_PLUS class PStringArray : public PArray { #endif PDECLARE_ARRAY(PStringArray, PString); public: /**@name Construction */ //@{ /**Create a PStringArray from the array of C strings. If count is P_MAX_INDEX then strarr is assumed to point to an array of strings where the last pointer is NULL. */ PStringArray( PINDEX count, ///< Count of strings in array char const * const * strarr, ///< Array of C strings BOOL caseless = FALSE ///< New strings are to be PCaselessStrings ); /**Create a PStringArray of length one from the single string. */ PStringArray( const PString & str ///< Single string to convert to an array of one. ); /**Create a PStringArray from the list of strings. */ PStringArray( const PStringList & list ///< List of strings to convert to array. ); /**Create a PStringArray from the sorted list strings. */ PStringArray( const PSortedStringList & list ///< List of strings to convert to array. ); /** * Create a PStringArray from a vector of PStrings */ PStringArray( const std::vector & vec ) { for (std::vector::const_iterator r = vec.begin(); r != vec.end(); ++r) AppendString(*r); } /** * Create a PStringArray from a vector of std::string */ PStringArray( const std::vector & vec ) { for (std::vector::const_iterator r = vec.begin(); r != vec.end(); ++r) AppendString(PString(*r)); } /** * Create a PStringArray from an STL container */ template static PStringArray container( const stlContainer & vec ) { PStringArray list; for (typename stlContainer::const_iterator r = vec.begin(); r != vec.end(); ++r) list.AppendString(PString(*r)); return list; } //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} /**@name New functions for class */ //@{ /**As for #GetValuesIndex()# but takes a PString argument so that literals will be automatically converted. @return Index of string in array or P_MAX_INDEX if not found. */ PINDEX GetStringsIndex( const PString & str ///< String to search for index of ) const; PString operator[]( PINDEX index ///< Index position in the collection of the object. ) const; /**Retrieve a reference to the object in the array. If there was not an object at that ordinal position or the index was beyond the size of the array then the function will create a new one. @return reference to the object at #index# position. */ PString & operator[]( PINDEX index ///< Index position in the collection of the object. ); /** Append a string to the array */ PINDEX AppendString( const PString & str ///< String to append. ); /**Concatenate a PString or PStringArray to the array @return The PStringArray with the new items appended */ PStringArray & operator +=(const PStringArray & array); PStringArray & operator +=(const PString & str); /**Create a new PStringArray, and add PString or PStringArray to it a new PStringArray @return A new PStringArray with the additional elements(s) */ PStringArray operator + (const PStringArray & array); PStringArray operator + (const PString & str); /**Create an array of C strings. If storage is NULL then this returns a single pointer that may be disposed of using free(). Note that each of the strings are part of the same memory allocation so only one free() is required. If storage is not null then that is used to allocate the memory. */ char ** ToCharArray( PCharArray * storage = NULL ) const; //@} }; /**This is a list collection class of #PString# objects. It has all the usual functions for a collection, with the object types set to #PString# pointers. In addition some addition functions are added that take a const #PString# reference instead of a pointer as most standard collection functions do. This is more convenient for when string expressions are used as parameters to function in the collection. See the #PAbstractList# and #PList# classes and #PDECLARE_LIST# macro for more information. */ #ifdef DOC_PLUS_PLUS class PStringList : public PList { #endif PDECLARE_LIST(PStringList, PString); public: /**@name Construction */ //@{ /**Create a PStringList from the array of C strings. */ PStringList( PINDEX count, ///< Count of strings in array char const * const * strarr, ///< Array of C strings BOOL caseless = FALSE ///< New strings are to be PCaselessStrings ); /**Create a PStringList of length one from the single string. */ PStringList( const PString & str ///< Single string to convert to a list of one. ); /**Create a PStringList from the array of strings. */ PStringList( const PStringArray & array ///< Array of strings to convert to list ); /**Create a PStringList from the sorted list of strings. */ PStringList( const PSortedStringList & list ///< List of strings to convert to list. ); //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} /**@name Operations */ //@{ /** Append a string to the list. */ PINDEX AppendString( const PString & str ///< String to append. ); /** Insert a string into the list. */ PINDEX InsertString( const PString & before, ///< String to insert before. const PString & str ///< String to insert. ); /** Get the index of the string with the specified value. A linear search of list is performed to find the string value. */ PINDEX GetStringsIndex( const PString & str ///< String value to search for. ) const; /**Concatenate a PString or PStringArray to the list @return The PStringArray with the new items appended */ PStringList & operator +=(const PStringList & list); PStringList & operator +=(const PString & str); /**Create a new PStringList, and add PString or PStringList to it a new PStringList @return A new PStringList with the additional elements(s) */ PStringList operator + (const PStringList & array); PStringList operator + (const PString & str); /** * Create a PStringArray from an STL container */ template static PStringList container( const stlContainer & vec ) { PStringList list; for (typename stlContainer::const_iterator r = vec.begin(); r != vec.end(); ++r) list.AppendString(PString(*r)); return list; } //@} }; /**This is a sorted list collection class of #PString# objects. It has all the usual functions for a collection, with the object types set to #PString# pointers. In addition some addition functions are added that take a const #PString# reference instead of a pointer as most standard collection functions do. This is more convenient for when string expressions are used as parameters to function in the collection. See the #PAbstractSortedList# and #PSortedList# classes and #PDECLARE_SORTEDLIST# macro for more information. */ #ifdef DOC_PLUS_PLUS class PSortedStringList : public PSortedList { #endif PDECLARE_SORTED_LIST(PSortedStringList, PString); public: /**@name Construction */ //@{ /**Create a PStringArray from the array of C strings. */ PSortedStringList( PINDEX count, ///< Count of strings in array char const * const * strarr, ///< Array of C strings BOOL caseless = FALSE ///< New strings are to be PCaselessStrings ); /**Create a PSortedStringList of length one from the single string. */ PSortedStringList( const PString & str ///< Single string to convert to a list of one. ); /**Create a PSortedStringList from the array of strings. */ PSortedStringList( const PStringArray & array ///< Array of strings to convert to list ); /**Create a PSortedStringList from the list of strings. */ PSortedStringList( const PStringList & list ///< List of strings to convert to list. ); //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} /**@name Operations */ //@{ /** Add a string to the list. This will place the string in the correct position in the sorted list. */ PINDEX AppendString( const PString & str ///< String to append. ); /** Get the index of the string with the specified value. A binary search of tree is performed to find the string value. */ PINDEX GetStringsIndex( const PString & str ///< String value to search for. ) const; /** Get the index of the next string after specified value. A binary search of tree is performed to find the string greater than or equal to the specified string value. */ PINDEX GetNextStringsIndex( const PString & str ///< String value to search for. ) const; //@} protected: PINDEX InternalStringSelect( const char * str, PINDEX len, Element * thisElement ) const; }; /**This is a set collection class of #PString# objects. It has all the usual functions for a collection, with the object types set to #PString# pointers. In addition some addition functions are added that take a const #PString# reference instead of a pointer as most standard collection functions do. This is more convenient for when string expressions are used as parameters to function in the collection. Unlike the normal sets, this will delete the PStrings removed from it. This complements the automatic creation of new PString objects when literals or expressions are used. See the #PAbstractSet# and #PSet# classes and #PDECLARE_SET# macro for more information. */ #ifdef DOC_PLUS_PLUS class PStringSet : public PSet { #endif PDECLARE_SET(PStringSet, PString, TRUE); public: /**@name Construction */ //@{ /**Create a PStringArray from the array of C strings. */ PStringSet( PINDEX count, ///< Count of strings in array char const * const * strarr, ///< Array of C strings BOOL caseless = FALSE ///< New strings are to be PCaselessStrings ); /**Create a PStringSet containing the single string. */ PStringSet( const PString & str ///< Single string to convert to a list of one. ); //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm ///< Stream to read the objects contents from. ); //@} /**@name Operations */ //@{ /** Include the spcified string value into the set. */ void Include( const PString & key ///< String value to add to set. ); /** Include the spcified string value into the set. */ PStringSet & operator+=( const PString & key ///< String value to add to set. ); /** Exclude the spcified string value from the set. */ void Exclude( const PString & key ///< String value to remove from set. ); /** Exclude the spcified string value from the set. */ PStringSet & operator-=( const PString & key ///< String value to remove from set. ); //@} }; #ifdef PHAS_TEMPLATES /**This template class maps the PAbstractDictionary to a specific key type and a #PString# data type. The functions in this class primarily do all the appropriate casting of types. Note that if templates are not used the #PDECLARE_STRING_DICTIONARY# macro will simulate the template instantiation. */ template class PStringDictionary : public PAbstractDictionary { PCLASSINFO(PStringDictionary, PAbstractDictionary); public: /**@name Construction */ //@{ /**Create a new, empty, dictionary. Note that by default, objects placed into the dictionary will be deleted when removed or when all references to the dictionary are destroyed. */ PStringDictionary() : PAbstractDictionary() { } //@} /**@name Overrides from class PObject */ //@{ /**Make a complete duplicate of the dictionary. Note that all objects in the array are also cloned, so this will make a complete copy of the dictionary. */ virtual PObject * Clone() const { return PNEW PStringDictionary(0, this); } //@} /**@name New functions for class */ //@{ /**Get the string contained in the dictionary at the #key# position. The hash table is used to locate the data quickly via the hash function provided by the key. The last key/data pair is remembered by the class so that subseqent access is very fast. This function asserts if there is no data at the key position. @return reference to the object indexed by the key. */ const PString & operator[](const K & key) const { return (const PString &)GetRefAt(key); } /**Get the string contained in the dictionary at the #key# position. The hash table is used to locate the data quickly via the hash function provided by the key. The last key/data pair is remembered by the class so that subseqent access is very fast. This function returns the #dflt# value if there is no data at the key position. @return reference to the object indexed by the key. */ PString operator()(const K & key, const char * dflt = "") const { if (AbstractContains(key)) return (*this)[key]; return dflt; } /**Determine if the value of the object is contained in the hash table. The object values are compared, not the pointers. So the objects in the collection must correctly implement the #PObject::Compare()# function. The hash table is used to locate the entry. @return TRUE if the object value is in the dictionary. */ BOOL Contains( const K & key // Key to look for in the dictionary. ) const { return AbstractContains(key); } /**Remove an object at the specified key. The returned pointer is then removed using the #SetAt()# function to set that key value to NULL. If the #AllowDeleteObjects# option is set then the object is also deleted. @return pointer to the object being removed, or NULL if the key was not present in the dictionary. If the dictionary is set to delete objects upon removal, the value -1 is returned if the key existed prior to removal rather than returning an illegal pointer */ virtual PString * RemoveAt( const K & key // Key for position in dictionary to get object. ) { PString * s = GetAt(key); AbstractSetAt(key, NULL); return reference->deleteObjects ? (s ? (PString *)-1 : NULL) : s; } /**Get the object at the specified key position. If the key was not in the collection then NULL is returned. @return pointer to object at the specified key. */ virtual PString * GetAt( const K & key // Key for position in dictionary to get object. ) const { return (PString *)AbstractGetAt(key); } /**Set the data at the specified ordinal index position in the dictionary. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. @return TRUE if the new object could be placed into the dictionary. */ virtual BOOL SetDataAt( PINDEX index, // Ordinal index in the dictionary. const PString & str // New string value to put into the dictionary. ) { return PAbstractDictionary::SetDataAt(index, PNEW PString(str)); } /**Add a new object to the collection. If the objects value is already in the dictionary then the object is overrides the previous value. If the AllowDeleteObjects option is set then the old object is also deleted. The object is placed in the an ordinal position dependent on the keys hash function. Subsequent searches use the has function to speed access to the data item. @return TRUE if the object was successfully added. */ virtual BOOL SetAt( const K & key, // Key for position in dictionary to add object. const PString & str // New string value to put into the dictionary. ) { return AbstractSetAt(key, PNEW PString(str)); } /**Get the key in the dictionary at the ordinal index position. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to key at the index position. */ const K & GetKeyAt(PINDEX index) const { return (const K &)AbstractGetKeyAt(index); } /**Get the data in the dictionary at the ordinal index position. The ordinal position in the dictionary is determined by the hash values of the keys and the order of insertion. The last key/data pair is remembered by the class so that subseqent access is very fast. @return reference to data at the index position. */ PString & GetDataAt(PINDEX index) const { return (PString &)AbstractGetDataAt(index); } //@} protected: PStringDictionary(int dummy, const PStringDictionary * c) : PAbstractDictionary(dummy, c) { } }; /**Begin declaration of a dictionary of strings class. This macro is used to declare a descendent of PAbstractList class, customised for a particular key type {\bf K} and data object type #PString#. If the compilation is using templates then this macro produces a descendent of the #PStringDictionary# template class. If templates are not being used then the macro defines a set of inline functions to do all casting of types. The resultant classes have an identical set of functions in either case. See the #PStringDictionary# and #PAbstractDictionary# classes for more information. */ #define PDECLARE_STRING_DICTIONARY(cls, K) \ PDECLARE_CLASS(cls, PStringDictionary) \ protected: \ cls(int dummy, const cls * c) \ : PStringDictionary(dummy, c) { } \ public: \ cls() \ : PStringDictionary() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ /**Declare a dictionary of strings class. This macro is used to declare a descendent of PAbstractDictionary class, customised for a particular key type {\bf K} and data object type #PString#. This macro closes the class declaration off so no additional members can be added. If the compilation is using templates then this macro produces a typedef of the #PStringDictionary# template class. See the #PStringDictionary# class and #PDECLARE_STRING_DICTIONARY# macro for more information. */ #define PSTRING_DICTIONARY(cls, K) typedef PStringDictionary cls #else // PHAS_TEMPLATES #define PSTRING_DICTIONARY(cls, K) \ class cls : public PAbstractDictionary { \ PCLASSINFO(cls, PAbstractDictionary) \ protected: \ inline cls(int dummy, const cls * c) \ : PAbstractDictionary(dummy, c) { } \ public: \ inline cls() \ : PAbstractDictionary() { } \ inline PObject * Clone() const \ { return PNEW cls(0, this); } \ inline PString & operator[](const K & key) const \ { return (PString &)GetRefAt(key); } \ inline PString operator()(const K & key, const char * dflt = "") const \ { if (Contains(key)) return (PString &)GetRefAt(key); return dflt; } \ virtual BOOL Contains(const K & key) const \ { return AbstractContains(key); } \ virtual PString * RemoveAt(const K & key) \ { PString * s = GetAt(key); AbstractSetAt(key, NULL); \ return reference->deleteObjects ? (s ? (PString *)-1 : NULL) : s; } \ virtual PString * GetAt(const K & key) const \ { return (PString *)AbstractGetAt(key); } \ virtual BOOL SetDataAt(PINDEX index, const PString & str) \ { return PAbstractDictionary::SetDataAt(index,PNEW PString(str));} \ virtual BOOL SetAt(const K & key, const PString & str) \ { return AbstractSetAt(key, PNEW PString(str)); } \ inline const K & GetKeyAt(PINDEX index) const \ { return (const K &)AbstractGetKeyAt(index); } \ inline PString & GetDataAt(PINDEX index) const \ { return (PString &)AbstractGetDataAt(index); } \ } #define PDECLARE_STRING_DICTIONARY(cls, K) \ PSTRING_DICTIONARY(cls##_PTemplate, K); \ PDECLARE_CLASS(cls, cls##_PTemplate) \ protected: \ cls(int dummy, const cls * c) \ : cls##_PTemplate(dummy, c) { } \ public: \ cls() \ : cls##_PTemplate() { } \ virtual PObject * Clone() const \ { return PNEW cls(0, this); } \ #endif // PHAS_TEMPLATES /**This is a dictionary collection class of #PString# objects, keyed by an ordinal value. It has all the usual functions for a collection, with the object types set to #PString# pointers. The class could be considered like a sparse array of strings. In addition some addition functions are added that take a const #PString# reference instead of a pointer as most standard collection functions do. This is more convenient for when string expressions are used as parameters to function in the collection. See the #PAbstractDictionary# and #PStringDictionary# classes and #PDECLARE_DICTIONARY# and #PDECLARE_STRING_DICTIONARY# macros for more information. */ #ifdef DOC_PLUS_PLUS class POrdinalToString : public PStringDictionary { #endif PDECLARE_STRING_DICTIONARY(POrdinalToString, POrdinalKey); public: /**@name Construction */ //@{ /// Structure for static array initialiser for class. struct Initialiser { /// Ordinal key for string. PINDEX key; /// String value for ordinal. const char * value; }; /** Initialise the ordinal dictionary of strings from the static array. */ POrdinalToString( PINDEX count, ///< Count of strings in initialiser array const Initialiser * init ///< Array of Initialiser structures ); //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} }; /**This is a dictionary collection class of ordinals keyed by #PString# objects. It has all the usual functions for a collection, with the object types set to #POrdinalKey# pointers. In addition some addition functions are added that take a const #POrdinalKey# reference or a simple #PINDEX# instead of a pointer as most standard collection functions do. This is more convenient for when integer expressions are used as parameters to function in the collection. See the #PAbstractDicionary# and #POrdinalDictionary# classes and #PDECLARE_ORDINAL_DICTIONARY# macro for more information. */ #ifdef DOC_PLUS_PLUS class PStringToOrdinal : public POrdinalDictionary { #endif PDECLARE_ORDINAL_DICTIONARY(PStringToOrdinal, PString); public: /**@name Construction */ //@{ /// Structure for static array initialiser for class. struct Initialiser { /// String key for ordinal. const char * key; /// Ordinal value for string. PINDEX value; }; /** Initialise the string dictionary of ordinals from the static array. */ PStringToOrdinal( PINDEX count, ///< Count of strings in initialiser array const Initialiser * init, ///< Array of Initialiser structures BOOL caseless = FALSE ///< New keys are to be PCaselessStrings ); //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} }; /**This is a dictionary collection class of #PString# objects, keyed by another string. It has all the usual functions for a collection, with the object types set to #PString# pointers. In addition some addition functions are added that take a const #PString# reference instead of a pointer as most standard collection functions do. This is more convenient for when string expressions are used as parameters to function in the collection. See the #PAbstractDictionary# and #PStringDictionary# classes and #PDECLARE_DICTIONARY# and #PDECLARE_STRING_DICTIONARY# macros for more information. */ #ifdef DOC_PLUS_PLUS class PStringToString : public PStringDictionary { #endif PDECLARE_STRING_DICTIONARY(PStringToString, PString); public: /**@name Construction */ //@{ /// Structure for static array initialiser for class. struct Initialiser { /// String key for string. const char * key; /// String value for string. const char * value; }; /** Initialise the string dictionary of strings from the static array. */ PStringToString( PINDEX count, ///< Count of strings in initialiser array const Initialiser * init, ///< Array of Initialiser structures BOOL caselessKeys = FALSE, ///< New keys are to be PCaselessStrings BOOL caselessValues = FALSE ///< New values are to be PCaselessStrings ); //@} /**@name Overrides from class PObject */ //@{ /** Input the contents of the object from the stream. This is primarily used by the standard #operator>># function. The default behaviour reads '\n' separated strings until !strm.good(). */ virtual void ReadFrom( istream &strm // Stream to read the objects contents from. ); //@} }; /**A class representing a regular expression that may be used for locating patterns in strings. The regular expression string is "compiled" into a form that is more efficient during the matching. This compiled form exists for the lifetime of the PRegularExpression instance. */ class PRegularExpression : public PObject { PCLASSINFO(PRegularExpression, PObject); public: /**@name Constructors & destructors */ //@{ /// Flags for compiler options. enum { /// Use extended regular expressions Extended = 1, /// Ignore case in search. IgnoreCase = 2, /**If this bit is set, then anchors do not match at newline characters in the string. If not set, then anchors do match at newlines. */ AnchorNewLine = 4 }; /// Flags for execution options. enum { /**If this bit is set, then the beginning-of-line operator doesn't match the beginning of the string (presumably because it's not the beginning of a line). If not set, then the beginning-of-line operator does match the beginning of the string. */ NotBeginningOfLine = 1, /**Like #NotBeginningOfLine#, except for the end-of-line. */ NotEndofLine = 2 }; /// Create a new, empty, regular expression PRegularExpression(); /** Create and compile a new regular expression pattern. */ PRegularExpression( const PString & pattern, ///< Pattern to compile int flags = IgnoreCase ///< Pattern match options ); /** Create and compile a new regular expression pattern. */ PRegularExpression( const char * cpattern, ///< Pattern to compile int flags = IgnoreCase ///< Pattern match options ); /** * Copy a regular expression */ PRegularExpression( const PRegularExpression & ); /** * Assign a regular expression */ PRegularExpression & operator =( const PRegularExpression & ); /// Release storage for the compiled regular expression. ~PRegularExpression(); //@} /**@name Status functions */ //@{ /// Error codes. enum ErrorCodes { /// Success. NoError = 0, /// Didn't find a match (for regexec). NoMatch, // POSIX regcomp return error codes. (In the order listed in the standard.) /// Invalid pattern. BadPattern, /// Not implemented. CollateError, /// Invalid character class name. BadClassType, /// Trailing backslash. BadEscape, /// Invalid back reference. BadSubReg, /// Unmatched left bracket. UnmatchedBracket, /// Parenthesis imbalance. UnmatchedParen, /// Unmatched #\{\}#. UnmatchedBrace, /// Invalid contents of #\{\}#. BadBR, /// Invalid range end. RangeError, /// Ran out of memory. OutOfMemory, /// No preceding re for repetition op. BadRepitition, /* Error codes we've added. */ /// Premature end. PrematureEnd, /// Compiled pattern bigger than 2^16 bytes. TooBig, /// Unmatched ) or \); not returned from regcomp. UnmatchedRParen, /// Miscellaneous error NotCompiled }; /**Get the error code for the last Compile() or Execute() operation. @return Error code. */ ErrorCodes GetErrorCode() const; /**Get the text description for the error of the last Compile() or Execute() operation. @return Error text string. */ PString GetErrorText() const; //@} /**@name Compile & Execute functions */ //@{ /** Compiler pattern. */ BOOL Compile( const PString & pattern, ///< Pattern to compile int flags = IgnoreCase ///< Pattern match options ); /**Compiler pattern. The pattern is compiled into an internal format to speed subsequent execution of the pattern match algorithm. @return TRUE if successfully compiled. */ BOOL Compile( const char * cpattern, ///< Pattern to compile int flags = IgnoreCase ///< Pattern match options ); /** Execute regular expression */ BOOL Execute( const PString & str, ///< Source string to search PINDEX & start, ///< First match locations int flags = 0 ///< Pattern match options ) const; /** Execute regular expression */ BOOL Execute( const PString & str, ///< Source string to search PINDEX & start, ///< First match locations PINDEX & len, ///< Length of match int flags = 0 ///< Pattern match options ) const; /** Execute regular expression */ BOOL Execute( const char * cstr, ///< Source string to search PINDEX & start, ///< First match locations int flags = 0 ///< Pattern match options ) const; /** Execute regular expression */ BOOL Execute( const char * cstr, ///< Source string to search PINDEX & start, ///< First match locations PINDEX & len, ///< Length of match int flags = 0 ///< Pattern match options ) const; /** Execute regular expression */ BOOL Execute( const PString & str, ///< Source string to search PIntArray & starts, ///< List of match locations int flags = 0 ///< Pattern match options ) const; /** Execute regular expression */ BOOL Execute( const PString & str, ///< Source string to search PIntArray & starts, ///< List of match locations PIntArray & ends, ///< List of match ends int flags = 0 ///< Pattern match options ) const; /** Execute regular expression */ BOOL Execute( const char * cstr, ///< Source string to search PIntArray & starts, ///< List of match locations int flags = 0 ///< Pattern match options ) const; /**Execute regular expression. Execute the pattern match algorithm using the previously compiled pattern. The #starts# array is filled with as many matches as will fit into the array. If the the array size is zero then it is set to at least one for the first match found. The #ends# array is set to teh ending position of each substring whose start is returned in the #starts# array. This will always be set to the same size as that array. @return TRUE if successfully compiled. */ BOOL Execute( const char * cstr, ///< Source string to search PIntArray & starts, ///< List of match locations PIntArray & ends, ///< List of match ends int flags = 0 ///< Pattern match options ) const; //@} /**@name Miscellaneous functions */ //@{ /**Escape all characters in the #str# parameter that have a special meaning within a regular expression. @return String with additional escape ('\') characters. */ static PString EscapeString( const PString & str ///< String to add esacpes to. ); //@} protected: PString patternSaved; int flagsSaved; void * expression; int lastError; }; PString psprintf(const char * cfmt, ...); // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/psync.h0100644000176200056700000000717310341504163017445 0ustar releasepostincr/* * psync.h * * Abstract synchronisation semaphore class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * Copyright (c) 2005 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: psync.h,v $ * Revision 1.4 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.3 2005/11/14 22:29:13 csoutheren * Reverted Wait and Signal to non-const - there is no way we can guarantee that all * descendant classes everywhere will be changed over, so we have to keep the * original API * * Revision 1.2 2005/11/04 06:56:10 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.1 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * */ #ifndef _PSYNC #define _PSYNC #ifdef P_USE_PRAGMA #pragma interface #endif #include class PSync : public PObject { public: /**@name Operations */ //@{ /**Block until the synchronisation object is available */ virtual void Wait() = 0; /**Signal that the synchronisation object is available */ virtual void Signal() = 0; //@} }; /**This class waits for the semaphore on construction and automatically signals the semaphore on destruction. Any descendent of PSemaphore may be used. This is very usefull for constructs such as: \begin{verbatim} void func() { PWaitAndSignal mutexWait(myMutex); if (condition) return; do_something(); if (other_condition) return; do_something_else(); } \end{verbatim} */ class PWaitAndSignal { public: /**Create the semaphore wait instance. This will wait on the specified semaphore using the #Wait()# function before returning. */ inline PWaitAndSignal( const PSync & sem, ///< Semaphore descendent to wait/signal. BOOL wait = TRUE ///< Wait for semaphore before returning. ) : sync((PSync &)sem) { if (wait) sync.Wait(); } /** Signal the semaphore. This will execute the Signal() function on the semaphore that was used in the construction of this instance. */ ~PWaitAndSignal() { sync.Signal(); } protected: PSync & sync; }; #endif // PSYNC pwlib_v1_10_2/include/ptlib/ptime.h0100644000176200056700000004554510341504163017434 0ustar releasepostincr/* * ptime.h * * Time and date class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: ptime.h,v $ * Revision 1.35 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.34 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.33 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.32 2002/12/10 04:45:14 robertj * Added support in PTime for ISO 8601 format. * * Revision 1.31 2002/10/29 00:07:03 robertj * Added IsValid() function to indicate that a PTime is set correctly. * * Revision 1.30 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.29 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.28 2000/04/29 08:14:52 robertj * Added some documentation on string formats that can be parsed into a time. * * Revision 1.27 2000/04/29 04:49:00 robertj * Added microseconds to string output. * * Revision 1.26 2000/04/05 02:50:16 robertj * Added microseconds to PTime class. * * Revision 1.25 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.24 1999/02/16 08:11:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.23 1998/09/23 06:21:15 robertj * Added open source copyright license. * * Revision 1.22 1998/01/04 08:04:27 robertj * Changed gmtime and locatime to use operating system specific functions. * * Revision 1.21 1997/01/12 04:21:40 robertj * Added IsPast() and IsFuture() functions for time comparison. * * Revision 1.20 1996/05/09 12:16:06 robertj * Fixed syntax error found by Mac platform. * * Revision 1.19 1996/02/15 14:47:34 robertj * Fixed bugs in time zone compensation (some in the C library). * * Revision 1.18 1996/02/13 12:58:43 robertj * Changed GetTimeZone() so can specify standard/daylight time. * * Revision 1.17 1996/02/08 12:13:03 robertj * Changed zone parameter in PTime to indicate the time zone as minutes not enum. * Staticised some functions that are system global. * * Revision 1.16 1996/02/03 11:04:52 robertj * Added string constructor for times, parses date/time from string. * * Revision 1.15 1996/01/03 11:09:34 robertj * Added Universal Time and Time Zones to PTime class. * * Revision 1.14 1995/06/17 11:13:10 robertj * Documentation update. * * Revision 1.13 1995/03/14 12:42:18 robertj * Updated documentation to use HTML codes. * * Revision 1.12 1995/01/11 09:45:12 robertj * Documentation and normalisation. * * Revision 1.11 1995/01/09 12:34:05 robertj * Removed unnecesary return value from I/O functions. * * Revision 1.10 1994/08/23 11:32:52 robertj * Oops * * Revision 1.9 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.8 1994/07/27 05:58:07 robertj * Synchronisation. * * Revision 1.7 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.6 1994/01/13 03:16:09 robertj * Added function to return time as a string. * * Revision 1.5 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.4 1993/12/31 06:45:38 robertj * Made inlines optional for debugging purposes. * * Revision 1.3 1993/08/27 18:17:47 robertj * Made time functions common to all platforms. * Moved timer resolution function to PTimeInterval wher it belongs. * * Revision 1.2 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PTIME #define _PTIME #ifdef P_USE_PRAGMA #pragma interface #endif #include /////////////////////////////////////////////////////////////////////////////// // System time and date class class PTimeInterval; /**This class defines an absolute time and date. It has a number of time and date rendering and manipulation functions. It is based on the standard C library functions for time. Thus it is based on a number of seconds since 1 January 1970. */ class PTime : public PObject { PCLASSINFO(PTime, PObject); public: /**@name Construction */ //@{ /** Time Zone special codes. The value for a time zone is usually in minutes from UTC, this enum are special values for specific areas. */ enum { /// Universal Coordinated Time. UTC = 0, /// Greenwich Mean Time, effectively UTC. GMT = UTC, /// Local Time. Local = 9999 }; /**Create a time object instance. This initialises the time with the current time in the current time zone. */ PTime(); /**Create a time object instance. This initialises the time to the specified time. */ PTime( time_t tsecs, ///< Time in seconds since 00:00:00 1/1/70 UTC long usecs = 0 ) { theTime = tsecs; microseconds = usecs; } /**Create a time object instance. This initialises the time to the specified time, parsed from the string. The string may be in many different formats, for example: "5/03/1999 12:34:56" "15/06/1999 12:34:56" "15/06/01 12:34:56 PST" "5/06/02 12:34:56" "5/23/1999 12:34am" "5/23/00 12:34am" "1999/23/04 12:34:56" "Mar 3, 1999 12:34pm" "3 Jul 2004 12:34pm" "12:34:56 5 December 1999" "10 minutes ago" "2 weeks" */ PTime( const PString & str ///< Time and data as a string ); /**Create a time object instance. This initialises the time to the specified time. */ PTime( int second, ///< Second from 0 to 59. int minute, ///< Minute from 0 to 59. int hour, ///< Hour from 0 to 23. int day, ///< Day of month from 1 to 31. int month, ///< Month from 1 to 12. int year, ///< Year from 1970 to 2038 int tz = Local ///< local time or UTC ); //@} /**@name Overrides from class PObject */ //@{ /**Create a copy of the time on the heap. It is the responsibility of the caller to delete the created object. @return pointer to new time. */ PObject * Clone() const; /**Determine the relative rank of the specified times. This ranks the times as you would expect. @return rank of the two times. */ virtual Comparison Compare( const PObject & obj ///< Other time to compare against. ) const; /**Output the time to the stream. This uses the #AsString()# function with the #ShortDateTime# parameter. */ virtual void PrintOn( ostream & strm ///< Stream to output the time to. ) const; /**Input the time from the specified stream. If a parse error occurs the time is set to the current time. The string may be in many different formats, for example: "5/03/1999 12:34:56" "15/06/1999 12:34:56" "15/06/01 12:34:56 PST" "5/06/02 12:34:56" "5/23/1999 12:34am" "5/23/00 12:34am" "1999/23/04 12:34:56" "Mar 3, 1999 12:34pm" "3 Jul 2004 12:34pm" "12:34:56 5 December 1999" "10 minutes ago" "2 weeks" */ virtual void ReadFrom( istream & strm ///< Stream to input the time from. ); //@} /**@name Access functions */ //@{ /**Determine if the timestamp is valid. This will return TRUE if the timestamp can be represented as a time in the epoch. The epoch is the 1st January 1970. In practice this means the time is > 13 hours to allow for time zones. */ BOOL IsValid() const; /**Get the total microseconds since the epoch. The epoch is the 1st January 1970. @return microseconds. */ PInt64 GetTimestamp() const; /**Get the total seconds since the epoch. The epoch is the 1st January 1970. @return seconds. */ time_t GetTimeInSeconds() const; /**Get the microsecond part of the time. @return integer in range 0..999999. */ long GetMicrosecond() const; /**Get the second of the time. @return integer in range 0..59. */ int GetSecond() const; /**Get the minute of the time. @return integer in range 0..59. */ int GetMinute() const; /**Get the hour of the time. @return integer in range 0..23. */ int GetHour() const; /**Get the day of the month of the date. @return integer in range 1..31. */ int GetDay() const; /// Month codes. enum Months { January = 1, February, March, April, May, June, July, August, September, October, November, December }; /**Get the month of the date. @return enum for month. */ Months GetMonth() const; /**Get the year of the date. @return integer in range 1970..2038. */ int GetYear() const; /// Days of the week. enum Weekdays { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; /**Get the day of the week of the date. @return enum for week days with 0=Sun, 1=Mon, ..., 6=Sat. */ Weekdays GetDayOfWeek() const; /**Get the day in the year of the date. @return integer from 1..366. */ int GetDayOfYear() const; /**Determine if the time is in the past or in the future. @return TRUE if time is before the current real time. */ BOOL IsPast() const; /**Determine if the time is in the past or in the future. @return TRUE if time is after the current real time. */ BOOL IsFuture() const; //@} /**@name Time Zone configuration functions */ //@{ /**Get flag indicating daylight savings is current. @return TRUE if daylight savings time is active. */ static BOOL IsDaylightSavings(); /// Flag for time zone adjustment on daylight savings. enum TimeZoneType { StandardTime, DaylightSavings }; /// Get the time zone offset in minutes. static int GetTimeZone(); /**Get the time zone offset in minutes. This is the number of minutes to add to UTC (previously known as GMT) to get the local time. The first form automatically adjusts for daylight savings time, whilst the second form returns the specified time. @return Number of minutes. */ static int GetTimeZone( TimeZoneType type ///< Daylight saving or standard time. ); /**Get the text identifier for the local time zone . @return Time zone identifier string. */ static PString GetTimeZoneString( TimeZoneType type = StandardTime ///< Daylight saving or standard time. ); //@} /**@name Operations */ //@{ /**Add the interval to the time to yield a new time. @return Time altered by the interval. */ PTime operator+( const PTimeInterval & time ///< Time interval to add to the time. ) const; /**Add the interval to the time changing the instance. @return reference to the current time instance. */ PTime & operator+=( const PTimeInterval & time ///< Time interval to add to the time. ); /**Calculate the difference between two times to get a time interval. @return Time intervale difference between the times. */ PTimeInterval operator-( const PTime & time ///< Time to subtract from the time. ) const; /**Subtract the interval from the time to yield a new time. @return Time altered by the interval. */ PTime operator-( const PTimeInterval & time ///< Time interval to subtract from the time. ) const; /**Subtract the interval from the time changing the instance. @return reference to the current time instance. */ PTime & operator-=( const PTimeInterval & time ///< Time interval to subtract from the time. ); //@} /**@name String conversion functions */ //@{ /// Standard time formats for string representations of a time and date. enum TimeFormat { /// Internet standard format. RFC1123, /// Short form ISO standard format. ShortISO8601, /// Long form ISO standard format. LongISO8601, /// Date with weekday, full month names and time with seconds. LongDateTime, /// Date with weekday, full month names and no time. LongDate, /// Time with seconds. LongTime, /// Date with abbreviated month names and time without seconds. MediumDateTime, /// Date with abbreviated month names and no time. MediumDate, /// Date with numeric month name and time without seconds. ShortDateTime, /// Date with numeric month and no time. ShortDate, /// Time without seconds. ShortTime, NumTimeStrings }; /** Convert the time to a string representation. */ PString AsString( TimeFormat formatCode = RFC1123, ///< Standard format for time. int zone = Local ///< Time zone for the time. ) const; /** Convert the time to a string representation. */ PString AsString( const PString & formatStr, ///< Arbitrary format string for time. int zone = Local ///< Time zone for the time. ) const; /* Convert the time to a string using the format code or string as a formatting template. The special characters in the formatting string are: \begin{description} \item[h] hour without leading zero \item[hh] hour with leading zero \item[m] minute without leading zero \item[mm] minute with leading zero \item[s] second without leading zero \item[ss] second with leading zero \item[u] tenths of second \item[uu] hundedths of second with leading zero \item[uuu] millisecond with leading zeros \item[uuuu] microsecond with leading zeros \item[a] the am/pm string \item[w/ww/www] abbreviated day of week name \item[wwww] full day of week name \item[d] day of month without leading zero \item[dd] day of month with leading zero \item[M] month of year without leading zero \item[MM] month of year with leading zero \item[MMM] month of year as abbreviated text \item[MMMM] month of year as full text \item[y/yy] year without century \item[yyy/yyyy] year with century \item[z] the time zone description \end{description} All other characters are copied to the output string unchanged. Note if there is an 'a' character in the string, the hour will be in 12 hour format, otherwise in 24 hour format. */ PString AsString( const char * formatPtr, ///< Arbitrary format C string pointer for time. int zone = Local ///< Time zone for the time. ) const; //@} /**@name Internationalisation functions */ //@{ /**Get the internationalised time separator. @return string for time separator. */ static PString GetTimeSeparator(); /**Get the internationalised time format: AM/PM or 24 hour. @return TRUE is 12 hour, FALSE if 24 hour. */ static BOOL GetTimeAMPM(); /**Get the internationalised time AM string. @return string for AM. */ static PString GetTimeAM(); /**Get the internationalised time PM string. @return string for PM. */ static PString GetTimePM(); /// Flag for returning language dependent string names. enum NameType { FullName, Abbreviated }; /**Get the internationalised day of week day name (0=Sun etc). @return string for week day. */ static PString GetDayName( Weekdays dayOfWeek, ///< Code for day of week. NameType type = FullName ///< Flag for abbreviated or full name. ); /**Get the internationalised date separator. @return string for date separator. */ static PString GetDateSeparator(); /**Get the internationalised month name string (1=Jan etc). @return string for month. */ static PString GetMonthName( Months month, ///< Code for month in year. NameType type = FullName ///< Flag for abbreviated or full name. ); /// Possible orders for date components. enum DateOrder { MonthDayYear, ///< Date is ordered month then day then year. DayMonthYear, ///< Date is ordered day then month then year. YearMonthDay ///< Date is ordered year then day month then day. }; /**Return the internationalised date order. @return code for date ordering. */ static DateOrder GetDateOrder(); //@} static struct tm * os_localtime(const time_t * clock, struct tm * t); static struct tm * os_gmtime(const time_t * clock, struct tm * t); /* Threadsafe version of localtime library call. We could make these calls non-static if we could put the struct tm inside the instance. But these calls are usually made with const objects so that's not possible, and we would require per-thread storage otherwise. Sigh... */ protected: // Member variables /// Number of seconds since 1 January 1970. time_t theTime; long microseconds; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/ptime.h" #else #include "unix/ptlib/ptime.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/qos.h0100644000176200056700000000616710343317552017123 0ustar releasepostincr/* * qos.h * * QOS class used by PWLIB dscp or Windows GQOS implementation. * * Copyright (c) 2003 AliceStreet Ltd * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * Contributor(s): ______________________________________. * * $Log: qos.h,v $ * Revision 1.4 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.3 2005/07/13 11:48:53 csoutheren * Backported QOS changes from isvo branch * * Revision 1.2.10.1 2005/04/25 13:37:10 shorne * Added P_KNOCKOUT_WINSOCK32 to avoid compilation errors * * Revision 1.2 2003/10/27 03:51:38 csoutheren * Added ifdef to disable QoS code on systems that do not support it * * Revision 1.1 2003/10/27 03:20:10 csoutheren * Initial version of QoS implementation * Thanks to Henry Harrison of AliceStreet * * */ #ifndef _PQOS #define _PQOS #ifdef P_USE_PRAGMA #pragma interface #endif #if P_HAS_QOS #ifdef _WIN32 #ifndef P_KNOCKOUT_WINSOCK2 #include #include #ifndef P_KNOCKOUT_QOS #include #endif // KNOCKOUT_QOS #endif // KNOCKOUT_WINSOCK2 #endif // _WIN32 #endif // P_HAS_QOS #ifndef QOS_NOT_SPECIFIED #define QOS_NOT_SPECIFIED 0xFFFFFFFF #endif #ifndef SERVICETYPE #define SERVICETYPE DWORD #endif #ifndef SERVICETYPE_GUARANTEED #define SERVICETYPE_GUARANTEED 0x00000003 #endif #ifndef SERVICETYPE_CONTROLLEDLOAD #define SERVICETYPE_CONTROLLEDLOAD 0x00000002 #endif #ifndef SERVICETYPE_BESTEFFORT #define SERVICETYPE_BESTEFFORT 0x00000001 #endif #define SERVICETYPE_PNOTDEFINED 0xFFFFFFFF class PQoS : public PObject { PCLASSINFO(PQoS, PObject); public: PQoS(); PQoS(DWORD avgBytesPerSec, DWORD winServiceType, int DSCPalternative = -1, DWORD maxFrameBytes = 1500, DWORD peakBytesPerSec = QOS_NOT_SPECIFIED); PQoS(int DSCPvalue); void SetAvgBytesPerSec(DWORD avgBytesPerSec); void SetWinServiceType(DWORD winServiceType); void SetDSCP(int DSCPvalue); void SetMaxFrameBytes(DWORD maxFrameBytes); void SetPeakBytesPerSec(DWORD peakBytesPerSec); DWORD GetTokenRate() const { return tokenRate;} DWORD GetTokenBucketSize() const { return tokenBucketSize;} DWORD GetPeakBandwidth() const { return peakBandwidth;} DWORD GetServiceType() const { return serviceType;} int GetDSCP() const { return dscp;} static void SetDSCPAlternative(DWORD winServiceType, UINT dscp); static char bestEffortDSCP; static char controlledLoadDSCP; static char guaranteedDSCP; protected: int dscp; DWORD tokenRate; DWORD tokenBucketSize; DWORD peakBandwidth; DWORD serviceType; }; #endif // _PQOS pwlib_v1_10_2/include/ptlib/remconn.h0100644000176200056700000002520710341504163017750 0ustar releasepostincr/* * remconn.h * * Remote networking connection class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: remconn.h,v $ * Revision 1.18 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.17 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.16 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.15 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.14 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.13 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.12 1999/02/16 08:11:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.11 1998/09/23 06:21:17 robertj * Added open source copyright license. * * Revision 1.10 1998/07/24 06:58:27 robertj * Added ability to get IP number of RAS connection. * * Revision 1.9 1998/02/03 06:28:46 robertj * Added more error codes. * * Revision 1.8 1998/01/26 00:34:51 robertj * Added parameter to PRemoteConnection to open only if already connected. * Added function to PRemoteConnection to get at OS error code. * * Revision 1.7 1997/04/01 06:00:05 robertj * Added Remove Configuration. * * Revision 1.6 1997/01/12 04:15:11 robertj * Added ability to add/change new connections. * * Revision 1.5 1996/11/04 03:40:43 robertj * Added more debugging for remote drop outs. * * Revision 1.4 1996/08/11 07:03:45 robertj * Changed remote connection to late bind DLL. * * Revision 1.3 1996/04/23 11:33:04 robertj * Added username and password. * * Revision 1.2 1996/03/02 03:09:48 robertj * Added function to get all possible remote access connection names. * * Revision 1.1 1995/12/10 13:04:46 robertj * Initial revision * */ #ifndef _PREMOTECONNECTION #define _PREMOTECONNECTION #ifdef P_USE_PRAGMA #pragma interface #endif #include #ifdef _WIN32 #include #include #endif /** Remote Access Connection class. */ class PRemoteConnection : public PObject { PCLASSINFO(PRemoteConnection, PObject); public: /**@name Construction */ //@{ /// Create a new remote connection. PRemoteConnection(); /**Create a new remote connection. This will initiate the connection using the specified settings. */ PRemoteConnection( const PString & name ///< Name of RAS configuration. ); /// Disconnect remote connection. ~PRemoteConnection(); //@} /**@name Overrides from class PObject */ //@{ /** Compare two connections. @return EqualTo of same RAS connectionconfiguration. */ virtual Comparison Compare( const PObject & obj ///< Another connection instance. ) const; /** Get has value for the connection @return Hash value of the connection name string. */ virtual PINDEX HashFunction() const; //@} /**@name Dial/Hangup functions */ //@{ /** Open the remote connection. */ BOOL Open( BOOL existing = FALSE ///< Flag for open only if already connected. ); /** Open the remote connection. */ BOOL Open( const PString & name, ///< RAS name of of connection to open. BOOL existing = FALSE ///< Flag for open only if already connected. ); /** Open the remote connection. */ BOOL Open( const PString & name, ///< RAS name of of connection to open. const PString & username, ///< Username for remote log in. const PString & password, ///< password for remote log in. BOOL existing = FALSE ///< Flag for open only if already connected. ); /** Close the remote connection. This will hang up/dosconnect the connection, net access will no longer be available to this site. */ void Close(); //@} /**@name Error/Status functions */ //@{ /// Status codes for remote connection. enum Status { /// Connection has not been made and no attempt is being made. Idle, /// Connection is completed and active. Connected, /// Connection is in progress. InProgress, /// Connection failed due to the line being busy. LineBusy, /// Connection failed due to the line havin no dial tone. NoDialTone, /// Connection failed due to the remote not answering. NoAnswer, /// Connection failed due to the port being in use. PortInUse, /// Connection failed due to the RAS setting name/number being incorrect. NoNameOrNumber, /// Connection failed due to insufficient privilege. AccessDenied, /// Connection failed due to a hardware failure. HardwareFailure, /// Connection failed due to a general failure. GeneralFailure, /// Connection was lost after successful establishment. ConnectionLost, /// The Remote Access Operating System support is not installed. NotInstalled, NumStatuses }; /**Get the current status of the RAS connection. @return Status code. */ Status GetStatus() const; /**Get the error code for the last operation. @return Operating system error code. */ DWORD GetErrorCode() const { return osError; } //@} /**@name Information functions */ //@{ /**Get the name of the RAS connection. @return String for IP address, or empty string if none. */ const PString & GetName() const { return remoteName; } /**Get the IP address in dotted decimal form for the RAS connection. @return String for IP address, or empty string if none. */ PString GetAddress(); /**Get an array of names for all of the available remote connections on this system. @return Array of strings for remote connection names. */ static PStringArray GetAvailableNames(); //@} /**@name Configuration functions */ //@{ /// Structure for a RAS configuration. struct Configuration { /// Device name for connection eg /dev/modem PString device; /// Telephone number to call to make the connection. PString phoneNumber; /// IP address of local machine after connection is made. PString ipAddress; /// DNS host on remote site. PString dnsAddress; /// Script name for doing remote log in. PString script; /// Sub-entry number when Multi-link PPP is used. PINDEX subEntries; /// Always establish maximum bandwidth when Multi-link PPP is used. BOOL dialAllSubEntries; }; /**Get the configuration of the specified remote access connection. @return #Connected# if the configuration information was obtained, #NoNameOrNumber# if the particular RAS name does not exist, #NotInstalled# if there is no RAS support in the operating system, #GeneralFailure# on any other error. */ Status GetConfiguration( Configuration & config ///< Configuration of remote connection ); /**Get the configuration of the specified remote access connection. @return #Connected# if the configuration information was obtained, #NoNameOrNumber# if the particular RAS name does not exist, #NotInstalled# if there is no RAS support in the operating system, #GeneralFailure# on any other error. */ static Status GetConfiguration( const PString & name, ///< Remote connection name to get configuration Configuration & config ///< Configuration of remote connection ); /**Set the configuration of the specified remote access connection. @return #Connected# if the configuration information was set, #NoNameOrNumber# if the particular RAS name does not exist, #NotInstalled# if there is no RAS support in the operating system, #GeneralFailure# on any other error. */ Status SetConfiguration( const Configuration & config, ///< Configuration of remote connection BOOL create = FALSE ///< Flag to create connection if not present ); /**Set the configuration of the specified remote access connection. @return #Connected# if the configuration information was set, #NoNameOrNumber# if the particular RAS name does not exist, #NotInstalled# if there is no RAS support in the operating system, #GeneralFailure# on any other error. */ static Status SetConfiguration( const PString & name, ///< Remote connection name to configure const Configuration & config, ///< Configuration of remote connection BOOL create = FALSE ///< Flag to create connection if not present ); /**Remove the specified remote access connection. @return #Connected# if the configuration information was removed, #NoNameOrNumber# if the particular RAS name does not exist, #NotInstalled# if there is no RAS support in the operating system, #GeneralFailure# on any other error. */ static Status RemoveConfiguration( const PString & name ///< Remote connection name to configure ); //@} protected: PString remoteName; PString userName; PString password; DWORD osError; private: PRemoteConnection(const PRemoteConnection &) { } void operator=(const PRemoteConnection &) { } void Construct(); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/remconn.h" #else #include "unix/ptlib/remconn.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/safecoll.h0100644000176200056700000011123410341504163020073 0ustar releasepostincr/* * safecoll.h * * Thread safe collection classes. * * Portable Windows Library * * Copyright (c) 2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: safecoll.h,v $ * Revision 1.15 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.14 2004/11/08 02:34:18 csoutheren * Refactored code to (hopefully) compile on Linux * * Revision 1.13 2004/11/07 12:55:38 rjongbloed * Fixed safe ptr casting so keeps associated collection for use in for loops. * * Revision 1.12 2004/10/28 12:19:44 rjongbloed * Added oeprator! to assure test for NULL that some people use is correct for PSafePtr * * Revision 1.11 2004/10/14 12:31:45 rjongbloed * Added synchronous mode for safe collection RemoveAll() to wait until all objects * have actually been deleted before returning. * * Revision 1.10 2004/10/04 12:54:33 rjongbloed * Added functions for locking an unlocking to "auto-unlock" classes. * * Revision 1.9 2004/08/12 12:37:40 rjongbloed * Fixed bug recently introduced so removes deleted object from deletion list. * Also changed removal list to be correct type. * * Revision 1.8 2004/08/05 12:15:56 rjongbloed * Added classes for auto unlocking read only and read write mutex on * PSafeObject - similar to PWaitAndSIgnal. * Utilised mutable keyword for mutex and improved the constness of functions. * Added DisallowDeleteObjects to safe collections so can have a PSafeObject in * multiple collections. * Added a tempalte function to do casting of PSafePtr to a PSafePtr of a derived * class. * Assured that a PSafeObject present on a collection always increments its * reference count so while in collection it is not deleted. * * Revision 1.7 2002/12/10 07:36:57 robertj * Fixed possible deadlock in PSafeCollection find functions. * * Revision 1.6 2002/10/29 00:06:14 robertj * Changed template classes so things like PSafeList actually creates the * base collection class as well. * Allowed for the PSafeList::Append() to return a locked pointer to the * object just appended. * * Revision 1.5 2002/10/04 08:22:40 robertj * Changed read/write mutex so can be called by same thread without deadlock * removing the need to a lock count in safe pointer. * Added asserts if try and dereference a NULL safe pointer. * Added more documentation on behaviour. * * Revision 1.4 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.3 2002/08/29 06:51:11 robertj * Added optimisiation, separate mutex for toBeRemoved list. * * Revision 1.2 2002/05/06 00:44:45 robertj * Made the lock/unlock read only const so can be used in const functions. * * Revision 1.1 2002/05/01 04:16:43 robertj * Added thread safe collection classes. * */ #ifndef _SAFE_COLLECTION_H #define _SAFE_COLLECTION_H #ifdef P_USE_PRAGMA #pragma interface #endif /** This class defines a thread-safe object in a collection. This is part of a set of classes to solve the general problem of a collection (eg a PList or PDictionary) of objects that needs to be a made thread safe. Any thread can add, read, write or remove an object with both the object and the database of objects itself kept thread safe. The act of adding a new object is simple and only requires locking the collection itself during the add. Locating an object is more complicated. The obvious lock on the collection is made for the initial search. But we wish to have the full collection lock for as short a period as possible (for performance reasons) so we lock the individual object and release the lock on the collection. A simple mutex on the object however is very dangerous as it can be (and should be able to be!) locked from other threads independently of the collection. If one of these threads subsequently needs to get at the collection (eg it wants to remove the object) then we will have a deadlock. Also, to avoid a race condition with the object begin deleted, the objects lock must be made while the collection lock is set. The performance gains are then lost as if something has the object locked for a long time, then another object wanting that object will actually lock the collection for a long time as well. So, an object has 4 states: unused, referenced, reading & writing. With the additional rider of "being removed". This flag prevents new locks from being acquired and waits for all locks to be relinquished before removing the object from the system. This prevents numerous race conditions and accesses to deleted objects. The "unused" state indicates the object exists in the collection but no threads anywhere is using it. It may be moved to any state by any thread while in this state. An object cannot be deleted (ie memory deallocated) until it is unused. The "referenced" state indicates that a thread has a reference (eg pointer) to the object and it should not be deleted. It may be locked for reading or writing at any time thereafter. The "reading" state is a form of lock that indicates that a thread is reading from the object but not writing. Multiple threads can obtain a read lock. Note the read lock has an implicit "reference" state in it. The "writing" state is a form of lock where the data in the object may be changed. It can only be obtained exclusively and if there are no read locks present. Again there is an implicit reference state in this lock. Note that threads going to the "referenced" state may do so regardless of the read or write locks present. Access to safe objects (especially when in a safe collection) is recommended to by the PSafePtr<> class which will manage reference counting and the automatic unlocking of objects ones the pointer goes out of scope. It may also be used to lock each object of a collection in turn. The enumeration */ class PSafeObject : public PObject { PCLASSINFO(PSafeObject, PObject); public: /**@name Construction */ //@{ /**Create a thread safe object. */ PSafeObject(); //@} /**@name Operations */ //@{ /**Increment the reference count for object. This will guarantee that the object is not deleted (ie memory deallocated) as the caller thread is using the object, but not necessarily at this time locking it. If the function returns FALSE, then the object has been flagged for deletion and the calling thread should immediately cease using the object. A typical use of this would be when an entity (eg a thread) has a pointer to the object but is not currenty accessing the objects data. The LockXXX functions may be called independetly of the reference system and the pointer beiong used for the LockXXX call is guaranteed to be usable. It is recommended that the PSafePtr<> class is used to manage this rather than the application calling this function directly. */ BOOL SafeReference(); /**Decrement the reference count for object. This indicates that the thread no longer has anything to do with the object and it may be deleted (ie memory deallocated). It is recommended that the PSafePtr<> class is used to manage this rather than the application calling this function directly. */ void SafeDereference(); /**Lock the object for Read Only access. This will lock the object in read only mode. Multiple threads may lock the object read only, but only one thread can lock for read/write. Also, no read only threads can be present for the read/write lock to occur and no read/write lock can be present for any read only locks to occur. If the function returns FALSE, then the object has been flagged for deletion and the calling thread should immediately cease use of the object, possibly executing the SafeDereference() function to remove any references it may have acquired. It is expected that the caller had already called the SafeReference() function (directly or implicitly) before calling this function. It is recommended that the PSafePtr<> class is used to automatically manage the reference counting and locking of objects. */ BOOL LockReadOnly() const; /**Release the read only lock on an object. Unlock the read only mutex that a thread had obtained. Multiple threads may lock the object read only, but only one thread can lock for read/write. Also, no read only threads can be present for the read/write lock to occur and no read/write lock can be present for any read only locks to occur. It is recommended that the PSafePtr<> class is used to automatically manage the reference counting and unlocking of objects. */ void UnlockReadOnly() const; /**Lock the object for Read/Write access. This will lock the object in read/write mode. Multiple threads may lock the object read only, but only one thread can lock for read/write. Also no read only threads can be present for the read/write lock to occur and no read/write lock can be present for any read only locks to occur. If the function returns FALSE, then the object has been flagged for deletion and the calling thread should immediately cease use of the object, possibly executing the SafeDereference() function to remove any references it may have acquired. It is expected that the caller had already called the SafeReference() function (directly or implicitly) before calling this function. It is recommended that the PSafePtr<> class is used to automatically manage the reference counting and locking of objects. */ BOOL LockReadWrite(); /**Release the read/write lock on an object. Unlock the read/write mutex that a thread had obtained. Multiple threads may lock the object read only, but only one thread can lock for read/write. Also, no read only threads can be present for the read/write lock to occur and no read/write lock can be present for any read only locks to occur. It is recommended that the PSafePtr<> class is used to automatically manage the reference counting and unlocking of objects. */ void UnlockReadWrite(); /**Set the removed flag. This flags the object as beeing removed but does not physically delete the memory being used by it. The SafelyCanBeDeleted() can then be used to determine when all references to the object have been released so it may be safely deleted. This is typically used by the PSafeCollection class and is not expected to be used directly by an application. */ void SafeRemove(); /**Determine if the object can be safely deleted. This determines if the object has been flagged for deletion and all references to it have been released. This is typically used by the PSafeCollection class and is not expected to be used directly by an application. */ BOOL SafelyCanBeDeleted() const; //@} protected: mutable PMutex safetyMutex; unsigned safeReferenceCount; BOOL safelyBeingRemoved; mutable PReadWriteMutex safeInUseFlag; }; /**Lock a PSafeObject for read only and automatically unlock it when go out of scope. */ class PSafeLockReadOnly { public: PSafeLockReadOnly(const PSafeObject & object); ~PSafeLockReadOnly(); BOOL Lock(); void Unlock(); BOOL IsLocked() const { return locked; } bool operator!() const { return !locked; } protected: PSafeObject & safeObject; BOOL locked; }; /**Lock a PSafeObject for read/write and automatically unlock it when go out of scope. */ class PSafeLockReadWrite { public: PSafeLockReadWrite(const PSafeObject & object); ~PSafeLockReadWrite(); BOOL Lock(); void Unlock(); BOOL IsLocked() const { return locked; } bool operator!() const { return !locked; } protected: PSafeObject & safeObject; BOOL locked; }; /** This class defines a thread-safe collection of objects. This class is a wrapper around a standard PCollection class which allows only safe, mutexed, access to the collection. This is part of a set of classes to solve the general problem of a collection (eg a PList or PDictionary) of objects that needs to be a made thread safe. Any thread can add, read, write or remove an object with both the object and the database of objects itself kept thread safe. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ class PSafeCollection : public PObject { PCLASSINFO(PSafeCollection, PObject); public: /**@name Construction */ //@{ /**Create a thread safe collection of objects. Note the collection is automatically deleted on destruction. */ PSafeCollection( PCollection * collection ///< Actual collection of objects ); /**Destroy the thread safe collection. The will delete the collection object provided in the constructor. */ ~PSafeCollection(); //@} /**@name Operations */ //@{ protected: /**Remove an object to the collection. This function removes the object from the collection itself, but does not actually delete the object. It simply moves the object to a list of objects to be garbage collected at a later time. As for Append() full mutual exclusion locking on the collection itself is maintained. */ virtual BOOL SafeRemove( PSafeObject * obj ///< Object to remove from collection ); /**Remove an object to the collection. This function removes the object from the collection itself, but does not actually delete the object. It simply moves the object to a list of objects to be garbage collected at a later time. As for Append() full mutual exclusion locking on the collection itself is maintained. */ virtual BOOL SafeRemoveAt( PINDEX idx ///< Object index to remove ); public: /**Remove all objects in collection. */ virtual void RemoveAll( BOOL synchronous = FALSE ///< Wait till objects are deleted before returning ); /**Disallow the automatic delete any objects that have been removed. Objects are simply removed from the collection and not marked for deletion using PSafeObject::SafeRemove() and DeleteObject(). */ void AllowDeleteObjects( BOOL yes = TRUE ///< New value for flag for deleting objects ) { deleteObjects = yes; } /**Disallow the automatic delete any objects that have been removed. Objects are simply removed from the collection and not marked for deletion using PSafeObject::SafeRemove() and DeleteObject(). */ void DisallowDeleteObjects() { deleteObjects = FALSE; } /**Delete any objects that have been removed. Returns TRUE if all objects in the collection have been removed and their pending deletions carried out. */ virtual BOOL DeleteObjectsToBeRemoved(); /**Delete an objects that has been removed. */ virtual void DeleteObject(PObject * object) const; /**Start a timer to automatically call DeleteObjectsToBeRemoved(). */ virtual void SetAutoDeleteObjects(); /**Get the current size of the collection. Note that usefulness of this function is limited as it is merely an instantaneous snapshot of the state of the collection. */ PINDEX GetSize() const; /**Determine if the collection is empty. Note that usefulness of this function is limited as it is merely an instantaneous snapshot of the state of the collection. */ BOOL IsEmpty() const { return GetSize() == 0; } /**Get the mutex for the collection. */ const PMutex & GetMutex() const { return collectionMutex; } //@} protected: void SafeRemoveObject(PSafeObject * obj); PDECLARE_NOTIFIER(PTimer, PSafeCollection, DeleteObjectsTimeout); PCollection * collection; mutable PMutex collectionMutex; BOOL deleteObjects; PList toBeRemoved; PMutex removalMutex; PTimer deleteObjectsTimer; friend class PSafePtrBase; }; enum PSafetyMode { PSafeReference, PSafeReadOnly, PSafeReadWrite }; /** This class defines a base class for thread-safe pointer to an object. This is part of a set of classes to solve the general problem of a collection (eg a PList or PDictionary) of objects that needs to be a made thread safe. Any thread can add, read, write or remove an object with both the object and the database of objects itself kept thread safe. NOTE: the PSafePtr will allow safe and mutexed access to objects but is not thread safe itself! You should not share PSafePtr instances across threads. You can assign a PSafePtr to another instance across a thread boundary provided it is on a reference and no read only or read/write locks are present. See the PSafeObject class for more details. */ class PSafePtrBase : public PObject { PCLASSINFO(PSafePtrBase, PObject); /**@name Construction */ //@{ protected: /**Create a new pointer to a PSafeObject. An optional locking mode may be provided to lock the object for reading or writing and automatically unlock it on destruction. Note that this version is not associated with a collection so the ++ and -- operators will not work. */ PSafePtrBase( PSafeObject * obj = NULL, ///< Physical object to point to. PSafetyMode mode = PSafeReference ///< Locking mode for the object ); /**Create a new pointer to a PSafeObject. An optional locking mode may be provided to lock the object for reading or writing and automatically unlock it on destruction. The idx'th entry of the collection is pointed to by this object. If the idx is beyond the size of the collection, the pointer is NULL. */ PSafePtrBase( const PSafeCollection & safeCollection, ///< Collection pointer will enumerate PSafetyMode mode, ///< Locking mode for the object PINDEX idx ///< Index into collection to point to ); /**Create a new pointer to a PSafeObject. An optional locking mode may be provided to lock the object for reading or writing and automatically unlock it on destruction. The obj parameter is only set if it contained in the collection, otherwise the pointer is NULL. */ PSafePtrBase( const PSafeCollection & safeCollection, ///< Collection pointer will enumerate PSafetyMode mode, ///< Locking mode for the object PSafeObject * obj ///< Inital object in collection to point to ); /**Copy the pointer to the PSafeObject. This will create a copy of the pointer with the same locking mode and lock on the PSafeObject. It will also increment the reference count on the PSafeObject as well. */ PSafePtrBase( const PSafePtrBase & enumerator ///< Pointer to copy ); public: /**Unlock and dereference the PSafeObject this is pointing to. */ ~PSafePtrBase(); //@} /**@name Overrides from class PObject */ //@{ /**Compare the pointers. Note this is not a value comparison and will only return EqualTo if the two PSafePtrBase instances are pointing to the same instance. */ Comparison Compare( const PObject & obj ///< Other instance to compare against ) const; //@} /**@name Operations */ //@{ /**Return TRUE if pointer is NULL. */ bool operator!() const { return currentObject == NULL; } /**Get the locking mode used by this pointer. */ PSafetyMode GetSafetyMode() const { return lockMode; } /**Change the locking mode used by this pointer. */ BOOL SetSafetyMode( PSafetyMode mode ///< New locking mode ); /**Get the associated collection this pointer may be contained in. */ const PSafeCollection * GetCollection() const { return collection; } //@} void Assign(const PSafePtrBase & ptr); void Assign(const PSafeCollection & safeCollection); void Assign(PSafeObject * obj); void Assign(PINDEX idx); protected: void Next(); void Previous(); enum EnterSafetyModeOption { WithReference, AlreadyReferenced }; BOOL EnterSafetyMode(EnterSafetyModeOption ref); enum ExitSafetyModeOption { WithDereference, NoDereference }; void ExitSafetyMode(ExitSafetyModeOption ref); protected: const PSafeCollection * collection; PSafeObject * currentObject; PSafetyMode lockMode; }; /** This class defines a thread-safe enumeration of object in a collection. This is part of a set of classes to solve the general problem of a collection (eg a PList or PDictionary) of objects that needs to be a made thread safe. Any thread can add, read, write or remove an object with both the object and the database of objects itself kept thread safe. There are two modes of safe pointer, one that is enumerating a collection and one that is independent of the collection that the safe object is in. There are some subtle semantics that must be observed in each of these two modes especially when switching from one to the other. NOTE: the PSafePtr will allow safe and mutexed access to objects but is not thread safe itself! You should not share PSafePtr instances across threads. You can assign a PSafePtr to another instance across a thread boundary provided it is on a reference and no read only or read/write locks are present. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafePtr : public PSafePtrBase { PCLASSINFO(PSafePtr, PSafePtrBase); public: /**@name Construction */ //@{ /**Create a new pointer to a PSafeObject. An optional locking mode may be provided to lock the object for reading or writing and automatically unlock it on destruction. Note that this version is not associated with a collection so the ++ and -- operators will not work. */ PSafePtr( T * obj = NULL, ///< Physical object to point to. PSafetyMode mode = PSafeReference ///< Locking mode for the object ) : PSafePtrBase(obj, mode) { } /**Create a new pointer to a PSafeObject. An optional locking mode may be provided to lock the object for reading or writing and automatically unlock it on destruction. The idx'th entry of the collection is pointed to by this object. If the idx is beyond the size of the collection, the pointer is NULL. */ PSafePtr( const PSafeCollection & safeCollection, ///< Collection pointer will enumerate PSafetyMode mode = PSafeReadWrite, ///< Locking mode for the object PINDEX idx = 0 ///< Index into collection to point to ) : PSafePtrBase(safeCollection, mode, idx) { } /**Create a new pointer to a PSafeObject. An optional locking mode may be provided to lock the object for reading or writing and automatically unlock it on destruction. The obj parameter is only set if it contained in the collection, otherwise the pointer is NULL. */ PSafePtr( const PSafeCollection & safeCollection, ///< Collection pointer will enumerate PSafetyMode mode, ///< Locking mode for the object PSafeObject * obj ///< Inital object in collection to point to ) : PSafePtrBase(safeCollection, mode, obj) { } /**Copy the pointer to the PSafeObject. This will create a copy of the pointer with the same locking mode and lock on the PSafeObject. It will also increment the reference count on the PSafeObject as well. */ PSafePtr( const PSafePtr & ptr ///< Pointer to copy ) : PSafePtrBase(ptr) { } /**Copy the pointer to the PSafeObject. This will create a copy of the pointer with the same locking mode and lock on the PSafeObject. It will also increment the reference count on the PSafeObject as well. */ PSafePtr & operator=(const PSafePtr & ptr) { Assign(ptr); return *this; } /**Start an enumerated PSafeObject. This will create a read/write locked reference to teh first element in the collection. */ PSafePtr & operator=(const PSafeCollection & safeCollection) { Assign(safeCollection); return *this; } /**Set the new pointer to a PSafeObject. This will set the pointer to the new object. The old object pointed to will be unlocked and dereferenced and the new object referenced. If the safe pointer has an associated collection and the new object is in that collection, then the object is set to the same locking mode as the previous pointer value. This, in effect, jumps the enumeration of a collection to the specifed object. If the safe pointer has no associated collection or the object is not in the associated collection, then the object is always only referenced and there is no read only or read/write lock done. In addition any associated collection is removed so this becomes a non enumerating safe pointer. */ PSafePtr & operator=(T * obj) { Assign(obj); return *this; } /**Set the new pointer to a collection index. This will set the pointer to the new object to the index entry in the colelction that the pointer was created with. The old object pointed to will be unlocked and dereferenced and the new object referenced and set to the same locking mode as the previous pointer value. If the idx'th object is not in the collection, then the safe pointer is set to NULL. */ PSafePtr & operator=(PINDEX idx) { Assign(idx); return *this; } //@} /**@name Operations */ //@{ /**Return the physical pointer to the object. */ operator T*() const { return (T *)currentObject; } /**Return the physical pointer to the object. */ T & operator*() const { return *(T *)PAssertNULL(currentObject); } /**Allow access to the physical object the pointer is pointing to. */ T * operator->() const { return (T *)PAssertNULL(currentObject); } /**Post-increment the pointer. This requires that the pointer has been created with a PSafeCollection object so that it can enumerate the collection. */ T * operator++(int) { T * previous = (T *)currentObject; Next(); return previous; } /**Pre-increment the pointer. This requires that the pointer has been created with a PSafeCollection object so that it can enumerate the collection. */ T * operator++() { Next(); return (T *)currentObject; } /**Post-decrement the pointer. This requires that the pointer has been created with a PSafeCollection object so that it can enumerate the collection. */ T * operator--(int) { T * previous = (T *)currentObject; Previous(); return previous; } /**Pre-decrement the pointer. This requires that the pointer has been created with a PSafeCollection object so that it can enumerate the collection. */ T * operator--() { Previous(); return (T *)currentObject; } //@} /**Cast the pointer to a different type. The pointer being cast to MUST be a derived class or NULL is returned. */ /* template static PSafePtr DownCast(const PSafePtr & oldPtr) { PSafePtr newPtr; Base * realPtr = oldPtr; if (realPtr != NULL && PIsDescendant(realPtr, T)) newPtr.Assign(oldPtr); return newPtr; } */ }; /**Cast the pointer to a different type. The pointer being cast to MUST be a derived class or NULL is returned. */ template PSafePtr PSafePtrCast(const PSafePtr & oldPtr) { // return PSafePtr::DownCast(oldPtr); PSafePtr newPtr; Base * realPtr = oldPtr; if (realPtr != NULL && PIsDescendant(realPtr, Derived)) newPtr.Assign(oldPtr); return newPtr; } /** This class defines a thread-safe collection of objects. This is part of a set of classes to solve the general problem of a collection (eg a PList or PDictionary) of objects that needs to be a made thread safe. Any thread can add, read, write or remove an object with both the object and the database of objects itself kept thread safe. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafeColl : public PSafeCollection { PCLASSINFO(PSafeColl, PSafeCollection); public: /**@name Construction */ //@{ /**Create a safe list collection wrapper around the real collection. */ PSafeColl() : PSafeCollection(new Coll) { } //@} /**@name Operations */ //@{ /**Add an object to the collection. This uses the PCollection::Append() function to add the object to the collection, with full mutual exclusion locking on the collection. */ virtual PSafePtr Append( Base * obj, ///< Object to add to safe collection. PSafetyMode mode = PSafeReference ) { PWaitAndSignal mutex(collectionMutex); if (!obj->SafeReference()) return NULL; return PSafePtr(*this, mode, collection->Append(obj)); } /**Remove an object to the collection. This function removes the object from the collection itself, but does not actually delete the object. It simply moves the object to a list of objects to be garbage collected at a later time. As for Append() full mutual exclusion locking on the collection itself is maintained. */ virtual BOOL Remove( Base * obj ///< Object to remove from safe collection ) { return SafeRemove(obj); } /**Remove an object to the collection. This function removes the object from the collection itself, but does not actually delete the object. It simply moves the object to a list of objects to be garbage collected at a later time. As for Append() full mutual exclusion locking on the collection itself is maintained. */ virtual BOOL RemoveAt( PINDEX idx ///< Index to remove ) { return SafeRemoveAt(idx); } /**Get the instance in the collection of the index. The returned safe pointer will increment the reference count on the PSafeObject and lock to the object in the mode specified. The lock will remain until the PSafePtr goes out of scope. */ virtual PSafePtr GetAt( PINDEX idx, PSafetyMode mode = PSafeReadWrite ) { return PSafePtr(*this, mode, idx); } /**Find the instance in the collection of an object with the same value. The returned safe pointer will increment the reference count on the PSafeObject and lock to the object in the mode specified. The lock will remain until the PSafePtr goes out of scope. */ virtual PSafePtr FindWithLock( const Base & value, PSafetyMode mode = PSafeReadWrite ) { collectionMutex.Wait(); PSafePtr ptr(*this, PSafeReference, collection->GetValuesIndex(value)); collectionMutex.Signal(); ptr.SetSafetyMode(mode); return ptr; } //@} }; /** This class defines a thread-safe array of objects. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafeArray : public PSafeColl, Base> { }; /** This class defines a thread-safe list of objects. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafeList : public PSafeColl, Base> { }; /** This class defines a thread-safe sorted array of objects. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafeSortedList : public PSafeColl, Base> { }; /** This class defines a thread-safe dictionary of objects. This is part of a set of classes to solve the general problem of a collection (eg a PList or PDictionary) of objects that needs to be a made thread safe. Any thread can add, read, write or remove an object with both the object and the database of objects itself kept thread safe. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafeDictionaryBase : public PSafeCollection { PCLASSINFO(PSafeDictionaryBase, PSafeCollection); public: /**@name Construction */ //@{ /**Create a safe dictionary wrapper around the real collection. */ PSafeDictionaryBase() : PSafeCollection(new Coll) { } //@} /**@name Operations */ //@{ /**Add an object to the collection. This uses the PCollection::Append() function to add the object to the collection, with full mutual exclusion locking on the collection. */ virtual void SetAt(const Key & key, Base * obj) { collectionMutex.Wait(); SafeRemove(((Coll *)collection)->GetAt(key)); if (obj->SafeReference()) ((Coll *)collection)->SetAt(key, obj); collectionMutex.Signal(); } /**Remove an object to the collection. This function removes the object from the collection itself, but does not actually delete the object. It simply moves the object to a list of objects to be garbage collected at a later time. As for Append() full mutual exclusion locking on the collection itself is maintained. */ virtual BOOL RemoveAt( const Key & key ///< Key to fund object to delete ) { PWaitAndSignal mutex(collectionMutex); return SafeRemove(((Coll *)collection)->GetAt(key)); } /**Determine of the dictionary contains an entry for the key. */ virtual BOOL Contains( const Key & key ) { PWaitAndSignal lock(collectionMutex); return ((Coll *)collection)->Contains(key); } /**Get the instance in the collection of the index. The returned safe pointer will increment the reference count on the PSafeObject and lock to the object in the mode specified. The lock will remain until the PSafePtr goes out of scope. */ virtual PSafePtr GetAt( PINDEX idx, PSafetyMode mode = PSafeReadWrite ) { return PSafePtr(*this, mode, idx); } /**Find the instance in the collection of an object with the same value. The returned safe pointer will increment the reference count on the PSafeObject and lock to the object in the mode specified. The lock will remain until the PSafePtr goes out of scope. */ virtual PSafePtr FindWithLock( const Key & key, PSafetyMode mode = PSafeReadWrite ) { collectionMutex.Wait(); PSafePtr ptr(*this, PSafeReference, ((Coll *)collection)->GetAt(key)); collectionMutex.Signal(); ptr.SetSafetyMode(mode); return ptr; } //@} }; /** This class defines a thread-safe array of objects. See the PSafeObject class for more details. Especially in regard to enumeration of collections. */ template class PSafeDictionary : public PSafeDictionaryBase, Key, Base> { }; #endif // _SAFE_COLLECTION_H ///////////////////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/semaphor.h0100644000176200056700000001637010341504163020126 0ustar releasepostincr/* * semaphor.h * * Thread synchronisation semaphore class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: semaphor.h,v $ * Revision 1.21 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.20 2005/11/14 22:29:13 csoutheren * Reverted Wait and Signal to non-const - there is no way we can guarantee that all * descendant classes everywhere will be changed over, so we have to keep the * original API * * Revision 1.19 2005/11/04 06:34:20 csoutheren * Added new class PSync as abstract base class for all mutex/sempahore classes * Changed PCriticalSection to use Wait/Signal rather than Enter/Leave * Changed Wait/Signal to be const member functions * Renamed PMutex to PTimedMutex and made PMutex synonym for PCriticalSection. * This allows use of very efficient mutex primitives in 99% of cases where timed waits * are not needed * * Revision 1.18 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.17 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.16 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.15 2002/01/23 04:26:36 craigs * Added copy constructors for PSemaphore, PMutex and PSyncPoint to allow * use of default copy constructors for objects containing instances of * these classes * * Revision 1.14 2001/11/23 00:55:18 robertj * Changed PWaitAndSignal so works inside const functions. * * Revision 1.13 2001/06/01 04:00:21 yurik * Removed dependency on obsolete function * * Revision 1.12 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.11 2001/04/23 00:34:29 robertj * Added ability for PWaitAndSignal to not wait on semaphore. * * Revision 1.10 2001/01/27 23:40:09 yurik * WinCE port-related - CreateEvent used instead of CreateSemaphore * * Revision 1.9 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.8 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.7 1999/02/16 08:11:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.6 1998/11/19 05:17:37 robertj * Added PWaitAndSignal class for easier mutexing. * * Revision 1.5 1998/09/23 06:21:19 robertj * Added open source copyright license. * * Revision 1.4 1998/03/20 03:16:11 robertj * Added special classes for specific sepahores, PMutex and PSyncPoint. * * Revision 1.3 1995/12/10 11:34:50 robertj * Fixed incorrect order of parameters in semaphore constructor. * * Revision 1.2 1995/11/21 11:49:42 robertj * Added timeout on semaphore wait. * * Revision 1.1 1995/08/01 21:41:24 robertj * Initial revision * */ #ifndef _PSEMAPHORE #define _PSEMAPHORE #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /**This class defines a thread synchonisation object. This is in the form of a integer semaphore. The semaphore has a count and a maximum value. The various combinations of count and usage of the #Wait()# and #Signal()# functions determine the type of synchronisation mechanism to be employed. The #Wait()# operation is that if the semaphore count is > 0, decrement the semaphore and return. If it is = 0 then wait (block). The #Signal()# operation is that if there are waiting threads then unblock the first one that was blocked. If no waiting threads and the count is less than the maximum then increment the semaphore. The most common is to create a mutual exclusion zone. A mutex is where a piece of code or data cannot be accessed by more than one thread at a time. To prevent this the PSemaphore is used in the following manner: \begin{verbatim} PSemaphore mutex(1, 1); // Maximum value of 1 and initial value of 1. ... mutex.Wait(); ... critical section - only one thread at a time here. mutex.Signal(); ... \end{verbatim} The first thread will pass through the #Wait()# function, a second thread will block on that function until the first calls the #Signal()# function, releasing the second thread. */ class PSemaphore : public PSync { PCLASSINFO(PSemaphore, PSync); public: /**@name Construction */ //@{ /**Create a new semaphore with maximum count and initial value specified. If the initial value is larger than the maximum value then is is set to the maximum value. */ PSemaphore( unsigned initial, ///< Initial value for semaphore count. unsigned maximum ///< Maximum value for semaphore count. ); /** Create a new Semaphore with the same initial and maximum values as the original */ PSemaphore(const PSemaphore &); /**Destroy the semaphore. This will assert if there are still waiting threads on the semaphore. */ ~PSemaphore(); //@} /**@name Operations */ //@{ /**If the semaphore count is > 0, decrement the semaphore and return. If if is = 0 then wait (block). */ virtual void Wait(); /**If the semaphore count is > 0, decrement the semaphore and return. If if is = 0 then wait (block) for the specified amount of time. @return TRUE if semaphore was signalled, FALSE if timed out. */ virtual BOOL Wait( const PTimeInterval & timeout // Amount of time to wait for semaphore. ); /**If there are waiting (blocked) threads then unblock the first one that was blocked. If no waiting threads and the count is less than the maximum then increment the semaphore. */ virtual void Signal(); /**Determine if the semaphore would block if the #Wait()# function were called. @return TRUE if semaphore will block when Wait() is called. */ virtual BOOL WillBlock() const; //@} private: PSemaphore & operator=(const PSemaphore &) { return *this; } // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/semaphor.h" #else #include "unix/ptlib/semaphor.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/serchan.h0100644000176200056700000003127210341504163017731 0ustar releasepostincr/* * serchan.h * * Asynchronous Serial I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: serchan.h,v $ * Revision 1.18 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.17 2005/02/20 21:18:30 dereksmithies * Fix documentation typos. * * Revision 1.16 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.15 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.14 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.13 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.12 1999/03/09 02:59:50 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.11 1999/02/16 08:11:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.10 1998/09/23 06:21:21 robertj * Added open source copyright license. * * Revision 1.9 1995/07/31 12:15:46 robertj * Removed PContainer from PChannel ancestor. * * Revision 1.8 1995/06/17 11:13:18 robertj * Documentation update. * * Revision 1.7 1995/03/14 12:42:33 robertj * Updated documentation to use HTML codes. * * Revision 1.6 1995/01/14 06:19:37 robertj * Documentation * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/07/17 10:46:06 robertj * Moved data to PChannel class. * * Revision 1.2 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.1 1994/04/20 12:17:44 robertj * Initial revision * */ #ifndef _PSERIALCHANNEL #define _PSERIALCHANNEL #ifdef P_USE_PRAGMA #pragma interface #endif class PConfig; /////////////////////////////////////////////////////////////////////////////// // Serial Channel /**This class defines an I/O channel that communicates via a serial port. This is usually an RS-232 port. */ class PSerialChannel : public PChannel { PCLASSINFO(PSerialChannel, PChannel); public: /**@name Construction */ //@{ /// Create a new serial channel object, but do not open it. PSerialChannel(); /// Configuration of serial port parity options. enum Parity { /// Use the default parity, ie do not change it. DefaultParity, /// Set the port for no parity bit. NoParity, /// Set the port to generate parity and make it even. EvenParity, /// Set the port to generate parity and make it odd. OddParity, /// Set the port parity bit to mark only. MarkParity, /// Set the port parity bit to space only. SpaceParity }; /// Configuration of serial port flow control options. enum FlowControl { /// Use the default flow control, ie do not change it. DefaultFlowControl, /// Set the port for no flow control. NoFlowControl, /// Set the port for software or XON/XOFF flow control. XonXoff, /// Set the port for hardware or RTS/CTS flow control. RtsCts }; /**Create a serial channal. The channel is opened it on the specified port and with the specified attributes. */ PSerialChannel( /**The name of the serial port to connect to. This is a platform dependent string and woiuld rarely be a literal. The static function #GetPortNames()# can be used to find the platforms serial ports. */ const PString & port, /**Serial port speed or baud rate. The actual values possible here are platform dependent, but the standard value of 300, 1200, 2400, 4800, 9600, 19200, 38400 always be legal. */ DWORD speed = 0, /**Number of data bits for serial port. The actual values possible here are platform dependent, but 7 and 8 should always be legal. */ BYTE data = 0, /**Parity for serial port. The actual values possible here are platform dependent, but #NoParity#, #OddParity# and #EvenParity# should always be legal. */ Parity parity = DefaultParity, /**Number of stop bits for serial port. The actual values possible here are platform dependent, but 1 and 2 should always be legal. */ BYTE stop = 0, /**Flow control for data from the remote system into this conputer.*/ FlowControl inputFlow = DefaultFlowControl, /**Flow control for data from this conputer out to remote system. */ FlowControl outputFlow = DefaultFlowControl ); /**Create a serial channal. The channel is opened using attributes obtained from standard variables in the configuration file. Note that it assumed that the correct configuration file section is already set. */ PSerialChannel( PConfig & cfg ///< Configuration file to read serial port attributes from. ); /// Close the serial channel on destruction. ~PSerialChannel(); //@} /**@name Open functions */ //@{ /**Open a serial channal. The channel is opened it on the specified port and with the specified attributes. */ virtual BOOL Open( /**The name of the serial port to connect to. This is a platform dependent string and woiuld rarely be a literal. The static function #GetPortNames()# can be used to find the platforms serial ports. */ const PString & port, /**Serial port speed or baud rate. The actual values possible here are platform dependent, but the standard value of 300, 1200, 2400, 4800, 9600, 19200, 38400 always be legal. */ DWORD speed = 0, /**Number of data bits for serial port. The actual values possible here are platform dependent, but 7 and 8 should always be legal. */ BYTE data = 0, /**Parity for serial port. The actual values possible here are platform dependent, but #NoParity#, #OddParity# and #EvenParity# should always be legal. */ Parity parity = DefaultParity, /**Number of stop bits for serial port. The actual values possible here are platform dependent, but 1 and 2 should always be legal. */ BYTE stop = 0, /**Flow control for data from the remote system into this conputer.*/ FlowControl inputFlow = DefaultFlowControl, /**Flow control for data from this conputer out to remote system. */ FlowControl outputFlow = DefaultFlowControl ); /**Open a serial channal. The channel is opened using attributes obtained from standard variables in the configuration file. Note that it assumed that the correct configuration file section is already set. */ virtual BOOL Open( PConfig & cfg ///< Configuration file to read serial port attributes from. ); /**Get a list of the available serial ports. This returns a set of platform dependent strings which describe the serial ports of the computer. For example under unix it may be "ttyS0", under MS-DOS or NT it would be "COM1" and for the Macintosh it could be "Modem". @return list of strings for possible serial ports. */ static PStringList GetPortNames(); //@} /**@name Configuration functions */ //@{ /**Set the speed (baud rate) of the serial channel. @return TRUE if the change was successfully made. */ BOOL SetSpeed( DWORD speed ///< New speed for serial channel. ); /**Get the speed (baud rate) of the serial channel. @return current setting. */ DWORD GetSpeed() const; /**Set the data bits (5, 6, 7 or 8) of the serial port. @return TRUE if the change was successfully made. */ BOOL SetDataBits( BYTE data ///< New number of data bits for serial channel. ); /**Get the data bits (5, 6, 7 or 8) of the serial port. @return current setting. */ BYTE GetDataBits() const; /**Set the parity of the serial port. @return TRUE if the change was successfully made. */ BOOL SetParity( Parity parity ///< New parity option for serial channel. ); /**Get the parity of the serial port. @return current setting. */ Parity GetParity() const; /**Set the stop bits (1 or 2) of the serial port. @return TRUE if the change was successfully made. */ BOOL SetStopBits( BYTE stop ///< New number of stop bits for serial channel. ); /**Get the stop bits (1 or 2) of the serial port. @return current setting. */ BYTE GetStopBits() const; /**Set the flow control (handshaking) protocol of the input to the serial port. @return TRUE if the change was successfully made. */ BOOL SetInputFlowControl( FlowControl flowControl ///< New flow control for serial channel input. ); /**Get the flow control (handshaking) protocol of the input to the serial port. @return current setting. */ FlowControl GetInputFlowControl() const; /**Set the flow control (handshaking) protocol of the output to the serial port. @return TRUE if the change was successfully made. */ BOOL SetOutputFlowControl( FlowControl flowControl ///< New flow control for serial channel output. ); /**Get the flow control (handshaking) protocol of the output from the serial port. @return current setting. */ FlowControl GetOutputFlowControl() const; /**Save the current port settings into the configuration file. Note that it assumed that the correct configuration file section is already set. */ virtual void SaveSettings( PConfig & cfg ///< Configuration file to save setting into. ); //@} /**@name Status functions */ //@{ /** Set the Data Terminal Ready signal of the serial port. */ void SetDTR( BOOL state = TRUE ///< New state of the DTR signal. ); /**Clear the Data Terminal Ready signal of the serial port. This is equivalent to #SetDTR(FALSE)#. */ void ClearDTR(); /**Set the Request To Send signal of the serial port. */ void SetRTS( BOOL state = TRUE ///< New state of the RTS signal. ); /**Clear the Request To Send signal of the serial port. This is equivalent to #SetRTS(FALSE)#. */ void ClearRTS(); /** Set the break condition of the serial port. */ void SetBreak( BOOL state = TRUE ///< New state of the serial port break condition. ); /**Clear the break condition of the serial port. This is equivalent to #SetBreak(FALSE)#. */ void ClearBreak(); /**Get the Clear To Send signal of the serial port. @return TRUE if the CTS signal is asserted. */ BOOL GetCTS(); /**Get the Data Set Ready signal of the serial port. @return TRUE if the DSR signal is asserted. */ BOOL GetDSR(); /**Get the Data Carrier Detect signal of the serial port. @return TRUE if the DCD signal is asserted. */ BOOL GetDCD(); /**Get the Ring Indicator signal of the serial port. @return TRUE if the RI signal is asserted. */ BOOL GetRing(); //@} private: void Construct(); // Platform dependent construct of the serial channel. // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/serchan.h" #else #include "unix/ptlib/serchan.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/sfile.h0100644000176200056700000001660310341504163017411 0ustar releasepostincr/* * sfile.h * * Structured file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sfile.h,v $ * Revision 1.20 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.19 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.18 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.17 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.16 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.15 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.14 1999/02/16 08:11:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.13 1998/09/24 07:24:01 robertj * Moved structured fiel into separate module so don't need silly implementation file for GNU C. * * Revision 1.12 1998/09/23 06:21:23 robertj * Added open source copyright license. * * Revision 1.11 1996/01/23 13:15:38 robertj * Mac Metrowerks compiler support. * * Revision 1.10 1995/06/17 11:13:19 robertj * Documentation update. * * Revision 1.9 1995/03/14 12:42:34 robertj * Updated documentation to use HTML codes. * * Revision 1.8 1995/01/14 06:19:39 robertj * Documentation * * Revision 1.7 1994/08/23 11:32:52 robertj * Oops * * Revision 1.6 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.5 1994/04/20 12:17:44 robertj * PFilePath split * * Revision 1.4 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.3 1993/08/21 01:50:33 robertj * Made Clone() function optional, default will assert if called. * * Revision 1.2 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PSTRUCTUREDFILE #define _PSTRUCTUREDFILE #ifdef P_USE_PRAGMA #pragma interface #endif /**A class representing a a structured file that is portable accross CPU architectures (as in the XDR protocol). This differs from object serialisation in that the access is always to a disk file and is random access. It would primarily be used for database type applications. */ class PStructuredFile : public PFile { PCLASSINFO(PStructuredFile, PFile); private: BOOL Read(void * buf, PINDEX len) { return PFile::Read(buf, len); } BOOL Write(const void * buf, PINDEX len) { return PFile::Write(buf, len); } public: /**@name Construction */ //@{ /**Create a structured file object but do not open it. It does not initially have a valid file name. However, an attempt to open the file using the #PFile::Open()# function will generate a unique temporary file. The initial structure size is one byte. */ PStructuredFile(); /**Create a unique temporary file name, and open the file in the specified mode and using the specified options. Note that opening a new, unique, temporary file name in ReadOnly mode will always fail. This would only be usefull in a mode and options that will create the file. The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PStructuredFile( OpenMode mode, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); /**Create a structured file object with the specified name and open it in the specified mode and with the specified options. The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PStructuredFile( const PFilePath & name, ///< Name of file to open. OpenMode mode = ReadWrite, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); //@} /**@name Structured I/O functions */ //@{ /**Read a sequence of bytes into the specified buffer, translating the structure according to the specification made in the #SetStructure()# function. @return TRUE if the structure was successfully read. */ BOOL Read( void * buffer ///< Pointer to structure to receive data. ); /**Write a sequence of bytes into the specified buffer, translating the structure according to the specification made in the #SetStructure()# function. @return TRUE if the structure was successfully written. */ BOOL Write( const void * buffer ///< Pointer to structure to write data from. ); //@} /**@name Structure definition functions */ //@{ /**Get the size of each structure in the file. @return number of bytes in a structure. */ PINDEX GetStructureSize() { return structureSize; } /// All element types in a structure enum ElementType { /// Element is a single character. Character, /// Element is a 16 bit integer. Integer16, /// Element is a 32 bit integer. Integer32, /// Element is a 64 bit integer. Integer64, /// Element is a 32 bit IEE floating point number. Float32, /// Element is a 64 bit IEE floating point number. Float64, /// Element is a 80 bit IEE floating point number. Float80, NumElementTypes }; /// Elements in the structure definition. struct Element { /// Type of element in structure. ElementType type; /// Count of elements of this type. PINDEX count; }; /** Set the structure of each record in the file. */ void SetStructure( Element * structure, ///< Array of structure elements PINDEX numElements ///< Number of structure elements in structure. ); //@} protected: // Member variables /// Number of bytes in structure. PINDEX structureSize; /// Array of elements in the structure. Element * structure; /// Number of elements in the array. PINDEX numElements; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/sfile.h" #else #include "unix/ptlib/sfile.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/smartptr.h0100644000176200056700000001201010036751550020154 0ustar releasepostincr#ifndef _PSMARTPTR_H #define _PSMARTPTR_H #include #include /////////////////////////////////////////////////////////////////////////////// // "Smart" pointers. /** This is the base class for objects that use the {\it smart pointer} system. In conjunction with the #PSmartPointer# class, this class creates objects that can have the automatic deletion of the object instance when there are no more smart pointer instances pointing to it. A #PSmartObject# carries the reference count that the #PSmartPointer# requires to determine if the pointer is needed any more and should be deleted. */ class PSmartObject : public PObject { PCLASSINFO(PSmartObject, PObject); public: /** Construct a new smart object, subject to a #PSmartPointer# instance referencing it. */ PSmartObject() :referenceCount(1) { } protected: /** Count of number of instances of #PSmartPointer# that currently reference the object instance. */ PAtomicInteger referenceCount; friend class PSmartPointer; }; /** This is the class for pointers to objects that use the {\it smart pointer} system. In conjunction with the #PSmartObject# class, this class references objects that can have the automatic deletion of the object instance when there are no more smart pointer instances pointing to it. A PSmartPointer carries the pointer to a #PSmartObject# instance which contains a reference count. Assigning or copying instances of smart pointers will automatically increment and decrement the reference count. When the last instance that references a #PSmartObject# instance is destroyed or overwritten, the #PSmartObject# is deleted. A NULL value is possible for a smart pointer. It can be detected via the #IsNULL()# function. */ class PSmartPointer : public PObject { PCLASSINFO(PSmartPointer, PObject); public: /**@name Construction */ //@{ /** Create a new smart pointer instance and have it point to the specified #PSmartObject# instance. */ PSmartPointer( PSmartObject * obj = NULL /// Smart object to point to. ) { object = obj; } /** Create a new smart pointer and point it at the data pointed to by the #ptr# parameter. The reference count for the object being pointed at is incremented. */ PSmartPointer( const PSmartPointer & ptr /// Smart pointer to make a copy of. ); /** Destroy the smart pointer and decrement the reference count on the object being pointed to. If there are no more references then the object is deleted. */ virtual ~PSmartPointer(); /** Assign this pointer to the value specified in the #ptr# parameter. The previous object being pointed to has its reference count decremented as this will no longer point to it. If there are no more references then the object is deleted. The new object being pointed to after the assignment has its reference count incremented. */ PSmartPointer & operator=( const PSmartPointer & ptr /// Smart pointer to assign. ); //@} /**@name Overrides from class PObject */ //@{ /** Determine the relative rank of the pointers. This is identical to determining the relative rank of the integer values represented by the memory pointers. @return #EqualTo# if objects point to the same object instance, otherwise #LessThan# and #GreaterThan# may be returned depending on the relative values of the memory pointers. */ virtual Comparison Compare( const PObject & obj // Other smart pointer to compare against. ) const; //@} /**@name Pointer access functions */ //@{ /** Determine if the smart pointer has been set to point to an actual object instance. @return TRUE if the pointer is NULL. */ BOOL IsNULL() const { return object == NULL; } /** Get the current value if the internal smart object pointer. @return pointer to object instance. */ PSmartObject * GetObject() const { return object; } //@} protected: // Member variables /// Object the smart pointer points to. PSmartObject * object; }; /** This macro is used to declare a smart pointer class members. The class #cls# is the smart pointer, descended from the #par# class, to the #type# class. The macro declares in the class the following functions: \begin{verbatim} PCLASSINFO(cls, par); Standard class info. type * operator->() const; Access to the members of the smart object in the smart pointer. type & operator*() const; Access to the value of the smart object in the smart pointer. \end{verbatim} */ #define PSMART_POINTER_INFO(cls, par, type) \ PCLASSINFO(cls, par) \ public: \ type * operator->() const \ { return (type *)PAssertNULL(object); } \ type & operator*() const \ { return *(type *)PAssertNULL(object); } \ operator type*() const \ { return (type *)object; } #endif pwlib_v1_10_2/include/ptlib/socket.h0100644000176200056700000005405510341504163017602 0ustar releasepostincr/* * socket.h * * Berkley Socket channel ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: socket.h,v $ * Revision 1.49 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.48 2004/08/24 07:08:13 csoutheren * Added use of recvmsg to determine which interface UDP packets arrive on * * Revision 1.47 2004/05/06 11:28:30 rjongbloed * Changed P_fd_set to use malloc/free isntead of new/delete due to pedantry about []. * * Revision 1.46 2004/04/27 04:37:50 rjongbloed * Fixed ability to break of a PSocket::Select call under linux when a socket * is closed by another thread. * * Revision 1.45 2004/01/28 08:53:02 csoutheren * Fixed missing delete[] operator. Thanks to Borko Jandras * * Revision 1.44 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.43 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.42 2002/10/18 08:07:41 robertj * Fixed use of FD_ZERO as (strangely) crashes on some paltforms and would * not have cleared enough of an enlarges fd_set anyway. * * Revision 1.41 2002/10/17 07:17:42 robertj * Added ability to increase maximum file handles on a process. * * Revision 1.40 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.39 2002/04/12 01:42:41 robertj * Changed return value on os_connect() and os_accept() to make sure * get the correct error codes propagated up under unix. * * Revision 1.38 2002/02/14 03:34:18 craigs * Added comment on using SetReadTimeout to set maximum wait for Connect * * Revision 1.37 2001/09/06 02:30:17 robertj * Fixed mismatched declarations, thanks Vjacheslav Andrejev * * Revision 1.36 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.35 2001/03/20 06:44:25 robertj * Lots of changes to fix the problems with terminating threads that are I/O * blocked, especially when doing orderly shutdown of service via SIGTERM. * * Revision 1.34 2000/06/26 13:58:42 robertj * Nucleus port (again) * * Revision 1.33 2000/06/26 11:17:19 robertj * Nucleus++ port (incomplete). * * Revision 1.32 2000/02/18 09:55:21 robertj * Added parameter so get/setsockopt can have other levels to SOL_SOCKET. * * Revision 1.31 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.30 1999/02/16 08:11:10 robertj * MSVC 6.0 compatibility changes. * * Revision 1.29 1998/11/30 02:51:58 robertj * New directory structure * * Revision 1.28 1998/09/23 06:21:25 robertj * Added open source copyright license. * * Revision 1.27 1998/08/27 00:46:58 robertj * Resolved signedness problems with various GNU libraries. * * Revision 1.26 1998/08/25 14:07:42 robertj * Added getprotobyxxx wrapper functions. * * Revision 1.25 1998/01/26 00:35:21 robertj * Fixed documentation of PSocket::Select(). * * Revision 1.24 1996/09/14 13:09:24 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.23 1996/07/27 04:14:00 robertj * Changed Select() calls to return error codes. * * Revision 1.22 1996/05/15 10:11:38 robertj * Added timeout to accept function. * * Revision 1.21 1996/03/31 08:52:36 robertj * Added socket shutdown function. * * Revision 1.20 1996/03/18 13:33:12 robertj * Fixed incompatibilities to GNU compiler where PINDEX != int. * * Revision 1.19 1996/03/03 07:37:58 robertj * Added Reusability clause to the Listen() function on sockets. * * Revision 1.18 1996/03/02 03:10:18 robertj * Added Apability to get and set Berkeley socket options. * * Revision 1.17 1996/02/25 03:02:14 robertj * Moved some socket functions to platform dependent code. * Added array of fds to os_select for unix threading support. * * Revision 1.16 1996/02/15 14:46:43 robertj * Added Select() function to PSocket. * * Revision 1.15 1995/12/23 03:46:54 robertj * Fixed portability issue with closingh sockets. * * Revision 1.14 1995/12/10 11:35:21 robertj * Numerous fixes for sockets. * * Revision 1.13 1995/10/14 15:05:54 robertj * Added functions for changing integer from host to network byte order. * * Revision 1.12 1995/06/17 11:13:25 robertj * Documentation update. * * Revision 1.11 1995/06/17 00:44:35 robertj * More logical design of port numbers and service names. * Changed overloaded Open() calls to 3 separate function names. * * Revision 1.10 1995/06/04 12:36:37 robertj * Slight redesign of port numbers on sockets. * * Revision 1.9 1995/03/14 12:42:39 robertj * Updated documentation to use HTML codes. * * Revision 1.8 1995/03/12 04:45:40 robertj * Added more functionality. * * Revision 1.7 1995/01/03 09:36:19 robertj * Documentation. * * Revision 1.6 1995/01/02 12:16:17 robertj * Moved constructor to platform dependent code. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/08/21 23:43:02 robertj * Changed type of socket port number for better portability. * * Revision 1.2 1994/07/25 03:36:03 robertj * Added sockets to common, normalising to same comment standard. * */ #ifndef _PSOCKETS #define _PSOCKETS #ifdef P_USE_PRAGMA #pragma interface #endif #include #ifdef __NUCLEUS_PLUS__ #include #endif class PSocket; PLIST(PSocketList, PSocket); /**A network communications channel. This is based on the concepts in the Berkley Sockets library. A socket represents a bidirectional communications channel to a {\it port} at a remote {\it host}. */ class PSocket : public PChannel { PCLASSINFO(PSocket, PChannel); protected: PSocket(); public: /**@name Socket establishment functions */ //@{ /**Connect a socket to a remote host on the specified port number. This is typically used by the client or initiator of a communications channel. This connects to a "listening" socket at the other end of the communications channel. Use the SetReadTimeout function to set a maximum time for the Connect @return TRUE if the channel was successfully connected to the remote host. */ virtual BOOL Connect( const PString & address ///< Address of remote machine to connect to. ); /// Flags to reuse of port numbers in Listen() function. enum Reusability { CanReuseAddress, AddressIsExclusive }; /**Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the #port# parameter is zero then the port number as defined by the object instance construction or the descendent classes SetPort() or SetService() function. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Cant listen more than once. ); /**Open a socket to a remote host on the specified port number. This is an "accepting" socket. When a "listening" socket has a pending connection to make, this will accept a connection made by the "connecting" socket created to establish a link. The port that the socket uses is the one used in the #Listen()# command of the #socket# parameter. Note an error occurs if the #socket# parameter has not had the #Listen()# function called on it. Note that this function will block until a remote system connects to the port number specified in the "listening" socket. The time that the function will block is determined by the read timeout of the #socket# parameter. This will normally be #PMaxTimeInterval# which indicates an infinite time. The default behaviour is to assert. @return TRUE if the channel was successfully opened. */ virtual BOOL Accept( PSocket & socket ///< Listening socket making the connection. ); /**Close one or both of the data streams associated with a socket @return TRUE if the shutdown was performed */ virtual BOOL Shutdown( ShutdownValue option ///< Flag for shutdown of read, write or both. ); //@} /**@name Socket options functions */ //@{ /**Set options on the socket. These options are defined as Berkeley socket options of the class SOL_SOCKET. @return TRUE if the option was successfully set. */ BOOL SetOption( int option, ///< Option to set. int value, ///< New value for option. int level = SOL_SOCKET ///< Level for option ); /**Set options on the socket. These options are defined as Berkeley socket options of the class SOL_SOCKET. @return TRUE if the option was successfully set. */ BOOL SetOption( int option, ///< Option to set. const void * valuePtr, ///< Pointer to new value for option. PINDEX valueSize, ///< Size of new value. int level = SOL_SOCKET ///< Level for option ); /**Get options on the socket. These options are defined as Berkeley socket options of the class SOL_SOCKET. @return TRUE if the option was successfully retreived. */ BOOL GetOption( int option, ///< Option to get. int & value, ///< Integer to receive value. int level = SOL_SOCKET ///< Level for option ); /**Get options on the socket. These options are defined as Berkeley socket options of the class SOL_SOCKET. @return TRUE if the option was successfully retreived. */ BOOL GetOption( int option, ///< Option to get. void * valuePtr, ///< Pointer to buffer for value. PINDEX valueSize, ///< Size of buffer to receive value. int level = SOL_SOCKET ///< Level for option ); //@} /**@name Port/Service database functions */ //@{ /**Get the number of the protocol associated with the specified name. @return Number of protocol or 0 if the protocol was not found. */ static WORD GetProtocolByName( const PString & name ///< Name of protocol ); /**Get the name of the protocol number specified. @return Name of protocol or the number if the protocol was not found. */ static PString GetNameByProtocol( WORD proto ///< Number of protocol ); /**Get the port number for the specified service name. */ virtual WORD GetPortByService( const PString & service ///< Name of service to get port number for. ) const; /**Get the port number for the specified service name. A name is a unique string contained in a system database. The parameter here may be either this unique name, an integer value or both separated by a space (name then integer). In the latter case the integer value is used if the name cannot be found in the database. The exact behviour of this function is dependent on whether TCP or UDP transport is being used. The #PTCPSocket# and #PUDPSocket# classes will implement this function. The static version of the function is independent of the socket type as its first parameter may be "tcp" or "udp", @return Port number for service name, or 0 if service cannot be found. */ static WORD GetPortByService( const char * protocol, ///< Protocol type for port lookup const PString & service ///< Name of service to get port number for. ); /**Get the service name from the port number. */ virtual PString GetServiceByPort( WORD port ///< Number for service to find name of. ) const; /**Get the service name from the port number. A service name is a unique string contained in a system database. The parameter here may be either this unique name, an integer value or both separated by a space (name then integer). In the latter case the integer value is used if the name cannot be found in the database. The exact behviour of this function is dependent on whether TCP or UDP transport is being used. The #PTCPSocket# and #PUDPSocket# classes will implement this function. The static version of the function is independent of the socket type as its first parameter may be "tcp" or "udp", @return Service name for port number. */ static PString GetServiceByPort( const char * protocol, ///< Protocol type for port lookup WORD port ///< Number for service to find name of. ); /**Set the port number for the channel. */ void SetPort( WORD port ///< New port number for the channel. ); /**Set the port number for the channel. This a 16 bit number representing an agreed high level protocol type. The string version looks up a database of names to find the number for the string name. A service name is a unique string contained in a system database. The parameter here may be either this unique name, an integer value or both separated by a space (name then integer). In the latter case the integer value is used if the name cannot be found in the database. The port number may not be changed while the port is open and the function will assert if an attempt is made to do so. */ void SetPort( const PString & service ///< Service name to describe the port number. ); /**Get the port the TCP socket channel object instance is using. @return Port number. */ WORD GetPort() const; /**Get a service name for the port number the TCP socket channel object instance is using. @return string service name or a string representation of the port number if no service with that number can be found. */ PString GetService() const; //@} /**@name Multiple socket selection functions */ //@{ /// List of sockets used for #Select()# function class SelectList : public PSocketList { PCLASSINFO(SelectList, PSocketList) public: SelectList() { DisallowDeleteObjects(); } /** Add a socket to list .*/ void operator+=(PSocket & sock /** Socket to add. */) { Append(&sock); } /** Remove a socket from list .*/ void operator-=(PSocket & sock /** Socket to remove. */) { Remove(&sock); } }; /**Select a socket with available data. */ static int Select( PSocket & sock1, ///< First socket to check for readability. PSocket & sock2 ///< Second socket to check for readability. ); /**Select a socket with available data. */ static int Select( PSocket & sock1, ///< First socket to check for readability. PSocket & sock2, ///< Second socket to check for readability. const PTimeInterval & timeout ///< Timeout for wait on read/write data. ); /**Select a socket with available data. */ static Errors Select( SelectList & read ///< List of sockets to check for readability. ); /**Select a socket with available data. */ static Errors Select( SelectList & read, ///< List of sockets to check for readability. const PTimeInterval & timeout ///< Timeout for wait on read/write data. ); /**Select a socket with available data. */ static Errors Select( SelectList & read, ///< List of sockets to check for readability. SelectList & write ///< List of sockets to check for writability. ); /**Select a socket with available data. */ static Errors Select( SelectList & read, ///< List of sockets to check for readability. SelectList & write, ///< List of sockets to check for writability. const PTimeInterval & timeout ///< Timeout for wait on read/write data. ); /**Select a socket with available data. */ static Errors Select( SelectList & read, ///< List of sockets to check for readability. SelectList & write, ///< List of sockets to check for writability. SelectList & except ///< List of sockets to check for exceptions. ); /**Select a socket with available data. This function will block until the timeout or data is available to be read or written to the specified sockets. The #read#, #write# and #except# lists are modified by the call so that only the sockets that have data available are present. If the call timed out then all of these lists will be empty. If no timeout is specified then the call will block until a socket has data available. @return TRUE if the select was successful or timed out, FALSE if an error occurred. If a timeout occurred then the lists returned will be empty. For the versions taking sockets directly instead of lists the integer returned is >0 for an error being a value from the PChannel::Errors enum, 0 for a timeout, -1 for the first socket having read data, -2 for the second socket and -3 for both. */ static Errors Select( SelectList & read, ///< List of sockets to check for readability. SelectList & write, ///< List of sockets to check for writability. SelectList & except, ///< List of sockets to check for exceptions. const PTimeInterval & timeout ///< Timeout for wait on read/write data. ); //@} /**@name Integer conversion functions */ //@{ /// Convert from host to network byte order inline static WORD Host2Net(WORD v) { return htons(v); } /// Convert from host to network byte order inline static DWORD Host2Net(DWORD v) { return htonl(v); } /// Convert from network to host byte order inline static WORD Net2Host(WORD v) { return ntohs(v); } /// Convert from network to host byte order inline static DWORD Net2Host(DWORD v) { return ntohl(v); } //@} protected: /*This function calls os_socket() with the correct parameters for the socket protocol type. */ virtual BOOL OpenSocket() = 0; /**This function returns the protocol name for the socket type. */ virtual const char * GetProtocolName() const = 0; int os_close(); int os_socket(int af, int type, int proto); BOOL os_connect( struct sockaddr * sin, PINDEX size ); BOOL os_recvfrom( void * buf, PINDEX len, int flags, struct sockaddr * from, PINDEX * fromlen ); BOOL os_sendto( const void * buf, PINDEX len, int flags, struct sockaddr * to, PINDEX tolen ); BOOL os_accept( PSocket & listener, struct sockaddr * addr, PINDEX * size ); // Member variables /// Port to be used by the socket when opening the channel. WORD port; #if P_HAS_RECVMSG BOOL catchReceiveToAddr; virtual void SetLastReceiveAddr(void * /*addr*/, int /*addrLen*/) { } #endif // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/socket.h" #else #include "unix/ptlib/socket.h" #endif }; // Utility classes class P_fd_set { public: P_fd_set(); P_fd_set(SOCKET fd); ~P_fd_set() { free(set); } P_fd_set & operator=(SOCKET fd); P_fd_set & operator+=(SOCKET fd); P_fd_set & operator-=(SOCKET fd); void Zero(); BOOL IsPresent(SOCKET fd) const { return FD_ISSET(fd, set); } operator fd_set*() const { return set; } private: void Construct(); SOCKET max_fd; fd_set * set; }; class P_timeval { public: P_timeval(); P_timeval(const PTimeInterval & time) { operator=(time); } P_timeval & operator=(const PTimeInterval & time); operator timeval*() { return infinite ? NULL : &tval; } timeval * operator->() { return &tval; } timeval & operator*() { return tval; } private: struct timeval tval; BOOL infinite; }; #ifdef _WIN32 class PWinSock : public PSocket { PCLASSINFO(PWinSock, PSocket) // Must be one and one only instance of this class, and it must be static!. public: PWinSock(); ~PWinSock(); private: virtual BOOL OpenSocket(); virtual const char * GetProtocolName() const; }; #endif #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/sockets.h0100644000176200056700000000755307541227453020002 0ustar releasepostincr/* * sockets.h * * Berkley Sockets classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sockets.h,v $ * Revision 1.14 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.13 1998/11/30 02:51:59 robertj * New directory structure * * Revision 1.12 1998/09/23 06:19:58 robertj * Added open source copyright license. * * Revision 1.11 1998/08/21 05:25:21 robertj * Added ethernet socket in right place this time. * * Revision 1.10 1998/08/20 06:02:35 robertj * Added direct ethernet socket type. * * Revision 1.9 1996/10/08 13:05:38 robertj * More IPX support. * * Revision 1.8 1996/09/14 13:09:44 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.7 1996/08/08 10:08:53 robertj * Directory structure changes for common files. * * Revision 1.6 1996/05/15 10:13:15 robertj * Added ICMP protocol socket, getting common ancestor to UDP. * * Revision 1.5 1995/06/04 12:36:55 robertj * Added application layer protocol sockets. * * Revision 1.4 1994/08/23 11:32:52 robertj * Oops * * Revision 1.3 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.2 1994/08/21 23:43:02 robertj * Added telnet. * * Revision 1.1 1994/07/25 03:36:03 robertj * Initial revision * * Revision 1.3 1994/07/21 12:17:41 robertj * Sockets. * * Revision 1.2 1994/06/25 12:27:39 robertj * *** empty log message *** * * Revision 1.1 1994/04/01 14:38:42 robertj * Initial revision * */ #ifndef _SOCKETS_H #define _SOCKETS_H #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // PSocket #include /////////////////////////////////////////////////////////////////////////////// // PIPSocket #include /////////////////////////////////////////////////////////////////////////////// // PIPDatagramSocket #include /////////////////////////////////////////////////////////////////////////////// // PUDPSocket #include /////////////////////////////////////////////////////////////////////////////// // PICMPSocket #include /////////////////////////////////////////////////////////////////////////////// // PTCPSocket #include #ifdef PIPX /////////////////////////////////////////////////////////////////////////////// // PIPXSocket #include /////////////////////////////////////////////////////////////////////////////// // PSPXSocket #include #endif // PIPX /////////////////////////////////////////////////////////////////////////////// // PEthSocket #include #endif // _SOCKETS_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/sound.h0100644000176200056700000007155510341504163017446 0ustar releasepostincr/* * sound.h * * Sound interface class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: sound.h,v $ * Revision 1.36 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.35 2005/08/09 09:08:09 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.34.2.2 2005/07/17 11:47:45 rjongbloed * Fixed backward compatibility * * Revision 1.34.2.1 2005/07/17 09:27:04 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.34 2005/07/13 13:02:35 csoutheren * Unified interface across Windows and Unix * * Revision 1.33 2005/07/04 11:35:03 shorne * Added ability to play sound to specfied device (Win32). * * Revision 1.32 2005/01/04 07:44:03 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.31 2004/11/01 23:16:59 ykiryanov * Added macro declaring sound plugin to be static for BeOS * * Revision 1.30 2003/12/28 02:03:18 csoutheren * Fixed problem with GetLastReadCount/GetLastWriteCount on Windows sound devices * * Revision 1.29 2003/11/18 10:50:26 csoutheren * Changed name of Windows sound device * * Revision 1.28 2003/11/14 05:59:09 csoutheren * Added Read function, thanks to Derek Smithies * * Revision 1.27 2003/11/12 10:25:41 csoutheren * Changes to allow operation of static plugins under Windows * * Revision 1.26 2003/11/12 05:18:04 csoutheren * Added more backwards compatibility functions for PSoundChannel * * Revision 1.25 2003/11/12 04:33:32 csoutheren * Fixed problem with static linking of sound plugins * Fixed problem with Windows sound driver * * Revision 1.24 2003/11/12 03:29:51 csoutheren * Initial version of plugin code from Snark of GnomeMeeting with changes * by Craig Southeren of Post Increment * * Revision 1.23.2.2 2003/10/13 02:42:39 dereksmithies * Add additional functions, so plugins work better. * * Revision 1.23.2.1 2003/10/07 03:02:28 csoutheren * Initial checkin of pwlib code to do plugins. * Modified from original code and concept provided by Snark of Gnomemeeting * * Revision 1.23 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.22 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.21 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.20 2002/02/08 09:58:44 robertj * Slight adjustment to API and documentation for volume functions. * * Revision 1.19 2002/02/07 20:57:21 dereks * add SetVolume and GetVolume methods to PSoundChannel * * Revision 1.18 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.17 2001/02/07 03:33:43 craigs * Added functions to get sound channel parameters * * Revision 1.16 2000/03/04 10:15:32 robertj * Added simple play functions for sound files. * * Revision 1.15 1999/05/28 14:04:10 robertj * Added function to get default audio device. * * Revision 1.14 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.13 1999/02/22 10:15:14 robertj * Sound driver interface implementation to Linux OSS specification. * * Revision 1.12 1999/02/16 06:02:27 robertj * Major implementation to Linux OSS model * * Revision 1.11 1998/09/23 06:21:27 robertj * Added open source copyright license. * * Revision 1.10 1995/06/17 11:13:26 robertj * Documentation update. * * Revision 1.9 1995/03/14 12:42:40 robertj * Updated documentation to use HTML codes. * * Revision 1.8 1995/01/16 09:42:05 robertj * Documentation. * * Revision 1.7 1994/08/23 11:32:52 robertj * Oops * * Revision 1.6 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.5 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.4 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.3 1993/09/29 03:06:30 robertj * Added unix compatibility to Beep() * * Revision 1.2 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PSOUND #define _PSOUND #ifdef P_USE_PRAGMA #pragma interface #endif #include /** A class representing a sound. A sound is a highly platform dependent entity that is abstracted for use here. Very little manipulation of the sounds are possible. The most common sound to use is the static function #Beep()# which emits the system standard "warning" or "attention" sound. */ class PSound : public PBYTEArray { PCLASSINFO(PSound, PBYTEArray); public: /**@name Construction */ //@{ /**Create a new sound, using the parameters provided. It is expected that the "lowest common denominator" encoding, linear PCM, is used. All other values for the encoding are platform dependent. */ PSound( unsigned numChannels = 1, ///< Number of channels eg mono/stereo unsigned sampleRate = 8000, ///< Samples per second unsigned bitsPerSample = 16, ///< Number of bits per sample PINDEX bufferSize = 0, ///< Size of data const BYTE * data = NULL ///< Pointer to initial data ); /**Create a new sound, reading from a platform dependent file. */ PSound( const PFilePath & filename ///< Sound file to load. ); /**Set new data bytes for the sound. */ PSound & operator=( const PBYTEArray & data ///< New data for sound ); //@} /**@name File functions */ //@{ /**Load a platform dependent sound file (eg .WAV file for Win32) into the object. Note the whole file must able to be loaded into memory. Also note that not all possible files are playable by this library. No format conversions between file and driver are performed. @return TRUE if the sound is loaded successfully. */ BOOL Load( const PFilePath & filename ///< Sound file to load. ); /**Save a platform dependent sound file (eg .WAV file for Win32) from the object. @return TRUE if the sound is saved successfully. */ BOOL Save( const PFilePath & filename ///< Sound file to load. ); //@} /**@name Access functions */ //@{ /// Play the sound on the default sound device. BOOL Play(); /// Play the sound to the specified sound device. BOOL Play(const PString & device); /**Set the internal sound format to linear PCM at the specification in the parameters. */ void SetFormat( unsigned numChannels, ///< Number of channels eg mono/stereo unsigned sampleRate, ///< Samples per second unsigned bitsPerSample ///< Number of bits per sample ); /**Get the current encoding. A value of 0 indicates linear PCM, any other value is platform dependent. */ unsigned GetEncoding() const { return encoding; } /// Get the number of channels (mono/stereo) in the sound. unsigned GetChannels() const { return numChannels; } /// Get the sample rate in samples per second. unsigned GetSampleRate() const { return sampleRate; } /// Get the sample size in bits per sample. unsigned GetSampleSize() const { return sampleSize; } /// Get the platform dependent error code from the last file load. DWORD GetErrorCode() const { return dwLastError; } /// Get the size of the platform dependent format info. PINDEX GetFormatInfoSize() const { return formatInfo.GetSize(); } /// Get pointer to the platform dependent format info. const void * GetFormatInfoData() const { return (const BYTE *)formatInfo; } //@} /**@name Miscellaneous functions */ //@{ /**Play a sound file to the default device. If the #wait# parameter is TRUE then the function does not return until the file has been played. If FALSE then the sound play is begun asynchronously and the function returns immediately. @return TRUE if the sound is playing or has played. */ static BOOL PlayFile( const PFilePath & file, ///< Sound file to play. BOOL wait = TRUE ///< Flag to play sound synchronously. ); /// Play the "standard" warning beep for the platform. static void Beep(); //@} protected: /// Format code unsigned encoding; /// Number of channels eg mono/stereo unsigned numChannels; /// Samples per second unsigned sampleRate; /// Number of bits per sample unsigned sampleSize; /// Last error code for Load()/Save() functions DWORD dwLastError; /// Full info on the format (platform dependent) PBYTEArray formatInfo; }; /** This class is both an abstract class for a generalised sound channel, and an implementation of PSoundChannel for old code that is not plugin-aware. When instantiated, it selects the first plugin of the base class "PSoundChannel" As an abstract class, this represents a sound schannel. Drivers for real, platform dependent sound hardware will be ancestors of this class and can be found in the plugins section of PWLib. A sound driver is either playing or recording. If simultaneous playing and recording is desired, two instances of PSoundChannel must be created. The sound is buffered and the size and number of buffers should be set before playing/recording. Each call to Write() will use one buffer, so care needs to be taken not to use a large number of small writes but tailor the buffers to the size of each write you make. Similarly for reading, an entire buffer must be read before any of it is available to a Read() call. Note that once a buffer is filled you can read it a byte at a time if desired, but as soon as all the data in the buffer is used returned, the next read will wait until the entire next buffer is read from the hardware. So again, tailor the number and size of buffers to the application. To avoid being blocked until the buffer fills, you can use the StartRecording() function to initiate the buffer filling, and the IsRecordingBufferFull() function to determine when the Read() function will no longer block. Note that this sound channel is implicitly a linear PCM channel. No data conversion is performed on data to/from the channel. */ class PSoundChannel : public PChannel { PCLASSINFO(PSoundChannel, PChannel); public: /**@name Construction */ //@{ enum Directions { Recorder, Player }; /// Create a sound channel. PSoundChannel(); /** Create a sound channel. Create a reference to the sound drivers for the platform. */ PSoundChannel( const PString & device, ///< Name of sound driver/device Directions dir, ///< Sound I/O direction unsigned numChannels = 1, ///< Number of channels eg mono/stereo unsigned sampleRate = 8000, ///< Samples per second unsigned bitsPerSample = 16 ///< Number of bits per sample ); // virtual ~PSoundChannel(); // Destroy and close the sound driver //@} /**@name Open functions */ //@{ /**Get the list of available sound drivers (plug-ins) */ static PStringList GetDriverNames( PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Get sound devices that correspond to the specified driver name. If driverName is an empty string or the value "*" then GetAllDeviceNames() is used. */ static PStringList GetDriversDeviceNames( const PString & driverName, ///< Name of driver Directions direction, ///< Direction for device (record or play) PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); // For backward compatibility static inline PStringList GetDeviceNames( const PString & driverName, Directions direction, PPluginManager * pluginMgr = NULL ) { return GetDriversDeviceNames(driverName, direction, pluginMgr); } /**Create the sound channel that corresponds to the specified driver name. */ static PSoundChannel * CreateChannel ( const PString & driverName, ///< Name of driver PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /* Create the matching sound channel that corresponds to the device name. So, for "fake" return a device that will generate fake video. For "Phillips 680 webcam" (eg) will return appropriate grabber. Note that Phillips will return the appropriate grabber also. This is typically used with the return values from GetDeviceNames(). */ static PSoundChannel * CreateChannelByName( const PString & deviceName, ///< Name of device Directions direction, ///< Direction for device (record or play) PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Create an opened sound channel that corresponds to the specified names. If the driverName parameter is an empty string or "*" then CreateChannelByName is used with the deviceName parameter which is assumed to be a value returned from GetAllDeviceNames(). */ static PSoundChannel * CreateOpenedChannel( const PString & driverName, ///< Name of driver const PString & deviceName, ///< Name of device Directions direction, ///< Direction for device (record or play) unsigned numChannels = 1, ///< Number of channels 1=mon, 2=stereo unsigned sampleRate = 8000, ///< Sample rate unsigned bitsPerSample = 16, ///< Bits per sample PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Get the name for the default sound devices/driver that is on this platform. Note that a named device may not necessarily do both playing and recording so the arrays returned with the #dir# parameter in each value is not necessarily the same. This will return a list of uniqie device names across all of the available drivers. If two drivers have identical names for devices, then the string returned will be of the form driver+'\t'+device. @return A platform dependent string for the sound player/recorder. */ static PString GetDefaultDevice( Directions dir // Sound I/O direction ); /**Get the list of all devices name for the default sound devices/driver that is on this platform. Note that a named device may not necessarily do both playing and recording so the arrays returned with the #dir# parameter in each value is not necessarily the same. @return Platform dependent strings for the sound player/recorder. */ static PStringList GetDeviceNames( Directions direction, ///< Direction for device (record or play) PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Open the specified device for playing or recording. The device name is platform specific and is as returned in the GetDevices() function. @return TRUE if the sound device is valid for playing/recording. */ virtual BOOL Open( const PString & device, ///< Name of sound driver/device Directions dir, ///< Sound I/O direction unsigned numChannels = 1, ///< Number of channels eg mono/stereo unsigned sampleRate = 8000, ///< Samples per second unsigned bitsPerSample = 16 ///< Number of bits per sample ); /**Test if this instance of PSoundChannel is open. @return TRUE if this instance is open. */ virtual BOOL IsOpen() const { return (baseChannel == NULL) ? FALSE : baseChannel->PChannel::IsOpen(); } /**Get the OS specific handle for the PSoundChannel. @return integer value of the handle. */ virtual int GetHandle() const { return (baseChannel == NULL) ? -1 : baseChannel->PChannel::GetHandle(); } /**Abort the background playing/recording of the sound channel. @return TRUE if the sound has successfully been aborted. */ virtual BOOL Abort() { return (baseChannel == NULL) ? FALSE : baseChannel->Abort(); } //@} /**@name Channel set up functions */ //@{ /**Set the format for play/record. Note that linear PCM data is the only one supported at this time. Note that if the PlayFile() function is used, this may be overridden by information in the file being played. @return TRUE if the format is valid. */ virtual BOOL SetFormat( unsigned numChannels = 1, ///< Number of channels eg mono/stereo unsigned sampleRate = 8000, ///< Samples per second unsigned bitsPerSample = 16 ///< Number of bits per sample ) { return (baseChannel == NULL) ? FALSE : baseChannel->SetFormat(numChannels, sampleRate, bitsPerSample); } /// Get the number of channels (mono/stereo) in the sound. virtual unsigned GetChannels() const { return (baseChannel == NULL) ? 0 : baseChannel->GetChannels(); } /// Get the sample rate in samples per second. virtual unsigned GetSampleRate() const { return (baseChannel == NULL) ? 0 : baseChannel->GetSampleRate(); } /// Get the sample size in bits per sample. virtual unsigned GetSampleSize() const { return (baseChannel == NULL) ? 0 : baseChannel->GetSampleSize(); } /**Set the internal buffers for the sound channel I/O. Note that with Linux OSS, the size is always rounded up to the nearest power of two, so 20000 => 32768. @return TRUE if the sound device is valid for playing/recording. */ virtual BOOL SetBuffers( PINDEX size, ///< Size of each buffer PINDEX count = 2 ///< Number of buffers ) { return (baseChannel == NULL) ? FALSE : baseChannel->SetBuffers(size, count); } /**Get the internal buffers for the sound channel I/O. @return TRUE if the buffer size were obtained. */ virtual BOOL GetBuffers( PINDEX & size, // Size of each buffer PINDEX & count // Number of buffers ) { return (baseChannel == NULL) ? FALSE : baseChannel->GetBuffers(size, count); } enum { MaxVolume = 100 }; /**Set the volume of the play/read process. The volume range is 0 == quiet. 100 == LOUD. @return TRUE if there were no errors. */ virtual BOOL SetVolume( unsigned volume ///< New volume level ) { return (baseChannel == NULL) ? FALSE : baseChannel->SetVolume(volume); } /**Get the volume of the play/read process. The volume range is 0 == quiet. 100 == LOUD. @return TRUE if there were no errors. */ virtual BOOL GetVolume( unsigned & volume ///< Variable to receive volume level. ) { return (baseChannel == NULL) ? FALSE : baseChannel->GetVolume(volume); } //@} /**@name Play functions */ //@{ /** Low level write (or play) to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write(const void * buf, PINDEX len) { return (baseChannel == NULL) ? FALSE : baseChannel->Write(buf, len); } PINDEX GetLastWriteCount() const { return (baseChannel == NULL) ? lastWriteCount : baseChannel->GetLastWriteCount(); } /**Play a sound to the open device. If the #wait# parameter is TRUE then the function does not return until the file has been played. If FALSE then the sound play is begun asynchronously and the function returns immediately. Note if the driver is closed of the object destroyed then the sound play is aborted. Also note that not all possible sounds and sound files are playable by this library. No format conversions between sound object and driver are performed. @return TRUE if the sound is playing or has played. */ virtual BOOL PlaySound( const PSound & sound, ///< Sound to play. BOOL wait = TRUE ///< Flag to play sound synchronously. ) { return (baseChannel == NULL) ? FALSE : baseChannel->PlaySound(sound, wait); } /**Play a sound file to the open device. If the #wait# parameter is TRUE then the function does not return until the file has been played. If FALSE then the sound play is begun asynchronously and the function returns immediately. Note if the driver is closed of the object destroyed then the sound play is aborted. Also note that not all possible sounds and sound files are playable by this library. No format conversions between sound object and driver are performed. @return TRUE if the sound is playing or has played. */ virtual BOOL PlayFile( const PFilePath & file, ///< Sound file to play. BOOL wait = TRUE ///< Flag to play sound synchronously. ) { return (baseChannel == NULL) ? FALSE : baseChannel->PlayFile(file, wait); } /**Indicate if the sound play begun with PlayBuffer() or PlayFile() has completed. @return TRUE if the sound has completed playing. */ virtual BOOL HasPlayCompleted() { return (baseChannel == NULL) ? FALSE : baseChannel->HasPlayCompleted(); } /**Block the thread until the sound play begun with PlayBuffer() or PlayFile() has completed. @return TRUE if the sound has successfully completed playing. */ virtual BOOL WaitForPlayCompletion() { return (baseChannel == NULL) ? FALSE : baseChannel->WaitForPlayCompletion(); } //@} /**@name Record functions */ //@{ /** Low level read from the channel. This function may block until the requested number of characters were read or the read timeout was reached. The GetLastReadCount() function returns the actual number of bytes read. The GetErrorCode() function should be consulted after Read() returns FALSE to determine what caused the failure. @return TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error. */ virtual BOOL Read( void * buf, ///< Pointer to a block of memory to receive the read bytes. PINDEX len ///< Maximum number of bytes to read into the buffer. ) { return (baseChannel == NULL) ? FALSE : baseChannel->Read(buf, len); } PINDEX GetLastReadCount() const { return (baseChannel == NULL) ? lastReadCount : baseChannel->GetLastReadCount(); } /**Record into the sound object all of the buffer's of sound data. Use the SetBuffers() function to determine how long the recording will be made. For the Win32 platform, the most efficient way to record a PSound is to use the SetBuffers() function to set a single buffer of the desired size and then do the recording. For Linux OSS this can cause problems as the buffers are rounded up to a power of two, so to gain more accuracy you need a number of smaller buffers. Note that this function will block until all of the data is buffered. If you wish to do this asynchronously, use StartRecording() and AreAllrecordBuffersFull() to determine when you can call RecordSound() without blocking. @return TRUE if the sound has been recorded. */ virtual BOOL RecordSound( PSound & sound ///< Sound recorded ) { return (baseChannel == NULL) ? FALSE : baseChannel->RecordSound(sound); } /**Record into the platform dependent sound file all of the buffer's of sound data. Use the SetBuffers() function to determine how long the recording will be made. Note that this function will block until all of the data is buffered. If you wish to do this asynchronously, use StartRecording() and AreAllrecordBuffersFull() to determine when you can call RecordSound() without blocking. @return TRUE if the sound has been recorded. */ virtual BOOL RecordFile( const PFilePath & file ///< Sound file recorded ) { return (baseChannel == NULL) ? FALSE : baseChannel->RecordFile(file); } /**Start filling record buffers. The first call to Read() will also initiate the recording. @return TRUE if the sound driver has successfully started recording. */ virtual BOOL StartRecording() { return (baseChannel == NULL) ? FALSE : baseChannel->StartRecording(); } /**Determine if a record buffer has been filled, so that the next Read() call will not block. Provided that the amount of data read is less than the buffer size. @return TRUE if the sound driver has filled a buffer. */ virtual BOOL IsRecordBufferFull() { return (baseChannel == NULL) ? FALSE : baseChannel->IsRecordBufferFull(); } /**Determine if all of the record buffer allocated has been filled. There is an implicit Abort() of the recording if this occurs and recording is stopped. The channel may need to be closed and opened again to start a new recording. @return TRUE if the sound driver has filled a buffer. */ virtual BOOL AreAllRecordBuffersFull() { return (baseChannel == NULL) ? FALSE : baseChannel->AreAllRecordBuffersFull(); } /**Block the thread until a record buffer has been filled, so that the next Read() call will not block. Provided that the amount of data read is less than the buffer size. @return TRUE if the sound driver has filled a buffer. */ virtual BOOL WaitForRecordBufferFull() { return (baseChannel == NULL) ? FALSE : baseChannel->WaitForRecordBufferFull() ; } /**Block the thread until all of the record buffer allocated has been filled. There is an implicit Abort() of the recording if this occurs and recording is stopped. The channel may need to be closed and opened again to start a new recording. @return TRUE if the sound driver has filled a buffer. */ virtual BOOL WaitForAllRecordBuffersFull() { return (baseChannel == NULL) ? FALSE : baseChannel->WaitForAllRecordBuffersFull() ; } //@} protected: PSoundChannel * baseChannel; }; ///////////////////////////////////////////////////////////////////////// // define the sound plugin service descriptor template class PSoundChannelPluginServiceDescriptor : public PDevicePluginServiceDescriptor { public: virtual PObject * CreateInstance(int /*userData*/) const { return new className; } virtual PStringList GetDeviceNames(int userData) const { return className::GetDeviceNames((PSoundChannel::Directions)userData); } }; #define PCREATE_SOUND_PLUGIN(name, className) \ static PSoundChannelPluginServiceDescriptor className##_descriptor; \ PCREATE_PLUGIN(name, PSoundChannel, &className##_descriptor) #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/spxsock.h0100644000176200056700000001132610341504163017776 0ustar releasepostincr/* * spxsock.h * * SPX socket channel class * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: spxsock.h,v $ * Revision 1.10 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.9 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.8 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.7 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.4 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.3 1998/11/30 02:51:59 robertj * New directory structure * * Revision 1.2 1998/09/23 06:21:29 robertj * Added open source copyright license. * * Revision 1.1 1996/09/14 13:00:56 robertj * Initial revision * */ #ifndef _PSPXSOCKET #define _PSPXSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include /** Create a socket channel that uses the SPX transport over the IPX Protocol. */ class PSPXSocket : public PIPXSocket { PCLASSINFO(PSPXSocket, PIPXSocket); public: /**@name Construction. */ //@{ /** Create an SPX protocol socket channel. If a remote machine address or a "listening" socket is specified then the channel is also opened. Note that the "copy" constructor here is really a "listening" socket the same as the PSocket & parameter version. */ PSPXSocket( WORD port = 0 ///< Port number to use for the connection. ); //@} /**@name Overrides from class PSocket. */ //@{ /** Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the #port# parameter is zero then the port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Cant listen more than once. ); /** Open a socket to a remote host on the specified port number. This is an "accepting" socket. When a "listening" socket has a pending connection to make, this will accept a connection made by the "connecting" socket created to establish a link. The port that the socket uses is the one used in the #Listen()# command of the #socket# parameter. Note that this function will block until a remote system connects to the port number specified in the "listening" socket. @return TRUE if the channel was successfully opened. */ virtual BOOL Accept( PSocket & socket ///< Listening socket making the connection. ); //@} protected: virtual BOOL OpenSocket(); virtual const char * GetProtocolName() const; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/spxsock.h" #else #include "unix/ptlib/spxsock.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/svcproc.h0100644000176200056700000002441610341504163017767 0ustar releasepostincr/* * svcproc.h * * Service Process (daemon) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: svcproc.h,v $ * Revision 1.25 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.24 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.23 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.22 2002/10/22 07:42:52 robertj * Added extra debugging for file handle and thread leak detection. * * Revision 1.21 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.20 2002/01/26 23:55:55 craigs * Changed for GCC 3.0 compatibility, thanks to manty@manty.net * * Revision 1.19 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.18 1999/09/21 08:20:16 robertj * Fixed name space problem with PSYSTEMLOG() macro. * * Revision 1.17 1999/09/13 13:15:06 robertj * Changed PTRACE so will output to system log in PServiceProcess applications. * * Revision 1.16 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.15 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.14 1998/10/13 14:06:15 robertj * Complete rewrite of memory leak detection code. * * Revision 1.13 1998/09/23 06:21:31 robertj * Added open source copyright license. * * Revision 1.12 1998/04/07 13:33:21 robertj * Changed startup code to support PApplication class. * * Revision 1.11 1998/03/29 06:16:50 robertj * Rearranged initialisation sequence so PProcess descendent constructors can do "things". * * Revision 1.10 1998/02/16 00:13:16 robertj * Added tray icon support. * * Revision 1.9 1998/02/03 06:19:14 robertj * Added extra log levels. * * Revision 1.8 1997/07/08 13:02:32 robertj * DLL support. * * Revision 1.7 1997/02/05 11:51:15 robertj * Changed current process function to return reference and validate objects descendancy. * * Revision 1.6 1996/08/19 13:39:20 robertj * Added "Debug" level to system log. * Moved PSYSTEMLOG macro to common code. * Changed PSYSTEMLOG macro so does not execute << expression if below debug level. * Fixed memory leak in PSystemLog stream buffer. * * Revision 1.5 1996/08/17 10:00:27 robertj * Changes for Windows DLL support. * * Revision 1.4 1996/08/09 11:16:53 robertj * Moved log macro to platform dependent header. * * Revision 1.3 1996/07/30 12:24:13 robertj * Added SYSTEMLOG macro for GNU compiler compatibility. * * Revision 1.2 1996/07/27 04:10:06 robertj * Changed SystemLog to be stream based rather than printf based. * * Revision 1.1 1995/12/23 03:47:25 robertj * Initial revision * * Revision 1.3 1995/12/10 11:50:05 robertj * Numerous fixes for WIN32 service processes. * * Revision 1.2 1995/07/02 01:23:27 robertj * Set up service process to be in subthread not main thread. * * Revision 1.1 1995/06/17 00:50:54 robertj * Initial revision * */ #ifndef _PSERVICEPROCESS #define _PSERVICEPROCESS #ifdef P_USE_PRAGMA #pragma interface #endif /** This class abstracts the operating system dependent error logging facility. To send messages to the system error log, the PSYSTEMLOG macro should be used. */ class PSystemLog : public PObject, public iostream { PCLASSINFO(PSystemLog, PObject); public: /**@name Construction */ //@{ /// define the different error log levels enum Level { /// Log from standard error stream StdError = -1, /// Log a fatal error Fatal, /// Log a non-fatal error Error, /// Log a warning Warning, /// Log general information Info, /// Log debugging information Debug, /// Log more debugging information Debug2, /// Log even more debugging information Debug3, /// Log a lot of debugging information Debug4, /// Log a real lot of debugging information Debug5, /// Log a bucket load of debugging information Debug6, NumLogLevels }; /// Create a system log stream PSystemLog( Level level ///< only messages at this level or higher will be logged ) : iostream(cout.rdbuf()) { logLevel = level; buffer.log = this; init(&buffer); } /// Destroy the string stream, deleting the stream buffer ~PSystemLog() { flush(); } //@} /**@name Output functions */ //@{ /** Log an error into the system log. */ static void Output( Level level, ///< Log level for this log message. const char * msg ///< Message to be logged ); //@} /**@name Miscellaneous functions */ //@{ /** Set the level at which errors are logged. Only messages higher than or equal to the specified level will be logged. */ void SetLevel( Level level ///< New log level ) { logLevel = level; } /** Get the current level for logging. @return Log level. */ Level GetLevel() const { return logLevel; } //@} private: PSystemLog(const PSystemLog &) : iostream(cout.rdbuf()) { } PSystemLog & operator=(const PSystemLog &) { return *this; } class Buffer : public streambuf { public: virtual int overflow(int=EOF); virtual int underflow(); virtual int sync(); PSystemLog * log; PString string; } buffer; friend class Buffer; Level logLevel; }; /** Log a message to the system log. The current log level is checked and if allowed, the second argument is evaluated as a stream output sequence which is them output to the system log. */ #define PSYSTEMLOG(level, variables) \ if (PServiceProcess::Current().GetLogLevel() >= PSystemLog::level) { \ PSystemLog P_systemlog(PSystemLog::level); \ P_systemlog << variables; \ } else (void)0 /** A process type that runs as a "background" service. This may be a service under the Windows NT operating system, or a "daemon" under Unix, or a hidden application under Windows. */ class PServiceProcess : public PProcess { PCLASSINFO(PServiceProcess, PProcess); public: /**@name Construction */ //@{ /** Create a new service process. */ PServiceProcess( const char * manuf, ///< Name of manufacturer const char * name, ///< Name of product WORD majorVersion, ///< Major version number of the product WORD minorVersion, ///< Minor version number of the product CodeStatus status, ///< Development status of the product WORD buildNumber ///< Build number of the product ); //@} /**@name Callback functions */ //@{ /** Called when the service is started. This typically initialises the service and returns TRUE if the service is ready to run. The #Main()# function is then executed. @return TRUE if service may start, FALSE if an initialisation failure occurred. */ virtual BOOL OnStart() = 0; /** Called by the system when the service is stopped. One return from this function there is no guarentee that any more user code will be executed. Any cleaning up or closing of resource must be done in here. */ virtual void OnStop(); /** Called by the system when the service is to be paused. This will suspend any actions that the service may be executing. Usually this is less expensive in resource allocation etc than stopping and starting the service. @return TRUE if the service was successfully paused. */ virtual BOOL OnPause(); /** Resume after the service was paused. */ virtual void OnContinue(); /** The Control menu option was used in the SysTray menu. */ virtual void OnControl() = 0; //@} /**@name Miscellaneous functions */ //@{ /** Get the current service process object. @return Pointer to service process. */ static PServiceProcess & Current(); /** Set the level at which errors are logged. Only messages higher than or equal to the specified level will be logged. The default is #LogError# allowing fatal errors and ordinary\ errors to be logged and warning and information to be ignored. If in debug mode then the default is #LogInfo# allowing all messages to be displayed. */ void SetLogLevel( PSystemLog::Level level ///< New log level ) { currentLogLevel = level; } /** Get the current level for logging. @return Log level. */ PSystemLog::Level GetLogLevel() const { return currentLogLevel; } //@} /* Internal initialisation function called directly from #main()#. The user should never call this function. */ virtual int _main(void * arg = NULL); protected: // Member variables /// Flag to indicate service is run in simulation mode. BOOL debugMode; /// Current log level for #PSYSTEMLOG# calls. PSystemLog::Level currentLogLevel; friend void PSystemLog::Output(PSystemLog::Level, const char *); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/svcproc.h" #else #include "unix/ptlib/svcproc.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/syncpoint.h0100644000176200056700000000627707731772047020364 0ustar releasepostincr/* * syncpoint.h * * Single thread synchronisation point (event) class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: syncpoint.h,v $ * Revision 1.10 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.9 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.8 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.7 2002/01/23 04:26:36 craigs * Added copy constructors for PSemaphore, PMutex and PSyncPoint to allow * use of default copy constructors for objects containing instances of * these classes * * Revision 1.6 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.5 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.4 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.3 1998/11/30 02:52:00 robertj * New directory structure * * Revision 1.2 1998/09/23 06:21:34 robertj * Added open source copyright license. * * Revision 1.1 1998/03/23 02:41:34 robertj * Initial revision * */ #ifndef _PSYNCPOINT #define _PSYNCPOINT #ifdef P_USE_PRAGMA #pragma interface #endif #include /** This class defines a thread synchonisation object. This form of semaphore is used to indicate an {\it event} has occurred. A thread may block on theis sync point and wait until another thread signals that it may continue. eg: \begin{verbatim} ... thread one while (condition) { sync.Wait(); do_something(); } ... thread 2 do_something_else(); sync.Signal(); // At this point thread 1 wake up and does something. do_yet_more(); \end{verbatim} */ class PSyncPoint : public PSemaphore { PCLASSINFO(PSyncPoint, PSemaphore); public: /** Create a new sync point. */ PSyncPoint(); PSyncPoint(const PSyncPoint &); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/syncpoint.h" #else #include "unix/ptlib/syncpoint.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/syncthrd.h0100644000176200056700000003416110341504163020144 0ustar releasepostincr/* * syncthrd.h * * Various thread synchronisation classes. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: syncthrd.h,v $ * Revision 1.14 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.13 2004/03/22 10:15:27 rjongbloed * Added classes similar to PWaitAndSignal to automatically unlock a PReadWriteMutex * when goes out of scope. * * Revision 1.12 2002/12/11 03:21:28 robertj * Updated documentation for read/write mutex. * * Revision 1.11 2002/10/04 08:20:44 robertj * Changed read/write mutex so can be called by same thread without deadlock. * * Revision 1.10 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.9 2002/05/01 03:45:31 robertj * Added initialisation of PreadWriteMutex and changed slightly to agree * with the text book definition of a semaphore for one of the mutexes. * * Revision 1.8 2002/04/30 06:21:54 robertj * Fixed PReadWriteMutex class to implement text book algorithm! * * Revision 1.7 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.6 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.5 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.4 1998/11/30 02:52:01 robertj * New directory structure * * Revision 1.3 1998/10/31 12:46:45 robertj * Renamed file for having general thread synchronisation objects. * Added conditional mutex and read/write mutex thread synchronisation objects. * * Revision 1.2 1998/09/23 06:21:35 robertj * Added open source copyright license. * * Revision 1.1 1998/05/30 13:26:15 robertj * Initial revision * */ #define _PSYNCPOINTACK #ifdef P_USE_PRAGMA #pragma interface #endif #include #include /** This class defines a thread synchonisation object. This may be used to send signals to a thread and await an acknowldegement that the signal was processed. This can be be used to initate an action in another thread and wait for the action to be completed. \begin{verbatim} ... thread one while (condition) { sync.Wait(); do_something(); sync.Acknowledge(); } ... thread 2 do_something_else(); sync.Signal(); // At this point thread 1 wake up and does something. do_yet_more(); // However, this does not get done until Acknowldege() // is called in the other thread. \end{verbatim} */ class PSyncPointAck : public PSyncPoint { PCLASSINFO(PSyncPointAck, PSyncPoint); public: /** If there are waiting (blocked) threads then unblock the first one that was blocked. If no waiting threads and the count is less than the maximum then increment the semaphore. Unlike the PSyncPoint::Signal() this function will block until the target thread that was blocked by the Wait() function has resumed execution and called the Acknowledge() function. The #waitTime# parameter is used as a maximum amount of time to wait for the achnowledgement to be returned from the other thread. */ virtual void Signal(); void Signal(const PTimeInterval & waitTime); /** This indicates that the thread that was blocked in a Wait() on this synchonrisation object has completed the operation the signal was intended to initiate. This unblocks the thread that had called the Signal() function to initiate the action. */ void Acknowledge(); protected: PSyncPoint ack; }; /**This class defines a thread synchonisation object. This is a special type of mutual exclusion, where a thread wishes to get exlusive use of a resource but only if a certain other condition is met. */ class PCondMutex : public PMutex { PCLASSINFO(PCondMutex, PMutex); public: /** This function attempts to acquire the mutex, but will block not only until the mutex is free, but also that the condition returned by the Condition() function is also met. */ virtual void WaitCondition(); /** If there are waiting (blocked) threads then unblock the first one that was blocked. If no waiting threads and the count is less than the maximum then increment the semaphore. */ virtual void Signal(); /** This is the condition that must be met for the WaitCondition() function to acquire the mutex. */ virtual BOOL Condition() = 0; /** This function is called immediately before blocking on the condition in the WaitCondition() function. This could get called multiple times before the condition is met and the WaitCondition() function returns. */ virtual void OnWait(); protected: PSyncPoint syncPoint; }; /** This is a PCondMutex for which the conditional is the value of an integer. */ class PIntCondMutex : public PCondMutex { PCLASSINFO(PIntCondMutex, PCondMutex); public: /**@name Construction */ //@{ /// defines possible operators on current value and target value enum Operation { /// Less than LT, /// Less than or equal to LE, /// Equal to EQ, /// Greater than or equal to GE, /// Greater than GT }; /** Create a cond mutex using an integer */ PIntCondMutex( int value = 0, ///< initial value if the integer int target = 0, ///< target vaue which causes the mutex to unlock Operation operation = LE ///< comparison operator ); //@} /**@name Overrides from class PObject */ //@{ /** Print the object on the stream. This will be of the form #"(value < target)"#. */ void PrintOn(ostream & strm) const; //@} /**@name Condition access functions */ //@{ /** This is the condition that must be met for the WaitCondition() function to acquire the mutex. @return TRUE if condition is met. */ virtual BOOL Condition(); /**Get the current value of the condition variable. @return Current condition variable value. */ operator int() const { return value; } /**Assign new condition value. Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation. @return The object reference for consecutive operations in the same statement. */ PIntCondMutex & operator=(int newval); /**Increment condition value. Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation. @return The object reference for consecutive operations in the same statement. */ PIntCondMutex & operator++(); /**Add to condition value. Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation. @return The object reference for consecutive operations in the same statement. */ PIntCondMutex & operator+=(int inc); /**Decrement condition value. Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation. @return The object reference for consecutive operations in the same statement. */ PIntCondMutex & operator--(); /**Subtract from condition value. Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation. @return The object reference for consecutive operations in the same statement. */ PIntCondMutex & operator-=(int dec); //@} protected: int value, target; Operation operation; }; /** This class defines a thread synchonisation object. This is a special type of mutual exclusion, where the excluded area may have multiple read threads but only one write thread and the read threads are blocked on write as well. */ class PReadWriteMutex : public PObject { PCLASSINFO(PReadWriteMutex, PObject); public: /**@name Construction */ //@{ PReadWriteMutex(); //@} /**@name Operations */ //@{ /** This function attempts to acquire the mutex for reading. This call may be nested and must have an equal number of EndRead() calls for the mutex to be released. */ void StartRead(); /** This function attempts to release the mutex for reading. */ void EndRead(); /** This function attempts to acquire the mutex for writing. This call may be nested and must have an equal number of EndWrite() calls for the mutex to be released. Note, if the same thread had a read lock previous to this call then the read lock is automatically released and reacquired when EndWrite() is called, unless an EndRead() is called. The EndRead() and EndWrite() calls do not have to be strictly nested. It should also be noted that a consequence of this is that another thread may acquire the write lock before the thread that previously had the read lock. Thus it is impossibly to go straight from a read lock to write lock without the possiblility of the object being changed and application logic should take this into account. */ void StartWrite(); /** This function attempts to release the mutex for writing. Note, if the same thread had a read lock when the StartWrite() was called which has not yet been released by an EndRead() call then this will reacquire the read lock. It should also be noted that a consequence of this is that another thread may acquire the write lock before the thread that regains the read lock. Thus it is impossibly to go straight from a write lock to read lock without the possiblility of the object being changed and application logic should take this into account. */ void EndWrite(); //@} protected: PSemaphore readerSemaphore; PMutex readerMutex; unsigned readerCount; PMutex starvationPreventer; PSemaphore writerSemaphore; PMutex writerMutex; unsigned writerCount; class Nest : public PObject { PCLASSINFO(Nest, PObject); Nest() { readerCount = writerCount = 0; } unsigned readerCount; unsigned writerCount; }; PDictionary nestedThreads; PMutex nestingMutex; Nest * GetNest() const; Nest & StartNest(); void EndNest(); void InternalStartRead(); void InternalEndRead(); }; /**This class starts a read operation for the PReadWriteMutex on construction and automatically ends the read operation on destruction. This is very usefull for constructs such as: \begin{verbatim} void func() { PReadWaitAndSignal mutexWait(myMutex); if (condition) return; do_something(); if (other_condition) return; do_something_else(); } \end{verbatim} */ class PReadWaitAndSignal { public: /**Create the PReadWaitAndSignal wait instance. This will wait on the specified PReadWriteMutex using the #StartRead()# function before returning. */ PReadWaitAndSignal( const PReadWriteMutex & rw, ///< PReadWriteMutex descendent to wait/signal. BOOL start = TRUE ///< Start read operation on PReadWriteMutex before returning. ); /** End read operation on the PReadWriteMutex. This will execute the EndRead() function on the PReadWriteMutex that was used in the construction of this instance. */ ~PReadWaitAndSignal(); protected: PReadWriteMutex & mutex; }; /**This class starts a write operation for the PReadWriteMutex on construction and automatically ends the write operation on destruction. This is very usefull for constructs such as: \begin{verbatim} void func() { PWriteWaitAndSignal mutexWait(myMutex); if (condition) return; do_something(); if (other_condition) return; do_something_else(); } \end{verbatim} */ class PWriteWaitAndSignal { public: /**Create the PWriteWaitAndSignal wait instance. This will wait on the specified PReadWriteMutex using the #StartWrite()# function before returning. */ PWriteWaitAndSignal( const PReadWriteMutex & rw, ///< PReadWriteMutex descendent to wait/signal. BOOL start = TRUE ///< Start write operation on PReadWriteMutex before returning. ); /** End write operation on the PReadWriteMutex. This will execute the EndWrite() function on the PReadWriteMutex that was used in the construction of this instance. */ ~PWriteWaitAndSignal(); protected: PReadWriteMutex & mutex; }; // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/tcpsock.h0100644000176200056700000002504510341504163017755 0ustar releasepostincr/* * tcpsock.h * * Transmission Control Protocol socket channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: tcpsock.h,v $ * Revision 1.31 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.30 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.29 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.28 2002/10/08 12:41:51 robertj * Changed for IPv6 support, thanks Sbastien Josset. * * Revision 1.27 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.26 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.25 1999/09/28 00:08:59 robertj * Fixed some comment typoes * * Revision 1.24 1999/09/28 00:07:54 robertj * Fixed some comment typoes * * Revision 1.23 1999/08/30 02:21:03 robertj * Added ability to listen to specific interfaces for IP sockets. * * Revision 1.22 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.21 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.20 1998/12/22 10:23:08 robertj * Added clone() function to support SOCKS in FTP style protocols. * * Revision 1.19 1998/09/23 06:21:37 robertj * Added open source copyright license. * * Revision 1.18 1998/08/21 05:24:46 robertj * Fixed bug where write streams out to non-stream socket. * * Revision 1.17 1996/09/14 13:09:42 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.16 1996/03/26 00:57:15 robertj * Added contructor that takes PTCPSocket so avoid copy constructor being used instead of accept. * * Revision 1.15 1996/03/03 07:37:59 robertj * Added Reusability clause to the Listen() function on sockets. * * Revision 1.14 1996/02/25 03:01:27 robertj * Moved some socket functions to platform dependent code. * * Revision 1.13 1995/12/10 11:43:34 robertj * Numerous fixes for sockets. * * Revision 1.12 1995/06/17 11:13:31 robertj * Documentation update. * * Revision 1.11 1995/06/17 00:47:31 robertj * Changed overloaded Open() calls to 3 separate function names. * More logical design of port numbers and service names. * * Revision 1.10 1995/06/04 12:46:25 robertj * Slight redesign of port numbers on sockets. * * Revision 1.9 1995/03/14 12:42:46 robertj * Updated documentation to use HTML codes. * * Revision 1.8 1995/03/12 04:46:40 robertj * Added more functionality. * * Revision 1.7 1995/01/03 09:36:22 robertj * Documentation. * * Revision 1.6 1995/01/01 01:07:33 robertj * More implementation. * * Revision 1.5 1994/08/23 11:32:52 robertj * Oops * * Revision 1.4 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3 1994/08/21 23:43:02 robertj * Changed type of socket port number for better portability. * Added Out of Band data functions. * * Revision 1.2 1994/07/25 03:36:03 robertj * Added sockets to common, normalising to same comment standard. * */ #ifndef _PTCPSOCKET #define _PTCPSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif /** A socket that uses the TCP transport on the Internet Protocol. */ class PTCPSocket : public PIPSocket { PCLASSINFO(PTCPSocket, PIPSocket); public: /**@name Construction. */ //@{ /**Create a TCP/IP protocol socket channel. If a remote machine address or a "listening" socket is specified then the channel is also opened. Note that what looks like a "copy" constructor here is really a the accept of a "listening" socket the same as the PSocket & parameter version constructor. */ PTCPSocket( WORD port = 0 ///< Port number to use for the connection. ); PTCPSocket( const PString & service ///< Service name to use for the connection. ); PTCPSocket( const PString & address, ///< Address of remote machine to connect to. WORD port ///< Port number to use for the connection. ); PTCPSocket( const PString & address, ///< Address of remote machine to connect to. const PString & service ///< Service name to use for the connection. ); PTCPSocket( PSocket & socket ///< Listening socket making the connection. ); PTCPSocket( PTCPSocket & tcpSocket ///< Listening socket making the connection. ); //@} /**@name Overrides from class PObject. */ //@{ /** Create a copy of the class on the heap. The exact semantics of the descendent class determine what is required to make a duplicate of the instance. Not all classes can even {\bf do} a clone operation. The main user of the clone function is the #PDictionary# class as it requires copies of the dictionary keys. The default behaviour is for this function to assert. @return pointer to new copy of the class instance. */ virtual PObject * Clone() const; //@} /**@name Overrides from class PChannel. */ //@{ /** Low level write to the channel. This function will block until the requested number of characters are written or the write timeout is reached. The GetLastWriteCount() function returns the actual number of bytes written. The GetErrorCode() function should be consulted after Write() returns FALSE to determine what caused the failure. This override repeatedly writes if there is no error until all of the requested bytes have been written. @return TRUE if at least len bytes were written to the channel. */ virtual BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); //@} /**@name Overrides from class PSocket. */ //@{ /** Listen on a socket for a remote host on the specified port number. This may be used for server based applications. A "connecting" socket begins a connection by initiating a connection to this socket. An active socket of this type is then used to generate other "accepting" sockets which establish a two way communications channel with the "connecting" socket. If the #port# parameter is zero then the port number as defined by the object instance construction or the #PIPSocket::SetPort()# function. @return TRUE if the channel was successfully opened. */ virtual BOOL Listen( unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Can't listen more than once. ); virtual BOOL Listen( const Address & bind, ///< Local interface address to bind to. unsigned queueSize = 5, ///< Number of pending accepts that may be queued. WORD port = 0, ///< Port number to use for the connection. Reusability reuse = AddressIsExclusive ///< Can/Can't listen more than once. ); /** Open a socket to a remote host on the specified port number. This is an "accepting" socket. When a "listening" socket has a pending connection to make, this will accept a connection made by the "connecting" socket created to establish a link. The port that the socket uses is the one used in the #Listen()# command of the #socket# parameter. Note that this function will block until a remote system connects to the port number specified in the "listening" socket. @return TRUE if the channel was successfully opened. */ virtual BOOL Accept( PSocket & socket ///< Listening socket making the connection. ); //@} /**@name New functions for class. */ //@{ /** Write out of band data from the TCP/IP stream. This data is sent as TCP URGENT data which does not follow the usual stream sequencing of the normal channel data. This is subject to the write timeout and sets the #lastWriteCount# member variable in the same way as usual #PChannel::Write()# function. @return TRUE if all the bytes were sucessfully written. */ virtual BOOL WriteOutOfBand( const void * buf, ///< Data to be written as URGENT TCP data. PINDEX len ///< Number of bytes pointed to by #buf#. ); /** This is callback function called by the system whenever out of band data from the TCP/IP stream is received. A descendent class may interpret this data according to the semantics of the high level protocol. The default behaviour is for the out of band data to be ignored. */ virtual void OnOutOfBand( const void * buf, ///< Data to be received as URGENT TCP data. PINDEX len ///< Number of bytes pointed to by #buf#. ); //@} protected: // Open an IPv4 socket (for backward compatibility) virtual BOOL OpenSocket(); // Open an IPv4 or IPv6 socket virtual BOOL OpenSocket( int ipAdressFamily ); virtual const char * GetProtocolName() const; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/tcpsock.h" #else #include "unix/ptlib/tcpsock.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/textfile.h0100644000176200056700000001341110341504163020125 0ustar releasepostincr/* * textfile.h * * A text file I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: textfile.h,v $ * Revision 1.20 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.19 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.18 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.17 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.16 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.15 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.14 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.13 1998/09/23 06:21:39 robertj * Added open source copyright license. * * Revision 1.12 1995/07/31 12:15:49 robertj * Removed PContainer from PChannel ancestor. * * Revision 1.11 1995/06/17 11:13:34 robertj * Documentation update. * * Revision 1.10 1995/03/14 12:42:48 robertj * Updated documentation to use HTML codes. * * Revision 1.9 1995/01/14 06:19:42 robertj * Documentation * * Revision 1.8 1994/08/23 11:32:52 robertj * Oops * * Revision 1.7 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.6 1994/04/20 12:17:44 robertj * PFilePath addition * * Revision 1.5 1994/04/01 14:17:26 robertj * Fixed container for text file. * * Revision 1.4 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.3 1993/08/21 01:50:33 robertj * Made Clone() function optional, default will assert if called. * * Revision 1.2 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PTEXTFILE #define _PTEXTFILE #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // Text Files /** A class representing a a structured file that is portable accross CPU architectures. Essentially this will normalise the end of line character which differs fromplatform to platform. */ class PTextFile : public PFile { PCLASSINFO(PTextFile, PFile); public: /**@name Construction */ //@{ /** Create a text file object but do not open it. It does not initially have a valid file name. However, an attempt to open the file using the #PFile::Open()# function will generate a unique temporary file. */ PTextFile(); /** Create a unique temporary file name, and open the file in the specified mode and using the specified options. Note that opening a new, unique, temporary file name in ReadOnly mode will always fail. This would only be usefull in a mode and options that will create the file. The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PTextFile( OpenMode mode, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); /** Create a text file object with the specified name and open it in the specified mode and with the specified options. The #PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened. */ PTextFile( const PFilePath & name, ///< Name of file to open. OpenMode mode = ReadWrite, ///< Mode in which to open the file. int opts = ModeDefault ///< #OpenOptions enum# for open operation. ); //@} /**@name Line I/O functions */ //@{ /** Read a line from the text file. What constitutes an end of line in the file is platform dependent. Use the #PChannel::GetLastError()# function to determine if there was some error other than end of file. @return TRUE if successful, FALSE if at end of file or a read error. */ BOOL ReadLine( PString & str ///< String into which line of text is read. ); /** Read a line from the text file. What constitutes an end of line in the file is platform dependent. Use the #PChannel::GetLastError()# function to determine the failure mode. @return TRUE if successful, FALSE if an error occurred. */ BOOL WriteLine( const PString & str ///< String to write with end of line terminator. ); //@} // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/textfile.h" #else #include "unix/ptlib/textfile.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/thread.h0100644000176200056700000004203010367250435017557 0ustar releasepostincr/* * thread.h * * Executable thread encapsulation class (pre-emptive if OS allows). * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: thread.h,v $ * Revision 1.38.2.1 2006/01/29 23:34:53 csoutheren * Backported thread destruction patch from Derek Smithies * * Revision 1.39 2006/01/29 22:35:46 csoutheren * Added fix for thread termination problems on SMP machines * Thanks to Derek Smithies * * Revision 1.38 2006/01/11 22:27:44 dereksmithies * Add extra comments describing the usage of Resume() in the constructor of a * class descended of PThread * * Revision 1.37 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.36 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.35 2003/10/08 21:39:34 dereksmithies * Add a #define to cope with backward compatability issues for PThreadIdentifier * Thanks to Andrey S Pankov and Craig Southeren for their input. * * Revision 1.34 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.33 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.32 2002/10/04 04:33:27 robertj * Added functions for getting operating system thread identifier values. * * Revision 1.31 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.30 2002/06/27 06:44:28 robertj * Changed "" to PString::Empty() where assigning to PString. * * Revision 1.29 2002/04/24 01:49:22 robertj * Fixed error in PTRACE_BLOCk nesting level to now work when no tracing enabled. * * Revision 1.28 2002/04/24 01:09:56 robertj * Fixed problem with PTRACE_BLOCK indent level being correct across threads. * * Revision 1.27 2001/09/10 02:51:22 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.26 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.25 2000/11/28 12:55:36 robertj * Added static function to create a new thread class and automatically * run a function on another class in the context of that thread. * * Revision 1.24 2000/10/20 05:31:09 robertj * Added function to change auto delete flag on a thread. * * Revision 1.23 2000/06/26 11:17:19 robertj * Nucleus++ port (incomplete). * * Revision 1.22 2000/02/29 12:26:14 robertj * Added named threads to tracing, thanks to Dave Harvey * * Revision 1.21 1999/06/06 05:07:17 robertj * Fixed documentation error. * * Revision 1.20 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.19 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.18 1998/11/20 03:18:33 robertj * Added thread WaitForTermination() function. * * Revision 1.17 1998/10/31 12:47:59 robertj * Removed ability to start threads immediately, race condition with vtable (Main() function). * * Revision 1.16 1998/09/23 06:21:41 robertj * Added open source copyright license. * * Revision 1.15 1996/03/02 03:15:51 robertj * Added automatic deletion of thread object instances on thread completion. * * Revision 1.14 1995/12/10 11:44:32 robertj * Fixed bug in non-platform threads and semaphore timeouts. * * Revision 1.13 1995/11/21 11:49:44 robertj * Added timeout on semaphore wait. * * Revision 1.12 1995/07/31 12:10:40 robertj * Added semaphore class. * * Revision 1.11 1995/06/17 11:13:35 robertj * Documentation update. * * Revision 1.10 1995/03/14 12:42:49 robertj * Updated documentation to use HTML codes. * * Revision 1.9 1995/01/16 09:42:13 robertj * Documentation. * * Revision 1.8 1994/09/25 10:45:22 robertj * Virtualised IsNoLongerBlocked for unix platform. * * Revision 1.6 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.5 1994/08/21 23:43:02 robertj * Added SuspendBlock state to cooperative multi-threading to fix logic fault. * * Revision 1.4 1994/08/04 12:32:22 robertj * Better name of thread block check function. * * Revision 1.3 1994/07/21 12:33:49 robertj * Moved cooperative threads to common. * * Revision 1.2 1994/07/02 03:03:49 robertj * Added restartable threads. * * Revision 1.1 1994/06/25 11:55:15 robertj * Initial revision * */ #ifndef _PTHREAD #define _PTHREAD #ifdef P_USE_PRAGMA #pragma interface #endif #ifdef Priority #undef Priority #endif class PSemaphore; #define PThreadIdentifer PThreadIdentifier typedef P_THREADIDENTIFIER PThreadIdentifier; /////////////////////////////////////////////////////////////////////////////// // PThread /** This class defines a thread of execution in the system. A {\it thread} is an independent flow of processor instructions. This differs from a {\it process} which also embodies a program address space and resource allocation. So threads can share memory and resources as they run in the context of a given process. A process always contains at least one thread. This is reflected in this library by the #PProcess# class being descended from the PThread class. The implementation of a thread is platform dependent, but it is assumed that the platform has some support for native threads. Previous versions of PWLib has some support for co-operative threads, but this has been removed */ class PThread : public PObject { PCLASSINFO(PThread, PObject); public: /**@name Construction */ //@{ /// Codes for thread priorities. enum Priority { /// Will only run if all other threads are blocked. LowestPriority, /// Runs approximately half as often as normal. LowPriority, /// Normal priority for a thread. NormalPriority, /// Runs approximately twice as often as normal. HighPriority, /// Is only thread that will run, unless blocked. HighestPriority, NumPriorities }; /// Codes for thread autodelete flag enum AutoDeleteFlag { /// Automatically delete thread object on termination. AutoDeleteThread, /// Don't delete thread as it may not be on heap. NoAutoDeleteThread }; /** Create a new thread instance. Unless the #startSuspended# parameter is TRUE, the threads #Main()# function is called to execute the code for the thread. Note that the exact timing of the execution of code in threads can never be predicted. Thus you you can get a race condition on intialising a descendent class. To avoid this problem a thread is always started suspended. You must call the Resume() function after your descendent class construction is complete. If synchronisation is required between threads then the use of semaphores is essential. If the #deletion# is set to #AutoDeleteThread# then the PThread is assumed to be allocated with the new operator and may be freed using the delete operator as soon as the thread is terminated or executes to completion (usually the latter). The stack size argument retained only for source code compatibility for previous implementations. It is not used in the current code and may be removed in subsequent versions. */ PThread( PINDEX , ///< Not used - previously stack size AutoDeleteFlag deletion = AutoDeleteThread, ///< Automatically delete PThread instance on termination of thread. Priority priorityLevel = NormalPriority, ///< Initial priority of thread. const PString & threadName = PString::Empty() ///< The name of the thread (for Debug/Trace) ); /** Destroy the thread, this simply calls the #Terminate()# function with all its restrictions and penalties. See that function for more information. Note that the correct way for a thread to terminate is to return from the #Main()# function. */ ~PThread(); //@} /**@name Overrides from PObject */ //@{ /**Standard stream print function. The PObject class has a << operator defined that calls this function polymorphically. */ void PrintOn( ostream & strm ///< Stream to output text representation ) const; //@} /**@name Control functions */ //@{ /** Restart a terminated thread using the same stack priority etc that was current when the thread terminated. If the thread is still running then this function is ignored. */ virtual void Restart(); /** Terminate the thread. It is highly recommended that this is not used except in abnormal abort situations as not all clean up of resources allocated to the thread will be executed. This is especially true in C++ as the destructors of objects that are automatic variables are not called causing at the very least the possiblity of memory leaks. Note that the correct way for a thread to terminate is to return from the #Main()# function or self terminate by calling #Terminate()# within the context of the thread which can then assure that all resources are cleaned up. */ virtual void Terminate(); /** Determine if the thread has been terminated or ran to completion. @return TRUE if the thread has been terminated. */ virtual BOOL IsTerminated() const; /** Block and wait for the thread to terminate. @return FALSE if the thread has not terminated and the timeout has expired. */ void WaitForTermination() const; BOOL WaitForTermination( const PTimeInterval & maxWait ///< Maximum time to wait for termination. ) const; /** Suspend or resume the thread. If #susp# is TRUE this increments an internal count of suspensions that must be matched by an equal number of calls to #Resume()# or #Suspend(FALSE)# before the thread actually executes again. If #susp# is FALSE then this decrements the internal count of suspensions. If the count is <= 0 then the thread will run. Note that the thread will not be suspended until an equal number of #Suspend(TRUE)# calls are made. */ virtual void Suspend( BOOL susp = TRUE ///< Flag to suspend or resume a thread. ); /** Resume thread execution, this is identical to #Suspend(FALSE)#. The Resume() method may be called from within the constructor of a PThread descendant. However, the Resume() should be in the constructor of the most descendant class. So, if you have a class B (which is descended of PThread), and a class C (which is descended of B), placing the call to Resume in the constructor of B is unwise. If you do place a call to Resume in the constructor, it should be at the end of the constructor, after all the other initialisation in the constructor. The reason the call to Resume() should be at the end of the construction process is simple - you want the thread to start when all the variables in the class have been correctly initialised. */ virtual void Resume(); /** Determine if the thread is currently suspended. This checks the suspension count and if greater than zero returns TRUE for a suspended thread. @return TRUE if thread is suspended. */ virtual BOOL IsSuspended() const; /// Suspend the current thread for the specified amount of time. static void Sleep( const PTimeInterval & delay ///< Time interval to sleep for. ); /** Set the priority of the thread relative to other threads in the current process. */ virtual void SetPriority( Priority priorityLevel ///< New priority for thread. ); /** Get the current priority of the thread in the current process. @return current thread priority. */ virtual Priority GetPriority() const; /** Set the flag indicating thread object is to be automatically deleted when the thread ends. */ virtual void SetAutoDelete( AutoDeleteFlag deletion = AutoDeleteThread ///< New auto delete setting. ); /** Reet the flag indicating thread object is to be automatically deleted when the thread ends. */ void SetNoAutoDelete() { SetAutoDelete(NoAutoDeleteThread); } /** Get the name of the thread. Thread names are a optional debugging aid. @return current thread name. */ virtual PString GetThreadName() const; /** Change the name of the thread. Thread names are a optional debugging aid. @return current thread name. */ virtual void SetThreadName( const PString & name ///< New name for the thread. ); //@} /**@name Miscellaneous */ //@{ /** Get operating system specific thread identifier for this thread. * Note that the return value from these functions is only valid * if called by the owning thread. Calling this function for another * thread that may be terminating is a very bad idea. */ virtual PThreadIdentifier GetThreadId() const; static PThreadIdentifier GetCurrentThreadId(); /** User override function for the main execution routine of the thread. A descendent class must provide the code that will be executed in the thread within this function. Note that the correct way for a thread to terminate is to return from this function. */ virtual void Main() = 0; /** Get the currently running thread object instance. It is possible, even likely, that the smae code may be executed in the context of differenct threads. Under some circumstances it may be necessary to know what the current codes thread is and this static function provides that information. @return pointer to current thread. */ static PThread * Current(); /** Yield to another thread without blocking. This duplicates the implicit thread yield that may occur on some I/O operations or system calls. This may not be implemented on all platforms. */ static void Yield(); /**Create a simple thread executing the specified notifier. This creates a simple PThread class that automatically executes the function defined by the PNotifier in the context of a new thread. */ static PThread * Create( const PNotifier & notifier, ///< Function to execute in thread. INT parameter = 0, ///< Parameter value to pass to notifier. AutoDeleteFlag deletion = AutoDeleteThread, ///< Automatically delete PThread instance on termination of thread. Priority priorityLevel = NormalPriority, ///< Initial priority of thread. const PString & threadName = PString::Empty(), ///< The name of the thread (for Debug/Trace) PINDEX stackSize = 10000 ///< Stack size on some platforms ); //@} protected: void InitialiseProcessThread(); /* Initialialise the primordial thread, the one in the PProcess. This is required due to the bootstrap logic of processes and threads. */ private: PThread(); // Create a new thread instance as part of a PProcess class. friend class PProcess; // So a PProcess can get at PThread() constructor but nothing else. PThread(const PThread &) { } // Empty constructor to prevent copying of thread instances. PThread & operator=(const PThread &) { return *this; } // Empty assignment operator to prevent copying of thread instances. BOOL autoDelete; // Automatically delete the thread on completion. // Give the thread a name for debugging purposes. PString threadName; private: unsigned traceBlockIndentLevel; friend class PTrace::Block; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/thread.h" #else #include "unix/ptlib/thread.h" #endif }; #endif // _PTHREAD // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/timeint.h0100644000176200056700000003453710341504163017766 0ustar releasepostincr/* * timeint.h * * Millisecond resolution time interval class (uses 64 bit integers). * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: timeint.h,v $ * Revision 1.31 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.30 2004/04/18 04:33:36 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.29 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.28 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.27 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.26 2002/05/28 13:05:26 robertj * Fixed PTimer::SetInterval so it restarts timer as per operator=() * * Revision 1.25 2001/10/16 07:44:06 robertj * Added AsString() function to PTimeInterval. * * Revision 1.24 2001/07/10 02:55:16 robertj * Added unary minus operator * * Revision 1.23 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.22 2000/10/05 23:36:26 robertj * Fixed compiler ambiguities in PTimeInterval constructor. * * Revision 1.21 2000/03/06 04:09:23 robertj * Added constructor to do PString conversion to PTimeInterval * * Revision 1.20 1999/07/06 04:46:00 robertj * Fixed being able to case an unsigned to a PTimeInterval. * Improved resolution of PTimer::Tick() to be millisecond accurate. * * Revision 1.19 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.18 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.17 1998/09/23 06:21:43 robertj * Added open source copyright license. * * Revision 1.16 1998/01/26 00:49:53 robertj * Added multiply and divide operators to PTimeInterval. * * Revision 1.15 1996/05/15 10:19:29 robertj * Changed millisecond access functions to get 64 bit integer. * * Revision 1.14 1996/05/09 12:22:09 robertj * Resolved C++ problems with 64 bit PTimeInterval for Mac platform. * * Revision 1.13 1996/03/17 05:52:02 robertj * Changed PTimeInterval to 64 bit integer. * * Revision 1.12 1995/03/14 12:42:50 robertj * Updated documentation to use HTML codes. * * Revision 1.11 1995/01/18 09:01:32 robertj * Documentation. * * Revision 1.10 1995/01/09 12:29:41 robertj * Removed unnecesary return value from I/O functions. * * Revision 1.9 1994/08/23 11:32:52 robertj * Oops * * Revision 1.8 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.7 1994/07/02 03:03:49 robertj * Timer redesign consequences and ability to compare a time interval against * ordinary integer milliseconds. * * Revision 1.6 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.5 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.4 1993/08/31 03:38:02 robertj * Added copy constructor and assignement oeprator due to G++ strangeness. * * Revision 1.3 1993/08/27 18:17:47 robertj * Added function to set the interval of a PTieInterval object. * Used a common type for number of milliseconds. * * Revision 1.2 1993/07/14 12:49:16 robertj * Fixed RCS keywords. * */ #ifndef _PTIMEINTERVAL #define _PTIMEINTERVAL #ifdef P_USE_PRAGMA #pragma interface #endif /////////////////////////////////////////////////////////////////////////////// // Difference between two system times /** This class defines an arbitrary time interval to millisecond accuracy. The interval can be both positive and negative. A long int is used to store the time interval so it is limited to LONG_MAX (found in the standard C header file limits.h) milliseconds. This is approximately 596 hours for 32 bit integers. There is a constant, #PMaxTimeInterval# which defines the maximum number of milliseconds that a time interval may be. */ class PTimeInterval : public PObject { PCLASSINFO(PTimeInterval, PObject); public: /**@name Construction */ //@{ /** Create a new time interval object. The time interval, in milliseconds, is the sum of all of the parameters. For example all of the following are equivalent: \begin{verbatim} PTimeInterval(120000) PTimeInterval(60000, 60) PTimeInterval(60000, 0, 1) PTimeInterval(0, 60, 1) PTimeInterval(0, 0, 2) \end{verbatim} */ PTimeInterval( PInt64 millisecs = 0 ///< Number of milliseconds for interval. ); PTimeInterval( long millisecs, ///< Number of milliseconds for interval. long seconds, ///< Number of seconds for interval. long minutes = 0, ///< Number of minutes for interval. long hours = 0, ///< Number of hours for interval. int days = 0 ///< Number of days for interval. ); PTimeInterval( const PString & str ///< String representation of time interval. ); //@} /**@name Overrides from class PObject */ //@{ /** Create a new copy of the time interval. It is the responsibility of the called to delete the object. @return new time interval on heap. */ PObject * Clone() const; /** Rank the two time intervals. This ranks the intervals as you would expect for two integers. @return #EqualTo#, #LessThan# or #GreaterThan# depending on their relative rank. */ virtual Comparison Compare( const PObject & obj ///< Time interval to compare against. ) const; /** Output the time interval to the I/O stream. This outputs the number of milliseconds as a signed decimal integer number. */ virtual void PrintOn( ostream & strm ///< I/O stream to output the time interval. ) const; /** Input the time interval from the I/O stream. This expects the input to be a signed decimal integer number. */ virtual void ReadFrom( istream & strm ///< I/O stream to input the time interval from. ); //@} /**@name Conversion functions */ //@{ enum Formats { NormalFormat, IncludeDays, SecondsOnly }; PString AsString( int decimals = 3, Formats format = NormalFormat, int width = 1 ) const; //@} /**@name Access functions */ //@{ /** Get the number of milliseconds for the time interval. @return very long integer number of milliseconds. */ PInt64 GetMilliSeconds() const; /** Get the number of whole seconds for the time interval. @return long integer number of seconds. */ long GetSeconds() const; /** Get the number of whole minutes for the time interval. @return integer number of minutes. */ long GetMinutes() const; /** Get the number of whole hours for the time interval. @return integer number of hours. */ int GetHours() const; /** Get the number of whole days for the time interval. @return integer number of days. */ int GetDays() const; /** Get the number of milliseconds for the time interval. @return long integer number of milliseconds. */ DWORD GetInterval() const; /** Set the value of the time interval. The time interval, in milliseconds, is the sum of all of the parameters. For example all of the following are equivalent: \begin{verbatim} SetInterval(120000) SetInterval(60000, 60) SetInterval(60000, 0, 1) SetInterval(0, 60, 1) SetInterval(0, 0, 2) \end{verbatim} */ virtual void SetInterval( PInt64 milliseconds = 0, ///< Number of milliseconds for interval. long seconds = 0, ///< Number of seconds for interval. long minutes = 0, ///< Number of minutes for interval. long hours = 0, ///< Number of hours for interval. int days = 0 ///< Number of days for interval. ); //@} /**@name Operations */ //@{ /** Unary minus, get negative of time interval. @return difference of the time intervals. */ PTimeInterval operator-() const; /** Add the two time intervals yielding a third time interval. @return sum of the time intervals. */ PTimeInterval operator+( const PTimeInterval & interval ///< Time interval to add. ) const; /** Add the second time interval to the first time interval. @return reference to first time interval. */ PTimeInterval & operator+=( const PTimeInterval & interval ///< Time interval to add. ); /** Subtract the two time intervals yielding a third time interval. @return difference of the time intervals. */ PTimeInterval operator-( const PTimeInterval & interval ///< Time interval to subtract. ) const; /** Subtract the second time interval from the first time interval. @return reference to first time interval. */ PTimeInterval & operator-=( const PTimeInterval & interval ///< Time interval to subtract. ); /** Multiply the time interval by a factor yielding a third time interval. @return the time intervals times the factor. */ PTimeInterval operator*( int factor ///< factor to multiply. ) const; /** Multiply the time interval by a factor. @return reference to time interval. */ PTimeInterval & operator*=( int factor ///< factor to multiply. ); /** Divide the time interval by a factor yielding a third time interval. @return the time intervals divided by the factor. */ PTimeInterval operator/( int factor ///< factor to divide. ) const; /** Divide the time interval by a factor. @return reference to time interval. */ PTimeInterval & operator/=( int factor ///< factor to divide. ); //@} /**@name Comparison functions */ //@{ /** Compare to the two time intervals. This is provided as an override to the default in PObject so that comparisons can be made to integer literals that represent milliseconds. @return TRUE if intervals are equal. */ bool operator==( const PTimeInterval & interval ///< Time interval to compare. ) const; bool operator==( long msecs ///< Time interval as integer milliseconds to compare. ) const; /** Compare to the two time intervals. This is provided as an override to the default in PObject so that comparisons can be made to integer literals that represent milliseconds. @return TRUE if intervals are not equal. */ bool operator!=( const PTimeInterval & interval ///< Time interval to compare. ) const; bool operator!=( long msecs ///< Time interval as integer milliseconds to compare. ) const; /** Compare to the two time intervals. This is provided as an override to the default in PObject so that comparisons can be made to integer literals that represent milliseconds. @return TRUE if intervals are greater than. */ bool operator> ( const PTimeInterval & interval ///< Time interval to compare. ) const; bool operator> ( long msecs ///< Time interval as integer milliseconds to compare. ) const; /** Compare to the two time intervals. This is provided as an override to the default in PObject so that comparisons can be made to integer literals that represent milliseconds. @return TRUE if intervals are greater than or equal. */ bool operator>=( const PTimeInterval & interval ///< Time interval to compare. ) const; bool operator>=( long msecs ///< Time interval as integer milliseconds to compare. ) const; /** Compare to the two time intervals. This is provided as an override to the default in PObject so that comparisons can be made to integer literals that represent milliseconds. @return TRUE if intervals are less than. */ bool operator< ( const PTimeInterval & interval ///< Time interval to compare. ) const; bool operator< ( long msecs ///< Time interval as integer milliseconds to compare. ) const; /** Compare to the two time intervals. This is provided as an override to the default in PObject so that comparisons can be made to integer literals that represent milliseconds. @return TRUE if intervals are less than or equal. */ bool operator<=( const PTimeInterval & interval ///< Time interval to compare. ) const; bool operator<=( long msecs ///< Time interval as integer milliseconds to compare. ) const; //@} protected: // Member variables /// Number of milliseconds in time interval. PInt64 milliseconds; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/timeint.h" #else #include "unix/ptlib/timeint.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/timer.h0100644000176200056700000003052310341504163017424 0ustar releasepostincr/* * timer.h * * Real time down counting time interval class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: timer.h,v $ * Revision 1.29 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.28 2005/06/02 19:25:18 dsandras * Applied patch from Miguel Rodrguez Prez (migras) to fix compilation with gcc 4.0.1. * * Revision 1.27 2003/09/17 09:01:00 csoutheren * Moved PSmartPointer and PNotifier into seperate files * Added detection for system regex libraries on all platforms * * Revision 1.26 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.25 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.24 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.23 2002/05/28 13:05:26 robertj * Fixed PTimer::SetInterval so it restarts timer as per operator=() * * Revision 1.22 2002/04/09 00:09:10 robertj * Improved documentation on PTimer usage. * * Revision 1.21 2001/11/14 06:06:26 robertj * Added functions on PTimer to get reset value and restart timer to it. * * Revision 1.20 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.19 2000/08/30 03:16:59 robertj * Improved multithreaded reliability of the timers under stress. * * Revision 1.18 2000/01/06 14:09:42 robertj * Fixed problems with starting up timers,losing up to 10 seconds * * Revision 1.17 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.16 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.15 1998/09/23 06:21:45 robertj * Added open source copyright license. * * Revision 1.14 1996/12/21 07:57:22 robertj * Fixed possible deadlock in timers. * * Revision 1.13 1996/05/18 09:18:37 robertj * Added mutex to timer list. * * Revision 1.12 1995/06/17 11:13:36 robertj * Documentation update. * * Revision 1.11 1995/04/02 09:27:34 robertj * Added "balloon" help. * * Revision 1.10 1995/03/14 12:42:51 robertj * Updated documentation to use HTML codes. * * Revision 1.9 1995/01/18 09:01:06 robertj * Added notifiers to timers. * Documentation. * * Revision 1.8 1994/08/23 11:32:52 robertj * Oops * * Revision 1.7 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.6 1994/07/02 03:03:49 robertj * Redesign of timers. * * Revision 1.5 1994/06/25 11:55:15 robertj * Unix version synchronisation. * * Revision 1.4 1994/03/07 07:38:19 robertj * Major enhancementsacross the board. * * Revision 1.3 1994/01/03 04:42:23 robertj * Mass changes to common container classes and interactors etc etc etc. * * Revision 1.2 1993/08/31 03:38:02 robertj * Added missing virtual on destructor. * * Revision 1.1 1993/08/27 18:17:47 robertj * Initial revision * */ #ifndef _PTIMER #define _PTIMER #ifdef P_USE_PRAGMA #pragma interface #endif class PThread; #include /** A class representing a system timer. The time interval ancestor value is the amount of time left in the timer. A timer on completion calls the virtual function #OnTimeout()#. This will in turn call the callback function provided by the instance. The user may either override the virtual function or set a callback as desired. A list of active timers is maintained by the applications #PProcess# instance and the timeout functions are executed in the context of a single thread of execution. There are many consequences of this: only one timeout function can be executed at a time and thus a user should not execute a lot of code in the timeout call-back functions or it will dealy the timely execution of other timers call-back functions. Also timers are not very accurate in sub-second delays, even though you can set the timer in milliseconds, its accuracy is only to -0/+250 ms. Even more (potentially MUCH more) if there are delays in the user call-back functions. Another trap is you cannot destroy a timer in its own call-back. There is code to cause an assert if you try but it is very easy to accidentally do this when you delete an object that contains an onject that contains the timer! Finally static timers cause race conditions on start up and termination and should be avoided. */ class PTimer : public PTimeInterval { PCLASSINFO(PTimer, PTimeInterval); public: /**@name Construction */ //@{ /** Create a new timer object and start it in one shot mode for the specified amount of time. If the time was zero milliseconds then the timer is {\bf not} started, ie the callback function is not executed immediately. */ PTimer( long milliseconds = 0, ///< Number of milliseconds for timer. int seconds = 0, ///< Number of seconds for timer. int minutes = 0, ///< Number of minutes for timer. int hours = 0, ///< Number of hours for timer. int days = 0 ///< Number of days for timer. ); PTimer( const PTimeInterval & time ///< New time interval for timer. ); /** Restart the timer in one shot mode using the specified time value. If the timer was already running, the "time left" is simply reset. @return reference to the timer. */ PTimer & operator=( DWORD milliseconds ///< New time interval for timer. ); PTimer & operator=( const PTimeInterval & time ///< New time interval for timer. ); /** Destroy the timer object, removing it from the applications timer list if it was running. */ virtual ~PTimer(); //@} /**@name Control functions */ //@{ /** Set the value of the time interval. The time interval, in milliseconds, is the sum of all of the parameters. For example all of the following are equivalent: \begin{verbatim} SetInterval(120000) SetInterval(60000, 60) SetInterval(60000, 0, 1) SetInterval(0, 60, 1) SetInterval(0, 0, 2) \end{verbatim} */ virtual void SetInterval( PInt64 milliseconds = 0, ///< Number of milliseconds for interval. long seconds = 0, ///< Number of seconds for interval. long minutes = 0, ///< Number of minutes for interval. long hours = 0, ///< Number of hours for interval. int days = 0 ///< Number of days for interval. ); /** Start a timer in continous cycle mode. Whenever the timer runs out it is automatically reset to the time specified. Thus, it calls the notification function every time interval. */ void RunContinuous( const PTimeInterval & time // New time interval for timer. ); /** Stop a running timer. The imer will not call the notification function and is reset back to the original timer value. Thus when the timer is restarted it begins again from the beginning. */ void Stop(); /** Determine if the timer is currently running. This really is only useful for one shot timers as repeating timers are always running. @return TRUE if timer is still counting. */ BOOL IsRunning() const; /** Pause a running timer. This differs from the #Stop()# function in that the timer may be resumed at the point that it left off. That is time is "frozen" while the timer is paused. */ void Pause(); /** Restart a paused timer continuing at the time it was paused. The time left at the moment the timer was paused is the time until the next call to the notification function. */ void Resume(); /** Determine if the timer is currently paused. @return TRUE if timer paused. */ BOOL IsPaused() const; /** Restart a timer continuing from the time it was initially. */ void Reset(); /** Get the time this timer was set to initially. */ const PTimeInterval & GetResetTime() const; //@} /**@name Notification functions */ //@{ /**This function is called on time out. That is when the system timer processing decrements the timer from a positive value to less than or equal to zero. The interval is then reset to zero and the function called. Please note that the application should not execute large amounts of code in this call back or the accuracy of ALL timers can be severely impacted. The default behaviour of this function is to call the #PNotifier# callback function. */ virtual void OnTimeout(); /** Get the current call back function that is called whenever the timer expires. This is called by the #OnTimeout()# function. @return current notifier for the timer. */ const PNotifier & GetNotifier() const; /** Set the call back function that is called whenever the timer expires. This is called by the #OnTimeout()# function. */ void SetNotifier( const PNotifier & func // New notifier function for the timer. ); //@} /**@name Global real time functions */ //@{ /** Get the number of milliseconds since some arbtrary point in time. This is a platform dependent function that yields a real time counter. Note that even though this function returns milliseconds, the value may jump in minimum quanta according the platforms timer system, eg under MS-DOS and MS-Windows the values jump by 55 every 55 milliseconds. The #Resolution()# function may be used to determine what the minimum time interval is. @return millisecond counter. */ static PTimeInterval Tick(); /** Get the smallest number of milliseconds that the timer can be set to. All actual timing events will be rounded up to the next value. This is typically the platforms internal timing units used in the #Tick()# function. @return minimum number of milliseconds per timer "tick". */ static unsigned Resolution(); //@} private: void Construct(); /* Start or restart the timer from the #resetTime# variable. This is an internal function. */ void StartRunning( BOOL once // Flag for one shot or continuous. ); /* Process the timer decrementing it by the delta amount and calling the #OnTimeout()# when zero. This is used internally by the #PTimerList::Process()# function. */ void Process( const PTimeInterval & delta, // Time interval since last call. PTimeInterval & minTimeLeft // Minimum time left till next timeout. ); // Member variables PNotifier callback; // Callback function for expired timers. PTimeInterval resetTime; // The time to reset a timer to when RunContinuous() is called. BOOL oneshot; // Timer operates once then stops. enum { Stopped, Starting, Running, Paused } state; // Timer state. friend class PTimerList; class PTimerList * timerList; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/timer.h" #else #include "unix/ptlib/timer.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/udpsock.h0100644000176200056700000002077310343317552017770 0ustar releasepostincr/* * udpsock.h * * User Datagram Protocol socket I/O channel class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: udpsock.h,v $ * Revision 1.28 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.27 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.26 2005/11/21 11:49:36 shorne * Changed disableQos to disableGQoS to better reflect what it does * * Revision 1.25 2005/07/13 12:08:09 csoutheren * Fixed QoS patches to be more consistent with PWLib style and to allow Unix compatibility * * Revision 1.24 2005/07/13 11:48:53 csoutheren * Backported QOS changes from isvo branch * * Revision 1.23.10.1 2005/04/25 13:39:28 shorne * Extended QoS support for per-call negotiation * * Revision 1.23 2003/10/27 04:06:13 csoutheren * Added code to allow compilation of new QoS code on Unix * * Revision 1.22 2003/10/27 03:22:44 csoutheren * Added handling for QoS * Thanks to Henry Harrison of AliceStreet * * Revision 1.21 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.20 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.19 2002/10/08 12:41:51 robertj * Changed for IPv6 support, thanks Sbastien Josset. * * Revision 1.18 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.17 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.16 1999/08/27 08:18:52 robertj * Added ability to get the host/port of the the last packet read/written to UDP socket. * * Revision 1.15 1999/03/09 02:59:51 robertj * Changed comments to doc++ compatible documentation. * * Revision 1.14 1999/02/16 08:11:17 robertj * MSVC 6.0 compatibility changes. * * Revision 1.13 1998/09/23 06:21:47 robertj * Added open source copyright license. * * Revision 1.12 1997/06/06 10:54:11 craigs * Added overrides and new functions for connectionless Writes * * Revision 1.11 1996/09/14 13:09:43 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.10 1996/05/15 10:19:15 robertj * Added ICMP protocol socket, getting common ancestor to UDP. * * Revision 1.9 1996/03/03 07:38:00 robertj * Added Reusability clause to the Listen() function on sockets. * * Revision 1.8 1995/12/10 11:44:45 robertj * Numerous fixes for sockets. * * Revision 1.7 1995/06/17 11:13:41 robertj * Documentation update. * * Revision 1.6 1995/06/17 00:48:01 robertj * Implementation. * * Revision 1.5 1995/01/03 09:36:24 robertj * Documentation. * * Revision 1.4 1994/08/23 11:32:52 robertj * Oops * * Revision 1.3 1994/08/22 00:46:48 robertj * Added pragma fro GNU C++ compiler. * * Revision 1.2 1994/07/25 03:36:03 robertj * Added sockets to common, normalising to same comment standard. * */ #ifndef _PUDPSOCKET #define _PUDPSOCKET #ifdef P_USE_PRAGMA #pragma interface #endif #include /** A socket channel that uses the UDP transport on the Internet Protocol. */ class PUDPSocket : public PIPDatagramSocket { PCLASSINFO(PUDPSocket, PIPDatagramSocket); public: /**@name Construction */ //@{ /** Create a UDP socket. If a remote machine address or a "listening" socket is specified then the channel is also opened. */ PUDPSocket( WORD port = 0 ///< Port number to use for the connection. ); PUDPSocket( PQoS * qos, ///< Pointer to a QOS structure for the connection WORD port = 0 ///< Port number to use for the connection. ); PUDPSocket( const PString & service, ///< Service name to use for the connection. PQoS * qos = NULL ///< Pointer to a QOS structure for the connection ); PUDPSocket( const PString & address, ///< Address of remote machine to connect to. WORD port ///< Port number to use for the connection. ); PUDPSocket( const PString & address, ///< Address of remote machine to connect to. const PString & service ///< Service name to use for the connection. ); //@} /**@name Overrides from class PSocket */ //@{ /** Override of PChannel functions to allow connectionless reads */ BOOL Read( void * buf, ///< Pointer to a block of memory to read. PINDEX len ///< Number of bytes to read. ); /** Override of PChannel functions to allow connectionless writes */ BOOL Write( const void * buf, ///< Pointer to a block of memory to write. PINDEX len ///< Number of bytes to write. ); /** Override of PSocket functions to allow connectionless writes */ BOOL Connect( const PString & address ///< Address of remote machine to connect to. ); //@} /**@name New functions for class */ //@{ /** Set the address to use for connectionless Write() or Windows QoS */ void SetSendAddress( const Address & address, ///< IP address to send packets. WORD port ///< Port to send packets. ); /** Get the address to use for connectionless Write(). */ void GetSendAddress( Address & address, ///< IP address to send packets. WORD & port ///< Port to send packets. ); /** Change the QOS spec for the socket and try to apply the changes */ virtual BOOL ModifyQoSSpec( PQoS * qos ///< QoS specification to use ); #if P_HAS_QOS /** Get the QOS object for the socket. */ virtual PQoS & GetQoSSpec(); #endif /** Get the address of the sender in the last connectionless Read(). Note that thsi only applies to the Read() and not the ReadFrom() function. */ void GetLastReceiveAddress( Address & address, ///< IP address to send packets. WORD & port ///< Port to send packets. ); /** Check to See if the socket will support QoS on the given local Address */ static BOOL SupportQoS(const PIPSocket::Address & address); /** Manually Enable GQoS Support */ static void EnableGQoS(); //@} protected: // Open an IPv4 socket (for backward compatibility) virtual BOOL OpenSocket(); // Open an IPv4 or IPv6 socket virtual BOOL OpenSocket( int ipAdressFamily ); // Create a QOS-enabled socket virtual int OpenSocketGQOS(int af, int type, int proto); // Modify the QOS settings virtual BOOL ApplyQoS(); virtual const char * GetProtocolName() const; Address sendAddress; WORD sendPort; Address lastReceiveAddress; WORD lastReceivePort; PQoS qosSpec; // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/udpsock.h" #else #include "unix/ptlib/udpsock.h" #endif }; #if P_HAS_QOS #ifdef _WIN32 #include #include #ifndef _WIN32_WCE class PWinQoS : public PObject { PCLASSINFO(PWinQoS,PObject); public: PWinQoS(PQoS & pqos, struct sockaddr * to, char * inBuf, DWORD & bufLen); ~PWinQoS(); //QOS qos; //QOS_DESTADDR qosdestaddr; protected: sockaddr * sa; }; #endif // _WIN32_WCE #endif // _WIN32 #endif // P_HAS_QOS #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/vconvert.h0100644000176200056700000003466310405001301020146 0ustar releasepostincr/* * vconvert.h * * Classes to support streaming video input (grabbing) and output. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): Derek Smithies (derek@indranet.co.nz) * Thorsten Westheider (thorsten.westheider@teleos-web.de) * Mark Cooke (mpc@star.sr.bham.ac.uk) * * $Log: vconvert.h,v $ * Revision 1.16.2.3 2006/03/12 11:15:13 dsandras * Fix for MJPEG thanks to Luc Saillard. (Backport from HEAD). * * Revision 1.16.2.2 2006/02/22 11:53:29 csoutheren * Backports from HEAD * * Revision 1.16.2.1 2006/01/30 00:03:11 csoutheren * Backported support for cameras that return MJPEG streams * Thanks to Luc Saillard and Damien Sandras * * Revision 1.19 2006/02/22 11:17:53 csoutheren * Applied patch #1425825 * MaxOSX compatibility * * Revision 1.18 2006/02/20 06:12:10 csoutheren * Added guard defines * * Revision 1.17 2006/01/29 22:46:41 csoutheren * Added support for cameras that return MJPEG streams * Thanks to Luc Saillard and Damien Sandras * * Revision 1.16 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.15 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.14 2005/08/09 09:08:09 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.13.14.1 2005/07/17 09:27:04 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.13 2003/03/17 07:44:20 robertj * Removed redundant toggle function. * * Revision 1.12 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.11 2002/01/04 04:11:45 dereks * Add video flip code from Walter Whitlock, which flips code at the grabber. * * Revision 1.10 2001/11/28 04:41:28 robertj * Added synonym colour class for equivalent colour format strings. * Allowed for setting ancestor classes in PCOLOUR_CONVERTER() macro. * * Revision 1.9 2001/05/14 05:10:38 robertj * Fixed problems with video colour converters registration, could not rely * on static PList being initialised before all registration instances. * * Revision 1.8 2001/03/20 02:21:57 robertj * More enhancements from Mark Cooke * * Revision 1.7 2001/03/08 23:36:02 robertj * Added backward compatibility SetFrameSize() function. * Added internal SimpleConvert() function for same type converters. * Fixed some documentation. * * Revision 1.6 2001/03/08 08:31:34 robertj * Numerous enhancements to the video grabbing code including resizing * infrastructure to converters. Thanks a LOT, Mark Cooke. * * Revision 1.5 2001/03/07 01:42:59 dereks * miscellaneous video fixes. Works on linux now. Add debug statements * (at PTRACE level of 1) * * Revision 1.4 2001/03/03 23:25:07 robertj * Fixed use of video conversion function, returning bytes in destination frame. * * Revision 1.3 2001/03/03 05:06:31 robertj * Major upgrade of video conversion and grabbing classes. * * Revision 1.2 2000/12/19 23:58:14 robertj * Fixed MSVC compatibility issues. * * Revision 1.1 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * */ #ifndef _PCONVERT #define _PCONVERT #ifdef P_USE_PRAGMA #ifndef P_MACOSX #pragma interface #endif #endif struct jdec_private; class PColourConverter; /**This class registers a colour conversion class. There should be one and one only instance of this class for each pair of srcColurFormat and dstColourFormat strings. Use the PCOLOUR_CONVERTER_REGISTRATION macro to do this. */ class PColourConverterRegistration : public PCaselessString { PCLASSINFO(PColourConverterRegistration, PCaselessString); public: PColourConverterRegistration( const PString & srcColourFormat, ///< Name of source colour format const PString & destColourFormat ///< Name of destination colour format ); virtual PColourConverter * Create( unsigned width, ///< Width of frame unsigned height ///< Height of frame ) const = 0; protected: PColourConverterRegistration * link; friend class PColourConverter; }; /**This class defines a means to convert an image from one colour format to another. It is an ancestor class for the individual formatting functions. */ class PColourConverter : public PObject { PCLASSINFO(PColourConverter, PObject); public: /**Create a new converter. */ PColourConverter( const PString & srcColourFormat, ///< Name of source colour format const PString & dstColourFormat, ///< Name of destination colour format unsigned width, ///< Width of frame unsigned height ///< Height of frame ); /**Get the video conversion vertical flip state */ BOOL GetVFlipState() { return verticalFlip; } /**Set the video conversion vertical flip state */ void SetVFlipState(BOOL vFlipState) { verticalFlip = vFlipState; } /**Set the frame size to be used. Default behaviour calls SetSrcFrameSize() and SetDstFrameSize(). */ virtual BOOL SetFrameSize( unsigned width, ///< New width of frame unsigned height ///< New height of frame ); /**Set the source frame size to be used. Default behaviour sets the srcFrameWidth and srcFrameHeight variables and recalculates the frame buffer size in bytes then returns TRUE if the size was calculated correctly. */ virtual BOOL SetSrcFrameSize( unsigned width, ///< New width of frame unsigned height ///< New height of frame ); /**Set the destination frame size to be used. Default behaviour sets the dstFrameWidth and dstFrameHeight variables, and the scale / crop preference. It then recalculates the frame buffer size in bytes then returns TRUE if the size was calculated correctly. */ virtual BOOL SetDstFrameSize( unsigned width, ///< New width of target frame unsigned height, ///< New height of target frame BOOL bScale ///< TRUE if scaling is preferred over crop ); /**Get the source colour format. */ const PString & GetSrcColourFormat() { return srcColourFormat; } /**Get the destination colour format. */ const PString & GetDstColourFormat() { return dstColourFormat; } /**Get the maximum frame size in bytes for source frames. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ PINDEX GetMaxSrcFrameBytes() { return srcFrameBytes; } /**Get the maximum frame size in bytes for destination frames. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ PINDEX GetMaxDstFrameBytes() { return dstFrameBytes; } /**Convert from one colour format to another. This version will copy the data from one frame buffer to another. An implementation of this function should allow for the case of where srcFrameBuffer and dstFrameBuffer are the same, if the conversion algorithm allows for that to occur without an intermediate frame store. The function should return FALSE if srcFrameBuffer and dstFrameBuffer are the same and that form pf conversion is not allowed */ virtual BOOL Convert( const BYTE * srcFrameBuffer, ///< Frame store for source pixels BYTE * dstFrameBuffer, ///< Frame store for destination pixels PINDEX * bytesReturned = NULL ///< Bytes written to dstFrameBuffer ) = 0; virtual BOOL Convert( const BYTE * srcFrameBuffer, ///< Frame store for source pixels BYTE * dstFrameBuffer, ///< Frame store for destination pixels unsigned int srcFrameBytes, PINDEX * bytesReturned = NULL ///< Bytes written to dstFrameBuffer ) = 0; /**Convert from one colour format to another. This version will copy the data from one frame buffer to the same frame buffer. Not all conversions can do this so an intermediate store and copy may be required. If the noIntermediateFrame parameter is TRUE and the conversion cannot be done in place then the function returns FALSE. If the in place conversion can be done then that parameter is ignored. Note that the frame should be large enough to take the destination pixels. Default behaviour calls Convert() from the frameBuffer to itself, and if that returns FALSE then calls it again (provided noIntermediateFrame is FALSE) using an intermediate store, copying the intermediate store back to the original frame store. */ virtual BOOL ConvertInPlace( BYTE * frameBuffer, ///< Frame buffer to translate data PINDEX * bytesReturned = NULL, ///< Bytes written to frameBuffer BOOL noIntermediateFrame = FALSE ///< Flag to use intermediate store ); /**Create an instance of a colour conversion function. Returns NULL if there is no registered colour converter between the two named formats. */ static PColourConverter * Create( const PString & srcColourFormat, ///< Name of source colour format const PString & dstColourFormat, ///< Name of destination colour format unsigned width, ///< Width of frame (used for both src and dst) unsigned height ///< Height of frame (used for both src and dst) ); /**Get the output frame size. */ BOOL GetDstFrameSize( unsigned & width, ///< Width of destination frame unsigned & height ///< Height of destination frame ) const; /**Get the input frame size. */ BOOL GetSrcFrameSize( unsigned & width, ///< Width of source frame unsigned & height ///< Height of source frame ) const; protected: PString srcColourFormat; PString dstColourFormat; unsigned srcFrameWidth; unsigned srcFrameHeight; unsigned srcFrameBytes; unsigned dstFrameBytes; // Needed for resizing unsigned dstFrameWidth; unsigned dstFrameHeight; BOOL scaleNotCrop; BOOL verticalFlip; PBYTEArray intermediateFrameStore; #ifndef P_MACOSX /* Use by the jpeg decompressor */ struct jdec_private *jdec; #endif friend class PColourConverterRegistration; }; /**Declare a colour converter class with Convert() function. This should only be used once and at the global scope level for each converter. It declares everything needs so only the body of the Convert() function need be added. */ #define PCOLOUR_CONVERTER2(cls,ancestor,src,dst) \ class cls : public ancestor { \ public: \ cls(const PString & srcFmt, const PString & dstFmt, unsigned w, unsigned h) \ : ancestor(srcFmt, dstFmt, w, h) { } \ virtual BOOL Convert(const BYTE *, BYTE *, PINDEX * = NULL); \ virtual BOOL Convert(const BYTE *, BYTE *, unsigned int , PINDEX * = NULL); \ }; \ static class cls##_Registration : public PColourConverterRegistration { \ public: \ cls##_Registration() \ : PColourConverterRegistration(src,dst) { } \ virtual PColourConverter * Create(unsigned w, unsigned h) const; \ } p_##cls##_registration_instance; \ PColourConverter * cls##_Registration::Create(unsigned w, unsigned h) const \ { PINDEX tab = Find('\t'); return new cls(Left(tab), Mid(tab+1), w, h); } \ BOOL cls::Convert(const BYTE *srcFrameBuffer, BYTE *dstFrameBuffer, unsigned int __srcFrameBytes, PINDEX * bytesReturned) \ { srcFrameBytes = __srcFrameBytes;return Convert(srcFrameBuffer, dstFrameBuffer, bytesReturned); } \ BOOL cls::Convert(const BYTE *srcFrameBuffer, BYTE *dstFrameBuffer, PINDEX * bytesReturned) /**Declare a colour converter class with Convert() function. This should only be used once and at the global scope level for each converter. It declares everything needs so only the body of the Convert() function need be added. */ #define PCOLOUR_CONVERTER(cls,src,dst) \ PCOLOUR_CONVERTER2(cls,PColourConverter,src,dst) /**Define synonym colour format converter. This is a class that defines for which no conversion is required between the specified colour format names. */ class PSynonymColour : public PColourConverter { public: PSynonymColour( const PString & srcFmt, const PString & dstFmt, unsigned w, unsigned h ) : PColourConverter(srcFmt, dstFmt, w, h) { } virtual BOOL Convert(const BYTE *, BYTE *, PINDEX * = NULL); virtual BOOL Convert(const BYTE *, BYTE *, unsigned int , PINDEX * = NULL); }; /**Define synonym colour format registration. This is a class that defines for which no conversion is required between the specified colour format names. */ class PSynonymColourRegistration : public PColourConverterRegistration { public: PSynonymColourRegistration( const char * srcFmt, const char * dstFmt ); virtual PColourConverter * Create(unsigned w, unsigned h) const; }; /**Define synonym colour format. This is a class that defines for which no conversion is required between the specified colour format names. */ #define PSYNONYM_COLOUR_CONVERTER(from,to) \ static PSynonymColourRegistration p_##from##_##to##_registration_instance(#from,#to) #endif // End of file /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/video.h0100644000176200056700000002315410343317552017422 0ustar releasepostincr/* * video.h * * Video interface class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): Derek Smithies (derek@indranet.co.nz) * * $Log: video.h,v $ * Revision 1.18 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.17 2003/11/19 04:28:21 csoutheren * Changed to support video output plugins * * Revision 1.16 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.15 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.14 2003/04/15 21:10:29 dereks * Patches for Firewire video. Thanks Georgi Georgiev. * * Revision 1.13 2003/03/17 07:45:14 robertj * Removed redundant "render now" function. * * Revision 1.12 2003/02/18 03:55:59 dereks * Add 1394AVC pathces from Georgi Georgiev. Thanks! * * Revision 1.11 2003/01/11 05:30:13 robertj * Added support for IEEE 1394 AV/C cameras, thanks Georgi Georgiev * * Revision 1.10 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.9 2002/02/20 02:37:26 dereks * Initial release of Firewire camera support for linux. * Many thanks to Ryutaroh Matsumoto . * * Revision 1.8 2002/01/04 04:11:45 dereks * Add video flip code from Walter Whitlock, which flips code at the grabber. * * Revision 1.7 2001/12/03 03:44:52 dereks * Add method to retrive pointer to the attached video display class. * * Revision 1.6 2001/11/28 00:07:32 dereks * Locking added to PVideoChannel, allowing reader/writer to be changed mid call * Enabled adjustment of the video frame rate * New fictitous image, a blank grey area * * Revision 1.5 2001/10/23 02:11:00 dereks * Extend video channel so it can display raw data, using attached video devices. * * Revision 1.4 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.3 2001/03/07 01:42:59 dereks * miscellaneous video fixes. Works on linux now. Add debug statements * (at PTRACE level of 1) * * Revision 1.2 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.1 2000/11/09 00:43:04 dereks * Initial release. * * * */ #ifndef _PVIDEO #define _PVIDEO #ifdef P_USE_PRAGMA #pragma interface #endif #include /**A class representing a video channel. This class is provided mainly for the playback or recording of video on the system. Note that this video channel is implicitly a series of frames in YUV411P format. No conversion is performed on data to/from the channel. */ class PVideoChannel : public PChannel { PCLASSINFO(PVideoChannel, PChannel); public: /**@name Construction */ //@{ enum Directions { Recorder, Player }; /// Create a video channel. PVideoChannel(); /** Create a video channel. Create a reference to the video drivers for the platform. */ PVideoChannel( const PString & device, /// Name of video driver/device Directions dir /// Video I/O direction ); // ~PVideoChannel(); // Destroy and close the video driver //@} /**@name Open functions */ //@{ /**Open the specified device for playing or recording. The device name is platform specific and is as returned in the GetDevices() function. @return TRUE if the video device is valid for playing/recording. */ BOOL Open( const PString & device, /// Name of video driver/device Directions dir /// Video I/O direction ); /** return True if one (or both) of the video device class pointers is non NULL. If either pointer is non NULL, then a device is ready to be written to, which indicates this channel is open. */ BOOL IsOpen() const; /**Get all of the names for video devices/drivers that are available on this platform. Note that a named device may not necessarily do both playing and recording so the arrays returned with the #dir# parameter in each value is not necessarily the same. @return An array of platform dependent strings for each video player/recorder. */ static PStringList GetDeviceNames( Directions dir // Video I/O direction ) ; /**Get the name for the default video devices/driver that is on this platform. Note that a named device may not necessarily do both playing and recording so the arrays returned with the #dir# parameter in each value is not necessarily the same. @return A platform dependent string for the video player/recorder. */ static PString GetDefaultDevice( Directions dir // Video I/O direction ); //@} /**Return the width of the currently selected grabbing device. */ virtual PINDEX GetGrabWidth(); /**Return the height of the currently selected grabbing device. */ virtual PINDEX GetGrabHeight(); virtual BOOL Read(void * buf, PINDEX len); // Low level read from the video channel. This function will block until the // requested number of characters were read. /**Low level write to the channel, which is data to be rendered to the local video display device. */ BOOL Write(const void * buf, //Pointer to the image data to be rendered PINDEX len); /**Cause the referenced data to be drawn to the previously defined media */ virtual BOOL Redraw(const void * frame); /**Return the previously specified width. */ PINDEX GetRenderWidth(); /**Return the previously specified height. */ PINDEX GetRenderHeight(); /**Specifiy the width and height of the video stream, which is to be rendered onto the previously specified device. */ virtual void SetRenderFrameSize(int _width, int _height); /**Specifiy the width and height of the video stream, which is to be extracted from the previously specified device. */ virtual void SetGrabberFrameSize(int _width, int _height); /**Attach a user specific class for rendering video If keepCurrent is true, an abort is caused when the program attempts to attach a new player when there is already a video player attached. If keepCurrent is false, the existing video player is deleted before attaching the new player. */ virtual void AttachVideoPlayer(PVideoOutputDevice * device, BOOL keepCurrent = TRUE); /**Attach a user specific class for acquiring video If keepCurrent is true, an abort is caused when the program attempts to attach a new reader when there is already a video reader attached. If keepCurrent is false, the existing video reader is deleted before attaching the new reader. */ virtual void AttachVideoReader(PVideoInputDevice * device, BOOL keepCurrent = TRUE); /**Return a pointer to the class for acquiring video */ virtual PVideoInputDevice *GetVideoReader(); /**Return a pointer to the class for displaying video */ virtual PVideoOutputDevice *GetVideoPlayer(); /**See if the grabber is open */ virtual BOOL IsGrabberOpen(); /**See if the rendering device is open */ virtual BOOL IsRenderOpen(); /**Get data from the attached inputDevice, and display on the attached ouptutDevice. */ BOOL DisplayRawData(void *videoBuffer); /**Destroy the attached grabber class. */ virtual void CloseVideoReader(); /**Destroy the attached video display class. */ virtual void CloseVideoPlayer(); /**Restrict others from using this video channel. */ void RestrictAccess(); /**Allow free access to this video channel. */ void EnableAccess(); /**Toggle the vertical flip state of the video grabber. */ BOOL ToggleVFlipInput(); protected: Directions direction; PString deviceName; ///Specified video device name, eg /dev/video0. PVideoInputDevice *mpInput; /// For grabbing video from the camera. PVideoOutputDevice *mpOutput; /// For displaying video on the screen. PMutex accessMutex; // Ensure that only task is accesing // members in this video channel. private: void Construct(); // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/video.h" #else #include "unix/ptlib/video.h" #endif }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/videoio.h0100644000176200056700000007450010341504163017745 0ustar releasepostincr/* * videoio.h * * Classes to support streaming video input (grabbing) and output. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): Mark Cooke (mpc@star.sr.bham.ac.uk) * * $Log: videoio.h,v $ * Revision 1.43 2005/11/25 03:43:47 csoutheren * Fixed function argument comments to be compatible with Doxygen * * Revision 1.42 2005/08/09 09:08:09 rjongbloed * Merged new video code from branch back to the trunk. * * Revision 1.41.4.1 2005/07/17 09:27:04 rjongbloed * Major revisions of the PWLib video subsystem including: * removal of F suffix on colour formats for vertical flipping, all done with existing bool * working through use of RGB and BGR formats so now consistent * cleaning up the plug in system to use virtuals instead of pointers to functions. * rewrite of SDL to be a plug in compatible video output device. * extensive enhancement of video test program * * Revision 1.41 2005/01/04 07:44:03 csoutheren * More changes to implement the new configuration methodology, and also to * attack the global static problem * * Revision 1.40 2004/04/18 12:49:22 csoutheren * Patches to video code thanks to Guilhem Tardy (hope I get it right this time :) * * Revision 1.39 2004/01/18 14:23:30 dereksmithies * Add new function to make opening of video input devices easier. * * Revision 1.38 2004/01/02 23:30:18 rjongbloed * Removed extraneous static function for getting input device names that has been deprecated during the plug ins addition. * * Revision 1.37 2003/12/14 10:01:02 rjongbloed * Resolved issue with name space conflict os static and virtual forms of GetDeviceNames() function. * * Revision 1.36 2003/12/03 03:47:56 dereksmithies * Add fix so video output devices compile and run correctly. * Thanks to Craig Southeren. * * Revision 1.35 2003/11/19 04:29:02 csoutheren * Changed to support video output plugins * * Revision 1.34 2003/11/18 10:39:06 csoutheren * Fixed warnings regarding calling virtual Close in destructors * * Revision 1.33 2003/11/18 06:46:15 csoutheren * Changed to support video input plugins * * Revision 1.32 2003/09/17 05:41:59 csoutheren * Removed recursive includes * * Revision 1.31 2003/09/17 01:18:02 csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.30 2003/03/17 08:10:00 robertj * Fixed GNU warning * * Revision 1.29 2003/03/17 07:51:07 robertj * Added OpenFull() function to open with all video parameters in one go. * Made sure vflip variable is set in converter even if converter has not * been set yet, should not depend on the order of functions! * Removed canCaptureVideo variable as this is really a virtual function to * distinguish PVideoOutputDevice from PVideoInputDevice, it is not dynamic. * Made significant enhancements to PVideoOutputDevice class. * Added PVideoOutputDevice descendants for NULL and PPM files. * * Revision 1.28 2002/09/16 01:08:59 robertj * Added #define so can select if #pragma interface/implementation is used on * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.27 2002/04/12 08:25:12 robertj * Added text string output for tracing video format. * * Revision 1.26 2002/04/05 06:41:54 rogerh * Apply video changes from Damien Sandras . * The Video Channel and Format are no longer set in Open(). Instead * call the new SetVideoChannelFormat() method. This makes video capture * and GnomeMeeting more stable with certain Linux video capture devices. * * Revision 1.25 2002/02/20 02:37:26 dereks * Initial release of Firewire camera support for linux. * Many thanks to Ryutaroh Matsumoto . * * Revision 1.24 2002/01/16 07:51:06 robertj * MSVC compatibilty changes * * Revision 1.23 2002/01/16 03:51:20 dereks * Move flip methods in PVideoInputDevice to PVideoDevice * * Revision 1.22 2002/01/14 02:59:54 robertj * Added preferred colour format selection, thanks Walter Whitlock * * Revision 1.21 2002/01/04 04:11:45 dereks * Add video flip code from Walter Whitlock, which flips code at the grabber. * * Revision 1.20 2001/11/28 00:07:32 dereks * Locking added to PVideoChannel, allowing reader/writer to be changed mid call * Enabled adjustment of the video frame rate * New fictitous image, a blank grey area * * Revision 1.19 2001/08/06 06:12:45 rogerh * Fix comments * * Revision 1.18 2001/08/03 04:21:51 dereks * Add colour/size conversion for YUV422->YUV411P * Add Get/Set Brightness,Contrast,Hue,Colour for PVideoDevice, and * Linux PVideoInputDevice. * Add lots of PTRACE statement for debugging colour conversion. * Add support for Sony Vaio laptop under linux. Requires 2.4.7 kernel. * * Revision 1.17 2001/05/22 23:38:45 robertj * Fixed bug in PVideoOutputDevice, removed redundent SetFrameSize. * * Revision 1.16 2001/05/22 12:49:32 robertj * Did some seriously wierd rewrite of platform headers to eliminate the * stupid GNU compiler warning about braces not matching. * * Revision 1.15 2001/03/20 02:21:57 robertj * More enhancements from Mark Cooke * * Revision 1.14 2001/03/08 23:04:19 robertj * Fixed up some documentation. * * Revision 1.13 2001/03/08 08:31:34 robertj * Numerous enhancements to the video grabbing code including resizing * infrastructure to converters. Thanks a LOT, Mark Cooke. * * Revision 1.12 2001/03/07 01:42:59 dereks * miscellaneous video fixes. Works on linux now. Add debug statements * (at PTRACE level of 1) * * Revision 1.11 2001/03/06 23:34:20 robertj * Added static function to get input device names. * Moved some inline virtuals to non-inline. * * Revision 1.10 2001/03/03 05:06:31 robertj * Major upgrade of video conversion and grabbing classes. * * Revision 1.9 2001/02/28 01:47:14 robertj * Removed function from ancestor and is not very useful, thanks Thorsten Westheider. * * Revision 1.8 2000/12/19 22:20:26 dereks * Add video channel classes to connect to the PwLib PVideoInputDevice class. * Add PFakeVideoInput class to generate test images for video. * * Revision 1.7 2000/11/09 00:20:38 robertj * Added qcif size constants * * Revision 1.6 2000/07/30 03:41:31 robertj * Added more colour formats to video device enum. * * Revision 1.5 2000/07/26 03:50:49 robertj * Added last error variable to video device. * * Revision 1.4 2000/07/26 02:13:46 robertj * Added some more "common" bounds checking to video device. * * Revision 1.3 2000/07/25 13:38:25 robertj * Added frame rate parameter to video frame grabber. * * Revision 1.2 2000/07/25 13:14:05 robertj * Got the video capture stuff going! * * Revision 1.1 2000/07/15 09:47:34 robertj * Added video I/O device classes. * */ #ifndef _PVIDEOIO #define _PVIDEOIO #ifdef P_USE_PRAGMA #pragma interface #endif class PColourConverter; /**This class defines a video device. This class is used to abstract the few parameters that are common to both\ input and output devices. Example colour formats are: "Grey" Simple 8 bit linear grey scale "Gray" Synonym for Grey "RGB32" 32 bit RGB "RGB24" 24 bit RGB "RGB565" 16 bit RGB (6 bit green) "RGB555" 15 bit RGB "YUV422" YUV 4:2:2 packed "YUV422P" YUV 4:2:2 planar "YUV411" YUV 4:1:1 packed "YUV411P" YUV 4:1:1 planar "YUV420" YUV 4:2:0 packed "YUV420P" YUV 4:2:0 planar "YUV410" YUV 4:1:0 packed "YUV410P" YUV 4:1:0 planar "MJPEG" Motion JPEG "UYVY422" YUV 4:2:2 packed as U Y V Y U Y V Y ... "UYV444 YUV 4:4:4 packed as U Y V U Y V ... They are used in IEEE 1394 digital cameras. The specification is found at http://www.1394ta.org/Download/Technology/Specifications/2000/IIDC_Spec_v1_30.pdf */ class PVideoDevice : public PObject { PCLASSINFO(PVideoDevice, PObject); protected: /** Create a new video device (input or output). */ PVideoDevice(); public: /** Delete structures created by PVideoDevice(); */ virtual ~PVideoDevice(); enum VideoFormat { PAL, NTSC, SECAM, Auto, NumVideoFormats }; enum StandardSizes { CIF16Width = 1408, CIF16Height = 1152, CIF4Width = 704, CIF4Height = 576, CIFWidth = 352, CIFHeight = 288, QCIFWidth = 176, QCIFHeight = 144, SQCIFWidth = 144, SQCIFHeight = 96, }; /**Get the device name of the open device. */ const PString & GetDeviceName() const { return deviceName; } /**Get a list of all of the drivers available. */ virtual PStringList GetDeviceNames() const = 0; struct OpenArgs { OpenArgs() : deviceName("#1"), videoFormat(Auto), channelNumber(0), colourFormat("YUV420P"), convertFormat(TRUE), rate(0), width(CIFWidth), height(CIFHeight), convertSize(TRUE), scaleSize(FALSE), flip(FALSE), brightness(-1), whiteness(-1), contrast(-1), colour(-1), hue(-1) { } PString deviceName; VideoFormat videoFormat; int channelNumber; PString colourFormat; bool convertFormat; unsigned rate; unsigned width; unsigned height; bool convertSize; bool scaleSize; bool flip; int brightness; int whiteness; int contrast; int colour; int hue; }; /**Open the device given the device name. */ virtual BOOL OpenFull( const OpenArgs & args, ///< Parameters to set on opened device BOOL startImmediate = TRUE ///< Immediately start device ); /**Open the device given the device name. */ virtual BOOL Open( const PString & deviceName, ///< Device name to open BOOL startImmediate = TRUE ///< Immediately start device ) = 0; /**Determine if the device is currently open. */ virtual BOOL IsOpen() = 0; /**Close the device. */ virtual BOOL Close() = 0; /**Start the video device I/O capture. */ virtual BOOL Start() = 0; /**Stop the video device I/O capture. */ virtual BOOL Stop() = 0; #if PTRACING friend ostream & operator<<(ostream &, VideoFormat); #endif /**Set the video format to be used. Default behaviour sets the value of the videoFormat variable and then returns TRUE. */ virtual BOOL SetVideoFormat( VideoFormat videoFormat ///< New video format ); /**Get the video format being used. Default behaviour returns the value of the videoFormat variable. */ virtual VideoFormat GetVideoFormat() const; /**Get the number of video channels available on the device. Default behaviour returns 1. */ virtual int GetNumChannels(); /**Set the video channel to be used on the device. The channel number is an integer from 0 to GetNumChannels()-1. The special value of -1 will find the first working channel number. Default behaviour sets the value of the channelNumber variable and then returns TRUE. */ virtual BOOL SetChannel( int channelNumber ///< New channel number for device. ); /**Get the video channel to be used on the device. Default behaviour returns the value of the channelNumber variable. */ virtual int GetChannel() const; /**Set the colour format to be used, trying converters if available. This function will set the colour format on the device to one that is compatible with a registered converter, and install that converter so that the correct format is used. */ virtual BOOL SetColourFormatConverter( const PString & colourFormat // New colour format for device. ); /**Set the colour format to be used. Note that this function does not do any conversion. If it returns TRUE then the video device does the colour format in native mode. To utilise an internal converter use the SetColourFormatConverter() function. Default behaviour sets the value of the colourFormat variable and then returns TRUE. */ virtual BOOL SetColourFormat( const PString & colourFormat // New colour format for device. ); /**Get the colour format to be used. Default behaviour returns the value of the colourFormat variable. */ const PString & GetColourFormat() const; /**Get the video conversion vertical flip state. Default action is to return FALSE. */ virtual BOOL GetVFlipState(); /**Set the video conversion vertical flip state. Default action is to return FALSE. */ virtual BOOL SetVFlipState( BOOL newVFlipState ///< New vertical flip state ); /**Set the video frame rate to be used on the device. Default behaviour sets the value of the frameRate variable and then returns TRUE. */ virtual BOOL SetFrameRate( unsigned rate ///< Frames per second ); /**Get the video frame rate used on the device. Default behaviour returns the value of the frameRate variable. */ virtual unsigned GetFrameRate() const; /**Get the minimum & maximum size of a frame on the device. Default behaviour returns the value 1 to UINT_MAX for both and returns FALSE. */ virtual BOOL GetFrameSizeLimits( unsigned & minWidth, ///< Variable to receive minimum width unsigned & minHeight, ///< Variable to receive minimum height unsigned & maxWidth, ///< Variable to receive maximum width unsigned & maxHeight ///< Variable to receive maximum height ) ; /**Set the frame size to be used, trying converters if available. If the device does not support the size, a set of alternate resolutions are attempted. A converter is setup if possible. */ virtual BOOL SetFrameSizeConverter( unsigned width, ///< New width of frame unsigned height, ///< New height of frame BOOL bScaleNotCrop ///< Scale or crop/pad preference ); /**Set the frame size to be used. Note that devices may not be able to produce the requested size, and this function will fail. See SetFrameSizeConverter(). Default behaviour sets the frameWidth and frameHeight variables and returns TRUE. */ virtual BOOL SetFrameSize( unsigned width, ///< New width of frame unsigned height ///< New height of frame ); /**Get the frame size being used. Default behaviour returns the value of the frameWidth and frameHeight variable and returns TRUE. */ virtual BOOL GetFrameSize( unsigned & width, unsigned & height ); /** Get the width of the frame being used. Default behaviour returns the value of the frameWidth variable */ virtual unsigned GetFrameWidth() const; /** Get the height of the frame being used. Default behaviour returns the value of the frameHeight variable */ virtual unsigned GetFrameHeight() const; /**Get the maximum frame size in bytes. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ virtual PINDEX GetMaxFrameBytes() = 0; /** Get the number of bytes of an image, given a particular width, height and colour format. */ static unsigned CalculateFrameBytes( unsigned width, unsigned height, const PString & colourFormat ); /**Get the last error code. This is a platform dependent number. */ int GetLastError() const { return lastError; } /** Is the device a camera, and obtain video */ virtual BOOL CanCaptureVideo() const = 0; /**Get the brightness of the image. 0xffff-Very bright. -1 is unknown. */ virtual int GetBrightness(); /**Set brightness of the image. 0xffff-Very bright. */ virtual BOOL SetBrightness(unsigned newBrightness); /**Get the whiteness of the image. 0xffff-Very white. -1 is unknown. */ virtual int GetWhiteness(); /**Set whiteness of the image. 0xffff-Very white. */ virtual BOOL SetWhiteness(unsigned newWhiteness); /**Get the colour of the image. 0xffff-lots of colour. -1 is unknown. */ virtual int GetColour(); /**Set colour of the image. 0xffff-lots of colour. */ virtual BOOL SetColour(unsigned newColour); /**Get the contrast of the image. 0xffff-High contrast. -1 is unknown. */ virtual int GetContrast(); /**Set contrast of the image. 0xffff-High contrast. */ virtual BOOL SetContrast(unsigned newContrast); /**Get the hue of the image. 0xffff-High hue. -1 is unknown. */ virtual int GetHue(); /**Set hue of the image. 0xffff-High hue. */ virtual BOOL SetHue(unsigned newHue); /**Return whiteness, brightness, colour, contrast and hue in one call. */ virtual BOOL GetParameters( int *whiteness, int *brightness, int *colour, int *contrast, int *hue ); /** Set VideoFormat and VideoChannel in one ioctl */ virtual BOOL SetVideoChannelFormat ( int channelNumber, VideoFormat videoFormat ); /**Set preferred native colour format from video capture device. Note empty == no preference. */ void SetPreferredColourFormat(const PString & colourFmt) { preferredColourFormat = colourFmt; } /**Get preferred native colour format from video capture device. Returns empty == no preference */ const PString & GetPreferredColourFormat() { return preferredColourFormat; } protected: PINDEX GetMaxFrameBytesConverted(PINDEX rawFrameBytes) const; PString deviceName; int lastError; VideoFormat videoFormat; int channelNumber; PString colourFormat; // Preferred native colour format from video input device, empty == no preference PString preferredColourFormat; unsigned frameRate; unsigned frameWidth; unsigned frameHeight; BOOL nativeVerticalFlip; PColourConverter * converter; int frameBrightness; // 16 bit entity, -1 is no value int frameWhiteness; int frameContrast; int frameColour; int frameHue; PTime previousFrameTime; // Time of the last frame. int msBetweenFrames; // msBetween subsequent frames. int frameTimeError; // determines when this frame should happen. }; /**This class defines a video output device.- typically, a window. */ class PVideoOutputDevice : public PVideoDevice { PCLASSINFO(PVideoOutputDevice, PVideoDevice); public: /** Create a new video output device. */ PVideoOutputDevice(); /**Close the video output device on destruction. */ virtual ~PVideoOutputDevice() { Close(); }; /**Get the list of available video output drivers (plug-ins) */ static PStringList GetDriverNames( PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Get video output devices that correspond to the specified driver name. If driverName is an empty string or the value "*" then this will return a list of unique device names across all of the available drivers. If two drivers have identical names for devices, then the string returned will be of the form driver+'\t'+device. */ static PStringList GetDriversDeviceNames( const PString & driverName, ///< Name of driver PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Create the video output device that corresponds to the specified driver name. */ static PVideoOutputDevice * CreateDevice( const PString & driverName, ///< Name of driver PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /* Create the matching video output device that corresponds to the device name. This is typically used with the return values from GetDriversDeviceNames(). */ static PVideoOutputDevice *CreateDeviceByName( const PString & deviceName, ///< Name of device PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Create an opened video output device that corresponds to the specified names. If the driverName parameter is an empty string or "*" then CreateDeviceByName is used with the deviceName parameter which is assumed to be a value returned from GetDriversDeviceNames(). */ static PVideoOutputDevice *CreateOpenedDevice( const PString & driverName, ///< Name of driver const PString & deviceName, ///< Name of device BOOL startImmediate = TRUE, ///< Immediately start display PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Close the device. */ virtual BOOL Close() { return TRUE; } /**Start the video device I/O display. */ virtual BOOL Start() { return TRUE; } /**Stop the video device I/O display. */ virtual BOOL Stop() { return TRUE; } /** Is the device a camera, and obtain video */ virtual BOOL CanCaptureVideo() const; /**Set a section of the output frame buffer. */ virtual BOOL SetFrameData( unsigned x, unsigned y, unsigned width, unsigned height, const BYTE * data, BOOL endFrame = TRUE ) = 0; }; /**This class defines a video output device for RGB in a frame store. */ class PVideoOutputDeviceRGB : public PVideoOutputDevice { PCLASSINFO(PVideoOutputDeviceRGB, PVideoOutputDevice); public: /** Create a new video output device. */ PVideoOutputDeviceRGB(); /**Set the colour format to be used. Note that this function does not do any conversion. If it returns TRUE then the video device does the colour format in native mode. To utilise an internal converter use the SetColourFormatConverter() function. Default behaviour sets the value of the colourFormat variable and then returns TRUE. */ virtual BOOL SetColourFormat( const PString & colourFormat // New colour format for device. ); /**Set the frame size to be used. Note that devices may not be able to produce the requested size, and this function will fail. See SetFrameSizeConverter(). Default behaviour sets the frameWidth and frameHeight variables and returns TRUE. */ virtual BOOL SetFrameSize( unsigned width, ///< New width of frame unsigned height ///< New height of frame ); /**Get the maximum frame size in bytes. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ virtual PINDEX GetMaxFrameBytes(); /**Set a section of the output frame buffer. */ virtual BOOL SetFrameData( unsigned x, unsigned y, unsigned width, unsigned height, const BYTE * data, BOOL endFrame = TRUE ); /**Indicate frame may be displayed. */ virtual BOOL FrameComplete() = 0; protected: PMutex mutex; PBYTEArray frameStore; PINDEX bytesPerPixel; PINDEX scanLineWidth; bool swappedRedAndBlue; }; #ifdef SHOULD_BE_MOVED_TO_PLUGIN /**This class defines a video output device which outputs to a series of PPM files. */ class PVideoOutputDevicePPM : public PVideoOutputDeviceRGB { PCLASSINFO(PVideoOutputDevicePPM, PVideoOutputDeviceRGB); public: /** Create a new video output device. */ PVideoOutputDevicePPM(); /**Open the device given the device name. */ virtual BOOL Open( const PString & deviceName, ///< Device name (filename base) to open BOOL startImmediate = TRUE ///< Immediately start device ); /**Determine if the device is currently open. */ virtual BOOL IsOpen(); /**Close the device. */ virtual BOOL Close(); /**Get a list of all of the drivers available. */ virtual PStringList GetDeviceNames() const; /**Indicate frame may be displayed. */ virtual BOOL EndFrame(); protected: unsigned frameNumber; }; #endif // SHOULD_BE_MOVED_TO_PLUGIN /**This class defines a video input device. */ class PVideoInputDevice : public PVideoDevice { PCLASSINFO(PVideoInputDevice, PVideoDevice); public: /** Create a new video input device. */ //PVideoInputDevice(); /**Close the video input device on destruction. */ ~PVideoInputDevice() { Close(); } /**Get the list of available video input drivers (plug-ins) */ static PStringList GetDriverNames( PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Get video input devices that correspond to the specified driver name. If driverName is an empty string or the value "*" then this will return a list of unique device names across all of the available drivers. If two drivers have identical names for devices, then the string returned will be of the form driver+'\t'+device. */ static PStringList GetDriversDeviceNames( const PString & driverName, ///< Name of driver PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Create the video input device that corresponds to the specified driver name. */ static PVideoInputDevice *CreateDevice( const PString & driverName, ///< Name of driver PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /* Create the matching video input device that corresponds to the device name. So, for "fake" return a device that will generate fake video. For "Phillips 680 webcam" (eg) will return appropriate grabber. Note that Phillips will return the appropriate grabber also. This is typically used with the return values from GetDriversDeviceNames(). */ static PVideoInputDevice *CreateDeviceByName( const PString & deviceName, ///< Name of device PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Create an opened video input device that corresponds to the specified names. If the driverName parameter is an empty string or "*" then CreateDeviceByName is used with the deviceName parameter which is assumed to be a value returned from GetDriversDeviceNames(). */ static PVideoInputDevice *CreateOpenedDevice( const PString & driverName, ///< Name of driver const PString & deviceName, ///< Name of device BOOL startImmediate = TRUE, ///< Immediately start grabbing PPluginManager * pluginMgr = NULL ///< Plug in manager, use default if NULL ); /**Open the device given the device name. */ virtual BOOL Open( const PString & deviceName, ///< Device name to open BOOL startImmediate = TRUE ///< Immediately start device ) = 0; virtual BOOL Close( ) { return TRUE; } /** Is the device a camera, and obtain video */ virtual BOOL CanCaptureVideo() const; /**Determine if the video device I/O capture is in progress. */ virtual BOOL IsCapturing() = 0; /**Grab a frame. */ virtual BOOL GetFrame( PBYTEArray & frame ); /**Grab a frame, after a delay as specified by the frame rate. */ virtual BOOL GetFrameData( BYTE * buffer, ///< Buffer to receive frame PINDEX * bytesReturned = NULL ///< OPtional bytes returned. ) = 0; /**Grab a frame. Do not delay according to the current frame rate parameter. */ virtual BOOL GetFrameDataNoDelay( BYTE * buffer, ///< Buffer to receive frame PINDEX * bytesReturned = NULL ///< OPtional bytes returned. ) = 0; /**Try all known video formats & see which ones are accepted by the video driver */ virtual BOOL TestAllFormats() = 0; }; //////////////////////////////////////////////////////// // // declare macros and structures needed for video input plugins // template class PVideoInputPluginServiceDescriptor : public PDevicePluginServiceDescriptor { public: virtual PObject * CreateInstance(int /*userData*/) const { return new className; } virtual PStringList GetDeviceNames(int /*userData*/) const { return className::GetInputDeviceNames(); } }; #define PCREATE_VIDINPUT_PLUGIN(name) \ static PVideoInputPluginServiceDescriptor PVideoInputDevice_##name##_descriptor; \ PCREATE_PLUGIN(name, PVideoInputDevice, &PVideoInputDevice_##name##_descriptor) //////////////////////////////////////////////////////// // // declare macros and structures needed for video output plugins // template class PVideoOutputPluginServiceDescriptor : public PDevicePluginServiceDescriptor { public: virtual PObject * CreateInstance(int /*userData*/) const { return new className; } virtual PStringList GetDeviceNames(int /*userData*/) const { return className::GetOutputDeviceNames(); } }; #define PCREATE_VIDOUTPUT_PLUGIN(name) \ static PVideoOutputPluginServiceDescriptor PVideoOutputDevice_##name##_descriptor; \ PCREATE_PLUGIN(name, PVideoOutputDevice, &PVideoOutputDevice_##name##_descriptor) #endif // _PVIDEOIO // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/videoio1394dc.h0100644000176200056700000001461310343317552020602 0ustar releasepostincr/* * videoio1394dc.h * * Copyright: * Copyright (c) 2002 Ryutaroh Matsumoto * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * * Classes to support streaming video input from IEEE 1394 cameras. * Detailed explanation can be found at src/ptlib/unix/video4dc1394.cxx * * $Log: videoio1394dc.h,v $ * Revision 1.3 2005/11/30 12:47:38 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.2 2002/05/30 22:49:35 dereks * correct implementation of GetInputDeviceNames(). * * Revision 1.1 2002/02/20 02:37:26 dereks * Initial release of Firewire camera support for linux. * Many thanks to Ryutaroh Matsumoto . * * */ #ifndef _PVIDEOIO1394DC #define _PVIDEOIO1394DC #ifdef __GNUC__ #pragma interface #endif #include #include /** This class defines a video input device that generates fictitous image data. */ class PVideoInput1394DcDevice : public PVideoInputDevice { PCLASSINFO(PVideoInput1394DcDevice, PVideoInputDevice); public: /** Create a new video input device. */ PVideoInput1394DcDevice(); /**Close the video input device on destruction. */ ~PVideoInput1394DcDevice(); /**Open the device given the device name. */ BOOL Open( const PString & deviceName, /// Device name to open BOOL startImmediate = TRUE /// Immediately start device ); /**Determine of the device is currently open. */ BOOL IsOpen(); /**Close the device. */ BOOL Close(); /**Start the video device I/O. */ BOOL Start(); /**Stop the video device I/O capture. */ BOOL Stop(); /**Determine if the video device I/O capture is in progress. */ BOOL IsCapturing(); /**Get a list of all of the drivers available. */ static PStringList GetInputDeviceNames(); /**Get the maximum frame size in bytes. Note a particular device may be able to provide variable length frames (eg motion JPEG) so will be the maximum size of all frames. */ PINDEX GetMaxFrameBytes(); /**Grab a frame, after a delay as specified by the frame rate. */ BOOL GetFrameData( BYTE * buffer, /// Buffer to receive frame PINDEX * bytesReturned = NULL /// OPtional bytes returned. ); /**Grab a frame. Do not delay according to the current frame rate parameter. */ BOOL GetFrameDataNoDelay( BYTE * buffer, /// Buffer to receive frame PINDEX * bytesReturned = NULL /// OPtional bytes returned. ); /**Get the brightness of the image. 0xffff-Very bright. */ int GetBrightness(); /**Set brightness of the image. 0xffff-Very bright. */ BOOL SetBrightness(unsigned newBrightness); /**Get the whiteness of the image. 0xffff-Very white. */ int GetWhiteness(); /**Set whiteness of the image. 0xffff-Very white. */ BOOL SetWhiteness(unsigned newWhiteness); /**Get the colour of the image. 0xffff-lots of colour. */ int GetColour(); /**Set colour of the image. 0xffff-lots of colour. */ BOOL SetColour(unsigned newColour); /**Get the contrast of the image. 0xffff-High contrast. */ int GetContrast(); /**Set contrast of the image. 0xffff-High contrast. */ BOOL SetContrast(unsigned newContrast); /**Get the hue of the image. 0xffff-High hue. */ int GetHue(); /**Set hue of the image. 0xffff-High hue. */ BOOL SetHue(unsigned newHue); /**Return whiteness, brightness, colour, contrast and hue in one call. */ BOOL GetParameters (int *whiteness, int *brightness, int *colour, int *contrast, int *hue); /**Get the minimum & maximum size of a frame on the device. */ BOOL GetFrameSizeLimits( unsigned & minWidth, /// Variable to receive minimum width unsigned & minHeight, /// Variable to receive minimum height unsigned & maxWidth, /// Variable to receive maximum width unsigned & maxHeight /// Variable to receive maximum height ) ; void ClearMapping(); int GetNumChannels(); BOOL SetChannel( int channelNumber /// New channel number for device. ); BOOL SetFrameRate( unsigned rate /// Frames per second ); BOOL SetVideoFormat( VideoFormat videoFormat /// New video format ); BOOL SetFrameSize( unsigned width, /// New width of frame unsigned height /// New height of frame ); BOOL SetColourFormat( const PString & colourFormat // New colour format for device. ); /**Try all known video formats & see which ones are accepted by the video driver */ BOOL TestAllFormats(); /**Set the frame size to be used, trying converters if available. If the device does not support the size, a set of alternate resolutions are attempted. A converter is setup if possible. */ BOOL SetFrameSizeConverter( unsigned width, /// New width of frame unsigned height, /// New height of frame BOOL bScaleNotCrop /// Scale or crop/pad preference ); /**Set the colour format to be used, trying converters if available. This function will set the colour format on the device to one that is compatible with a registered converter, and install that converter so that the correct format is used. */ BOOL SetColourFormatConverter( const PString & colourFormat // New colour format for device. ); protected: raw1394handle_t handle; BOOL is_capturing; BOOL UseDMA; nodeid_t * camera_nodes; int numCameras; dc1394_cameracapture camera; int capturing_duration; PString desiredColourFormat; unsigned desiredFrameWidth; unsigned desiredFrameHeight; }; #endif // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/include/ptlib/wince/0040755000176200056700000000000010512262773017250 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/wince/sys/0040755000176200056700000000000010512262773020066 5ustar releasepostincrpwlib_v1_10_2/include/ptlib/wince/sys/socket.h0100644000176200056700000000023007235362636021526 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/sys/file.h0100644000176200056700000000023007235362636021155 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/sys/param.h0100644000176200056700000000023007235362636021336 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/sys/stat.h0100644000176200056700000000023007233471137021204 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/sys/types.h0100644000176200056700000000140207247651742021406 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // sys/types.h - types returned by system level calls for file and time info // // [Microsoft] // [System V] // [Public] #ifndef TYPES_H #define TYPES_H #include #ifndef _OFF_T_DEFINED typedef long off_t; #define _OFF_T_DEFINED #endif #ifdef __cplusplus #include typedef DWORD SERVICE_STATUS_HANDLE; typedef struct _SERVICE_STATUS { DWORD dwServiceType; DWORD dwCurrentState; DWORD dwControlsAccepted; DWORD dwWin32ExitCode; DWORD dwServiceSpecificExitCode; DWORD dwCheckPoint; DWORD dwWaitHint; } SERVICE_STATUS, *LPSERVICE_STATUS; #define HAVE_STRING_H 1 #endif #endif /* TYPES_H */ pwlib_v1_10_2/include/ptlib/wince/alloca.h0100644000176200056700000000022607233471137020653 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/assert.h0100644000176200056700000000027207234425633020723 0ustar releasepostincr// // (c) 2000 Yuri Kiryanov, openh323@kiryanov.com // and Yuriy Gorvitovskiy // // Windows CE port of OpenH323 Open Source Project, www.openh323.org // PWLib extras #define assert(e) pwlib_v1_10_2/include/ptlib/wince/ceostream.h0100644000176200056700000000056707433224262021407 0ustar releasepostincr#ifndef _YWINCEOSTREAM_H #define _YWINCEOSTREAM_H // callback function type for subscribing to trace messages typedef void (*YWinCEOStreamCB)(WPARAM); class YWinCEOStream : public ostream { public: YWinCEOStream(); ~YWinCEOStream(); void Subscribe(HWND Reciever,UINT MessageID); void Subscribe(YWinCEOStreamCB pCB); void UnSubscribe(); }; #endif _YWINCEOSTREAM_H pwlib_v1_10_2/include/ptlib/wince/cevfw.h0100644000176200056700000002221507441041676020536 0ustar releasepostincr// // (c) 2002 Yuri Kiryanov, openh323@kiryanov.com // // Windows CE port of OpenH323 Open Source Project, www.openh323.org // Video For Windows Definitions #ifndef _CEVFW_H #define _CEVFW_H #define VFWAPI WINAPI #ifdef __cplusplus /* SendMessage in C++*/ #define AVICapSM(hwnd,m,w,l) ( (IsWindow(hwnd)) ? ::SendMessage(hwnd,m,w,l) : 0) #else /* SendMessage in C */ #define AVICapSM(hwnd,m,w,l) ( (IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0) #endif /* __cplusplus */ // video data block header typedef struct videohdr_tag { LPBYTE lpData; /* pointer to locked data buffer */ DWORD dwBufferLength; /* Length of data buffer */ DWORD dwBytesUsed; /* Bytes actually used */ DWORD dwTimeCaptured; /* Milliseconds from start of stream */ DWORD dwUser; /* for client's use */ DWORD dwFlags; /* assorted flags (see defines) */ DWORD dwReserved[4]; /* reserved for driver */ } VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR; /* dwFlags field of VIDEOHDR */ #define VHDR_DONE 0x00000001 /* Done bit */ #define VHDR_PREPARED 0x00000002 /* Set if this header has been prepared */ #define VHDR_INQUEUE 0x00000004 /* Reserved for driver */ #define VHDR_KEYFRAME 0x00000008 /* Key Frame */ typedef struct tagCapStatus { UINT uiImageWidth; // Width of the image UINT uiImageHeight; // Height of the image BOOL fLiveWindow; // Now Previewing video? BOOL fOverlayWindow; // Now Overlaying video? BOOL fScale; // Scale image to client? POINT ptScroll; // Scroll position BOOL fUsingDefaultPalette; // Using default driver palette? BOOL fAudioHardware; // Audio hardware present? BOOL fCapFileExists; // Does capture file exist? DWORD dwCurrentVideoFrame; // # of video frames cap'td DWORD dwCurrentVideoFramesDropped;// # of video frames dropped DWORD dwCurrentWaveSamples; // # of wave samples cap'td DWORD dwCurrentTimeElapsedMS; // Elapsed capture duration HPALETTE hPalCurrent; // Current palette in use BOOL fCapturingNow; // Capture in progress? DWORD dwReturn; // Error value after any operation UINT wNumVideoAllocated; // Actual number of video buffers UINT wNumAudioAllocated; // Actual number of audio buffers } CAPSTATUS, *PCAPSTATUS, FAR *LPCAPSTATUS; typedef struct tagCaptureParms { DWORD dwRequestMicroSecPerFrame; // Requested capture rate BOOL fMakeUserHitOKToCapture; // Show "Hit OK to cap" dlg? UINT wPercentDropForError; // Give error msg if > (10%) BOOL fYield; // Capture via background task? DWORD dwIndexSize; // Max index size in frames (32K) UINT wChunkGranularity; // Junk chunk granularity (2K) BOOL fUsingDOSMemory; // Use DOS buffers? UINT wNumVideoRequested; // # video buffers, If 0, autocalc BOOL fCaptureAudio; // Capture audio? UINT wNumAudioRequested; // # audio buffers, If 0, autocalc UINT vKeyAbort; // Virtual key causing abort BOOL fAbortLeftMouse; // Abort on left mouse? BOOL fAbortRightMouse; // Abort on right mouse? BOOL fLimitEnabled; // Use wTimeLimit? UINT wTimeLimit; // Seconds to capture BOOL fMCIControl; // Use MCI video source? BOOL fStepMCIDevice; // Step MCI device? DWORD dwMCIStartTime; // Time to start in MS DWORD dwMCIStopTime; // Time to stop in MS BOOL fStepCaptureAt2x; // Perform spatial averaging 2x UINT wStepCaptureAverageFrames; // Temporal average n Frames DWORD dwAudioBufferSize; // Size of audio bufs (0 = default) BOOL fDisableWriteCache; // Attempt to disable write cache UINT AVStreamMaster; // Which stream controls length? } CAPTUREPARMS, *PCAPTUREPARMS, FAR *LPCAPTUREPARMS; typedef struct tagCapDriverCaps { UINT wDeviceIndex; // Driver index in system.ini BOOL fHasOverlay; // Can device overlay? BOOL fHasDlgVideoSource; // Has Video source dlg? BOOL fHasDlgVideoFormat; // Has Format dlg? BOOL fHasDlgVideoDisplay; // Has External out dlg? BOOL fCaptureInitialized; // Driver ready to capture? BOOL fDriverSuppliesPalettes; // Can driver make palettes? // following always NULL on Win32. HANDLE hVideoIn; // Driver In channel HANDLE hVideoOut; // Driver Out channel HANDLE hVideoExtIn; // Driver Ext In channel HANDLE hVideoExtOut; // Driver Ext Out channel } CAPDRIVERCAPS, *PCAPDRIVERCAPS, FAR *LPCAPDRIVERCAPS; typedef LRESULT (CALLBACK* CAPERRORCALLBACK) (HWND hWnd, int nID, LPCSTR lpsz); typedef LRESULT (CALLBACK* CAPVIDEOCALLBACK) (HWND hWnd, LPVIDEOHDR lpVHdr); #define WM_CAP_START WM_USER #define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START+ 2) #define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORA #define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START+ 5) #define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START+ 6) #define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8) #define WM_CAP_SET_USER_DATA (WM_CAP_START+ 9) #define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10) #define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+ 11) #define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+ 14) #define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START+ 35) #define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START+ 36) #define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START+ 44) #define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START+ 45) #define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50) #define WM_CAP_GET_STATUS (WM_CAP_START+ 54) #define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START+ 61) #define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START+ 64) #define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START+ 65) #define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8) // Functions #define capGetVideoFormat(hwnd, s, wSize) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(s))) #define capGetVideoFormatSize(hwnd) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0L)) #define capSetVideoFormat(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_VIDEOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(s))) #define capGetStatus(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_STATUS, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPSTATUS)(s))) #define capGrabFrameNoStop(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_GRAB_FRAME_NOSTOP, (WPARAM)0, (LPARAM)0L)) #define capSetCallbackOnError(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_ERROR, 0, (LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnFrame(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_FRAME, 0, (LPARAM)(LPVOID)(fpProc))) #define capSetCallbackOnVideoStream(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, (LPARAM)(LPVOID)(fpProc))) #define capDriverConnect(hwnd, i) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_CONNECT, (WPARAM)(i), 0L)) #define capDriverDisconnect(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_DISCONNECT, (WPARAM)0, 0L)) #define capSetUserData(hwnd, lUser) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_USER_DATA, 0, (LPARAM)lUser)) #define capGetUserData(hwnd) (AVICapSM(hwnd, WM_CAP_GET_USER_DATA, 0, 0)) #define capCaptureGetSetup(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_SEQUENCE_SETUP, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPTUREPARMS)(s))) #define capCaptureSetSetup(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_SEQUENCE_SETUP, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPTUREPARMS)(s))) #define capDriverGetCaps(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_GET_CAPS, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(s))) #define capPreview(hwnd, f) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_PREVIEW, (WPARAM)(BOOL)(f), 0L)) BOOL VFWAPI capGetDriverDescription(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); HWND VFWAPI capCreateCaptureWindow( LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); // Making types of these functions to define static stubs typedef BOOL (VFWAPI *CAPGETDRIVERDESCRIPTIONPROC)(UINT,LPSTR, int, LPSTR, int); // FAR * LPCAPGETDRIVERDESCRIPTIONPROC; typedef HWND (VFWAPI *CAPCREATECAPTUREWINDOWPROC)(LPCSTR,DWORD,int,int,int,int,HWND,int); // FAR * LPCAPCREATECAPTUREWINDOWPROC; #endif // _CEVFW_H pwlib_v1_10_2/include/ptlib/wince/config.h0100644000176200056700000000022707233471137020666 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/crtdbg.h0100644000176200056700000000022707233471137020666 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/ctype.h0100644000176200056700000000027607243410527020546 0ustar releasepostincr// // (c) 2000 Yuri Kiryanov, openh323@kiryanov.com // and Yuriy Gorvitovskiy // // Windows CE port of OpenH323 Open Source Project, www.openh323.org // PWLib extras #include "stdlibx.h" pwlib_v1_10_2/include/ptlib/wince/direct.h0100644000176200056700000000023007233471137020665 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/errno.h0100644000176200056700000000334107247652022020545 0ustar releasepostincr// // (c) 2000 Yuri Kiryanov, openh323@kiryanov.com // and Yuriy Gorvitovskiy // // Windows CE port of OpenH323 Open Source Project, www.openh323.org // PWLib extras // // errno.h - system wide error numbers (set by system calls) // [Microsoft] // [System V] // // [Public] // #ifndef _INC_ERRNO #define _INC_ERRNO #ifdef __cplusplus #include extern "C" { #endif /* declare reference to errno */ #define errno GetLastError() #define set_errno(err) SetLastError( err) /* Error Codes */ #define EPERM 1 #define ENOENT 2 #define ESRCH 3 #define EINTR 4 #define EIO 5 #define ENXIO 6 #define E2BIG 7 #define ENOEXEC 8 #define EBADF 9 #define ECHILD 10 #define EAGAIN 11 #define ENOMEM 12 #define EACCES 13 #define EFAULT 14 #define EBUSY 16 #define EEXIST 17 #define EXDEV 18 #define ENODEV 19 #define ENOTDIR 20 #define EISDIR 21 #define EINVAL 22 #define ENFILE 23 #define EMFILE 24 #define ENOTTY 25 #define EFBIG 27 #define ENOSPC 28 #define ESPIPE 29 #define EROFS 30 #define EMLINK 31 #define EPIPE 32 #define EDOM 33 #define ERANGE 34 #define EDEADLK 36 #ifndef ENAMETOOLONG #define ENAMETOOLONG 38 #endif #define ENOLCK 39 #define ENOSYS 40 #ifndef ENAMETOOLONG #define ENOTEMPTY 41 #endif #define EILSEQ 42 /* * Support EDEADLOCK for compatibiity with older MS-C versions. */ #define EDEADLOCK EDEADLK #ifdef __cplusplus } #endif #endif /* _INC_ERRNO */ pwlib_v1_10_2/include/ptlib/wince/fcntl.h0100644000176200056700000000022707233471137020527 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/imagehlp.h0100644000176200056700000000022707233471137021207 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/io.h0100644000176200056700000000022507233471137020026 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/iomanip.h0100644000176200056700000000717607233471137021067 0ustar releasepostincr// // (c) 2000 Yuriy Govitovskiy, // for Openh323, www.Openh323.org // // Windows CE Port // // iomanip.h - definitions/declarations for iostream's parameterized manipulators // // [Microsoft] // [AT&T C++] // // [Public] #ifdef __cplusplus #ifndef _INC_IOMANIP #define _INC_IOMANIP #include #define SMANIP(T) __SMANIP_##T #define SAPP(T) __SAPP_##T #define IMANIP(T) __IMANIP_##T #define IAPP(T) __IAPP_##T #define OMANIP(T) __OMANIP_##T #define OAPP(T) __OAPP_##T #define IOMANIP(T) __IOMANIP_##T #define IOAPP(T) __IOAPP_##T #define IOMANIPdeclare(T) \ class SMANIP(T) { \ public: \ SMANIP(T)(ios& (*f)(ios&,T), T t) : _fp(f), _tp(t) {} \ friend istream& operator>>(istream& s, const SMANIP(T) & sm) { (*(sm._fp))(s,sm._tp); return s; } \ friend ostream& operator<<(ostream& s, const SMANIP(T) & sm) { (*(sm._fp))(s,sm._tp); return s; } \ private: \ ios& (* _fp)(ios&,T); \ T _tp; \ }; \ class SAPP(T) { \ public: \ SAPP(T)( ios& (*f)(ios&,T)) : _fp(f) {} \ SMANIP(T) operator()(T t) { return SMANIP(T)(_fp,t); } \ private: \ ios& (* _fp)(ios&,T); \ }; \ class IMANIP(T) { \ public: \ IMANIP(T)(istream& (*f)(istream&,T), T t) : _fp(f), _tp(t) {} \ friend istream& operator>>(istream& s, IMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \ private: \ istream& (* _fp)(istream&,T); \ T _tp; \ }; \ class IAPP(T) { \ public: \ IAPP(T)( istream& (*f)(istream&,T)) : _fp(f) {} \ IMANIP(T) operator()(T t) { return IMANIP(T)(_fp,t); } \ private: \ istream& (* _fp)(istream&,T); \ }; \ class OMANIP(T) { \ public: \ OMANIP(T)(ostream& (*f)(ostream&,T), T t) : _fp(f), _tp(t) {} \ friend ostream& operator<<(ostream& s, OMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \ private: \ ostream& (* _fp)(ostream&,T); \ T _tp; \ }; \ class OAPP(T) { \ public: \ OAPP(T)(ostream& (*f)(ostream&,T)) : _fp(f) {} \ OMANIP(T) operator()(T t) { return OMANIP(T)(_fp,t); } \ private: \ ostream& (* _fp)(ostream&,T); \ }; \ \ class IOMANIP(T) { \ public: \ IOMANIP(T)(iostream& (*f)(iostream&,T), T t) : _fp(f), _tp(t) {} \ friend istream& operator>>(iostream& s, IOMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \ friend ostream& operator<<(iostream& s, IOMANIP(T) & sm) { (*sm._fp)(s,sm._tp); return s; } \ private: \ iostream& (* _fp)(iostream&,T); \ T _tp; \ }; \ class IOAPP(T) { \ public: \ IOAPP(T)( iostream& (*f)(iostream&,T)) : _fp(f) {} \ IOMANIP(T) operator()(T t) { return IOMANIP(T)(_fp,t); } \ private: \ iostream& (* _fp)(iostream&,T); \ }; \ IOMANIPdeclare(int) IOMANIPdeclare(long) inline ios& __resetiosflags(ios& s, long _flg) { s.setf(0,_flg); return s; } inline ios& __setfill(ios& s, int _fc) { s.fill((char)_fc); return s; } inline ios& __setiosflags(ios& s, long _flg) { s.setf(_flg); return s; } inline ios& __setprecision(ios& s, int _pre) { s.precision(_pre); return s; } inline ios& __setw(ios& s, int _wid) { s.width(_wid); return s; } inline SMANIP(long) resetiosflags(long _l) { return SMANIP(long)(__resetiosflags, _l); } inline SMANIP(int) setfill(int _m) {return SMANIP(int)(__setfill, _m); } inline SMANIP(long) setiosflags(long _l) {return SMANIP(long)(__setiosflags, _l); } inline SMANIP(int) setprecision(int _p) {return SMANIP(int)(__setprecision, _p); } inline SMANIP(int) setw(int _w) { return SMANIP(int)(__setw, _w); } #endif /* _INC_IOMANIP */ #endif /* __cplusplus */ pwlib_v1_10_2/include/ptlib/wince/ios.h0100644000176200056700000001340007233471137020210 0ustar releasepostincr// // (c) 2000 Yuriy Govitovskiy, // for Openh323, www.Openh323.org // // Windows CE Port // // ios.h - definitions/declarations for the ios class. // // [Microsoft] // [AT&T C++] // // [Public] #ifdef __cplusplus #ifndef _INC_IOS #define _INC_IOS #ifndef NULL #define NULL 0 #endif #ifndef EOF #define EOF (-1) #endif class streambuf; class ostream; class ios { public: enum io_state { goodbit = 0x00, eofbit = 0x01, failbit = 0x02, badbit = 0x04 }; enum open_mode { in = 0x01, out = 0x02, ate = 0x04, app = 0x08, trunc = 0x10, nocreate = 0x20, noreplace = 0x40, binary = 0x80 }; enum seek_dir { beg=0, cur=1, end=2 }; enum { skipws = 0x0001, left = 0x0002, right = 0x0004, internal = 0x0008, dec = 0x0010, oct = 0x0020, hex = 0x0040, showbase = 0x0080, showpoint = 0x0100, uppercase = 0x0200, showpos = 0x0400, scientific = 0x0800, fixed = 0x1000, unitbuf = 0x2000, stdio = 0x4000 }; static const long basefield; // dec | oct | hex static const long adjustfield; // left | right | internal static const long floatfield; // scientific | fixed ios(streambuf*); // differs from ANSI virtual ~ios(); inline long flags() const; inline long flags(long _l); inline long setf(long _f,long _m); inline long setf(long _l); inline long unsetf(long _l); inline int width() const; inline int width(int _i); inline ostream* tie(ostream* _os); inline ostream* tie() const; inline char fill() const; inline char fill(char _c); inline int precision(int _i); inline int precision() const; inline int rdstate() const; inline void clear(int _i = 0); // inline operator void*() const; operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; } inline int operator!() const; inline int good() const; inline int eof() const; inline int fail() const; inline int bad() const; inline streambuf* rdbuf() const; inline long & iword(int) const; inline void * & pword(int) const; static long bitalloc(); static int xalloc(); static void sync_with_stdio(); void lock() { } void unlock() { } void lockbuf() { } void unlockbuf() { } protected: ios(); ios(const ios&); // treat as private ios& operator=(const ios&); void init(streambuf*); enum { skipping, tied }; streambuf* bp; int state; int ispecial; // not used int ospecial; // not used int isfx_special; // not used int osfx_special; // not used int x_delbuf; // if set, rdbuf() deleted by ~ios ostream* x_tie; long x_flags; int x_precision; char x_fill; int x_width; static void (*stdioflush)(); // not used static void lockc() { } static void unlockc() { } public: int delbuf() const { return x_delbuf; } void delbuf(int _i) { x_delbuf = _i; } private: static long x_maxbit; static int x_curindex; static int sunk_with_stdio; // make sure sync_with done only once static long * x_statebuf; // used by xalloc() }; #include inline ios& dec(ios& _strm) { _strm.setf(ios::dec,ios::basefield); return _strm; } inline ios& hex(ios& _strm) { _strm.setf(ios::hex,ios::basefield); return _strm; } inline ios& oct(ios& _strm) { _strm.setf(ios::oct,ios::basefield); return _strm; } inline long ios::flags() const { return x_flags; } inline long ios::flags(long _l){ long _lO; _lO = x_flags; x_flags = _l; return _lO; } inline long ios::setf(long _l,long _m){ long _lO; lock(); _lO = x_flags; x_flags = (_l&_m) | (x_flags&(~_m)); unlock(); return _lO; } inline long ios::setf(long _l){ long _lO; lock(); _lO = x_flags; x_flags |= _l; unlock(); return _lO; } inline long ios::unsetf(long _l){ long _lO; lock(); _lO = x_flags; x_flags &= (~_l); unlock(); return _lO; } inline int ios::width() const { return x_width; } inline int ios::width(int _i){ int _iO; _iO = (int)x_width; x_width = _i; return _iO; } inline ostream* ios::tie(ostream* _os){ ostream* _osO; _osO = x_tie; x_tie = _os; return _osO; } inline ostream* ios::tie() const { return x_tie; } inline char ios::fill() const { return x_fill; } inline char ios::fill(char _c){ char _cO; _cO = x_fill; x_fill = _c; return _cO; } inline int ios::precision(int _i){ int _iO; _iO = (int)x_precision; x_precision = _i; return _iO; } inline int ios::precision() const { return x_precision; } inline int ios::rdstate() const { return state; } // inline ios::operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; } inline int ios::operator!() const { return state&(badbit|failbit); } inline int ios::bad() const { return state & badbit; } inline void ios::clear(int _i){ lock(); state = _i; unlock(); } inline int ios::eof() const { return state & eofbit; } inline int ios::fail() const { return state & (badbit | failbit); } inline int ios::good() const { return state == 0; } inline streambuf* ios::rdbuf() const { return bp; } inline long & ios::iword(int _i) const { return x_statebuf[_i] ; } inline void * & ios::pword(int _i) const { return (void * &)x_statebuf[_i]; } #endif // _INC_IOS #endif /* __cplusplus */ pwlib_v1_10_2/include/ptlib/wince/iostream.h0100644000176200056700000000243307233471137021245 0ustar releasepostincr// // (c) 2000 Yuriy Govitovskiy, // for Openh323, www.Openh323.org // // Windows CE Port // // iostream.h - definitions/declarations for iostream classes. // // [Microsoft] // [AT&T C++] // // [Public] #ifdef __cplusplus #ifndef _INC_IOSTREAM #define _INC_IOSTREAM /* Define _CRTIMP */ typedef long streamoff, streampos; #include // Define ios. #include // Define streambuf. #include // Define istream. #include // Define ostream. class iostream : public istream, public ostream { public: iostream(streambuf*); virtual ~iostream(); protected: iostream(); iostream(const iostream&); inline iostream& operator=(streambuf*); inline iostream& operator=(iostream&); private: iostream(ios&); iostream(istream&); iostream(ostream&); }; inline iostream& iostream::operator=(streambuf* _sb) { istream::operator=(_sb); ostream::operator=(_sb); return *this; } inline iostream& iostream::operator=(iostream& _strm) { return operator=(_strm.rdbuf()); } class Iostream_init { public: Iostream_init(); Iostream_init(ios &, int =0); // treat as private ~Iostream_init(); }; #endif // _INC_IOSTREAM #endif /* __cplusplus */ pwlib_v1_10_2/include/ptlib/wince/istream.h0100644000176200056700000001170107256500060021055 0ustar releasepostincr// // (c) 2000 Yuriy Govitovskiy, // for Openh323, www.Openh323.org // // Windows CE Port // // istream.h - definitions/declarations for the istream class // // [Microsoft] // [AT&T C++] // // [Public] #ifdef __cplusplus #ifndef _INC_ISTREAM #define _INC_ISTREAM #include #include typedef long streamoff, streampos; class istream : virtual public ios { public: istream(streambuf*); virtual ~istream(); int ipfx(int =0); void isfx() { unlockbuf(); unlock(); } istream& operator>>(istream& (__cdecl* _f)(istream&)); istream& operator>>(ios& (__cdecl* _f)(ios&)); istream& operator>>(streambuf *); istream& operator>>(char *); inline istream& operator>>(unsigned char *); inline istream& operator>>(signed char *); istream& operator>>(char &); inline istream& operator>>(unsigned char &); inline istream& operator>>(signed char &); istream& operator>>(short &); istream& operator>>(unsigned short &); istream& operator>>(int &); istream& operator>>(unsigned int &); istream& operator>>(long &); istream& operator>>(unsigned long &); istream& operator>>(float &); istream& operator>>(double &); istream& operator>>(long double &); int get(); inline istream& get( char *,int,char ='\n'); inline istream& get(unsigned char *,int,char ='\n'); inline istream& get( signed char *,int,char ='\n'); istream& get(char &); inline istream& get(unsigned char &); inline istream& get( signed char &); istream& get(streambuf&,char ='\n'); inline istream& getline( char *,int,char ='\n'); inline istream& getline(unsigned char *,int,char ='\n'); inline istream& getline( signed char *,int,char ='\n'); inline istream& ignore(int =1,int =EOF); istream& read(char *,int); inline istream& read(unsigned char *,int); inline istream& read(signed char *,int); int gcount() const { return x_gcount; } int peek(); istream& putback(char); int sync(); istream& seekg(streampos); istream& seekg(streamoff,ios::seek_dir); streampos tellg(); void eatwhite(); protected: istream(); istream(const istream&); // treat as private istream& operator=(streambuf* _isb); // treat as private istream& operator=(const istream& _is) { return operator=(_is.rdbuf()); } istream& get(char *, int, int); int do_ipfx(int); private: istream(ios&); int getint(char *); int getdouble(char*, int); int _fGline; int x_gcount; }; inline istream& istream::operator>>(istream& (__cdecl* _f)(istream&)) { (*_f)(*this); return *this; } inline istream& istream::operator>>(ios& (__cdecl* _f)(ios&)) { (*_f)(*this); return *this; } inline istream& istream::operator>>(unsigned char * _s) { return operator>>((char *)_s); } inline istream& istream::operator>>( signed char * _s) { return operator>>((char *)_s); } inline istream& istream::operator>>(unsigned char & _c) { return operator>>((char &) _c); } inline istream& istream::operator>>( signed char & _c) { return operator>>((char &) _c); } inline istream& istream::get( char * _b, int _lim, char _delim) { return get( _b, _lim, (int)(unsigned char)_delim); } inline istream& istream::get(unsigned char * _b, int _lim, char _delim) { return get((char *)_b, _lim, (int)(unsigned char)_delim); } inline istream& istream::get(signed char * _b, int _lim, char _delim) { return get((char *)_b, _lim, (int)(unsigned char)_delim); } inline istream& istream::get(unsigned char & _c) { return get((char &)_c); } inline istream& istream::get( signed char & _c) { return get((char &)_c); } inline istream& istream::getline( char * _b,int _lim,char _delim) { lock(); _fGline++; get( _b, _lim, (int)(unsigned char)_delim); unlock(); return *this; } inline istream& istream::getline(unsigned char * _b,int _lim,char _delim) { lock(); _fGline++; get((char *)_b, _lim, (int)(unsigned char)_delim); unlock(); return *this; } inline istream& istream::getline( signed char * _b,int _lim,char _delim) { lock(); _fGline++; get((char *)_b, _lim, (int)(unsigned char)_delim); unlock(); return *this; } inline istream& istream::ignore(int _n,int _delim) { lock(); _fGline++; get((char *)0, _n+1, _delim); unlock(); return *this; } inline istream& istream::read(unsigned char * _ptr, int _n) { return read((char *) _ptr, _n); } inline istream& istream::read( signed char * _ptr, int _n) { return read((char *) _ptr, _n); } class istream_withassign : public istream { public: istream_withassign(); istream_withassign(streambuf*); ~istream_withassign(); istream& operator=(const istream& _is) { return istream::operator=(_is); } istream& operator=(streambuf* _isb) { return istream::operator=(_isb); } }; extern istream_withassign cin; inline istream& ws(istream& _ins) { _ins.eatwhite(); return _ins; } ios& dec(ios&); ios& hex(ios&); ios& oct(ios&); #endif // _INC_ISTREAM #endif /* __cplusplus */ pwlib_v1_10_2/include/ptlib/wince/lisp.h0100644000176200056700000000023007234425674020370 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/mmsystemx.h0100644000176200056700000000705707676673035021513 0ustar releasepostincr// // (c) 2000 Yuri Kiryanov, openh323@kiryanov.com // and Yuriy Gorvitovskiy // // Windows CE port of OpenH323 Open Source Project, www.openh323.org // Missing PWLib extras #ifndef __MMSYSTEMX_H__ #define __MMSYSTEMX_H__ #include #if _WIN32_WCE < 400 // // MMSystem extras // #define MMIO_CREATE 0x00001000 /* create new file (or truncate file) */ #define MMIO_WRITE 0x00000001 /* open file for writing only */ #define MMIO_CREATERIFF 0x0020 /* mmioCreateChunk: make a LIST chunk */ #define MMIO_READ 0x00000000 /* open file for reading only */ #define MMIO_ALLOCBUF 0x00010000 /* mmioOpen() should allocate a buffer */ #define MMIO_FINDRIFF 0x0020 /* mmioDescend: find a LIST chunk */ #define MMIO_FINDCHUNK 0x0010 /* mmioDescend: find a chunk by ID */ typedef DWORD FOURCC; typedef char * HPSTR; /* a huge version of LPSTR */ typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2); typedef MMIOPROC FAR *LPMMIOPROC; /* general MMIO information data structure */ typedef struct _MMIOINFO { /* general fields */ DWORD dwFlags; /* general status flags */ FOURCC fccIOProc; /* pointer to I/O procedure */ LPMMIOPROC pIOProc; /* pointer to I/O procedure */ UINT wErrorRet; /* place for error to be returned */ HTASK htask; /* alternate local task */ /* fields maintained by MMIO functions during buffered I/O */ LONG cchBuffer; /* size of I/O buffer (or 0L) */ HPSTR pchBuffer; /* start of I/O buffer (or NULL) */ HPSTR pchNext; /* pointer to next byte to read/write */ HPSTR pchEndRead; /* pointer to last valid byte to read */ HPSTR pchEndWrite; /* pointer to last byte to write */ LONG lBufOffset; /* disk offset of start of buffer */ /* fields maintained by I/O procedure */ LONG lDiskOffset; /* disk offset of next read or write */ DWORD adwInfo[3]; /* data specific to type of MMIOPROC */ /* other fields maintained by MMIO */ DWORD dwReserved1; /* reserved for MMIO use */ DWORD dwReserved2; /* reserved for MMIO use */ HMMIO hmmio; /* handle to open file */ } MMIOINFO, *PMMIOINFO, NEAR *NPMMIOINFO, FAR *LPMMIOINFO; typedef const MMIOINFO FAR *LPCMMIOINFO; typedef struct _MMCKINFO { FOURCC ckid; DWORD cksize; FOURCC fccType; DWORD dwDataOffset; DWORD dwFlags; } MMCKINFO, *PMMCKINFO, NEAR *NPMMCKINFO, FAR *LPMMCKINFO; typedef const MMCKINFO *LPCMMCKINFO; #ifndef HMMIO typedef HANDLE HMMIO; // a handle to an open file #endif #endif // _INC_MMSYSTEM HMMIO WINAPI mmioOpen(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT fuClose); LONG WINAPI mmioRead(HMMIO hmmio, HPSTR pch, LONG cch); LONG WINAPI mmioWrite(HMMIO hmmio, const char * pch, LONG cch); MMRESULT WINAPI mmioDescend(HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO FAR* pmmckiParent, UINT fuDescend); MMRESULT WINAPI mmioAscend(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend); MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate); BOOL WINAPI PlaySound( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); MMRESULT WINAPI waveInGetErrorText(MMRESULT mmrError, char* pszText, UINT cchText); MMRESULT WINAPI waveOutGetErrorText(MMRESULT mmrError, char* pszText, UINT cchText); #endif // __MMSYSTEMX_H__pwlib_v1_10_2/include/ptlib/wince/nspapi.h0100644000176200056700000000022707233471137020713 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/nucpp.h0100644000176200056700000000022707233471137020546 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/ostream.h0100644000176200056700000001017507675502266021106 0ustar releasepostincr// // (c) 2000 Yuriy Govitovskiy, // for Openh323, www.Openh323.org // // Windows CE Port // // ostream.h - definitions/declarations for the ostream class // // [Microsoft] // [AT&T C++] // // [Public] #ifdef __cplusplus #ifndef _INC_OSTREAM #define _INC_OSTREAM #include typedef long streamoff, streampos; class ostream : virtual public ios { public: ostream(streambuf*); virtual ~ostream(); ostream& flush(); int opfx(); void osfx(); inline ostream& operator<<(ostream& (__cdecl * _f)(ostream&)); inline ostream& operator<<(ios& (__cdecl * _f)(ios&)); ostream& operator<<(const char *); inline ostream& operator<<(const unsigned char *); inline ostream& operator<<(const signed char *); inline ostream& operator<<(char); ostream& operator<<(unsigned char); inline ostream& operator<<(signed char); ostream& operator<<(short); ostream& operator<<(unsigned short); ostream& operator<<(int); ostream& operator<<(unsigned int); ostream& operator<<(long); ostream& operator<<(unsigned long); inline ostream& operator<<(float); ostream& operator<<(double); ostream& operator<<(long double); ostream& operator<<(const void *); ostream& operator<<(streambuf*); inline ostream& put(char); ostream& put(unsigned char); inline ostream& put(signed char); ostream& write(const char *,int); inline ostream& write(const unsigned char *,int); inline ostream& write(const signed char *,int); ostream& seekp(streampos); ostream& seekp(streamoff,ios::seek_dir); streampos tellp(); protected: ostream(); ostream(const ostream&); // treat as private ostream& operator=(streambuf*); // treat as private ostream& operator=(const ostream& _os) {return operator=(_os.rdbuf()); } int do_opfx(int); // not used void do_osfx(); // not used private: ostream(ios&); ostream& writepad(const char *, const char *); int x_floatused; }; inline ostream& ostream::operator<<(ostream& (__cdecl * _f)(ostream&)) { (*_f)(*this); return *this; } inline ostream& ostream::operator<<(ios& (__cdecl * _f)(ios& )) { (*_f)(*this); return *this; } inline ostream& ostream::operator<<(char _c) { return operator<<((unsigned char) _c); } inline ostream& ostream::operator<<(signed char _c) { return operator<<((unsigned char) _c); } inline ostream& ostream::operator<<(const unsigned char * _s) { return operator<<((const char *) _s); } inline ostream& ostream::operator<<(const signed char * _s) { return operator<<((const char *) _s); } inline ostream& ostream::operator<<(float _f) { x_floatused = 1; return operator<<((double) _f); } inline ostream& ostream::put(char _c) { return put((unsigned char) _c); } inline ostream& ostream::put(signed char _c) { return put((unsigned char) _c); } inline ostream& ostream::write(const unsigned char * _s, int _n) { return write((char *) _s, _n); } inline ostream& ostream::write(const signed char * _s, int _n) { return write((char *) _s, _n); } class ostream_withassign : public ostream { public: ostream_withassign(); ostream_withassign(streambuf* _is); ~ostream_withassign(); ostream& operator=(const ostream& _os) { return ostream::operator=(_os.rdbuf()); } ostream& operator=(streambuf* _sb) { return ostream::operator=(_sb); } }; #ifndef WCE_NO_EXTERNAL_STREAMS #include "ceostream.h" extern YWinCEOStream cout; extern YWinCEOStream cerr; extern YWinCEOStream clog; #else extern ostream_withassign cout; extern ostream_withassign cerr; extern ostream_withassign clog; class PStringStream; extern PStringStream cerr; extern PStringStream cout; extern PStringStream clog; #endif // !WCE_NO_EXTERNAL_STREAMS inline ostream& flush(ostream& _outs) { return _outs.flush(); } inline ostream& endl(ostream& _outs) { return _outs << '\n' << flush; } inline ostream& ends(ostream& _outs) { return _outs << char('\0'); } ios& dec(ios&); ios& hex(ios&); ios& oct(ios&); #endif // _INC_OSTREAM #endif /* __cplusplus */ pwlib_v1_10_2/include/ptlib/wince/process.h0100644000176200056700000000022707233471137021077 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/regexp.h0100644000176200056700000000022707233471137020713 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/share.h0100644000176200056700000000022707233471137020523 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/signal.h0100644000176200056700000000022707233471137020676 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/snmp.h0100644000176200056700000005561007360076500020400 0ustar releasepostincr/*++ Copyright 1992 - 1998 Microsoft Corporation Module Name: snmp.h Abstract: Definitions for SNMP development. --*/ #ifndef _INC_SNMP #define _INC_SNMP /////////////////////////////////////////////////////////////////////////////// // // // Additional Header Files // // // /////////////////////////////////////////////////////////////////////////////// #include #ifdef __cplusplus extern "C" { #endif /////////////////////////////////////////////////////////////////////////////// // // // SNMP Type Definitions // // // /////////////////////////////////////////////////////////////////////////////// #pragma pack(4) typedef struct { BYTE * stream; UINT length; BOOL dynamic; } AsnOctetString; typedef struct { UINT idLength; UINT * ids; } AsnObjectIdentifier; typedef LONG AsnInteger32; typedef ULONG AsnUnsigned32; typedef ULARGE_INTEGER AsnCounter64; typedef AsnUnsigned32 AsnCounter32; typedef AsnUnsigned32 AsnGauge32; typedef AsnUnsigned32 AsnTimeticks; typedef AsnOctetString AsnBits; typedef AsnOctetString AsnSequence; typedef AsnOctetString AsnImplicitSequence; typedef AsnOctetString AsnIPAddress; typedef AsnOctetString AsnNetworkAddress; typedef AsnOctetString AsnDisplayString; typedef AsnOctetString AsnOpaque; typedef struct { BYTE asnType; union { AsnInteger32 number; // ASN_INTEGER // ASN_INTEGER32 AsnUnsigned32 unsigned32; // ASN_UNSIGNED32 AsnCounter64 counter64; // ASN_COUNTER64 AsnOctetString string; // ASN_OCTETSTRING AsnBits bits; // ASN_BITS AsnObjectIdentifier object; // ASN_OBJECTIDENTIFIER AsnSequence sequence; // ASN_SEQUENCE AsnIPAddress address; // ASN_IPADDRESS AsnCounter32 counter; // ASN_COUNTER32 AsnGauge32 gauge; // ASN_GAUGE32 AsnTimeticks ticks; // ASN_TIMETICKS AsnOpaque arbitrary; // ASN_OPAQUE } asnValue; } AsnAny; typedef AsnObjectIdentifier AsnObjectName; typedef AsnAny AsnObjectSyntax; typedef struct { AsnObjectName name; AsnObjectSyntax value; } SnmpVarBind; typedef struct { SnmpVarBind * list; UINT len; } SnmpVarBindList; #pragma pack() #ifndef _INC_WINSNMP /////////////////////////////////////////////////////////////////////////////// // // // ASN/BER Base Types // // // /////////////////////////////////////////////////////////////////////////////// #define ASN_UNIVERSAL 0x00 #define ASN_APPLICATION 0x40 #define ASN_CONTEXT 0x80 #define ASN_PRIVATE 0xC0 #define ASN_PRIMITIVE 0x00 #define ASN_CONSTRUCTOR 0x20 /////////////////////////////////////////////////////////////////////////////// // // // PDU Type Values // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0) #define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1) #define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2) #define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3) #define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4) #define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5) #define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6) #define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7) #endif // _INC_WINSNMP /////////////////////////////////////////////////////////////////////////////// // // // SNMP Simple Syntax Values // // // /////////////////////////////////////////////////////////////////////////////// #define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02) #define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03) #define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04) #define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05) #define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06) #define ASN_INTEGER32 ASN_INTEGER /////////////////////////////////////////////////////////////////////////////// // // // SNMP Constructor Syntax Values // // // /////////////////////////////////////////////////////////////////////////////// #define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10) #define ASN_SEQUENCEOF ASN_SEQUENCE /////////////////////////////////////////////////////////////////////////////// // // // SNMP Application Syntax Values // // // /////////////////////////////////////////////////////////////////////////////// #define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00) #define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01) #define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02) #define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03) #define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04) #define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06) #define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07) /////////////////////////////////////////////////////////////////////////////// // // // SNMP Exception Conditions // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00) #define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01) #define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02) /////////////////////////////////////////////////////////////////////////////// // // // SNMP Request Types (used in SnmpExtensionQueryEx) // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_EXTENSION_GET SNMP_PDU_GET #define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT #define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK #define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0) #define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET #define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1) #define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2) /////////////////////////////////////////////////////////////////////////////// // // // SNMP Error Codes // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_ERRORSTATUS_NOERROR 0 #define SNMP_ERRORSTATUS_TOOBIG 1 #define SNMP_ERRORSTATUS_NOSUCHNAME 2 #define SNMP_ERRORSTATUS_BADVALUE 3 #define SNMP_ERRORSTATUS_READONLY 4 #define SNMP_ERRORSTATUS_GENERR 5 #define SNMP_ERRORSTATUS_NOACCESS 6 #define SNMP_ERRORSTATUS_WRONGTYPE 7 #define SNMP_ERRORSTATUS_WRONGLENGTH 8 #define SNMP_ERRORSTATUS_WRONGENCODING 9 #define SNMP_ERRORSTATUS_WRONGVALUE 10 #define SNMP_ERRORSTATUS_NOCREATION 11 #define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12 #define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13 #define SNMP_ERRORSTATUS_COMMITFAILED 14 #define SNMP_ERRORSTATUS_UNDOFAILED 15 #define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16 #define SNMP_ERRORSTATUS_NOTWRITABLE 17 #define SNMP_ERRORSTATUS_INCONSISTENTNAME 18 /////////////////////////////////////////////////////////////////////////////// // // // SNMPv1 Trap Types // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_GENERICTRAP_COLDSTART 0 #define SNMP_GENERICTRAP_WARMSTART 1 #define SNMP_GENERICTRAP_LINKDOWN 2 #define SNMP_GENERICTRAP_LINKUP 3 #define SNMP_GENERICTRAP_AUTHFAILURE 4 #define SNMP_GENERICTRAP_EGPNEIGHLOSS 5 #define SNMP_GENERICTRAP_ENTERSPECIFIC 6 /////////////////////////////////////////////////////////////////////////////// // // // SNMP Access Types // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_ACCESS_NONE 0 #define SNMP_ACCESS_NOTIFY 1 #define SNMP_ACCESS_READ_ONLY 2 #define SNMP_ACCESS_READ_WRITE 3 #define SNMP_ACCESS_READ_CREATE 4 /////////////////////////////////////////////////////////////////////////////// // // // SNMP API Return Code Definitions // // // /////////////////////////////////////////////////////////////////////////////// #define SNMPAPI INT #define SNMP_FUNC_TYPE WINAPI #define SNMPAPI_NOERROR TRUE #define SNMPAPI_ERROR FALSE /////////////////////////////////////////////////////////////////////////////// // // // SNMP Extension API Prototypes // // // /////////////////////////////////////////////////////////////////////////////// BOOL SNMP_FUNC_TYPE SnmpExtensionInit( DWORD dwUptimeReference, HANDLE * phSubagentTrapEvent, AsnObjectIdentifier * pFirstSupportedRegion ); BOOL SNMP_FUNC_TYPE SnmpExtensionInitEx( AsnObjectIdentifier * pNextSupportedRegion ); BOOL SNMP_FUNC_TYPE SnmpExtensionQuery( BYTE bPduType, SnmpVarBindList * pVarBindList, AsnInteger32 * pErrorStatus, AsnInteger32 * pErrorIndex ); BOOL SNMP_FUNC_TYPE SnmpExtensionQueryEx( UINT nRequestType, UINT nTransactionId, SnmpVarBindList * pVarBindList, AsnOctetString * pContextInfo, AsnInteger32 * pErrorStatus, AsnInteger32 * pErrorIndex ); BOOL SNMP_FUNC_TYPE SnmpExtensionTrap( AsnObjectIdentifier * pEnterpriseOid, AsnInteger32 * pGenericTrapId, AsnInteger32 * pSpecificTrapId, AsnTimeticks * pTimeStamp, SnmpVarBindList * pVarBindList ); VOID SNMP_FUNC_TYPE SnmpExtensionClose( ); /////////////////////////////////////////////////////////////////////////////// // // // SNMP Extension API Type Definitions // // // /////////////////////////////////////////////////////////////////////////////// typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONINIT)( DWORD dwUpTimeReference, HANDLE * phSubagentTrapEvent, AsnObjectIdentifier * pFirstSupportedRegion ); typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONINITEX)( AsnObjectIdentifier * pNextSupportedRegion ); typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONQUERY)( BYTE bPduType, SnmpVarBindList * pVarBindList, AsnInteger32 * pErrorStatus, AsnInteger32 * pErrorIndex ); typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONQUERYEX)( UINT nRequestType, UINT nTransactionId, SnmpVarBindList * pVarBindList, AsnOctetString * pContextInfo, AsnInteger32 * pErrorStatus, AsnInteger32 * pErrorIndex ); typedef BOOL (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONTRAP)( AsnObjectIdentifier * pEnterpriseOid, AsnInteger32 * pGenericTrapId, AsnInteger32 * pSpecificTrapId, AsnTimeticks * pTimeStamp, SnmpVarBindList * pVarBindList ); typedef VOID (SNMP_FUNC_TYPE * PFNSNMPEXTENSIONCLOSE)( ); /////////////////////////////////////////////////////////////////////////////// // // // SNMP API Prototypes // // // /////////////////////////////////////////////////////////////////////////////// SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCpy( AsnObjectIdentifier * pOidDst, AsnObjectIdentifier * pOidSrc ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidAppend( AsnObjectIdentifier * pOidDst, AsnObjectIdentifier * pOidSrc ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidNCmp( AsnObjectIdentifier * pOid1, AsnObjectIdentifier * pOid2, UINT nSubIds ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCmp( AsnObjectIdentifier * pOid1, AsnObjectIdentifier * pOid2 ); VOID SNMP_FUNC_TYPE SnmpUtilOidFree( AsnObjectIdentifier * pOid ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsCmp( AsnOctetString * pOctets1, AsnOctetString * pOctets2 ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsNCmp( AsnOctetString * pOctets1, AsnOctetString * pOctets2, UINT nChars ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsCpy( AsnOctetString * pOctetsDst, AsnOctetString * pOctetsSrc ); VOID SNMP_FUNC_TYPE SnmpUtilOctetsFree( AsnOctetString * pOctets ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilAsnAnyCpy( AsnAny * pAnyDst, AsnAny * pAnySrc ); VOID SNMP_FUNC_TYPE SnmpUtilAsnAnyFree( AsnAny * pAny ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilVarBindCpy( SnmpVarBind * pVbDst, SnmpVarBind * pVbSrc ); VOID SNMP_FUNC_TYPE SnmpUtilVarBindFree( SnmpVarBind * pVb ); SNMPAPI SNMP_FUNC_TYPE SnmpUtilVarBindListCpy( SnmpVarBindList * pVblDst, SnmpVarBindList * pVblSrc ); VOID SNMP_FUNC_TYPE SnmpUtilVarBindListFree( SnmpVarBindList * pVbl ); VOID SNMP_FUNC_TYPE SnmpUtilMemFree( LPVOID pMem ); LPVOID SNMP_FUNC_TYPE SnmpUtilMemAlloc( UINT nBytes ); LPVOID SNMP_FUNC_TYPE SnmpUtilMemReAlloc( LPVOID pMem, UINT nBytes ); LPSTR SNMP_FUNC_TYPE SnmpUtilOidToA( IN AsnObjectIdentifier *Oid ); LPSTR SNMP_FUNC_TYPE SnmpUtilIdsToA( IN UINT *Ids, IN UINT IdLength ); VOID SNMP_FUNC_TYPE SnmpUtilPrintOid( IN AsnObjectIdentifier *Oid ); VOID SNMP_FUNC_TYPE SnmpUtilPrintAsnAny( AsnAny * pAny ); DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime( ); VOID SNMP_FUNC_TYPE SnmpSvcSetLogLevel( INT nLogLevel ); VOID SNMP_FUNC_TYPE SnmpSvcSetLogType( INT nLogType ); /////////////////////////////////////////////////////////////////////////////// // // // SNMP Debugging Definitions // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_LOG_SILENT 0x0 #define SNMP_LOG_FATAL 0x1 #define SNMP_LOG_ERROR 0x2 #define SNMP_LOG_WARNING 0x3 #define SNMP_LOG_TRACE 0x4 #define SNMP_LOG_VERBOSE 0x5 #define SNMP_OUTPUT_TO_CONSOLE 0x1 #define SNMP_OUTPUT_TO_LOGFILE 0x2 #define SNMP_OUTPUT_TO_EVENTLOG 0x4 // no longer supported #define SNMP_OUTPUT_TO_DEBUGGER 0x8 /////////////////////////////////////////////////////////////////////////////// // // // SNMP Debugging Prototypes // // // /////////////////////////////////////////////////////////////////////////////// VOID SNMP_FUNC_TYPE SnmpUtilDbgPrint( IN INT nLogLevel, // see log levels above... IN LPSTR szFormat, IN ... ); #if DBG #define SNMPDBG(_x_) SnmpUtilDbgPrint _x_ #else #define SNMPDBG(_x_) #endif /////////////////////////////////////////////////////////////////////////////// // // // Miscellaneous definitions // // // /////////////////////////////////////////////////////////////////////////////// #define DEFINE_SIZEOF(Array) (sizeof(Array)/sizeof((Array)[0])) #define DEFINE_OID(SubIdArray) {DEFINE_SIZEOF(SubIdArray),(SubIdArray)} #define DEFINE_NULLOID() {0,NULL} #define DEFINE_NULLOCTETS() {NULL,0,FALSE} #define DEFAULT_SNMP_PORT_UDP 161 #define DEFAULT_SNMP_PORT_IPX 36879 #define DEFAULT_SNMPTRAP_PORT_UDP 162 #define DEFAULT_SNMPTRAP_PORT_IPX 36880 #define SNMP_MAX_OID_LEN 128 /////////////////////////////////////////////////////////////////////////////// // // // API Error Code Definitions // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_MEM_ALLOC_ERROR 1 #define SNMP_BERAPI_INVALID_LENGTH 10 #define SNMP_BERAPI_INVALID_TAG 11 #define SNMP_BERAPI_OVERFLOW 12 #define SNMP_BERAPI_SHORT_BUFFER 13 #define SNMP_BERAPI_INVALID_OBJELEM 14 #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20 #define SNMP_PDUAPI_INVALID_ES 21 #define SNMP_PDUAPI_INVALID_GT 22 #define SNMP_AUTHAPI_INVALID_VERSION 30 #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31 #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32 /////////////////////////////////////////////////////////////////////////////// // // // Support for old definitions (support disabled via SNMPSTRICT) // // // /////////////////////////////////////////////////////////////////////////////// #ifndef SNMPSTRICT #define SNMP_oidcpy SnmpUtilOidCpy #define SNMP_oidappend SnmpUtilOidAppend #define SNMP_oidncmp SnmpUtilOidNCmp #define SNMP_oidcmp SnmpUtilOidCmp #define SNMP_oidfree SnmpUtilOidFree #define SNMP_CopyVarBindList SnmpUtilVarBindListCpy #define SNMP_FreeVarBindList SnmpUtilVarBindListFree #define SNMP_CopyVarBind SnmpUtilVarBindCpy #define SNMP_FreeVarBind SnmpUtilVarBindFree #define SNMP_printany SnmpUtilPrintAsnAny #define SNMP_free SnmpUtilMemFree #define SNMP_malloc SnmpUtilMemAlloc #define SNMP_realloc SnmpUtilMemReAlloc #define SNMP_DBG_free SnmpUtilMemFree #define SNMP_DBG_malloc SnmpUtilMemAlloc #define SNMP_DBG_realloc SnmpUtilMemReAlloc #define ASN_RFC1155_IPADDRESS ASN_IPADDRESS #define ASN_RFC1155_COUNTER ASN_COUNTER32 #define ASN_RFC1155_GAUGE ASN_GAUGE32 #define ASN_RFC1155_TIMETICKS ASN_TIMETICKS #define ASN_RFC1155_OPAQUE ASN_OPAQUE #define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING #define ASN_RFC1157_GETREQUEST SNMP_PDU_GET #define ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT #define ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE #define ASN_RFC1157_SETREQUEST SNMP_PDU_SET #define ASN_RFC1157_TRAP SNMP_PDU_V1TRAP #define ASN_CONTEXTSPECIFIC ASN_CONTEXT #define ASN_PRIMATIVE ASN_PRIMITIVE #define RFC1157VarBindList SnmpVarBindList #define RFC1157VarBind SnmpVarBind #define AsnInteger AsnInteger32 #define AsnCounter AsnCounter32 #define AsnGauge AsnGauge32 #endif // SNMPSTRICT #ifdef __cplusplus } #endif #endif // _INC_SNMP pwlib_v1_10_2/include/ptlib/wince/stdlibx.h0100644000176200056700000001516110140765236021072 0ustar releasepostincr// // (c) 2000 Yuri Kiryanov, openh323@kiryanov.com // and Yuriy Gorvitovskiy // // Windows CE port of OpenH323 Open Source Project, www.openh323.org // PWLib extras #ifndef __STDLIBX_H__ #define __STDLIBX_H__ #include #ifdef __cplusplus #include #include #include #include #include #include #include #define assert(e) extern "C"{ void __cdecl abort(void); void __cdecl perror(const char *s); }; #define _environ (NULL) inline char *getenv( const char *varname ) { return NULL; }; inline int putenv( const char *envstring ) { return -1; }; #if _WIN32_WCE < 300 inline void* calloc(size_t num, size_t size) { void *ptr = malloc(num*size); if(ptr) memset(ptr, 0, num*size); return ptr; } inline int isprint(int c) { return _istprint(c);} inline int isxdigit(int c) { return _istxdigit(c); } inline int isspace( int c ) { return _istspace(c); } inline int isupper( int c ) { return _istupper(c); } inline int islower( int c ) { return _istlower(c); } inline int isalnum( int c ) { return _istalnum(c); } inline int isalpha( int c ) { return _istalpha(c); } inline int iscntrl( int c ) { return _istcntrl(c); } inline int isdigit( int c ) { return _istdigit(c); } inline int ispunct( int c ) { return _istpunct(c); } #endif int _mkdir(const char *); int _rmdir(const char *); int _access(const char *, int); inline int access(const char * s, int i) { return _access(s,i); } inline int _chdrive(int d) { return 0; } inline int _chdir(const char * s) { return 0; } char * _mktemp (char *temp); int remove(const char *); int _chmod( const char *filename, int pmode ); int rename( const char *oldname, const char *newname ); #define _S_IREAD 0000400 /* read permission, owner */ #define _S_IWRITE 0000200 /* write permission, owner */ #define S_IREAD _S_IREAD #define S_IWRITE _S_IWRITE #define _O_RDONLY 0x0000 /* open for reading only */ #define _O_WRONLY 0x0001 /* open for writing only */ #define _O_RDWR 0x0002 /* open for reading and writing */ #define _O_APPEND 0x0008 /* writes done at eof */ #define _O_CREAT 0x0100 /* create and open file */ #define _O_TRUNC 0x0200 /* open and truncate */ #define _O_EXCL 0x0400 /* open only if file doesn't already exist */ /* O_TEXT files have sequences translated to on read()'s, ** and sequences translated to on write()'s */ #define _O_TEXT 0x4000 /* file mode is text (translated) */ #define _O_BINARY 0x8000 /* file mode is binary (untranslated) */ /* macro to translate the C 2.0 name used to force binary mode for files */ #define _O_RAW _O_BINARY /* Open handle inherit bit */ #define _O_NOINHERIT 0x0080 /* child process doesn't inherit file */ /* Temporary file bit - file is deleted when last handle is closed */ #define _O_TEMPORARY 0x0040 /* temporary file bit */ /* temporary access hint */ #define _O_SHORT_LIVED 0x1000 /* temporary storage file, try not to flush */ /* sequential/random access hints */ #define _O_SEQUENTIAL 0x0020 /* file access is primarily sequential */ #define _O_RANDOM 0x0010 /* file access is primarily random */ #define O_RDONLY _O_RDONLY #define O_WRONLY _O_WRONLY #define O_RDWR _O_RDWR #define O_APPEND _O_APPEND #define O_CREAT _O_CREAT #define O_TRUNC _O_TRUNC #define O_EXCL _O_EXCL #define O_TEXT _O_TEXT #define O_BINARY _O_BINARY #define O_RAW _O_BINARY #define O_TEMPORARY _O_TEMPORARY #define O_NOINHERIT _O_NOINHERIT #define O_SEQUENTIAL _O_SEQUENTIAL #define O_RANDOM _O_RANDOM #define _SH_DENYRW 0x10 /* deny read/write mode */ #define _SH_DENYWR 0x20 /* deny write mode */ #define _SH_DENYRD 0x30 /* deny read mode */ #define _SH_DENYNO 0x40 /* deny none mode */ long _lseek(int, long, int); int _close(int); int _read(int, void *, unsigned int); int _write(int, const void *, unsigned int); int _open( const char *filename, int oflag , int pmode ); int _chsize( int handle, long size ); int _sopen(const char *, int, int, ...); #if _WIN32_WCE < 300 long strtol( const char *nptr, char **endptr, int base ); unsigned long strtoul( const char *nptr, char **endptr, int base ); double strtod( const char *nptr, char **endptr ); #endif char * _i64toa (__int64 val,char *buf,int radix); char * _ui64toa (unsigned __int64 val,char *buf,int radix); #ifndef _X86_ __int64 _atoi64(const char *nptr); #endif #if _WIN32_WCE < 300 const char * strrchr(const char *, int); size_t strspn( const char *string, const char *strCharSet ); #endif int stricmp( const unsigned short*string1, const char* string2 ); int stricmp( const char*string1, const char* string2 ); int strcasecmp( const unsigned short*string1, const char* string2 ); int strcasecmp( const char*string1, const char* string2 ); int strncasecmp( const unsigned short*string1, const char* string2, int n ); int strncasecmp( const char*string1, const char* string2, int n ); LONG RegOpenKeyEx( HKEY hKey, const char* lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ); LONG RegCreateKeyEx( HKEY hKey, const char* lpSub, DWORD dwr, LPSTR lpcls, DWORD dwo, REGSAM sam, LPSECURITY_ATTRIBUTES lpsa, PHKEY phk, LPDWORD lpdw ); LONG RegEnumKey(HKEY hKey, DWORD dwIndex, LPTSTR lpName, DWORD cbName); LONG RegDeleteKey( HKEY hKey, const char* lpSubKey ); LONG RegEnumValueCe( HKEY hKey, DWORD dwIndex, LPTSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); LONG RegQueryValueEx( HKEY hKey, char* lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); LONG RegSetValueEx( HKEY hKey, const char* lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData ); LONG RegDeleteValue( HKEY hKey, const char* lpValueName ); UINT GetWindowsDirectory( char* lpBuffer, UINT uSize ); DWORD GetPrivateProfileString( const char* lpAppName, const char* lpKeyName, const char* lpDefault, char* lpReturned, DWORD nSize, const char* ); BOOL WritePrivateProfileString(const char* lpAppName, const char* lpKeyName, const char* lpString, const char* ); #endif // __cplusplus #ifndef ECONNRESET #define ECONNRESET WSAECONNRESET #endif #ifndef ECONNREFUSED #define ECONNREFUSED WSAECONNREFUSED #endif #ifndef ENETUNREACH #define ENETUNREACH WSAENETUNREACH #endif #ifndef ETIMEDOUT #define ETIMEDOUT WSAETIMEDOUT #endif #ifndef EADDRINUSE #define EADDRINUSE WSAEADDRINUSE #endif #ifndef EADDRNOTAVAIL #define EADDRNOTAVAIL WSAEADDRNOTAVAIL #endif #endifpwlib_v1_10_2/include/ptlib/wince/streamb.h0100644000176200056700000000725507340764160021066 0ustar releasepostincr// // (c) 2000 Yuriy Govitovskiy, // for Openh323, www.Openh323.org // // Windows CE Port // // streamb.h - definitions/declarations for the streambuf class // // [Microsoft] // [AT&T C++] // // [Public] #ifdef __cplusplus #ifndef _INC_STREAMB #define _INC_STREAMB #include // need ios::seek_dir definition #ifndef NULL #define NULL 0 #endif #ifndef EOF #define EOF (-1) #endif typedef long streampos, streamoff; class ios; class streambuf { public: virtual ~streambuf(); inline int in_avail() const; inline int out_waiting() const; int sgetc(); int snextc(); int sbumpc(); void stossc(); inline int sputbackc(char); inline int sputc(int); inline int sputn(const char *,int); inline int sgetn(char *,int); virtual int sync(); virtual streambuf* setbuf(char *, int); virtual streampos seekoff(streamoff,ios::seek_dir,int =ios::in|ios::out); virtual streampos seekpos(streampos,int =ios::in|ios::out); virtual int xsputn(const char *,int); virtual int xsgetn(char *,int); virtual int overflow(int =EOF) = 0; // pure virtual function virtual int underflow() = 0; // pure virtual function virtual int pbackfail(int); void dbp(); void lock() { } void unlock() { } protected: streambuf(); streambuf(char *,int); inline char * base() const; inline char * ebuf() const; inline char * pbase() const; inline char * pptr() const; inline char * epptr() const; inline char * eback() const; inline char * gptr() const; inline char * egptr() const; inline int blen() const; inline void setp(char *,char *); inline void setg(char *,char *,char *); inline void pbump(int); inline void gbump(int); void setb(char *,char *,int =0); inline int unbuffered() const; inline void unbuffered(int); int allocate(); virtual int doallocate(); private: int _fAlloc; int _fUnbuf; int x_lastc; char * _base; char * _ebuf; char * _pbase; char * _pptr; char * _epptr; char * _eback; char * _gptr; char * _egptr; }; inline int streambuf::in_avail() const { return (gptr()<_egptr) ? (_egptr-gptr()) : 0; } inline int streambuf::out_waiting() const { return (_pptr>=_pbase) ? (_pptr-_pbase) : 0; } inline int streambuf::sputbackc(char _c){ return (_eback _base) ? (_ebuf-_base) : 0); } inline char * streambuf::pbase() const { return _pbase; } inline char * streambuf::pptr() const { return _pptr; } inline char * streambuf::epptr() const { return _epptr; } inline char * streambuf::eback() const { return _eback; } inline char * streambuf::gptr() const { return _gptr; } inline char * streambuf::egptr() const { return _egptr; } inline void streambuf::gbump(int _n) { if (_egptr) _gptr += _n; } inline void streambuf::pbump(int _n) { if (_epptr) _pptr += _n; } inline void streambuf::setg(char * _eb, char * _g, char * _eg) {_eback=_eb; _gptr=_g; _egptr=_eg; x_lastc=EOF; } inline void streambuf::setp(char * _p, char * _ep) {_pptr=_pbase=_p; _epptr=_ep; } inline int streambuf::unbuffered() const { return _fUnbuf; } inline void streambuf::unbuffered(int _f) { _fUnbuf = _f; } #endif // _INC_STREAMB #endif /* __cplusplus */ pwlib_v1_10_2/include/ptlib/wince/strings.h0100644000176200056700000000023007233471137021104 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/strstrea.h0100644000176200056700000000022707233471137021270 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/strstream.h0100644000176200056700000000023107233471137021440 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include "strstrea.h" pwlib_v1_10_2/include/ptlib/wince/svcguid.h0100644000176200056700000000023007233471137021057 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/syntax.h0100644000176200056700000000023007233471137020741 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/time.h0100644000176200056700000000267607676673274020412 0ustar releasepostincr// // (c) Yuriy Gorvitovskiy // for Openh323, www.Openh323.org // // Windows CE Port // // Definitions/declarations for time routines // // [Microsoft] // [ANSI/System V] // [Public] // #ifndef _TIME_H #define _TIME_H #define _INC_TIME // for wce.h #include #include #include #ifndef _TM_DEFINED #define _TM_DEFINED struct tm { int tm_sec; /* seconds after the minute - [0,59] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour; /* hours since midnight - [0,23] */ int tm_mday; /* day of the month - [1,31] */ int tm_mon; /* months since January - [0,11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ int tm_isdst; /* daylight savings time flag */ }; #endif // _TM_DEFINED #ifdef __cplusplus extern "C" { #endif #ifndef _CLOCK_T_DEFINED typedef long clock_t; #define _CLOCK_T_DEFINED #endif /* Clock ticks macro - ANSI version */ #define CLOCKS_PER_SEC 1000 /* Function prototypes */ clock_t clock(void); struct tm * gmtime(const time_t* t); struct tm * localtime(const time_t* t); time_t mktime(struct tm* t); time_t time(time_t* t); time_t FileTimeToTime(const FILETIME& FileTime); time_t SystemTimeToTime(const LPSYSTEMTIME pSystemTime); #ifdef __cplusplus } #endif #endif /* _INC_TIME */ pwlib_v1_10_2/include/ptlib/wince/wsipx.h0100644000176200056700000000022707233471137020573 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptlib/wince/wsnwlink.h0100644000176200056700000000022707233471137021275 0ustar releasepostincr// // (c) Yuri Kiryanov, openh323@kiryanov.com // for Openh323, www.Openh323.org // // Windows CE Port // Extra header file // #include pwlib_v1_10_2/include/ptbuildopts.h.in0100644000176200056700000004137010377201107020153 0ustar releasepostincr/* * buildopts.h * * Build options generated by the configure script. * * Portable Windows Library * * Copyright (c) 2003 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ptbuildopts.h.in,v $ * Revision 1.47.2.2 2006/02/23 00:31:03 csoutheren * Backport from head * * Revision 1.47.2.1 2006/02/22 11:53:29 csoutheren * Backports from HEAD * * Revision 1.51 2006/02/23 00:27:19 csoutheren * Fixed incorrectly applied patch * * Revision 1.50 2006/02/22 11:22:34 csoutheren * Applied patch #1408645 * Endianess patch for MacOSX * * Revision 1.47 2005/11/25 00:06:12 csoutheren * Applied patch #1364593 from Hannes Friederich * Also changed so PTimesMutex is no longer descended from PSemaphore on * non-Windows platforms * * Revision 1.46 2005/10/17 01:25:05 csoutheren * Added check for ssl with const argumetns * * Revision 1.45 2005/09/25 10:51:23 dominance * almost complete the mingw support. We'll be there soon. ;) * * Revision 1.44 2005/09/23 15:30:46 dominance * more progress to make mingw compile nicely. Thanks goes to Julien Puydt for pointing out to me how to do it properly. ;) * * Revision 1.43 2005/08/25 00:35:04 dereksmithies * Add linux test to check for the presence of openssl/aes.h which sets P_SSL_AES * * Revision 1.42 2005/08/24 12:48:39 rjongbloed * Added configuration define for AEC encryption * * Revision 1.41 2005/08/04 19:46:51 csoutheren * Applied patch #1240770 * Fixed problem with compilation under Solaris 10 * Thanks to Boris Pavacic * * Revision 1.40 2005/04/27 12:08:11 csoutheren * Added support for res_minit for thread-safe resolver access * Added mutex when res_minit not available * * Revision 1.39 2005/01/26 05:37:39 csoutheren * Added ability to remove config file support * * Revision 1.38 2005/01/03 12:48:41 csoutheren * Added new configure options and ability to disable/enable modules * * Revision 1.37 2004/11/17 12:50:44 csoutheren * Win32 DCOM support, thanks to Simon Horne * * Revision 1.36 2004/11/16 00:24:38 csoutheren * Added Cygwin support * * Revision 1.35 2004/08/24 07:08:13 csoutheren * Added use of recvmsg to determine which interface UDP packets arrive on * * Revision 1.34 2004/06/01 07:42:19 csoutheren * Restored memory allocation checking * Added configure flag to enable, thanks to Derek Smithies * * Revision 1.33 2004/04/28 11:26:42 csoutheren * Hopefully fixed SASL and SASL2 problems * * Revision 1.32 2004/04/21 11:22:48 csoutheren * Modified to work with gcc 3.4.0 * * Revision 1.31 2004/04/18 12:06:06 csoutheren * Added classes for SASL authentication * Thanks to Federico Pinna and Reitek S.p.A. * * Revision 1.30 2004/04/11 07:58:07 csoutheren * Added configure.in check for recursive mutexes, and changed implementation * without recursive mutexes to use PCriticalSection or atomic word structs * * Revision 1.29 2004/04/11 06:15:27 csoutheren * Modified to use Atomic_word if available * * Revision 1.28 2004/04/09 11:54:46 csoutheren * Added configure.in check for STL streams, and tested with gcc 2.95.3, * gcc 3.3.1, and gcc 3.3.3 * * Revision 1.27 2004/04/03 23:53:08 csoutheren * Added various changes to improce compatibility with the Sun Forte compiler * Thanks to Brian Cameron * Added detection of readdir_r version * * Revision 1.26 2004/03/23 04:56:23 csoutheren * Added patches to use XPG6 threading under Linux if available * Thanks to Matthew Hodgson * * Revision 1.25 2004/02/04 02:34:38 csoutheren * Added many new flags to configure to allow disabling of various features * Fixed "swab" detection * Improved detection of long double type * * Revision 1.24 2004/01/30 00:52:58 csoutheren * Moved P_USE_PRAGMA back to the compiler flags as this cannot be * put into a include file due to the way gcc implements vtable closure * * Revision 1.23 2004/01/29 13:43:59 csoutheren * Moved some preprocessor symbols from the command line to include files * Modified to set P_HAS_SEMAPHORES to 0 for Linux kernels >= 2.6 * Applied patches for Solaris thanks to Michal Zygmuntowicz * * Revision 1.22 2004/01/27 10:50:29 csoutheren * Added versio information to ptbuildopts.h * * Revision 1.21 2003/12/02 08:34:44 rogerhardiman * Tidy some comments * * Revision 1.20 2003/11/12 03:29:51 csoutheren * Initial version of plugin code from Snark of GnomeMeeting with changes * by Craig Southeren of Post Increment * * Revision 1.19 2003/11/06 09:13:20 rjongbloed * Improved the Windows configure system to allow multiple defines based on file existence. Needed for SDL support of two different distros. * * Revision 1.18 2003/10/30 11:23:53 rjongbloed * Added direcetory name for Speech API under Windows. * Added automatic inclusion of Winsock2 library. * * Revision 1.17 2003/10/27 03:42:15 csoutheren * Added support for QoS detection * * Revision 1.16 2003/10/23 20:43:38 dereksmithies * Add fix for SDL video on Visual C. Thanks to Walter Whitlock. * * Revision 1.15 2003/10/20 23:13:26 csoutheren * Restored after deletion by Damien * * Revision 1.13 2003/09/17 09:00:59 csoutheren * Moved PSmartPointer and PNotifier into seperate files * Added detection for system regex libraries on all platforms * * Revision 1.12 2003/07/29 11:25:23 csoutheren * Added support for system swab function * * Revision 1.11 2003/06/23 15:17:20 ykiryanov * Modified for WinCE compatibility - Undef'd P_HAS_IPV6 in case of WinCE build * * Revision 1.10 2003/05/22 12:20:16 dsandras * * Define or not TRY_1394AVC/TRY_1394DC after execution of the configure script. * * Revision 1.9 2003/05/17 03:22:47 rjongbloed * Removed need to do strange things with main() function. * * Revision 1.8 2003/05/05 06:25:33 robertj * Corrections to external libraries * * Revision 1.7 2003/04/28 08:32:01 craigs * Added Linux SDL detection * * Revision 1.6 2003/04/28 07:27:38 craigs * Added SDL libs * * Revision 1.5 2003/04/28 07:04:45 craigs * Added SDL detection * * Revision 1.4 2003/04/17 06:14:31 robertj * Changed link of openssl to be static. * * Revision 1.3 2003/04/17 01:22:29 craigs * Fixed problem with OpenLDAP and OpenSSL-0.9.7 * * Revision 1.2 2003/04/16 08:00:19 robertj * Windoes psuedo autoconf support * * Revision 1.1 2003/04/16 07:15:59 craigs * Initial version * */ #ifndef _PT_BUILDOPTS_H #define _PT_BUILDOPTS_H ///////////////////////////////////////////////// // // host type // #undef P_LINUX #undef P_FREEBSD #undef P_OPENBSD #undef P_NETBSD #undef P_SOLARIS #undef P_MACOSX #undef P_CYGWIN #undef P_MINGW #undef P_UNKNOWN_OS ///////////////////////////////////////////////// // // sizeof(int) // #undef SIZEOF_INT ///////////////////////////////////////////////// // // Processor endianess // #if !defined(P_MACOSX) #undef PBYTE_ORDER #else #if defined(__BIG_ENDIAN__) #define PBYTE_ORDER PBIG_ENDIAN #else #define PBYTE_ORDER PLITTLE_ENDIAN #endif #endif ///////////////////////////////////////////////// // // IP v6 Support // #ifndef _WIN32_WCE #undef P_HAS_IPV6 #endif // _WIN32_WCE #if defined(_MSC_VER) && P_HAS_IPV6 #pragma include_alias(, <@IPV6_DIR@/winsock2.h>) #pragma include_alias(, <@IPV6_DIR@/ws2tcpip.h>) #define P_WINSOCK2_LIBRARY "ws2_32.lib" #endif ///////////////////////////////////////////////// // // QoS Support // // #ifndef _WIN32_WCE #undef P_HAS_QOS #endif // _WIN32_WCE #if defined(_MSC_VER) && P_HAS_QOS #pragma include_alias(, <@QOS_DIR@/qossp.h>) #define P_WINSOCK2_LIBRARY "ws2_32.lib" #endif ///////////////////////////////////////////////// // // OpenSSL library for secure sockets layer // #undef P_SSL #undef P_SSL_AES #undef P_SSL_USE_CONST #if defined(_MSC_VER) && P_SSL #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ssl.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/safestack.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/stack.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/crypto.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/opensslv.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/lhash.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/buffer.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/bio.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/pem.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/evp.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/md2.h>) #pragma include_alias(,<@SSL_DIR@/inc32/openssl/opensslconf.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/md5.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/sha.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ripemd.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/des.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/e_os2.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/rc4.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/rc2.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/rc5.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/blowfish.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/cast.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/idea.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/mdc2.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/rsa.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/bn.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/dsa.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/dh.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/objects.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/asn1.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/x509.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/x509_vfy.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/pkcs7.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/pem2.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ssl2.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ssl3.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/tls1.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ssl23.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/err.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/rand.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/symhacks.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/comp.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ossl_typ.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/md4.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/des_old.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ui_compat.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/ui.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/aes.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/obj_mac.h>) #pragma include_alias(, <@SSL_DIR@/inc32/openssl/kssl.h>) #if defined(_MSC_VER) && P_SSL_AES #pragma include_alias(, <@SSL_DIR@/inc32/openssl/aes.h>) #endif #ifdef _DEBUG #define P_SSL_LIBDIR "out32.dbg" #else #define P_SSL_LIBDIR "out32" #endif #define P_SSL_LIB1 "@SSL_DIR@/" P_SSL_LIBDIR "/ssleay32.lib" #define P_SSL_LIB2 "@SSL_DIR@/" P_SSL_LIBDIR "/libeay32.lib" #endif ///////////////////////////////////////////////// // // EXPAT library for XML parsing // #undef P_EXPAT #if defined(_MSC_VER) && P_EXPAT #pragma include_alias(, <@EXPAT_DIR@/lib/expat.h>) #ifdef _DEBUG #define P_EXPAT_LIBDIR "Debug" #else #define P_EXPAT_LIBDIR "Release" #endif #define P_EXPAT_LIBRARY "@EXPAT_DIR@/" P_EXPAT_LIBDIR "/expat.lib" #endif ///////////////////////////////////////////////// // // OpenLDAP // #undef P_LDAP #if defined(_MSC_VER) && P_LDAP #pragma include_alias(, <@LDAP_DIR@/include/ldap.h>) #pragma include_alias(, <@LDAP_DIR@/include/lber.h>) #pragma include_alias(, <@LDAP_DIR@/include/lber_types.h>) #pragma include_alias(, <@LDAP_DIR@/include/ldap_features.h>) #pragma include_alias(, <@LDAP_DIR@/include/ldap_cdefs.h>) #ifdef _DEBUG #define P_LDAP_LIBRARY "@LDAP_DIR@/DLLDebug/openldapd.lib" #else #define P_LDAP_LIBRARY "@LDAP_DIR@/DLLRelease/openldap.lib" #endif #endif ///////////////////////////////////////////////// // // DNS resolver // #undef P_DNS #undef P_HAS_RES_NINIT #if defined(_MSC_VER) && P_DNS #pragma include_alias(, <@DNS_DIR@/Include/windns.h>) #define P_DNS_LIBRARY "@DNS_DIR@/Lib/DnsAPI.Lib" #endif ///////////////////////////////////////////////// // // SAPI speech API (Windows only) // #undef P_SAPI #if defined(_MSC_VER) && P_SAPI #pragma include_alias(, <@SAPI_DIR@/include/sphelper.h>) #pragma include_alias(, <@SAPI_DIR@/include/sapi.h>) #pragma include_alias(, <@SAPI_DIR@/include/sapiddk.h>) #pragma include_alias(, <@SAPI_DIR@/include/SPError.h>) #pragma include_alias(, <@SAPI_DIR@/include/SPDebug.h>) #define P_SAPI_LIBRARY "@SAPI_DIR@/Lib/i386/sapi.lib" #endif ///////////////////////////////////////////////// // // Cyrus SASL // #undef P_SASL #undef P_SASL2 #undef P_HAS_SASL_SASL_H #if defined(_MSC_VER) && (defined(P_SASL) || defined(P_SASL2)) #pragma include_alias(, <@SASL_DIR@/include/sasl.h>) #define P_SASL_LIBRARY "@SASL_DIR@/lib/libsasl.lib" #define P_HAS_SASL_SASL_H 1 #endif ///////////////////////////////////////////////// // // SDL toolkit // #undef P_SDL #if defined(_MSC_VER) && P_SDL #pragma include_alias(, <@SDL_DIR@/include/SDL.h>) #undef P_SDL_LIBDIR #ifndef P_SDL_LIBDIR #ifdef _DEBUG #define P_SDL_LIBDIR "VisualC/SDL/Debug" #else #define P_SDL_LIBDIR "VisualC/SDL/Release" #endif #endif #define P_SDL_LIBRARY "@SDL_DIR@/" P_SDL_LIBDIR "/SDL.lib" #endif ///////////////////////////////////////////////// // // Runtime dynamic link libraries // #undef P_DYNALINK #undef P_HAS_PLUGINS #undef P_DEFAULT_PLUGIN_DIR ///////////////////////////////////////////////// // // Regex library // #undef P_REGEX ///////////////////////////////////////////////// // // various non-core functions // #undef P_TTS #undef P_ASN #undef P_STUN #undef P_PIPECHAN #undef P_DTMF #undef P_WAVFILE #undef P_SOCKS #undef P_FTP #undef P_SNMP #undef P_TELNET #undef P_REMCONN #undef P_SERIAL #undef P_POP3SMTP #undef P_AUDIO #undef P_ALSA #undef P_VIDEO #undef NO_VIDEO_CAPTURE #undef P_VXML #undef P_JABBER #undef P_XMLRPC #undef P_SOAP #undef P_HTTPSVC #undef P_HTTP #undef P_CONFIG_FILE ///////////////////////////////////////////////// // // PThreads and related vars // #undef P_PTHREADS #undef P_HAS_SEMAPHORES #undef P_HAS_NAMED_SEMAPHORES #undef P_PTHREADS_XPG6 #undef P_HAS_SEMAPHORES_XPG6 ///////////////////////////////////////////////// // // DCOM Support (Windows only) // #if defined(_MSC_VER) #define _WIN32_DCOM 1 #define _OLE_LIB "ole32.lib" #endif ///////////////////////////////////////////////// // // various functions // #undef USE_SYSTEM_SWAB #undef PWLIB_MAJOR #undef PWLIB_MINOR #undef PWLIB_BUILD #undef PWLIB_VERSION #undef P_64BIT #undef PHAS_TEMPLATES #undef PNO_LONG_DOUBLE #undef P_HAS_POSIX_READDIR_R #undef P_HAS_STL_STREAMS #undef P_HAS_ATOMIC_INT #undef P_HAS_RECURSIVE_MUTEX #undef P_NEEDS_GNU_CXX_NAMESPACE #undef PMEMORY_CHECK #undef P_HAS_RECVMSG #undef P_HAS_UPAD128_T #endif // _PT_BUILDOPTS_H // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/0040755000176200056700000000000010512262773014175 5ustar releasepostincrpwlib_v1_10_2/src/ptclib/0040755000176200056700000000000010512262773015452 5ustar releasepostincrpwlib_v1_10_2/src/ptclib/asnber.cxx0100644000176200056700000003453407712346131017455 0ustar releasepostincr/* * asnber.cxx * * Abstract Syntax Notation 1 Encoding Rules * * Portable Windows Library * */ /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::NullDecode(PASN_Null & value) { unsigned len; if (!HeaderDecode(value, len)) return FALSE; byteOffset += len; return TRUE; } void PBER_Stream::NullEncode(const PASN_Null & value) { HeaderEncode(value); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::BooleanDecode(PASN_Boolean & value) { unsigned len; if (!HeaderDecode(value, len)) return FALSE; while (len-- > 0) { if (IsAtEnd()) return FALSE; value = (BOOL)ByteDecode(); } return TRUE; } void PBER_Stream::BooleanEncode(const PASN_Boolean & value) { HeaderEncode(value); ByteEncode((BOOL)value); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::IntegerDecode(PASN_Integer & value) { unsigned len; if (!HeaderDecode(value, len) || len == 0 || IsAtEnd()) return FALSE; int accumulator = (char)ByteDecode(); // sign extended first byte while (--len > 0) { if (IsAtEnd()) return FALSE; accumulator = (accumulator << 8) | ByteDecode(); } value = accumulator; return TRUE; } void PBER_Stream::IntegerEncode(const PASN_Integer & value) { HeaderEncode(value); // output the integer bits for (int count = GetIntegerDataLength(value)-1; count >= 0; count--) ByteEncode(value >> (count*8)); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::EnumerationDecode(PASN_Enumeration & value) { unsigned len; if (!HeaderDecode(value, len) || len == 0 || IsAtEnd()) return FALSE; unsigned val = 0; while (len-- > 0) { if (IsAtEnd()) return FALSE; val = (val << 8) | ByteDecode(); } value = val; return TRUE; } void PBER_Stream::EnumerationEncode(const PASN_Enumeration & value) { HeaderEncode(value); // output the integer bits for (int count = GetIntegerDataLength(value)-1; count >= 0; count--) ByteEncode(value >> (count*8)); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::RealDecode(PASN_Real & value) { unsigned len; if (!HeaderDecode(value, len) || len == 0 || IsAtEnd()) return FALSE; PAssertAlways(PUnimplementedFunction); byteOffset += len; return TRUE; } void PBER_Stream::RealEncode(const PASN_Real &) { PAssertAlways(PUnimplementedFunction); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::ObjectIdDecode(PASN_ObjectId & value) { unsigned len; if (!HeaderDecode(value, len)) return FALSE; return value.CommonDecode(*this, len); } void PBER_Stream::ObjectIdEncode(const PASN_ObjectId & value) { HeaderEncode(value); PBYTEArray data; value.CommonEncode(data); BlockEncode(data, data.GetSize()); } /////////////////////////////////////////////////////////////////////// BOOL PASN_BitString::DecodeBER(PBER_Stream & strm, unsigned len) { totalBits = len*8 - strm.ByteDecode(); unsigned nBytes = (totalBits+7)/8; return strm.BlockDecode(bitData.GetPointer(nBytes), nBytes) == nBytes; } void PASN_BitString::EncodeBER(PBER_Stream & strm) const { if (totalBits == 0) strm.ByteEncode(0); else { strm.ByteEncode(8-totalBits%8); strm.BlockEncode(bitData, (totalBits+7)/8); } } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::BitStringDecode(PASN_BitString & value) { unsigned len; if (!HeaderDecode(value, len) || len == 0 || IsAtEnd()) return FALSE; return value.DecodeBER(*this, len); } void PBER_Stream::BitStringEncode(const PASN_BitString & value) { HeaderEncode(value); value.EncodeBER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::OctetStringDecode(PASN_OctetString & value) { unsigned len; if (!HeaderDecode(value, len)) return FALSE; return BlockDecode(value.GetPointer(len), len) == len; } void PBER_Stream::OctetStringEncode(const PASN_OctetString & value) { HeaderEncode(value); BlockEncode(value, value.GetSize()); } /////////////////////////////////////////////////////////////////////// BOOL PASN_ConstrainedString::DecodeBER(PBER_Stream & strm, unsigned len) { return strm.BlockDecode((BYTE *)value.GetPointer(len+1), len) == len; } void PASN_ConstrainedString::EncodeBER(PBER_Stream & strm) const { strm.BlockEncode(value, value.GetSize()-1); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::ConstrainedStringDecode(PASN_ConstrainedString & value) { unsigned len; if (!HeaderDecode(value, len)) return FALSE; return value.DecodeBER(*this, len); } void PBER_Stream::ConstrainedStringEncode(const PASN_ConstrainedString & value) { HeaderEncode(value); value.EncodeBER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_BMPString::DecodeBER(PBER_Stream & strm, unsigned len) { value.SetSize(len/2); return strm.BlockDecode((BYTE *)value.GetPointer(len), len) == len; } void PASN_BMPString::EncodeBER(PBER_Stream & strm) const { strm.BlockEncode((const BYTE *)(const WORD *)value, value.GetSize()*2); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::BMPStringDecode(PASN_BMPString & value) { unsigned len; if (!HeaderDecode(value, len)) return FALSE; return value.DecodeBER(*this, len); } void PBER_Stream::BMPStringEncode(const PASN_BMPString & value) { HeaderEncode(value); value.EncodeBER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::ChoiceDecode(PASN_Choice & value) { PINDEX savedPosition = GetPosition(); unsigned tag; PASN_Object::TagClass tagClass; BOOL primitive; unsigned entryLen; if (!HeaderDecode(tag, tagClass, primitive, entryLen)) return FALSE; SetPosition(savedPosition); value.SetTag(tag, tagClass); if (value.IsValid()) return value.GetObject().Decode(*this); return TRUE; } void PBER_Stream::ChoiceEncode(const PASN_Choice & value) { if (value.IsValid()) value.GetObject().Encode(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_Sequence::PreambleDecodeBER(PBER_Stream & strm) { fields.RemoveAll(); unsigned len; if (!strm.HeaderDecode(*this, len)) return FALSE; endBasicEncoding = strm.GetPosition() + len; return !strm.IsAtEnd(); } void PASN_Sequence::PreambleEncodeBER(PBER_Stream & strm) const { strm.HeaderEncode(*this); } BOOL PASN_Sequence::KnownExtensionDecodeBER(PBER_Stream & strm, PINDEX, PASN_Object & field) { if (strm.GetPosition() >= endBasicEncoding) return FALSE; return field.Decode(strm); } void PASN_Sequence::KnownExtensionEncodeBER(PBER_Stream & strm, PINDEX, const PASN_Object & field) const { field.Encode(strm); } BOOL PASN_Sequence::UnknownExtensionsDecodeBER(PBER_Stream & strm) { while (strm.GetPosition() < endBasicEncoding) { PINDEX savedPosition = strm.GetPosition(); unsigned tag; PASN_Object::TagClass tagClass; BOOL primitive; unsigned entryLen; if (!strm.HeaderDecode(tag, tagClass, primitive, entryLen)) return FALSE; PINDEX nextEntryPosition = strm.GetPosition() + entryLen; strm.SetPosition(savedPosition); PASN_Object * obj = strm.CreateObject(tag, tagClass, primitive); if (obj == NULL) strm.SetPosition(nextEntryPosition); else { if (!obj->Decode(strm)) return FALSE; fields.Append(obj); } } return TRUE; } void PASN_Sequence::UnknownExtensionsEncodeBER(PBER_Stream & strm) const { for (PINDEX i = 0; i < fields.GetSize(); i++) fields[i].Encode(strm); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::SequencePreambleDecode(PASN_Sequence & seq) { return seq.PreambleDecodeBER(*this); } void PBER_Stream::SequencePreambleEncode(const PASN_Sequence & seq) { seq.PreambleEncodeBER(*this); } BOOL PBER_Stream::SequenceKnownDecode(PASN_Sequence & seq, PINDEX fld, PASN_Object & field) { return seq.KnownExtensionDecodeBER(*this, fld, field); } void PBER_Stream::SequenceKnownEncode(const PASN_Sequence & seq, PINDEX fld, const PASN_Object & field) { seq.KnownExtensionEncodeBER(*this, fld, field); } BOOL PBER_Stream::SequenceUnknownDecode(PASN_Sequence & seq) { return seq.UnknownExtensionsDecodeBER(*this); } void PBER_Stream::SequenceUnknownEncode(const PASN_Sequence & seq) { seq.UnknownExtensionsEncodeBER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PBER_Stream::ArrayDecode(PASN_Array & array) { array.RemoveAll(); unsigned len; if (!HeaderDecode(array, len)) return FALSE; PINDEX endOffset = byteOffset + len; PINDEX count = 0; while (byteOffset < endOffset) { if (!array.SetSize(count+1)) return FALSE; if (!array[count].Decode(*this)) return FALSE; count++; } byteOffset = endOffset; return TRUE; } void PBER_Stream::ArrayEncode(const PASN_Array & array) { HeaderEncode(array); for (PINDEX i = 0; i < array.GetSize(); i++) array[i].Encode(*this); } /////////////////////////////////////////////////////////////////////// PBER_Stream::PBER_Stream() { } PBER_Stream::PBER_Stream(const PBYTEArray & bytes) : PASN_Stream(bytes) { } PBER_Stream::PBER_Stream(const BYTE * buf, PINDEX size) : PASN_Stream(buf, size) { } PBER_Stream & PBER_Stream::operator=(const PBYTEArray & bytes) { PBYTEArray::operator=(bytes); ResetDecoder(); return *this; } BOOL PBER_Stream::Read(PChannel & chan) { SetSize(0); PINDEX offset = 0; // read the sequence header int b; if ((b = chan.ReadChar()) < 0) return FALSE; SetAt(offset++, (char)b); // only support direct read of simple sequences if ((b&0x1f) == 0x1f) { do { if ((b = chan.ReadChar()) < 0) return FALSE; SetAt(offset++, (char)b); } while ((b & 0x80) != 0); } // read the first byte of the ASN length if ((b = chan.ReadChar()) < 0) return FALSE; SetAt(offset++, (char)b); // determine how many bytes in the length PINDEX dataLen = 0; if ((b & 0x80) == 0) dataLen = b; else { PINDEX lenLen = b&0x7f; SetSize(lenLen+2); while (lenLen-- > 0) { // read the length if ((b = chan.ReadChar()) < 0) return FALSE; dataLen = (dataLen << 8) | b; SetAt(offset++, (char)b); } } // read the data, all of it BYTE * bufptr = GetPointer(dataLen+offset) + offset; while (dataLen > 0) { if (!chan.Read(bufptr, dataLen)) return FALSE; PINDEX readbytes = chan.GetLastReadCount(); bufptr += readbytes; dataLen -= readbytes; } return TRUE; } BOOL PBER_Stream::Write(PChannel & chan) { CompleteEncoding(); return chan.Write(theArray, GetSize()); } PASN_Object * PBER_Stream::CreateObject(unsigned tag, PASN_Object::TagClass tagClass, BOOL primitive) const { if (tagClass == PASN_Object::UniversalTagClass) { switch (tag) { case PASN_Object::UniversalBoolean : return new PASN_Boolean(); case PASN_Object::UniversalInteger : return new PASN_Integer(); case PASN_Object::UniversalBitString : return new PASN_BitString(); case PASN_Object::UniversalOctetString : return new PASN_OctetString(); case PASN_Object::UniversalNull : return new PASN_Null(); case PASN_Object::UniversalObjectId : return new PASN_ObjectId(); case PASN_Object::UniversalReal : return new PASN_Real(); case PASN_Object::UniversalEnumeration : return new PASN_Enumeration(); case PASN_Object::UniversalSequence : return new PASN_Sequence(); case PASN_Object::UniversalSet : return new PASN_Set(); case PASN_Object::UniversalNumericString : return new PASN_NumericString(); case PASN_Object::UniversalPrintableString : return new PASN_PrintableString(); case PASN_Object::UniversalIA5String : return new PASN_IA5String(); case PASN_Object::UniversalVisibleString : return new PASN_VisibleString(); case PASN_Object::UniversalGeneralString : return new PASN_GeneralString(); case PASN_Object::UniversalBMPString : return new PASN_BMPString(); } } if (primitive) return new PASN_OctetString(tag, tagClass); else return new PASN_Sequence(tag, tagClass, 0, FALSE, 0); } BOOL PBER_Stream::HeaderDecode(unsigned & tagVal, PASN_Object::TagClass & tagClass, BOOL & primitive, unsigned & len) { BYTE ident = ByteDecode(); tagClass = (PASN_Object::TagClass)(ident>>6); primitive = (ident&0x20) == 0; tagVal = ident&31; if (tagVal == 31) { BYTE b; tagVal = 0; do { if (IsAtEnd()) return FALSE; b = ByteDecode(); tagVal = (tagVal << 7) | (b&0x7f); } while ((b&0x80) != 0); } if (IsAtEnd()) return FALSE; BYTE len_len = ByteDecode(); if ((len_len & 0x80) == 0) { len = len_len; return TRUE; } len_len &= 0x7f; len = 0; while (len_len-- > 0) { if (IsAtEnd()) return FALSE; len = (len << 8) | ByteDecode(); } return TRUE; } BOOL PBER_Stream::HeaderDecode(PASN_Object & obj, unsigned & len) { PINDEX pos = byteOffset; unsigned tagVal; PASN_Object::TagClass tagClass; BOOL primitive; if (HeaderDecode(tagVal, tagClass, primitive, len) && tagVal == obj.GetTag() && tagClass == obj.GetTagClass()) return TRUE; byteOffset = pos; return FALSE; } void PBER_Stream::HeaderEncode(const PASN_Object & obj) { BYTE ident = (BYTE)(obj.GetTagClass() << 6); if (!obj.IsPrimitive()) ident |= 0x20; unsigned tag = obj.GetTag(); if (tag < 31) ByteEncode(ident|tag); else { ByteEncode(ident|31); unsigned count = (CountBits(tag)+6)/7; while (count-- > 1) ByteEncode((tag >> (count*7))&0x7f); ByteEncode(tag&0x7f); } PINDEX len = obj.GetDataLength(); if (len < 128) ByteEncode(len); else { PINDEX count = (CountBits(len+1)+7)/8; ByteEncode(count|0x80); while (count-- > 0) ByteEncode(len >> (count*8)); } } /////////////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/asner.cxx0100644000176200056700000020131510343317555017306 0ustar releasepostincr/* * asner.cxx * * Abstract Syntax Notation 1 Encoding Rules * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: asner.cxx,v $ * Revision 1.93 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.92 2005/11/25 01:01:15 csoutheren * Applied patch #1351168 * PWlib various fixes * * Revision 1.91 2005/06/07 06:25:53 csoutheren * Applied patch 1199897 to increase speed of ASN parser debugging output * Thanks to Dmitriy * * Revision 1.90 2004/07/12 03:42:22 csoutheren * Fixed problem with checking character set constraints too aggressively * * Revision 1.89 2004/07/12 01:56:10 csoutheren * Fixed incorrect asn decoding check * * Revision 1.88 2004/07/11 14:19:07 csoutheren * More bulletproofing of ASN routines against random data attacks * * Revision 1.87 2004/07/11 12:33:47 csoutheren * Added guards against illegal PDU values causing crashes * * Revision 1.86 2004/04/22 07:54:01 csoutheren * Fix problem with VS.net asserting on in isprint when chars outside normal range * * Revision 1.85 2004/04/18 04:33:37 rjongbloed * Changed all operators that return BOOL to return standard type bool. This is primarily * for improved compatibility with std STL usage removing many warnings. * * Revision 1.84 2004/04/03 08:22:20 csoutheren * Remove pseudo-RTTI and replaced with real RTTI * * Revision 1.83 2004/01/17 09:21:21 csoutheren * Added protection against NULL ptr to PASN_Stream::BlockDecode * * Revision 1.82 2003/08/01 02:11:38 csoutheren * Changed to allow easy isolation of PER, BER and XER encoding/decoding routines * * Revision 1.81 2003/04/28 02:50:33 robertj * Fixed problem with spaces in type name, thanks Federico Pinna * * Revision 1.80 2003/02/26 04:37:21 robertj * Tidied some comments * * Revision 1.79 2003/02/26 01:57:44 robertj * Added XML encoding rules to ASN system, thanks Federico Pinna * * Revision 1.78 2003/01/24 23:43:43 robertj * Fixed subtle problems with the use of MAX keyword for unsigned numbers, * should beUINT_MAX not INT_MAX, thanks Stevie Gray for pointing it out. * * Revision 1.77 2002/12/17 07:00:15 robertj * Fixed incorrect encoding of arrays greater than 8192 and less than 16384 * * Revision 1.76 2002/12/13 03:57:17 robertj * Fixed crash if enable extension fields beyond the "known" extensions. * * Revision 1.75 2002/12/02 01:03:33 robertj * Fixed bug were if setting the size of a constrained bit string, it * actually sets the size of the underlying byte array correctly. * * Revision 1.74 2002/11/26 23:29:32 robertj * Added missing const to DecodeSubType() function. * * Revision 1.73 2002/11/22 09:43:32 robertj * Fixed encoding of a ASN NULL sequence extension field, eg fastConnectRefused * * Revision 1.72 2002/11/21 03:46:22 robertj * Changed to encode only the minimum number of bits required, this improves * compatibility with some brain dead ASN decoders. * * Revision 1.71 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.70 2002/10/31 05:51:10 robertj * Changed to use new UTF-8/UCS-2 conversion functions on PString. * * Revision 1.69 2002/10/29 08:12:44 robertj * Fixed MSVC warnings. * * Revision 1.68 2002/10/29 07:26:45 robertj * Fixed subtle bug when encoding or decoding Octet String with 1 or 2 bytes * in it, was not byte aligned correctly. * * Revision 1.67 2002/09/26 23:53:20 robertj * Fixed incorrect asserts in PASN_Enumerated, thanks Platzer Wolfgang * * Revision 1.66 2002/09/13 08:16:15 robertj * Fixed missing line feed when dumping hex octet strings. * * Revision 1.65 2002/08/06 02:27:58 robertj * GNU C++ v3 compatibility. * * Revision 1.64 2002/07/25 10:52:49 robertj * Changes to allow more granularity in PDU dumps, hex output increasing * with increasing trace level. * * Revision 1.63 2002/06/05 12:29:15 craigs * Changes for gcc 3.1 * * Revision 1.62 2002/05/29 01:22:35 robertj * Added ability to set object id from unsigned integer arrays. * * Revision 1.61 2002/05/21 04:23:40 robertj * Fixed problem with ASN encoding/decoding unsconstrained negative numbers, * * Revision 1.60 2002/05/14 08:34:29 robertj * Fixed problem encoding unsigned where value==lower bound, thanks Greg Adams. * * Revision 1.59 2002/05/14 06:59:50 robertj * Added more bullet proofing so a malformed PDU cannot cause teh decoder * to try and allocate huge arrays and consume all CPU and memory on a * system. A configurable limit of 100 is set for things like SEQUENCE OF. * * Revision 1.58 2002/02/08 12:47:19 robertj * Fixed incorrect encoding of integer, did not allow for sign bit, thanks Kevin Tran. * * Revision 1.57 2002/02/01 01:17:36 robertj * Fixed bug in encoding empty strings (H.450 issue), thanks Frans Dams, Frank Derks et al. * * Revision 1.56 2002/01/30 08:40:55 robertj * Fixed incorrect decode function in BER string decode, thanks ct_dev@sohu.com * * Revision 1.55 2001/12/13 09:13:57 robertj * Added function get get oid as a string. * * Revision 1.54 2001/11/26 03:07:13 robertj * Fixed decode of extendable constrained integer types. * * Revision 1.53 2001/09/14 05:26:11 robertj * Fixed problem with assigning a PASN_Choice to itself, thanks Chih-Wei Huang * * Revision 1.52 2001/09/14 01:59:59 robertj * Fixed problem with incorrectly initialised PASN_Choice sub-object. * * Revision 1.51 2001/08/08 04:19:28 robertj * Fixed PString<->BMPString conversion so can have embedded nulls. * * Revision 1.50 2001/08/07 04:37:03 robertj * Simplified &#num; parsing. * * Revision 1.49 2001/08/07 02:49:05 robertj * Fixed incorrect alignment if constrained string upper bound is exactly * 16 bits long. thanks Guntram Diehl & Thomas Arimont. * * Revision 1.48 2001/08/06 09:35:25 robertj * Fixed GNU compatibility. * * Revision 1.47 2001/08/06 09:31:48 robertj * Added conversion of BMPString to PString without losing special characters. * * Revision 1.46 2001/08/06 01:39:02 robertj * Added assignement operator with RHS of PASN_BMPString to classes * descended from PASN_BMPString. * * Revision 1.45 2001/06/14 02:14:12 robertj * Added functions to encode and decode another ASN type that is inside * an octet string, useful for ANY or EXTERNAL types etc. * * Revision 1.44 2001/05/29 00:59:16 robertj * Fixed excessive padding on constrained strings. * * Revision 1.43 2001/05/22 23:37:42 robertj * Fixed problem with assigning a constrained string value to itself, which * can occur when changing constraints. * * Revision 1.42 2001/04/30 10:47:33 robertj * Fixed stupid error in last patch. * * Revision 1.41 2001/04/30 06:47:04 robertj * Fixed problem with en/decoding more than 16 extension fields in a sequence. * * Revision 1.40 2001/04/26 08:15:58 robertj * Fixed problem with ASN compile of single constraints on enumerations. * * Revision 1.39 2001/04/23 05:46:06 robertj * Fixed problem with unconstrained PASN_NumericString coding in 8 bits * instead of 4, thanks Chew Kuan. * * Revision 1.38 2001/04/23 04:40:14 robertj * Added ASN standard types GeneralizedTime and UTCTime * * Revision 1.37 2001/04/12 03:26:59 robertj * Fixed PASN_Boolean cosntructor to be compatible with usage in ASN parser. * Changed all PASN_xxx types so constructor can take real type as only * parameter. eg PASN_OctetString s = "fred"; * Changed block encode/decode so does not do a ByteAlign() if zero * length, required for interoperability even though spec implies otherwise.. * * Revision 1.36 2001/01/24 04:37:07 robertj * Added more bulletproofing to ASN structures to obey constraints. * * Revision 1.35 2001/01/03 01:20:13 robertj * Fixed error in BlockEncode, should ByteAlign() even on zero length strings. * * Revision 1.34 2000/10/26 11:09:16 robertj * More bullet proofing of PER decoder, changed bit type to be unsigned. * * Revision 1.33 2000/10/26 01:29:32 robertj * Fixed MSVC warning. * * Revision 1.32 2000/10/25 04:05:38 robertj * More bullet proofing of PER decoder. * * Revision 1.31 2000/09/29 04:11:51 robertj * Fixed possible out of range memory access, thanks Petr Parzek * * Revision 1.30 2000/02/29 06:32:12 robertj * Added ability to remove optional field in sequence, thanks Dave Harvey. * * Revision 1.29 2000/01/20 06:22:22 robertj * Fixed boundary condition error for constrained integer encoding (values 1, 256 etc) * * Revision 1.28 1999/11/22 23:15:43 robertj * Fixed bug in PASN_Choice::Compare(), should make sure choices are the same before comparing. * * Revision 1.27 1999/08/19 15:43:07 robertj * Fixed incorrect size of OID if zero length encoded. * * Revision 1.26 1999/08/09 13:02:45 robertj * dded ASN compiler #defines for backward support of pre GCC 2.9 compilers. * Added ASN compiler #defines to reduce its memory footprint. * * Revision 1.25 1999/08/08 15:45:59 robertj * Fixed incorrect encoding of unknown extensions. * * Revision 1.24 1999/08/05 00:44:28 robertj * Fixed PER encoding problems for large integer values. * * Revision 1.23 1999/07/22 06:48:54 robertj * Added comparison operation to base ASN classes and compiled ASN code. * Added support for ANY type in ASN parser. * * Revision 1.22 1999/07/08 08:39:12 robertj * Fixed bug when assigning negative number ot cosntrained PASN_Integer * * Revision 1.21 1999/06/30 08:58:12 robertj * Fixed bug in encoding/decoding OID greater than 2.39 * * Revision 1.20 1999/06/17 13:27:09 robertj * Fixed bug causing crashes on pass through of unknown extensions. * * Revision 1.19 1999/06/07 00:31:25 robertj * Fixed signed/unsigned problem with number of unknown extensions check. * * Revision 1.18 1999/04/26 05:58:48 craigs * Fixed problems with encoding of extensions * * Revision 1.17 1999/03/09 08:12:38 robertj * Fixed problem with closing a steam encoding twice. * * Revision 1.16 1999/01/16 01:28:25 robertj * Fixed problems with reading stream multiple times. * * Revision 1.15 1998/11/30 04:50:44 robertj * New directory structure * * Revision 1.14 1998/10/22 04:33:11 robertj * Fixed bug in constrained strings and PER, incorrect order of character set. * * Revision 1.13 1998/09/23 06:21:49 robertj * Added open source copyright license. * * Revision 1.12 1998/05/26 05:29:23 robertj * Workaroung for g++ iostream bug. * * Revision 1.11 1998/05/21 04:58:54 robertj * GCC comptaibility. * * Revision 1.10 1998/05/21 04:26:54 robertj * Fixed numerous PER problems. * * Revision 1.9 1998/05/11 06:01:55 robertj * Why did this compile under MSC? * * Revision 1.8 1998/05/07 05:19:29 robertj * Fixed problems with using copy constructor/assignment oeprator on PASN_Objects. * * Revision 1.7 1998/03/05 12:49:50 robertj * MemCheck fixes. * * Revision 1.6 1998/02/03 06:28:27 robertj * Fixed length calculation of integers in BER. * Added new function to read a block with minimum number of bytes. * * Revision 1.5 1998/01/26 01:51:20 robertj * Removed uninitialised variable warnings. * * Revision 1.4 1997/12/18 05:07:56 robertj * Fixed bug in choice name display. * Added function to get choice discriminator name. * Fixed bug in encoding extensions. * * Revision 1.3 1997/12/11 10:36:22 robertj * Support for new ASN parser. * */ #include #ifdef __GNUC__ #pragma implementation "asner.h" #endif #include #if P_EXPAT #include #endif #define new PNEW static PINDEX MaximumArraySize = 128; static PINDEX MaximumStringSize = 16*1024; static PINDEX MaximumSetSize = 512; static PINDEX CountBits(unsigned range) { switch (range) { case 0 : return sizeof(unsigned)*8; case 1: return 1; } size_t nBits = 0; while (nBits < (sizeof(unsigned)*8) && range > (unsigned)(1 << nBits)) nBits++; return nBits; } inline BOOL CheckByteOffset(PINDEX offset, PINDEX upper = MaximumStringSize) { // a 1mbit PDU has got to be an error return (0 <= offset && offset <= upper); } static PINDEX FindNameByValue(const PASN_Names *names, unsigned namesCount, PINDEX value) { if (names != NULL) { for (unsigned int i = 0;i < namesCount;i++) { if (names[i].value == value) return i; } } return P_MAX_INDEX; } /////////////////////////////////////////////////////////////////////// PASN_Object::PASN_Object(unsigned theTag, TagClass theTagClass, BOOL extend) { extendable = extend; tag = theTag; if (theTagClass != DefaultTagClass) tagClass = theTagClass; else tagClass = ContextSpecificTagClass; } void PASN_Object::SetTag(unsigned newTag, TagClass tagClass_) { tag = newTag; if (tagClass_ != DefaultTagClass) tagClass = tagClass_; } PINDEX PASN_Object::GetObjectLength() const { PINDEX len = 1; if (tag >= 31) len += (CountBits(tag)+6)/7; PINDEX dataLen = GetDataLength(); if (dataLen < 128) len++; else len += (CountBits(dataLen)+7)/8 + 1; return len + dataLen; } void PASN_Object::SetConstraintBounds(ConstraintType, int, unsigned) { } void PASN_Object::SetCharacterSet(ConstraintType, const char *) { } void PASN_Object::SetCharacterSet(ConstraintType, unsigned, unsigned) { } PINDEX PASN_Object::GetMaximumArraySize() { return MaximumArraySize; } void PASN_Object::SetMaximumArraySize(PINDEX sz) { MaximumArraySize = sz; } PINDEX PASN_Object::GetMaximumStringSize() { return MaximumStringSize; } void PASN_Object::SetMaximumStringSize(PINDEX sz) { MaximumStringSize = sz; } /////////////////////////////////////////////////////////////////////// PASN_ConstrainedObject::PASN_ConstrainedObject(unsigned tag, TagClass tagClass) : PASN_Object(tag, tagClass) { constraint = Unconstrained; lowerLimit = 0; upperLimit = UINT_MAX; } void PASN_ConstrainedObject::SetConstraintBounds(ConstraintType ctype, int lower, unsigned upper) { constraint = ctype; if (constraint == Unconstrained) { lower = 0; upper = UINT_MAX; } extendable = ctype == ExtendableConstraint; // if ((lower >= 0 && upper < 0x7fffffff) || // (lower < 0 && (unsigned)lower <= upper)) { lowerLimit = lower; upperLimit = upper; // } } /////////////////////////////////////////////////////////////////////// PASN_Null::PASN_Null(unsigned tag, TagClass tagClass) : PASN_Object(tag, tagClass) { } PObject::Comparison PASN_Null::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Null), PInvalidCast); return EqualTo; } PObject * PASN_Null::Clone() const { PAssert(IsClass(PASN_Null::Class()), PInvalidCast); return new PASN_Null(*this); } void PASN_Null::PrintOn(ostream & strm) const { strm << "<>"; } PString PASN_Null::GetTypeAsString() const { return "Null"; } PINDEX PASN_Null::GetDataLength() const { return 0; } BOOL PASN_Null::Decode(PASN_Stream & strm) { return strm.NullDecode(*this); } void PASN_Null::Encode(PASN_Stream & strm) const { strm.NullEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_Boolean::PASN_Boolean(BOOL val) : PASN_Object(UniversalBoolean, UniversalTagClass) { value = val; } PASN_Boolean::PASN_Boolean(unsigned tag, TagClass tagClass, BOOL val) : PASN_Object(tag, tagClass) { value = val; } PObject::Comparison PASN_Boolean::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Boolean), PInvalidCast); return value == ((const PASN_Boolean &)obj).value ? EqualTo : GreaterThan; } PObject * PASN_Boolean::Clone() const { PAssert(IsClass(PASN_Boolean::Class()), PInvalidCast); return new PASN_Boolean(*this); } void PASN_Boolean::PrintOn(ostream & strm) const { if (value) strm << "TRUE"; else strm << "FALSE"; } PString PASN_Boolean::GetTypeAsString() const { return "Boolean"; } PINDEX PASN_Boolean::GetDataLength() const { return 1; } BOOL PASN_Boolean::Decode(PASN_Stream & strm) { return strm.BooleanDecode(*this); } void PASN_Boolean::Encode(PASN_Stream & strm) const { strm.BooleanEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_Integer::PASN_Integer(unsigned val) : PASN_ConstrainedObject(UniversalInteger, UniversalTagClass) { value = val; } PASN_Integer::PASN_Integer(unsigned tag, TagClass tagClass, unsigned val) : PASN_ConstrainedObject(tag, tagClass) { value = val; } BOOL PASN_Integer::IsUnsigned() const { return constraint != Unconstrained && lowerLimit >= 0; } PASN_Integer & PASN_Integer::operator=(unsigned val) { if (constraint == Unconstrained) value = val; else if (lowerLimit >= 0) { // Is unsigned integer if (val < (unsigned)lowerLimit) value = lowerLimit; else if (val > upperLimit) value = upperLimit; else value = val; } else { int ival = (int)val; if (ival < lowerLimit) value = lowerLimit; else if (upperLimit < INT_MAX && ival > (int)upperLimit) value = upperLimit; else value = val; } return *this; } PObject::Comparison PASN_Integer::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Integer), PInvalidCast); const PASN_Integer & other = (const PASN_Integer &)obj; if (IsUnsigned()) { if (value < other.value) return LessThan; if (value > other.value) return GreaterThan; } else { if ((int)value < (int)other.value) return LessThan; if ((int)value > (int)other.value) return GreaterThan; } return EqualTo; } PObject * PASN_Integer::Clone() const { PAssert(IsClass(PASN_Integer::Class()), PInvalidCast); return new PASN_Integer(*this); } void PASN_Integer::PrintOn(ostream & strm) const { if (constraint == Unconstrained || lowerLimit < 0) strm << (int)value; else strm << value; } void PASN_Integer::SetConstraintBounds(ConstraintType type, int lower, unsigned upper) { PASN_ConstrainedObject::SetConstraintBounds(type, lower, upper); operator=(value); } PString PASN_Integer::GetTypeAsString() const { return "Integer"; } static PINDEX GetIntegerDataLength(int value) { // create a mask which is the top nine bits of a DWORD, or 0xFF800000 // on a big endian machine int shift = (sizeof(value)-1)*8-1; // remove all sequences of nine 0's or 1's at the start of the value while (shift > 0 && ((value >> shift)&0x1ff) == (value < 0 ? 0x1ff : 0)) shift -= 8; return (shift+9)/8; } PINDEX PASN_Integer::GetDataLength() const { return GetIntegerDataLength(value); } BOOL PASN_Integer::Decode(PASN_Stream & strm) { return strm.IntegerDecode(*this); } void PASN_Integer::Encode(PASN_Stream & strm) const { strm.IntegerEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_Enumeration::PASN_Enumeration(unsigned val) : PASN_Object(UniversalEnumeration, UniversalTagClass, FALSE),names(NULL),namesCount(0) { value = val; maxEnumValue = P_MAX_INDEX; } PASN_Enumeration::PASN_Enumeration(unsigned tag, TagClass tagClass, unsigned maxEnum, BOOL extend, unsigned val) : PASN_Object(tag, tagClass, extend),names(NULL),namesCount(0) { value = val; maxEnumValue = maxEnum; } PASN_Enumeration::PASN_Enumeration(unsigned tag, TagClass tagClass, unsigned maxEnum, BOOL extend, const PASN_Names * nameSpec, unsigned namesCnt, unsigned val) : PASN_Object(tag, tagClass, extend), names(nameSpec),namesCount(namesCnt) { maxEnumValue = maxEnum; PAssert(val <= maxEnum, PInvalidParameter); value = val; } PObject::Comparison PASN_Enumeration::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Enumeration), PInvalidCast); const PASN_Enumeration & other = (const PASN_Enumeration &)obj; if (value < other.value) return LessThan; if (value > other.value) return GreaterThan; return EqualTo; } PObject * PASN_Enumeration::Clone() const { PAssert(IsClass(PASN_Enumeration::Class()), PInvalidCast); return new PASN_Enumeration(*this); } void PASN_Enumeration::PrintOn(ostream & strm) const { PINDEX idx = FindNameByValue(names, namesCount, value); if (idx != P_MAX_INDEX) strm << names[idx].name; else strm << '<' << value << '>'; } PString PASN_Enumeration::GetTypeAsString() const { return "Enumeration"; } PINDEX PASN_Enumeration::GetDataLength() const { return GetIntegerDataLength(value); } BOOL PASN_Enumeration::Decode(PASN_Stream & strm) { return strm.EnumerationDecode(*this); } void PASN_Enumeration::Encode(PASN_Stream & strm) const { strm.EnumerationEncode(*this); } PINDEX PASN_Enumeration::GetValueByName(PString name) const { for(unsigned uiIndex = 0; uiIndex < namesCount; uiIndex++){ if(strcmp(names[uiIndex].name, name) == 0){ return (maxEnumValue - namesCount + uiIndex + 1); } } return UINT_MAX; } /////////////////////////////////////////////////////////////////////// PASN_Real::PASN_Real(double val) : PASN_Object(UniversalReal, UniversalTagClass) { value = val; } PASN_Real::PASN_Real(unsigned tag, TagClass tagClass, double val) : PASN_Object(tag, tagClass) { value = val; } PObject::Comparison PASN_Real::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Real), PInvalidCast); const PASN_Real & other = (const PASN_Real &)obj; if (value < other.value) return LessThan; if (value > other.value) return GreaterThan; return EqualTo; } PObject * PASN_Real::Clone() const { PAssert(IsClass(PASN_Real::Class()), PInvalidCast); return new PASN_Real(*this); } void PASN_Real::PrintOn(ostream & strm) const { strm << value; } PString PASN_Real::GetTypeAsString() const { return "Real"; } PINDEX PASN_Real::GetDataLength() const { PAssertAlways(PUnimplementedFunction); return 0; } BOOL PASN_Real::Decode(PASN_Stream & strm) { return strm.RealDecode(*this); } void PASN_Real::Encode(PASN_Stream & strm) const { strm.RealEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_ObjectId::PASN_ObjectId(const char * dotstr) : PASN_Object(UniversalObjectId, UniversalTagClass) { if (dotstr != NULL) SetValue(dotstr); } PASN_ObjectId::PASN_ObjectId(unsigned tag, TagClass tagClass) : PASN_Object(tag, tagClass) { } PASN_ObjectId::PASN_ObjectId(const PASN_ObjectId & other) : PASN_Object(other), value(other.value, other.GetSize()) { } PASN_ObjectId & PASN_ObjectId::operator=(const PASN_ObjectId & other) { PASN_Object::operator=(other); value = PUnsignedArray(other.value, other.GetSize()); return *this; } PASN_ObjectId & PASN_ObjectId::operator=(const char * dotstr) { if (dotstr != NULL) SetValue(dotstr); else value.SetSize(0); return *this; } PASN_ObjectId & PASN_ObjectId::operator=(const PString & dotstr) { SetValue(dotstr); return *this; } PASN_ObjectId & PASN_ObjectId::operator=(const PUnsignedArray & numbers) { SetValue(numbers); return *this; } void PASN_ObjectId::SetValue(const PString & dotstr) { PStringArray parts = dotstr.Tokenise('.'); value.SetSize(parts.GetSize()); for (PINDEX i = 0; i < parts.GetSize(); i++) value[i] = parts[i].AsUnsigned(); } void PASN_ObjectId::SetValue(const unsigned * numbers, PINDEX size) { value = PUnsignedArray(numbers, size); } bool PASN_ObjectId::operator==(const char * dotstr) const { PASN_ObjectId id; id.SetValue(dotstr); return *this == id; } PObject::Comparison PASN_ObjectId::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_ObjectId), PInvalidCast); const PASN_ObjectId & other = (const PASN_ObjectId &)obj; return value.Compare(other.value); } PObject * PASN_ObjectId::Clone() const { PAssert(IsClass(PASN_ObjectId::Class()), PInvalidCast); return new PASN_ObjectId(*this); } void PASN_ObjectId::PrintOn(ostream & strm) const { for (PINDEX i = 0; i < value.GetSize(); i++) { strm << (unsigned)value[i]; if (i < value.GetSize()-1) strm << '.'; } } PString PASN_ObjectId::AsString() const { PStringStream s; PrintOn(s); return s; } PString PASN_ObjectId::GetTypeAsString() const { return "Object ID"; } BOOL PASN_ObjectId::CommonDecode(PASN_Stream & strm, unsigned dataLen) { value.SetSize(0); // handle zero length strings correctly if (dataLen == 0) return TRUE; unsigned subId; // start at the second identifier in the buffer, because we will later // expand the first number into the first two IDs PINDEX i = 1; while (dataLen > 0) { unsigned byte; subId = 0; do { /* shift and add in low order 7 bits */ if (strm.IsAtEnd()) return FALSE; byte = strm.ByteDecode(); subId = (subId << 7) + (byte & 0x7f); dataLen--; } while ((byte & 0x80) != 0); value.SetAt(i++, subId); } /* * The first two subidentifiers are encoded into the first component * with the value (X * 40) + Y, where: * X is the value of the first subidentifier. * Y is the value of the second subidentifier. */ subId = value[1]; if (subId < 40) { value[0] = 0; value[1] = subId; } else if (subId < 80) { value[0] = 1; value[1] = subId-40; } else { value[0] = 2; value[1] = subId-80; } return TRUE; } void PASN_ObjectId::CommonEncode(PBYTEArray & encodecObjectId) const { PINDEX length = value.GetSize(); const unsigned * objId = value; if (length < 2) { // Thise case is really illegal, but we have to do SOMETHING encodecObjectId.SetSize(0); return; } unsigned subId = (objId[0] * 40) + objId[1]; objId += 2; PINDEX outputPosition = 0; while (--length > 0) { if (subId < 128) encodecObjectId[outputPosition++] = (BYTE)subId; else { unsigned mask = 0x7F; /* handle subid == 0 case */ int bits = 0; /* testmask *MUST* !!!! be of an unsigned type */ unsigned testmask = 0x7F; int testbits = 0; while (testmask != 0) { if (subId & testmask) { /* if any bits set */ mask = testmask; bits = testbits; } testmask <<= 7; testbits += 7; } /* mask can't be zero here */ while (mask != 0x7F) { /* fix a mask that got truncated above */ if (mask == 0x1E00000) mask = 0xFE00000; encodecObjectId[outputPosition++] = (BYTE)(((subId & mask) >> bits) | 0x80); mask >>= 7; bits -= 7; } encodecObjectId[outputPosition++] = (BYTE)(subId & mask); } if (length > 1) subId = *objId++; } } PINDEX PASN_ObjectId::GetDataLength() const { PBYTEArray dummy; CommonEncode(dummy); return dummy.GetSize(); } BOOL PASN_ObjectId::Decode(PASN_Stream & strm) { return strm.ObjectIdDecode(*this); } void PASN_ObjectId::Encode(PASN_Stream & strm) const { strm.ObjectIdEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_BitString::PASN_BitString(unsigned nBits, const BYTE * buf) : PASN_ConstrainedObject(UniversalBitString, UniversalTagClass), totalBits(nBits), bitData((totalBits+7)/8) { if (buf != NULL) memcpy(bitData.GetPointer(), buf, bitData.GetSize()); } PASN_BitString::PASN_BitString(unsigned tag, TagClass tagClass, unsigned nBits) : PASN_ConstrainedObject(tag, tagClass), totalBits(nBits), bitData((totalBits+7)/8) { } PASN_BitString::PASN_BitString(const PASN_BitString & other) : PASN_ConstrainedObject(other), bitData(other.bitData, other.bitData.GetSize()) { totalBits = other.totalBits; } PASN_BitString & PASN_BitString::operator=(const PASN_BitString & other) { PASN_ConstrainedObject::operator=(other); totalBits = other.totalBits; bitData = PBYTEArray(other.bitData, other.bitData.GetSize()); return *this; } void PASN_BitString::SetData(unsigned nBits, const PBYTEArray & bytes) { if ((PINDEX)nBits >= MaximumStringSize) return; bitData = bytes; SetSize(nBits); } void PASN_BitString::SetData(unsigned nBits, const BYTE * buf, PINDEX size) { if ((PINDEX)nBits >= MaximumStringSize) return; if (size == 0) size = (nBits+7)/8; memcpy(bitData.GetPointer(size), buf, size); SetSize(nBits); } BOOL PASN_BitString::SetSize(unsigned nBits) { if (!CheckByteOffset(nBits)) return FALSE; if (constraint == Unconstrained) totalBits = nBits; else if (totalBits < (unsigned)lowerLimit) { if (lowerLimit < 0) return FALSE; totalBits = lowerLimit; } else if ((unsigned)totalBits > upperLimit) { if (upperLimit > (unsigned)MaximumSetSize) return FALSE; totalBits = upperLimit; } else totalBits = nBits; return bitData.SetSize((totalBits+7)/8); } bool PASN_BitString::operator[](PINDEX bit) const { if ((unsigned)bit < totalBits) return (bitData[bit>>3] & (1 << (7 - (bit&7)))) != 0; return FALSE; } void PASN_BitString::Set(unsigned bit) { if (bit < totalBits) bitData[(PINDEX)(bit>>3)] |= 1 << (7 - (bit&7)); } void PASN_BitString::Clear(unsigned bit) { if (bit < totalBits) bitData[(PINDEX)(bit>>3)] &= ~(1 << (7 - (bit&7))); } void PASN_BitString::Invert(unsigned bit) { if (bit < totalBits) bitData[(PINDEX)(bit>>3)] ^= 1 << (7 - (bit&7)); } PObject::Comparison PASN_BitString::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_BitString), PInvalidCast); const PASN_BitString & other = (const PASN_BitString &)obj; if (totalBits < other.totalBits) return LessThan; if (totalBits > other.totalBits) return GreaterThan; return bitData.Compare(other.bitData); } PObject * PASN_BitString::Clone() const { PAssert(IsClass(PASN_BitString::Class()), PInvalidCast); return new PASN_BitString(*this); } void PASN_BitString::PrintOn(ostream & strm) const { int indent = strm.precision() + 2; _Ios_Fmtflags flags = strm.flags(); if (totalBits > 128) strm << "Hex {\n" << hex << setfill('0') << resetiosflags(ios::floatfield) << setiosflags(ios::fixed) << setw(16) << setprecision(indent) << bitData << dec << setfill(' ') << resetiosflags(ios::floatfield) << setw(indent-1) << "}"; else if (totalBits > 32) strm << "Hex:" << hex << setfill('0') << resetiosflags(ios::floatfield) << setiosflags(ios::fixed) << setprecision(2) << setw(16) << bitData << dec << setfill(' ') << resetiosflags(ios::floatfield); else { BYTE mask = 0x80; PINDEX offset = 0; for (unsigned i = 0; i < totalBits; i++) { strm << ((bitData[offset]&mask) != 0 ? '1' : '0'); mask >>= 1; if (mask == 0) { mask = 0x80; offset++; } } } strm.flags(flags); } void PASN_BitString::SetConstraintBounds(ConstraintType type, int lower, unsigned upper) { if (lower < 0) return; PASN_ConstrainedObject::SetConstraintBounds(type, lower, upper); SetSize(GetSize()); } PString PASN_BitString::GetTypeAsString() const { return "Bit String"; } PINDEX PASN_BitString::GetDataLength() const { return (totalBits+7)/8 + 1; } BOOL PASN_BitString::Decode(PASN_Stream & strm) { return strm.BitStringDecode(*this); } void PASN_BitString::Encode(PASN_Stream & strm) const { strm.BitStringEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_OctetString::PASN_OctetString(const char * str, PINDEX size) : PASN_ConstrainedObject(UniversalOctetString, UniversalTagClass) { if (str != NULL) { if (size == 0) size = ::strlen(str); SetValue((const BYTE *)str, size); } } PASN_OctetString::PASN_OctetString(unsigned tag, TagClass tagClass) : PASN_ConstrainedObject(tag, tagClass) { } PASN_OctetString::PASN_OctetString(const PASN_OctetString & other) : PASN_ConstrainedObject(other), value(other.value, other.GetSize()) { } PASN_OctetString & PASN_OctetString::operator=(const PASN_OctetString & other) { PASN_ConstrainedObject::operator=(other); value = PBYTEArray(other.value, other.GetSize()); return *this; } PASN_OctetString & PASN_OctetString::operator=(const char * str) { if (str == NULL) value.SetSize(lowerLimit); else SetValue((const BYTE *)str, strlen(str)); return *this; } PASN_OctetString & PASN_OctetString::operator=(const PString & str) { SetValue((const BYTE *)(const char *)str, str.GetSize()-1); return *this; } PASN_OctetString & PASN_OctetString::operator=(const PBYTEArray & arr) { PINDEX len = arr.GetSize(); if ((unsigned)len > upperLimit || (int)len < lowerLimit) SetValue(arr, len); else value = arr; return *this; } void PASN_OctetString::SetValue(const BYTE * data, PINDEX len) { if ((unsigned)len > upperLimit) len = upperLimit; if (SetSize((int)len < lowerLimit ? lowerLimit : len)) memcpy(value.GetPointer(), data, len); } PString PASN_OctetString::AsString() const { if (value.IsEmpty()) return PString(); return PString((const char *)(const BYTE *)value, value.GetSize()); } PObject::Comparison PASN_OctetString::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_OctetString), PInvalidCast); const PASN_OctetString & other = (const PASN_OctetString &)obj; return value.Compare(other.value); } PObject * PASN_OctetString::Clone() const { PAssert(IsClass(PASN_OctetString::Class()), PInvalidCast); return new PASN_OctetString(*this); } void PASN_OctetString::PrintOn(ostream & strm) const { int indent = strm.precision() + 2; _Ios_Fmtflags flags = strm.flags(); strm << ' ' << value.GetSize() << " octets {\n" << hex << setfill('0') << resetiosflags(ios::floatfield) << setprecision(indent) << setw(16); if (value.GetSize() <= 32 || (flags&ios::floatfield) != ios::fixed) strm << value << '\n'; else { PBYTEArray truncatedArray(value, 32); strm << truncatedArray << '\n' << setfill(' ') << setw(indent+4) << "...\n"; } strm << dec << setfill(' ') << setw(indent-1) << "}"; strm.flags(flags); } void PASN_OctetString::SetConstraintBounds(ConstraintType type, int lower, unsigned upper) { if (lower < 0) return; PASN_ConstrainedObject::SetConstraintBounds(type, lower, upper); SetSize(GetSize()); } PString PASN_OctetString::GetTypeAsString() const { return "Octet String"; } PINDEX PASN_OctetString::GetDataLength() const { return value.GetSize(); } BOOL PASN_OctetString::SetSize(PINDEX newSize) { if (!CheckByteOffset(newSize, MaximumStringSize)) return FALSE; if (constraint != Unconstrained) { if (newSize < (PINDEX)lowerLimit) { if (lowerLimit < 0) return FALSE; newSize = lowerLimit; } else if ((unsigned)newSize > upperLimit) { if (upperLimit > (unsigned)MaximumStringSize) return FALSE; newSize = upperLimit; } } return value.SetSize(newSize); } BOOL PASN_OctetString::Decode(PASN_Stream & strm) { return strm.OctetStringDecode(*this); } void PASN_OctetString::Encode(PASN_Stream & strm) const { strm.OctetStringEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_ConstrainedString::PASN_ConstrainedString(const char * canonical, PINDEX size, unsigned tag, TagClass tagClass) : PASN_ConstrainedObject(tag, tagClass) { canonicalSet = canonical; canonicalSetSize = size; canonicalSetBits = CountBits(size); SetCharacterSet(canonicalSet, canonicalSetSize, Unconstrained); } PASN_ConstrainedString & PASN_ConstrainedString::operator=(const char * str) { if (str == NULL) str = ""; PStringStream newValue; PINDEX len = strlen(str); // Can't copy any more characters than the upper constraint if ((unsigned)len > upperLimit) len = upperLimit; // Now copy individual characters, if they are in character set constraint for (PINDEX i = 0; i < len; i++) { PINDEX sz = characterSet.GetSize(); if (sz == 0 || memchr(characterSet, str[i], sz) != NULL) newValue << str[i]; } // Make sure string meets minimum length constraint while ((int)len < lowerLimit) { newValue << characterSet[0]; len++; } value = newValue; value.MakeMinimumSize(); return *this; } void PASN_ConstrainedString::SetCharacterSet(ConstraintType ctype, const char * set) { SetCharacterSet(set, strlen(set), ctype); } void PASN_ConstrainedString::SetCharacterSet(ConstraintType ctype, unsigned firstChar, unsigned lastChar) { char buffer[256]; for (unsigned i = firstChar; i < lastChar; i++) buffer[i] = (char)i; SetCharacterSet(buffer, lastChar - firstChar + 1, ctype); } void PASN_ConstrainedString::SetCharacterSet(const char * set, PINDEX setSize, ConstraintType ctype) { if (ctype == Unconstrained) { characterSet.SetSize(canonicalSetSize); memcpy(characterSet.GetPointer(), canonicalSet, canonicalSetSize); } else if (setSize >= MaximumSetSize || canonicalSetSize >= MaximumSetSize || characterSet.GetSize() >= MaximumSetSize) return; else { characterSet.SetSize(setSize); PINDEX count = 0; for (PINDEX i = 0; i < canonicalSetSize; i++) { if (memchr(set, canonicalSet[i], setSize) != NULL) characterSet[count++] = canonicalSet[i]; } if (count < 0) return; characterSet.SetSize(count); } charSetUnalignedBits = CountBits(characterSet.GetSize()); charSetAlignedBits = 1; while (charSetUnalignedBits > charSetAlignedBits) charSetAlignedBits <<= 1; operator=((const char *)value); } PObject::Comparison PASN_ConstrainedString::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_ConstrainedString), PInvalidCast); const PASN_ConstrainedString & other = (const PASN_ConstrainedString &)obj; return value.Compare(other.value); } void PASN_ConstrainedString::PrintOn(ostream & strm) const { strm << value.ToLiteral(); } void PASN_ConstrainedString::SetConstraintBounds(ConstraintType type, int lower, unsigned upper) { if (lower < 0) return; PASN_ConstrainedObject::SetConstraintBounds(type, lower, upper); if (constraint != Unconstrained) { if (value.GetSize() < (PINDEX)lowerLimit) value.SetSize(lowerLimit); else if ((unsigned)value.GetSize() > upperLimit) value.SetSize(upperLimit); } } PINDEX PASN_ConstrainedString::GetDataLength() const { return value.GetSize()-1; } BOOL PASN_ConstrainedString::Decode(PASN_Stream & strm) { return strm.ConstrainedStringDecode(*this); } void PASN_ConstrainedString::Encode(PASN_Stream & strm) const { strm.ConstrainedStringEncode(*this); } #define DEFINE_STRING_CLASS(name, set) \ static const char name##StringSet[] = set; \ PASN_##name##String::PASN_##name##String(const char * str) \ : PASN_ConstrainedString(name##StringSet, sizeof(name##StringSet)-1, \ Universal##name##String, UniversalTagClass) \ { PASN_ConstrainedString::SetValue(str); } \ PASN_##name##String::PASN_##name##String(unsigned tag, TagClass tagClass) \ : PASN_ConstrainedString(name##StringSet, sizeof(name##StringSet)-1, tag, tagClass) \ { } \ PASN_##name##String & PASN_##name##String::operator=(const char * str) \ { PASN_ConstrainedString::SetValue(str); return *this; } \ PASN_##name##String & PASN_##name##String::operator=(const PString & str) \ { PASN_ConstrainedString::SetValue(str); return *this; } \ PObject * PASN_##name##String::Clone() const \ { PAssert(IsClass(PASN_##name##String::Class()), PInvalidCast); \ return new PASN_##name##String(*this); } \ PString PASN_##name##String::GetTypeAsString() const \ { return #name " String"; } DEFINE_STRING_CLASS(Numeric, " 0123456789") DEFINE_STRING_CLASS(Printable, " '()+,-./0123456789:=?" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz") DEFINE_STRING_CLASS(Visible, " !\"#$%&'()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" "`abcdefghijklmnopqrstuvwxyz{|}~") DEFINE_STRING_CLASS(IA5, "\000\001\002\003\004\005\006\007" "\010\011\012\013\014\015\016\017" "\020\021\022\023\024\025\026\027" "\030\031\032\033\034\035\036\037" " !\"#$%&'()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" "`abcdefghijklmnopqrstuvwxyz{|}~\177") DEFINE_STRING_CLASS(General, "\000\001\002\003\004\005\006\007" "\010\011\012\013\014\015\016\017" "\020\021\022\023\024\025\026\027" "\030\031\032\033\034\035\036\037" " !\"#$%&'()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" "`abcdefghijklmnopqrstuvwxyz{|}~\177" "\200\201\202\203\204\205\206\207" "\210\211\212\213\214\215\216\217" "\220\221\222\223\224\225\226\227" "\230\231\232\233\234\235\236\237" "\240\241\242\243\244\245\246\247" "\250\251\252\253\254\255\256\257" "\260\261\262\263\264\265\266\267" "\270\271\272\273\274\275\276\277" "\300\301\302\303\304\305\306\307" "\310\311\312\313\314\315\316\317" "\320\321\322\323\324\325\326\327" "\330\331\332\333\334\335\336\337" "\340\341\342\343\344\345\346\347" "\350\351\352\353\354\355\356\357" "\360\361\362\363\364\365\366\367" "\370\371\372\373\374\375\376\377") /////////////////////////////////////////////////////////////////////// PASN_BMPString::PASN_BMPString(const char * str) : PASN_ConstrainedObject(UniversalBMPString, UniversalTagClass) { Construct(); if (str != NULL) SetValue(str); } PASN_BMPString::PASN_BMPString(const PWORDArray & wstr) : PASN_ConstrainedObject(UniversalBMPString, UniversalTagClass) { Construct(); SetValue(wstr); } PASN_BMPString::PASN_BMPString(unsigned tag, TagClass tagClass) : PASN_ConstrainedObject(tag, tagClass) { Construct(); } void PASN_BMPString::Construct() { firstChar = 0; lastChar = 0xffff; charSetAlignedBits = 16; charSetUnalignedBits = 16; } PASN_BMPString::PASN_BMPString(const PASN_BMPString & other) : PASN_ConstrainedObject(other), value(other.value, other.value.GetSize()), characterSet(other.characterSet) { firstChar = other.firstChar; lastChar = other.lastChar; charSetAlignedBits = other.charSetAlignedBits; charSetUnalignedBits = other.charSetUnalignedBits; } PASN_BMPString & PASN_BMPString::operator=(const PASN_BMPString & other) { PASN_ConstrainedObject::operator=(other); value = PWORDArray(other.value, other.value.GetSize()); characterSet = other.characterSet; firstChar = other.firstChar; lastChar = other.lastChar; charSetAlignedBits = other.charSetAlignedBits; charSetUnalignedBits = other.charSetUnalignedBits; return *this; } BOOL PASN_BMPString::IsLegalCharacter(WORD ch) { if (ch < firstChar) return FALSE; if (ch > lastChar) return FALSE; if (characterSet.IsEmpty()) return TRUE; const WORD * wptr = characterSet; PINDEX count = characterSet.GetSize(); while (count-- > 0) { if (*wptr == ch) return TRUE; wptr++; } return FALSE; } PASN_BMPString & PASN_BMPString::operator=(const PWORDArray & array) { PINDEX paramSize = array.GetSize(); // Can't copy any more than the upper constraint if ((unsigned)paramSize > upperLimit) paramSize = upperLimit; // Number of bytes must be at least lhe lower constraint PINDEX newSize = (int)paramSize < lowerLimit ? lowerLimit : paramSize; value.SetSize(newSize); PINDEX count = 0; for (PINDEX i = 0; i < paramSize; i++) { WORD c = array[i]; if (IsLegalCharacter(c)) value[count++] = c; } // Pad out with the first character till required size while (count < newSize) value[count++] = firstChar; return *this; } void PASN_BMPString::SetCharacterSet(ConstraintType ctype, const char * charSet) { PWORDArray array(strlen(charSet)); PINDEX count = 0; while (*charSet != '\0') array[count++] = (BYTE)*charSet++; SetCharacterSet(ctype, array); } void PASN_BMPString::SetCharacterSet(ConstraintType ctype, const PWORDArray & charSet) { if (ctype == Unconstrained) { firstChar = 0; lastChar = 0xffff; characterSet.SetSize(0); } else { characterSet = charSet; charSetUnalignedBits = CountBits(lastChar - firstChar + 1); if (!charSet.IsEmpty()) { unsigned count = 0; for (PINDEX i = 0; i < charSet.GetSize(); i++) { if (characterSet[i] >= firstChar && characterSet[i] <= lastChar) count++; } count = CountBits(count); if (charSetUnalignedBits > count) charSetUnalignedBits = count; } charSetAlignedBits = 1; while (charSetUnalignedBits > charSetAlignedBits) charSetAlignedBits <<= 1; SetValue(value); } } void PASN_BMPString::SetCharacterSet(ConstraintType ctype, unsigned first, unsigned last) { if (ctype != Unconstrained) { PAssert(first < 0x10000 && last < 0x10000 && last > first, PInvalidParameter); firstChar = (WORD)first; lastChar = (WORD)last; } SetCharacterSet(ctype, characterSet); } PObject * PASN_BMPString::Clone() const { PAssert(IsClass(PASN_BMPString::Class()), PInvalidCast); return new PASN_BMPString(*this); } PObject::Comparison PASN_BMPString::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_BMPString), PInvalidCast); const PASN_BMPString & other = (const PASN_BMPString &)obj; return value.Compare(other.value); } void PASN_BMPString::PrintOn(ostream & strm) const { int indent = strm.precision() + 2; PINDEX sz = value.GetSize(); strm << ' ' << sz << " characters {\n"; PINDEX i = 0; while (i < sz) { strm << setw(indent) << " " << hex << setfill('0'); PINDEX j; for (j = 0; j < 8; j++) if (i+j < sz) strm << setw(4) << value[i+j] << ' '; else strm << " "; strm << " "; for (j = 0; j < 8; j++) { if (i+j < sz) { WORD c = value[i+j]; if (c < 128 && isprint(c)) strm << (char)c; else strm << ' '; } } strm << dec << setfill(' ') << '\n'; i += 8; } strm << setw(indent-1) << "}"; } PString PASN_BMPString::GetTypeAsString() const { return "BMP String"; } PINDEX PASN_BMPString::GetDataLength() const { return value.GetSize()*2; } BOOL PASN_BMPString::Decode(PASN_Stream & strm) { return strm.BMPStringDecode(*this); } void PASN_BMPString::Encode(PASN_Stream & strm) const { strm.BMPStringEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_GeneralisedTime & PASN_GeneralisedTime::operator=(const PTime & time) { value = time.AsString("yyyyMMddhhmmss.uz"); value.Replace("GMT", "Z"); return *this; } PTime PASN_GeneralisedTime::GetValue() const { int year = value(0,3).AsInteger(); int month = value(4,5).AsInteger(); int day = value(6,7).AsInteger(); int hour = value(8,9).AsInteger(); int minute = value(10,11).AsInteger(); int seconds = 0; int zonePos = 12; if (isdigit(value[12])) { seconds = value(12,13).AsInteger(); if (value[14] != '.') zonePos = 14; else { zonePos = 15; while (isdigit(value[zonePos])) zonePos++; } } int zone = PTime::Local; switch (value[zonePos]) { case 'Z' : zone = PTime::UTC; break; case '+' : case '-' : zone = value(zonePos+1,zonePos+2).AsInteger()*60 + value(zonePos+3,zonePos+4).AsInteger(); } return PTime(seconds, minute, hour, day, month, year, zone); } /////////////////////////////////////////////////////////////////////// PASN_UniversalTime & PASN_UniversalTime::operator=(const PTime & time) { value = time.AsString("yyMMddhhmmssz"); value.Replace("GMT", "Z"); value.MakeMinimumSize(); return *this; } PTime PASN_UniversalTime::GetValue() const { int year = value(0,1).AsInteger(); if (year < 36) year += 2000; else year += 1900; int month = value(2,3).AsInteger(); int day = value(4,5).AsInteger(); int hour = value(6,7).AsInteger(); int minute = value(8,9).AsInteger(); int seconds = 0; int zonePos = 10; if (isdigit(value[10])) { seconds = value(10,11).AsInteger(); zonePos = 12; } int zone = PTime::UTC; if (value[zonePos] != 'Z') zone = value(zonePos+1,zonePos+2).AsInteger()*60 + value(zonePos+3,zonePos+4).AsInteger(); return PTime(seconds, minute, hour, day, month, year, zone); } /////////////////////////////////////////////////////////////////////// PASN_Choice::PASN_Choice(unsigned nChoices, BOOL extend) : PASN_Object(0, ApplicationTagClass, extend),names(NULL),namesCount(0) { numChoices = nChoices; choice = NULL; } PASN_Choice::PASN_Choice(unsigned tag, TagClass tagClass, unsigned upper, BOOL extend) : PASN_Object(tag, tagClass, extend),names(NULL),namesCount(0) { numChoices = upper; choice = NULL; } PASN_Choice::PASN_Choice(unsigned tag, TagClass tagClass, unsigned upper, BOOL extend, const PASN_Names * nameSpec,unsigned namesCnt) : PASN_Object(tag, tagClass, extend), names(nameSpec),namesCount(namesCnt) { numChoices = upper; choice = NULL; } PASN_Choice::PASN_Choice(const PASN_Choice & other) : PASN_Object(other), names(other.names),namesCount(other.namesCount) { numChoices = other.numChoices; if (other.CheckCreate()) choice = (PASN_Object *)other.choice->Clone(); else choice = NULL; } PASN_Choice & PASN_Choice::operator=(const PASN_Choice & other) { if (&other == this) // Assigning to ourself, just do nothing. return *this; delete choice; PASN_Object::operator=(other); numChoices = other.numChoices; names = other.names; namesCount = other.namesCount; if (other.CheckCreate()) choice = (PASN_Object *)other.choice->Clone(); else choice = NULL; return *this; } PASN_Choice::~PASN_Choice() { delete choice; } void PASN_Choice::SetTag(unsigned newTag, TagClass tagClass) { PASN_Object::SetTag(newTag, tagClass); delete choice; if (CreateObject()) choice->SetTag(newTag, tagClass); } PString PASN_Choice::GetTagName() const { PINDEX idx = FindNameByValue(names, namesCount, tag); if (idx != P_MAX_INDEX) return names[idx].name; if (CheckCreate() && PIsDescendant(choice, PASN_Choice) && choice->GetTag() == tag && choice->GetTagClass() == tagClass) return PString(choice->GetClass()) + "->" + ((PASN_Choice *)choice)->GetTagName(); return psprintf("<%u>", tag); } BOOL PASN_Choice::CheckCreate() const { if (choice != NULL) return TRUE; return ((PASN_Choice *)this)->CreateObject(); } PASN_Object & PASN_Choice::GetObject() const { PAssert(CheckCreate(), "NULL Choice"); return *choice; } #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 #define CHOICE_CAST_OPERATOR(cls) \ PASN_Choice::operator cls &() const \ { \ PAssert(CheckCreate(), "Cast of NULL choice"); \ PAssert(choice->IsDescendant(cls::Class()), PInvalidCast); \ return *(cls *)choice; \ } \ #else #define CHOICE_CAST_OPERATOR(cls) \ PASN_Choice::operator cls &() \ { \ PAssert(CheckCreate(), "Cast of NULL choice"); \ PAssert(PIsDescendant(choice, cls), PInvalidCast); \ return *(cls *)choice; \ } \ PASN_Choice::operator const cls &() const \ { \ PAssert(CheckCreate(), "Cast of NULL choice"); \ PAssert(PIsDescendant(choice, cls), PInvalidCast); \ return *(const cls *)choice; \ } \ #endif CHOICE_CAST_OPERATOR(PASN_Null) CHOICE_CAST_OPERATOR(PASN_Boolean) CHOICE_CAST_OPERATOR(PASN_Integer) CHOICE_CAST_OPERATOR(PASN_Enumeration) CHOICE_CAST_OPERATOR(PASN_Real) CHOICE_CAST_OPERATOR(PASN_ObjectId) CHOICE_CAST_OPERATOR(PASN_BitString) CHOICE_CAST_OPERATOR(PASN_OctetString) CHOICE_CAST_OPERATOR(PASN_NumericString) CHOICE_CAST_OPERATOR(PASN_PrintableString) CHOICE_CAST_OPERATOR(PASN_VisibleString) CHOICE_CAST_OPERATOR(PASN_IA5String) CHOICE_CAST_OPERATOR(PASN_GeneralString) CHOICE_CAST_OPERATOR(PASN_BMPString) CHOICE_CAST_OPERATOR(PASN_Sequence) PObject::Comparison PASN_Choice::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Choice), PInvalidCast); const PASN_Choice & other = (const PASN_Choice &)obj; CheckCreate(); other.CheckCreate(); if (choice == other.choice) return EqualTo; if (choice == NULL) return LessThan; if (other.choice == NULL) return GreaterThan; if (tag < other.tag) return LessThan; if (tag > other.tag) return GreaterThan; return choice->Compare(*other.choice); } void PASN_Choice::PrintOn(ostream & strm) const { strm << GetTagName(); if (choice != NULL) strm << ' ' << *choice; else strm << " (NULL)"; } PString PASN_Choice::GetTypeAsString() const { return "Choice"; } PINDEX PASN_Choice::GetDataLength() const { if (CheckCreate()) return choice->GetDataLength(); return 0; } BOOL PASN_Choice::IsPrimitive() const { if (CheckCreate()) return choice->IsPrimitive(); return FALSE; } BOOL PASN_Choice::Decode(PASN_Stream & strm) { return strm.ChoiceDecode(*this); } void PASN_Choice::Encode(PASN_Stream & strm) const { strm.ChoiceEncode(*this); } PINDEX PASN_Choice::GetValueByName(PString name) const { for(unsigned uiIndex = 0; uiIndex < numChoices; uiIndex++){ if(strcmp(names[uiIndex].name, name) == 0){ return names[uiIndex].value; } } return UINT_MAX; } /////////////////////////////////////////////////////////////////////// PASN_Sequence::PASN_Sequence(unsigned tag, TagClass tagClass, unsigned nOpts, BOOL extend, unsigned nExtend) : PASN_Object(tag, tagClass, extend) { optionMap.SetConstraints(PASN_ConstrainedObject::FixedConstraint, nOpts); knownExtensions = nExtend; totalExtensions = 0; endBasicEncoding = 0; } PASN_Sequence::PASN_Sequence(const PASN_Sequence & other) : PASN_Object(other), fields(other.fields.GetSize()), optionMap(other.optionMap), extensionMap(other.extensionMap) { for (PINDEX i = 0; i < other.fields.GetSize(); i++) fields.SetAt(i, other.fields[i].Clone()); knownExtensions = other.knownExtensions; totalExtensions = other.totalExtensions; endBasicEncoding = 0; } PASN_Sequence & PASN_Sequence::operator=(const PASN_Sequence & other) { PASN_Object::operator=(other); fields.SetSize(other.fields.GetSize()); for (PINDEX i = 0; i < other.fields.GetSize(); i++) fields.SetAt(i, other.fields[i].Clone()); optionMap = other.optionMap; knownExtensions = other.knownExtensions; totalExtensions = other.totalExtensions; extensionMap = other.extensionMap; return *this; } BOOL PASN_Sequence::HasOptionalField(PINDEX opt) const { if (opt < (PINDEX)optionMap.GetSize()) return optionMap[opt]; else return extensionMap[opt - optionMap.GetSize()]; } void PASN_Sequence::IncludeOptionalField(PINDEX opt) { if (opt < (PINDEX)optionMap.GetSize()) optionMap.Set(opt); else { PAssert(extendable, "Must be extendable type"); opt -= optionMap.GetSize(); if (opt >= (PINDEX)extensionMap.GetSize()) extensionMap.SetSize(opt+1); extensionMap.Set(opt); } } void PASN_Sequence::RemoveOptionalField(PINDEX opt) { if (opt < (PINDEX)optionMap.GetSize()) optionMap.Clear(opt); else { PAssert(extendable, "Must be extendable type"); opt -= optionMap.GetSize(); extensionMap.Clear(opt); } } PObject::Comparison PASN_Sequence::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Sequence), PInvalidCast); const PASN_Sequence & other = (const PASN_Sequence &)obj; return fields.Compare(other.fields); } PObject * PASN_Sequence::Clone() const { PAssert(IsClass(PASN_Sequence::Class()), PInvalidCast); return new PASN_Sequence(*this); } void PASN_Sequence::PrintOn(ostream & strm) const { int indent = strm.precision() + 2; strm << "{\n"; for (PINDEX i = 0; i < fields.GetSize(); i++) { strm << setw(indent+6) << "field[" << i << "] <"; switch (fields[i].GetTagClass()) { case UniversalTagClass : strm << "Universal"; break; case ApplicationTagClass : strm << "Application"; break; case ContextSpecificTagClass : strm << "ContextSpecific"; break; case PrivateTagClass : strm << "Private"; default : break; } strm << '-' << fields[i].GetTag() << '-' << fields[i].GetTypeAsString() << "> = " << fields[i] << '\n'; } strm << setw(indent-1) << "}"; } PString PASN_Sequence::GetTypeAsString() const { return "Sequence"; } PINDEX PASN_Sequence::GetDataLength() const { PINDEX len = 0; for (PINDEX i = 0; i < fields.GetSize(); i++) len += fields[i].GetObjectLength(); return len; } BOOL PASN_Sequence::IsPrimitive() const { return FALSE; } BOOL PASN_Sequence::Decode(PASN_Stream & strm) { return PreambleDecode(strm) && UnknownExtensionsDecode(strm); } void PASN_Sequence::Encode(PASN_Stream & strm) const { PreambleEncode(strm); UnknownExtensionsEncode(strm); } BOOL PASN_Sequence::PreambleDecode(PASN_Stream & strm) { return strm.SequencePreambleDecode(*this); } void PASN_Sequence::PreambleEncode(PASN_Stream & strm) const { strm.SequencePreambleEncode(*this); } BOOL PASN_Sequence::KnownExtensionDecode(PASN_Stream & strm, PINDEX fld, PASN_Object & field) { return strm.SequenceKnownDecode(*this, fld, field); } void PASN_Sequence::KnownExtensionEncode(PASN_Stream & strm, PINDEX fld, const PASN_Object & field) const { strm.SequenceKnownEncode(*this, fld, field); } BOOL PASN_Sequence::UnknownExtensionsDecode(PASN_Stream & strm) { return strm.SequenceUnknownDecode(*this); } void PASN_Sequence::UnknownExtensionsEncode(PASN_Stream & strm) const { strm.SequenceUnknownEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_Set::PASN_Set(unsigned tag, TagClass tagClass, unsigned nOpts, BOOL extend, unsigned nExtend) : PASN_Sequence(tag, tagClass, nOpts, extend, nExtend) { } PObject * PASN_Set::Clone() const { PAssert(IsClass(PASN_Set::Class()), PInvalidCast); return new PASN_Set(*this); } PString PASN_Set::GetTypeAsString() const { return "Set"; } /////////////////////////////////////////////////////////////////////// PASN_Array::PASN_Array(unsigned tag, TagClass tagClass) : PASN_ConstrainedObject(tag, tagClass) { } PASN_Array::PASN_Array(const PASN_Array & other) : PASN_ConstrainedObject(other), array(other.array.GetSize()) { for (PINDEX i = 0; i < other.array.GetSize(); i++) array.SetAt(i, other.array[i].Clone()); } PASN_Array & PASN_Array::operator=(const PASN_Array & other) { PASN_ConstrainedObject::operator=(other); array.SetSize(other.array.GetSize()); for (PINDEX i = 0; i < other.array.GetSize(); i++) array.SetAt(i, other.array[i].Clone()); return *this; } BOOL PASN_Array::SetSize(PINDEX newSize) { if (newSize > MaximumArraySize) return FALSE; PINDEX originalSize = array.GetSize(); if (!array.SetSize(newSize)) return FALSE; for (PINDEX i = originalSize; i < newSize; i++) { PASN_Object * obj = CreateObject(); if (obj == NULL) return FALSE; array.SetAt(i, obj); } return TRUE; } PObject::Comparison PASN_Array::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PASN_Array), PInvalidCast); const PASN_Array & other = (const PASN_Array &)obj; return array.Compare(other.array); } void PASN_Array::PrintOn(ostream & strm) const { int indent = strm.precision() + 2; strm << array.GetSize() << " entries {\n"; for (PINDEX i = 0; i < array.GetSize(); i++) strm << setw(indent+1) << "[" << i << "]=" << setprecision(indent) << array[i] << '\n'; strm << setw(indent-1) << "}"; } void PASN_Array::SetConstraintBounds(ConstraintType type, int lower, unsigned upper) { if (lower < 0) return; PASN_ConstrainedObject::SetConstraintBounds(type, lower, upper); if (constraint != Unconstrained) { if (GetSize() < (PINDEX)lowerLimit) SetSize(lowerLimit); else if (GetSize() > (PINDEX)upperLimit) SetSize(upperLimit); } } PString PASN_Array::GetTypeAsString() const { return "Array"; } PINDEX PASN_Array::GetDataLength() const { PINDEX len = 0; for (PINDEX i = 0; i < array.GetSize(); i++) len += array[i].GetObjectLength(); return len; } BOOL PASN_Array::IsPrimitive() const { return FALSE; } BOOL PASN_Array::Decode(PASN_Stream & strm) { return strm.ArrayDecode(*this); } void PASN_Array::Encode(PASN_Stream & strm) const { strm.ArrayEncode(*this); } /////////////////////////////////////////////////////////////////////// PASN_Stream::PASN_Stream() { Construct(); } PASN_Stream::PASN_Stream(const PBYTEArray & bytes) : PBYTEArray(bytes) { Construct(); } PASN_Stream::PASN_Stream(const BYTE * buf, PINDEX size) : PBYTEArray(buf, size) { Construct(); } void PASN_Stream::Construct() { byteOffset = 0; bitOffset = 8; } void PASN_Stream::PrintOn(ostream & strm) const { int indent = strm.precision() + 2; strm << " size=" << GetSize() << " pos=" << byteOffset << '.' << (8-bitOffset) << " {\n"; PINDEX i = 0; while (i < GetSize()) { strm << setw(indent) << " " << hex << setfill('0'); PINDEX j; for (j = 0; j < 16; j++) if (i+j < GetSize()) strm << setw(2) << (unsigned)(BYTE)theArray[i+j] << ' '; else strm << " "; strm << " "; for (j = 0; j < 16; j++) { if (i+j < GetSize()) { BYTE c = theArray[i+j]; if (c < 128 && isprint(c)) strm << c; else strm << ' '; } } strm << dec << setfill(' ') << '\n'; i += 16; } strm << setw(indent-1) << "}"; } void PASN_Stream::SetPosition(PINDEX newPos) { if (!CheckByteOffset(byteOffset)) return; if (newPos > GetSize()) byteOffset = GetSize(); else byteOffset = newPos; bitOffset = 8; } void PASN_Stream::ResetDecoder() { byteOffset = 0; bitOffset = 8; } void PASN_Stream::BeginEncoding() { bitOffset = 8; byteOffset = 0; PBYTEArray::operator=(PBYTEArray(20)); } void PASN_Stream::CompleteEncoding() { if (byteOffset != P_MAX_INDEX) { if (bitOffset != 8) { bitOffset = 8; byteOffset++; } SetSize(byteOffset); byteOffset = P_MAX_INDEX; } } BYTE PASN_Stream::ByteDecode() { if (!CheckByteOffset(byteOffset, GetSize())) return 0; bitOffset = 8; return theArray[byteOffset++]; } void PASN_Stream::ByteEncode(unsigned value) { if (!CheckByteOffset(byteOffset)) return; if (bitOffset != 8) { bitOffset = 8; byteOffset++; } if (byteOffset >= GetSize()) SetSize(byteOffset+10); theArray[byteOffset++] = (BYTE)value; } unsigned PASN_Stream::BlockDecode(BYTE * bufptr, unsigned nBytes) { if (nBytes == 0 || bufptr == NULL || !CheckByteOffset(byteOffset+nBytes)) return 0; ByteAlign(); if (byteOffset+nBytes > (unsigned)GetSize()) { nBytes = GetSize() - byteOffset; if (nBytes <= 0) return 0; } memcpy(bufptr, &theArray[byteOffset], nBytes); byteOffset += nBytes; return nBytes; } void PASN_Stream::BlockEncode(const BYTE * bufptr, PINDEX nBytes) { if (!CheckByteOffset(byteOffset, GetSize())) return; if (nBytes == 0) return; ByteAlign(); if (byteOffset+nBytes >= GetSize()) SetSize(byteOffset+nBytes+10); memcpy(theArray+byteOffset, bufptr, nBytes); byteOffset += nBytes; } void PASN_Stream::ByteAlign() { if (!CheckByteOffset(byteOffset, GetSize())) return; if (bitOffset != 8) { bitOffset = 8; byteOffset++; } } /////////////////////////////////////////////////////////////////////// #ifdef P_INCLUDE_PER #include "asnper.cxx" #endif #ifdef P_INCLUDE_BER #include "asnber.cxx" #endif #ifdef P_INCLUDE_XER #include "asnxer.cxx" #endif // End of file //////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/asnper.cxx0100644000176200056700000007330010074231653017462 0ustar releasepostincr/* * asnper.cxx * * Abstract Syntax Notation 1 Encoding Rules * * Portable Windows Library * * $Log: asnper.cxx,v $ * Revision 1.10 2004/07/11 12:33:47 csoutheren * Added guards against illegal PDU values causing crashes * * Revision 1.9 2004/03/23 04:53:57 csoutheren * Fixed problem with incorrect encoding of ASN NULL under some circumstances * Thanks to Ed Day of Objective Systems * * Revision 1.8 2004/01/17 17:43:42 csoutheren * Fixed problem with the upper limit on various constrained types not being correctly enforced * * Revision 1.7 2004/01/17 09:23:43 csoutheren * Fixed problem with the upper limit on constrained unsigned integers not being correctly enforced * * Revision 1.6 2003/12/14 10:21:29 rjongbloed * Fixed bug in length incorrectlty decoded from ASN and (apparently) rare circumstances. Thanks pangxg@hotmail.com. * Cleaned up return values to be BOOL rather than int for some functions. * * Revision 1.5 2003/12/03 03:50:03 csoutheren * Reversed last change as it broke decoding in some circumstances * * */ /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::NullDecode(PASN_Null &) { return TRUE; } void PPER_Stream::NullEncode(const PASN_Null &) { } /////////////////////////////////////////////////////////////////////// BOOL PASN_ConstrainedObject::ConstrainedLengthDecode(PPER_Stream & strm, unsigned & length) { // The execution order is important in the following. The SingleBitDecode() function // must be called if extendable is TRUE, no matter what. if ((extendable && strm.SingleBitDecode()) || constraint == Unconstrained) return strm.LengthDecode(0, INT_MAX, length); else return strm.LengthDecode(lowerLimit, upperLimit, length); } void PASN_ConstrainedObject::ConstrainedLengthEncode(PPER_Stream & strm, unsigned length) const { if (ConstraintEncode(strm, length)) // 26.4 strm.LengthEncode(length, 0, INT_MAX); else strm.LengthEncode(length, lowerLimit, upperLimit); } BOOL PASN_ConstrainedObject::ConstraintEncode(PPER_Stream & strm, unsigned value) const { if (!extendable) return constraint != FixedConstraint; BOOL needsExtending = value > upperLimit; if (!needsExtending) { if (lowerLimit < 0) { if ((int)value < lowerLimit) needsExtending = TRUE; } else { if (value < (unsigned)lowerLimit) needsExtending = TRUE; } } strm.SingleBitEncode(needsExtending); return needsExtending; } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::BooleanDecode(PASN_Boolean & value) { if (IsAtEnd()) return FALSE; // X.691 Section 11 value = (BOOL)SingleBitDecode(); return TRUE; } void PPER_Stream::BooleanEncode(const PASN_Boolean & value) { // X.691 Section 11 SingleBitEncode((BOOL)value); } BOOL PPER_Stream::IntegerDecode(PASN_Integer & value) { return value.DecodePER(*this); } void PPER_Stream::IntegerEncode(const PASN_Integer & value) { value.EncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_Integer::DecodePER(PPER_Stream & strm) { // X.691 Sections 12 switch (constraint) { case FixedConstraint : // 12.2.1 & 12.2.2 break; case ExtendableConstraint : if (!strm.SingleBitDecode()) // 12.1 break; // Fall into default case for unconstrained or partially constrained default : // 12.2.6 unsigned len; if (!strm.LengthDecode(0, INT_MAX, len)) return FALSE; len *= 8; if (!strm.MultiBitDecode(len, value)) return FALSE; if (IsUnsigned()) value += lowerLimit; else if ((value&(1<<(len-1))) != 0) // Negative value |= UINT_MAX << len; // Sign extend return TRUE; } if ((unsigned)lowerLimit != upperLimit) // 12.2.2 return strm.UnsignedDecode(lowerLimit, upperLimit, value); // which devolves to 10.5 // 12.2.1 value = lowerLimit; return TRUE; } void PASN_Integer::EncodePER(PPER_Stream & strm) const { // X.691 Sections 12 // 12.1 if (ConstraintEncode(strm, (int)value)) { // 12.2.6 unsigned adjusted_value = value - lowerLimit; PINDEX nBits = 1; // Allow for sign bit if (IsUnsigned()) nBits = CountBits(adjusted_value+1); else if ((int)adjusted_value > 0) nBits += CountBits(adjusted_value+1); else nBits += CountBits(-(int)adjusted_value+1); // Round up to nearest number of whole octets PINDEX nBytes = (nBits+7)/8; strm.LengthEncode(nBytes, 0, INT_MAX); strm.MultiBitEncode(adjusted_value, nBytes*8); return; } if ((unsigned)lowerLimit == upperLimit) // 12.2.1 return; // 12.2.2 which devolves to 10.5 strm.UnsignedEncode(value, lowerLimit, upperLimit); } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::EnumerationDecode(PASN_Enumeration & value) { return value.DecodePER(*this); } void PPER_Stream::EnumerationEncode(const PASN_Enumeration & value) { value.EncodePER(*this); } BOOL PASN_Enumeration::DecodePER(PPER_Stream & strm) { // X.691 Section 13 if (extendable) { // 13.3 if (strm.SingleBitDecode()) { unsigned len = 0; return strm.SmallUnsignedDecode(len) && len > 0 && strm.UnsignedDecode(0, len-1, value); } } return strm.UnsignedDecode(0, maxEnumValue, value); // 13.2 } void PASN_Enumeration::EncodePER(PPER_Stream & strm) const { // X.691 Section 13 if (extendable) { // 13.3 BOOL extended = value > maxEnumValue; strm.SingleBitEncode(extended); if (extended) { strm.SmallUnsignedEncode(1+value); strm.UnsignedEncode(value, 0, value); return; } } strm.UnsignedEncode(value, 0, maxEnumValue); // 13.2 } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::RealDecode(PASN_Real &) { // X.691 Section 14 if (IsAtEnd()) return FALSE; unsigned len; if (!MultiBitDecode(8, len)) return FALSE; PAssertAlways(PUnimplementedFunction); byteOffset += len+1; return TRUE; } void PPER_Stream::RealEncode(const PASN_Real &) { // X.691 Section 14 MultiBitEncode(0, 8); PAssertAlways(PUnimplementedFunction); MultiBitEncode(0, 8); } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::ObjectIdDecode(PASN_ObjectId & value) { // X.691 Section 23 unsigned dataLen; if (!LengthDecode(0, 255, dataLen)) return FALSE; ByteAlign(); return value.CommonDecode(*this, dataLen); } void PPER_Stream::ObjectIdEncode(const PASN_ObjectId & value) { // X.691 Section 23 PBYTEArray eObjId; value.CommonEncode(eObjId); LengthEncode(eObjId.GetSize(), 0, 255); BlockEncode(eObjId, eObjId.GetSize()); } /////////////////////////////////////////////////////////////////////// BOOL PASN_BitString::DecodeSequenceExtensionBitmap(PPER_Stream & strm) { if (!strm.SmallUnsignedDecode(totalBits)) return FALSE; totalBits++; if (!SetSize(totalBits)) return FALSE; if (totalBits > strm.GetBitsLeft()) return FALSE; unsigned theBits; PINDEX idx = 0; unsigned bitsLeft = totalBits; while (bitsLeft >= 8) { if (!strm.MultiBitDecode(8, theBits)) return FALSE; bitData[idx++] = (BYTE)theBits; bitsLeft -= 8; } if (bitsLeft > 0) { if (!strm.MultiBitDecode(bitsLeft, theBits)) return FALSE; bitData[idx] = (BYTE)(theBits << (8-bitsLeft)); } return TRUE; } void PASN_BitString::EncodeSequenceExtensionBitmap(PPER_Stream & strm) const { PAssert(totalBits > 0, PLogicError); unsigned bitsLeft = totalBits; while (bitsLeft > 1 && !(*this)[bitsLeft-1]) bitsLeft--; strm.SmallUnsignedEncode(bitsLeft-1); PINDEX idx = 0; while (bitsLeft >= 8) { strm.MultiBitEncode(bitData[idx++], 8); bitsLeft -= 8; } if (bitsLeft > 0) strm.MultiBitEncode(bitData[idx] >> (8 - bitsLeft), bitsLeft); } BOOL PASN_BitString::DecodePER(PPER_Stream & strm) { // X.691 Section 15 if (!ConstrainedLengthDecode(strm, totalBits)) return FALSE; if (!SetSize(totalBits)) return FALSE; if (totalBits == 0) return TRUE; // 15.7 if (totalBits > strm.GetBitsLeft()) return FALSE; if (totalBits > 16) { unsigned nBytes = (totalBits+7)/8; return strm.BlockDecode(bitData.GetPointer(), nBytes) == nBytes; // 15.9 } unsigned theBits; if (totalBits <= 8) { if (!strm.MultiBitDecode(totalBits, theBits)) return FALSE; bitData[0] = (BYTE)(theBits << (8-totalBits)); } else { // 15.8 if (!strm.MultiBitDecode(8, theBits)) return FALSE; bitData[0] = (BYTE)theBits; if (!strm.MultiBitDecode(totalBits-8, theBits)) return FALSE; bitData[1] = (BYTE)(theBits << (16-totalBits)); } return TRUE; } void PASN_BitString::EncodePER(PPER_Stream & strm) const { // X.691 Section 15 ConstrainedLengthEncode(strm, totalBits); if (totalBits == 0) return; if (totalBits > 16) strm.BlockEncode(bitData, (totalBits+7)/8); // 15.9 else if (totalBits <= 8) // 15.8 strm.MultiBitEncode(bitData[0] >> (8 - totalBits), totalBits); else { strm.MultiBitEncode(bitData[0], 8); strm.MultiBitEncode(bitData[1] >> (16 - totalBits), totalBits-8); } } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::BitStringDecode(PASN_BitString & value) { return value.DecodePER(*this); } void PPER_Stream::BitStringEncode(const PASN_BitString & value) { value.EncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_OctetString::DecodeSubType(PASN_Object & obj) const { PPER_Stream stream = GetValue(); return obj.Decode(stream); } void PASN_OctetString::EncodeSubType(const PASN_Object & obj) { PPER_Stream stream; obj.Encode(stream); stream.CompleteEncoding(); SetValue(stream); } BOOL PASN_OctetString::DecodePER(PPER_Stream & strm) { // X.691 Section 16 unsigned nBytes; if (!ConstrainedLengthDecode(strm, nBytes)) return FALSE; if (!SetSize(nBytes)) // 16.5 return FALSE; if ((int)upperLimit != lowerLimit) return strm.BlockDecode(value.GetPointer(), nBytes) == nBytes; unsigned theBits; switch (nBytes) { case 0 : break; case 1 : // 16.6 if (!strm.MultiBitDecode(8, theBits)) return FALSE; value[0] = (BYTE)theBits; break; case 2 : // 16.6 if (!strm.MultiBitDecode(8, theBits)) return FALSE; value[0] = (BYTE)theBits; if (!strm.MultiBitDecode(8, theBits)) return FALSE; value[1] = (BYTE)theBits; break; default: // 16.7 return strm.BlockDecode(value.GetPointer(), nBytes) == nBytes; } return TRUE; } void PASN_OctetString::EncodePER(PPER_Stream & strm) const { // X.691 Section 16 PINDEX nBytes = value.GetSize(); ConstrainedLengthEncode(strm, nBytes); if ((int)upperLimit != lowerLimit) { strm.BlockEncode(value, nBytes); return; } switch (nBytes) { case 0 : // 16.5 break; case 1 : // 16.6 strm.MultiBitEncode(value[0], 8); break; case 2 : // 16.6 strm.MultiBitEncode(value[0], 8); strm.MultiBitEncode(value[1], 8); break; default: // 16.7 strm.BlockEncode(value, nBytes); } } BOOL PPER_Stream::OctetStringDecode(PASN_OctetString & value) { return value.DecodePER(*this); } void PPER_Stream::OctetStringEncode(const PASN_OctetString & value) { value.EncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_ConstrainedString::DecodePER(PPER_Stream & strm) { // X.691 Section 26 unsigned len; if (!ConstrainedLengthDecode(strm, len)) return FALSE; if (len == 0) { // 10.9.3.3 value.SetSize(1); value[0] = '\0'; return TRUE; } unsigned nBits = strm.IsAligned() ? charSetAlignedBits : charSetUnalignedBits; unsigned totalBits = upperLimit*nBits; if (constraint == Unconstrained || (lowerLimit == (int)upperLimit ? (totalBits > 16) : (totalBits >= 16))) { if (nBits == 8) return strm.BlockDecode((BYTE *)value.GetPointer(len+1), len) == len; if (strm.IsAligned()) strm.ByteAlign(); } if ((PINDEX)len > MaximumStringSize) return FALSE; if (!value.SetSize(len+1)) return FALSE; PINDEX i; for (i = 0; i < (PINDEX)len; i++) { unsigned theBits; if (!strm.MultiBitDecode(nBits, theBits)) return FALSE; if (nBits >= canonicalSetBits && canonicalSetBits > 4) value[i] = (char)theBits; else value[i] = characterSet[(PINDEX)theBits]; } value[i] = '\0'; return TRUE; } void PASN_ConstrainedString::EncodePER(PPER_Stream & strm) const { // X.691 Section 26 PINDEX len = value.GetSize()-1; ConstrainedLengthEncode(strm, len); if (len == 0) // 10.9.3.3 return; unsigned nBits = strm.IsAligned() ? charSetAlignedBits : charSetUnalignedBits; unsigned totalBits = upperLimit*nBits; if (constraint == Unconstrained || (lowerLimit == (int)upperLimit ? (totalBits > 16) : (totalBits >= 16))) { // 26.5.7 if (nBits == 8) { strm.BlockEncode((const BYTE *)(const char *)value, len); return; } if (strm.IsAligned()) strm.ByteAlign(); } for (PINDEX i = 0; i < len; i++) { if (nBits >= canonicalSetBits && canonicalSetBits > 4) strm.MultiBitEncode(value[i], nBits); else { const void * ptr = memchr(characterSet, value[i], characterSet.GetSize()); PINDEX pos = 0; if (ptr != NULL) pos = ((const char *)ptr - (const char *)characterSet); strm.MultiBitEncode(pos, nBits); } } } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::ConstrainedStringDecode(PASN_ConstrainedString & value) { return value.DecodePER(*this); } void PPER_Stream::ConstrainedStringEncode(const PASN_ConstrainedString & value) { value.EncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_BMPString::DecodePER(PPER_Stream & strm) { // X.691 Section 26 unsigned len; if (!ConstrainedLengthDecode(strm, len)) return FALSE; if ((PINDEX)len > MaximumStringSize) return FALSE; if (!value.SetSize(len)) return FALSE; PINDEX nBits = strm.IsAligned() ? charSetAlignedBits : charSetUnalignedBits; if ((constraint == Unconstrained || upperLimit*nBits > 16) && strm.IsAligned()) strm.ByteAlign(); for (PINDEX i = 0; i < (PINDEX)len; i++) { unsigned theBits; if (!strm.MultiBitDecode(nBits, theBits)) return FALSE; if (characterSet.IsEmpty()) value[i] = (WORD)(theBits + firstChar); else value[i] = characterSet[(PINDEX)theBits]; } return TRUE; } void PASN_BMPString::EncodePER(PPER_Stream & strm) const { // X.691 Section 26 PINDEX len = value.GetSize(); ConstrainedLengthEncode(strm, len); PINDEX nBits = strm.IsAligned() ? charSetAlignedBits : charSetUnalignedBits; if ((constraint == Unconstrained || upperLimit*nBits > 16) && strm.IsAligned()) strm.ByteAlign(); for (PINDEX i = 0; i < len; i++) { if (characterSet.IsEmpty()) strm.MultiBitEncode(value[i] - firstChar, nBits); else { for (PINDEX pos = 0; pos < characterSet.GetSize(); pos++) { if (characterSet[pos] == value[i]) { strm.MultiBitEncode(pos, nBits); break; } } } } } BOOL PPER_Stream::BMPStringDecode(PASN_BMPString & value) { return value.DecodePER(*this); } void PPER_Stream::BMPStringEncode(const PASN_BMPString & value) { value.EncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_Choice::DecodePER(PPER_Stream & strm) { // X.691 Section 22 delete choice; choice = NULL; if (strm.IsAtEnd()) return FALSE; if (extendable) { if (strm.SingleBitDecode()) { if (!strm.SmallUnsignedDecode(tag)) return FALSE; tag += numChoices; unsigned len; if (!strm.LengthDecode(0, INT_MAX, len)) return FALSE; BOOL ok; if (CreateObject()) { PINDEX nextPos = strm.GetPosition() + len; ok = choice->Decode(strm); strm.SetPosition(nextPos); } else { PASN_OctetString * open_type = new PASN_OctetString; open_type->SetConstraints(PASN_ConstrainedObject::FixedConstraint, len); ok = open_type->Decode(strm); if (open_type->GetSize() > 0) choice = open_type; else { delete open_type; ok = FALSE; } } return ok; } } if (numChoices < 2) tag = 0; else { if (!strm.UnsignedDecode(0, numChoices-1, tag)) return FALSE; } return CreateObject() && choice->Decode(strm); } void PASN_Choice::EncodePER(PPER_Stream & strm) const { PAssert(CheckCreate(), PLogicError); if (extendable) { BOOL extended = tag >= numChoices; strm.SingleBitEncode(extended); if (extended) { strm.SmallUnsignedEncode(tag - numChoices); strm.AnyTypeEncode(choice); return; } } if (numChoices > 1) strm.UnsignedEncode(tag, 0, numChoices-1); choice->Encode(strm); } BOOL PPER_Stream::ChoiceDecode(PASN_Choice & value) { return value.DecodePER(*this); } void PPER_Stream::ChoiceEncode(const PASN_Choice & value) { value.EncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_Sequence::PreambleDecodePER(PPER_Stream & strm) { // X.691 Section 18 if (extendable) { if (strm.IsAtEnd()) return FALSE; totalExtensions = strm.SingleBitDecode() ? -1 : 0; // 18.1 } else totalExtensions = 0; return optionMap.Decode(strm); // 18.2 } void PASN_Sequence::PreambleEncodePER(PPER_Stream & strm) const { // X.691 Section 18 if (extendable) { BOOL hasExtensions = FALSE; for (unsigned i = 0; i < extensionMap.GetSize(); i++) { if (extensionMap[i]) { hasExtensions = TRUE; break; } } strm.SingleBitEncode(hasExtensions); // 18.1 ((PASN_Sequence*)this)->totalExtensions = hasExtensions ? -1 : 0; } optionMap.Encode(strm); // 18.2 } BOOL PASN_Sequence::NoExtensionsToDecode(PPER_Stream & strm) { if (totalExtensions == 0) return TRUE; if (totalExtensions < 0) { if (!extensionMap.DecodeSequenceExtensionBitmap(strm)) return FALSE; totalExtensions = extensionMap.GetSize(); } return FALSE; } BOOL PASN_Sequence::NoExtensionsToEncode(PPER_Stream & strm) { if (totalExtensions == 0) return TRUE; if (totalExtensions < 0) { totalExtensions = extensionMap.GetSize(); extensionMap.EncodeSequenceExtensionBitmap(strm); } return FALSE; } BOOL PASN_Sequence::KnownExtensionDecodePER(PPER_Stream & strm, PINDEX fld, PASN_Object & field) { if (NoExtensionsToDecode(strm)) return TRUE; if (!extensionMap[fld-optionMap.GetSize()]) return TRUE; unsigned len; if (!strm.LengthDecode(0, INT_MAX, len)) return FALSE; PINDEX nextExtensionPosition = strm.GetPosition() + len; BOOL ok = field.Decode(strm); strm.SetPosition(nextExtensionPosition); return ok; } void PASN_Sequence::KnownExtensionEncodePER(PPER_Stream & strm, PINDEX fld, const PASN_Object & field) const { if (((PASN_Sequence*)this)->NoExtensionsToEncode(strm)) return; if (!extensionMap[fld-optionMap.GetSize()]) return; strm.AnyTypeEncode(&field); } BOOL PASN_Sequence::UnknownExtensionsDecodePER(PPER_Stream & strm) { if (NoExtensionsToDecode(strm)) return TRUE; if (totalExtensions <= knownExtensions) return TRUE; // Already read them PINDEX unknownCount = totalExtensions - knownExtensions; if (fields.GetSize() >= unknownCount) return TRUE; // Already read them if (unknownCount > MaximumArraySize) return FALSE; if (!fields.SetSize(unknownCount)) return FALSE; PINDEX i; for (i = 0; i < fields.GetSize(); i++) fields.SetAt(i, new PASN_OctetString); for (i = knownExtensions; i < (PINDEX)extensionMap.GetSize(); i++) { if (extensionMap[i]) if (!fields[i-knownExtensions].Decode(strm)) return FALSE; } return TRUE; } void PASN_Sequence::UnknownExtensionsEncodePER(PPER_Stream & strm) const { if (((PASN_Sequence*)this)->NoExtensionsToEncode(strm)) return; int i; for (i = knownExtensions; i < totalExtensions; i++) { if (extensionMap[i]) { PINDEX f = i - knownExtensions; if (f < fields.GetSize()) fields[f].Encode(strm); else { PASN_OctetString dummy; dummy.Encode(strm); } } } } BOOL PPER_Stream::SequencePreambleDecode(PASN_Sequence & seq) { return seq.PreambleDecodePER(*this); } void PPER_Stream::SequencePreambleEncode(const PASN_Sequence & seq) { seq.PreambleEncodePER(*this); } BOOL PPER_Stream::SequenceKnownDecode(PASN_Sequence & seq, PINDEX fld, PASN_Object & field) { return seq.KnownExtensionDecodePER(*this, fld, field); } void PPER_Stream::SequenceKnownEncode(const PASN_Sequence & seq, PINDEX fld, const PASN_Object & field) { seq.KnownExtensionEncodePER(*this, fld, field); } BOOL PPER_Stream::SequenceUnknownDecode(PASN_Sequence & seq) { return seq.UnknownExtensionsDecodePER(*this); } void PPER_Stream::SequenceUnknownEncode(const PASN_Sequence & seq) { seq.UnknownExtensionsEncodePER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PPER_Stream::ArrayDecode(PASN_Array & array) { array.RemoveAll(); unsigned size; if (!array.ConstrainedLengthDecode(*this, size)) return FALSE; if (!array.SetSize(size)) return FALSE; for (PINDEX i = 0; i < (PINDEX)size; i++) { if (!array[i].Decode(*this)) return FALSE; } return TRUE; } void PPER_Stream::ArrayEncode(const PASN_Array & array) { PINDEX size = array.GetSize(); array.ConstrainedLengthEncode(*this, size); for (PINDEX i = 0; i < size; i++) array[i].Encode(*this); } /////////////////////////////////////////////////////////////////////// PPER_Stream::PPER_Stream(BOOL alignment) { aligned = alignment; } PPER_Stream::PPER_Stream(const PBYTEArray & bytes, BOOL alignment) : PASN_Stream(bytes) { aligned = alignment; } PPER_Stream::PPER_Stream(const BYTE * buf, PINDEX size, BOOL alignment) : PASN_Stream(buf, size) { aligned = alignment; } PPER_Stream & PPER_Stream::operator=(const PBYTEArray & bytes) { PBYTEArray::operator=(bytes); ResetDecoder(); aligned = TRUE; return *this; } unsigned PPER_Stream::GetBitsLeft() const { return (GetSize() - byteOffset)*8 - (8 - bitOffset); } BOOL PPER_Stream::Read(PChannel & chan) { ResetDecoder(); SetSize(0); // Get RFC1006 TPKT length BYTE tpkt[4]; if (!chan.ReadBlock(tpkt, sizeof(tpkt))) return FALSE; if (tpkt[0] != 3) // Only support version 3 return TRUE; PINDEX data_len = ((tpkt[2] << 8)|tpkt[3]) - 4; return chan.ReadBlock(GetPointer(data_len), data_len); } BOOL PPER_Stream::Write(PChannel & chan) { CompleteEncoding(); PINDEX size = GetSize(); // Put RFC1006 TPKT length BYTE tpkt[4]; tpkt[0] = 3; // Version 3 tpkt[1] = 0; PINDEX len = size + sizeof(tpkt); tpkt[2] = (BYTE)(len >> 8); tpkt[3] = (BYTE)len; return chan.Write(tpkt, sizeof(tpkt)) && chan.Write(theArray, size); } BOOL PPER_Stream::SingleBitDecode() { if (!CheckByteOffset(byteOffset) || ((GetSize() - byteOffset)*8 - (8 - bitOffset) == 0)) return FALSE; bitOffset--; BOOL value = (theArray[byteOffset] & (1 << bitOffset)) != 0; if (bitOffset == 0) { bitOffset = 8; byteOffset++; } return value; } void PPER_Stream::SingleBitEncode(BOOL value) { if (!CheckByteOffset(byteOffset)) return; if (byteOffset >= GetSize()) SetSize(byteOffset+10); bitOffset--; if (value) theArray[byteOffset] |= 1 << bitOffset; if (bitOffset == 0) ByteAlign(); } BOOL PPER_Stream::MultiBitDecode(unsigned nBits, unsigned & value) { if (nBits > sizeof(value)*8) return FALSE; unsigned bitsLeft = (GetSize() - byteOffset)*8 - (8 - bitOffset); if (nBits > bitsLeft) return FALSE; if (nBits == 0) { value = 0; return TRUE; } if (!CheckByteOffset(byteOffset)) return FALSE; if (nBits < bitOffset) { bitOffset -= nBits; value = (theArray[byteOffset] >> bitOffset) & ((1 << nBits) - 1); return TRUE; } value = theArray[byteOffset] & ((1 << bitOffset) - 1); nBits -= bitOffset; bitOffset = 8; byteOffset++; while (nBits >= 8) { value = (value << 8) | (BYTE)theArray[byteOffset]; byteOffset++; nBits -= 8; } if (nBits > 0) { bitOffset = 8 - nBits; value = (value << nBits) | ((BYTE)theArray[byteOffset] >> bitOffset); } return TRUE; } void PPER_Stream::MultiBitEncode(unsigned value, unsigned nBits) { PAssert(byteOffset != P_MAX_INDEX, PLogicError); if (nBits == 0) return; if (byteOffset+nBits/8+1 >= (unsigned)GetSize()) SetSize(byteOffset+10); // Make sure value is in bounds of bit available. if (nBits < sizeof(int)*8) value &= ((1 << nBits) - 1); if (!CheckByteOffset(byteOffset)) return; if (nBits < bitOffset) { bitOffset -= nBits; theArray[byteOffset] |= value << bitOffset; return; } nBits -= bitOffset; theArray[byteOffset] |= (BYTE)(value >> nBits); bitOffset = 8; byteOffset++; while (nBits >= 8) { nBits -= 8; theArray[byteOffset] = (BYTE)(value >> nBits); byteOffset++; } if (nBits > 0) { bitOffset = 8 - nBits; theArray[byteOffset] |= (BYTE)((value & ((1 << nBits)-1)) << bitOffset); } } BOOL PPER_Stream::SmallUnsignedDecode(unsigned & value) { // X.691 Section 10.6 if (!SingleBitDecode()) return MultiBitDecode(6, value); // 10.6.1 unsigned len; if (!LengthDecode(0, INT_MAX, len)) // 10.6.2 return FALSE; ByteAlign(); return MultiBitDecode(len*8, value); } void PPER_Stream::SmallUnsignedEncode(unsigned value) { if (value < 64) { MultiBitEncode(value, 7); return; } SingleBitEncode(1); // 10.6.2 PINDEX len = 4; if (value < 256) len = 1; else if (value < 65536) len = 2; else if (value < 0x1000000) len = 3; LengthEncode(len, 0, INT_MAX); // 10.9 ByteAlign(); MultiBitEncode(value, len*8); } BOOL PPER_Stream::UnsignedDecode(unsigned lower, unsigned upper, unsigned & value) { // X.691 section 10.5 if (lower == upper) { // 10.5.4 value = lower; return TRUE; } if (IsAtEnd()) return FALSE; unsigned range = (upper - lower) + 1; unsigned nBits = CountBits(range); if (aligned && (range == 0 || range > 255)) { // not 10.5.6 and not 10.5.7.1 if (nBits > 16) { // not 10.5.7.4 if (!LengthDecode(1, (nBits+7)/8, nBits)) // 12.2.6 return FALSE; nBits *= 8; } else if (nBits > 8) // not 10.5.7.2 nBits = 16; // 10.5.7.3 ByteAlign(); // 10.7.5.2 - 10.7.5.4 } if (!MultiBitDecode(nBits, value)) return FALSE; value += lower; // clamp value to upper limit if (value > upper) value = upper; return TRUE; } void PPER_Stream::UnsignedEncode(int value, unsigned lower, unsigned upper) { // X.691 section 10.5 if (lower == upper) // 10.5.4 return; unsigned range = (upper - lower) + 1; PINDEX nBits = CountBits(range); if ((unsigned)value < lower) value = 0; else value -= lower; if (aligned && (range == 0 || range > 255)) { // not 10.5.6 and not 10.5.7.1 if (nBits > 16) { // not 10.5.7.4 int numBytes = value == 0 ? 1 : (((CountBits(value + 1))+7)/8); LengthEncode(numBytes, 1, (nBits+7)/8); // 12.2.6 nBits = numBytes*8; } else if (nBits > 8) // not 10.5.7.2 nBits = 16; // 10.5.7.3 ByteAlign(); // 10.7.5.2 - 10.7.5.4 } MultiBitEncode(value, nBits); } BOOL PPER_Stream::LengthDecode(unsigned lower, unsigned upper, unsigned & len) { // X.691 section 10.9 if (upper != INT_MAX && !aligned) { if (upper - lower > 0xffff) return FALSE; // 10.9.4.2 unsupported unsigned base; if (!MultiBitDecode(CountBits(upper - lower + 1), base)) return FALSE; len = lower + base; // 10.9.4.1 // clamp value to upper limit if (len > upper) len = upper; return TRUE; } if (upper < 65536) // 10.9.3.3 return UnsignedDecode(lower, upper, len); // 10.9.3.5 ByteAlign(); if (IsAtEnd()) return FALSE; if (SingleBitDecode() == 0) { if (!MultiBitDecode(7, len)) // 10.9.3.6 return FALSE; // 10.9.3.8 unsupported } else if (SingleBitDecode() == 0) { if (!MultiBitDecode(14, len)) // 10.9.3.7 return FALSE; // 10.9.3.8 unsupported } // clamp value to upper limit if (len > upper) len = upper; return TRUE; } void PPER_Stream::LengthEncode(unsigned len, unsigned lower, unsigned upper) { // X.691 section 10.9 if (upper != INT_MAX && !aligned) { PAssert(upper - lower < 0x10000, PUnimplementedFunction); // 10.9.4.2 unsupperted MultiBitEncode(len - lower, CountBits(upper - lower + 1)); // 10.9.4.1 return; } if (upper < 65536) { // 10.9.3.3 UnsignedEncode(len, lower, upper); return; } ByteAlign(); if (len < 128) { MultiBitEncode(len, 8); // 10.9.3.6 return; } SingleBitEncode(TRUE); if (len < 0x4000) { MultiBitEncode(len, 15); // 10.9.3.7 return; } SingleBitEncode(TRUE); PAssertAlways(PUnimplementedFunction); // 10.9.3.8 unsupported } void PPER_Stream::AnyTypeEncode(const PASN_Object * value) { PPER_Stream substream; if (value != NULL) value->Encode(substream); substream.CompleteEncoding(); PINDEX nBytes = substream.GetSize(); if (nBytes == 0) { const BYTE null[1] = { 0 }; nBytes = sizeof(null); substream = PBYTEArray(null, nBytes, FALSE); } LengthEncode(nBytes, 0, INT_MAX); BlockEncode(substream.GetPointer(), nBytes); } /////////////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/asnxer.cxx0100644000176200056700000002000610251236761017467 0ustar releasepostincr/* * asnxer.cxx * * Abstract Syntax Notation 1 Encoding Rules * * Portable Windows Library * */ #include /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::NullDecode(PASN_Null &) { return TRUE; } void PXER_Stream::NullEncode(const PASN_Null &) { } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::BooleanDecode(PASN_Boolean & value) { value = (position->GetElement("true") != 0); return TRUE; } void PXER_Stream::BooleanEncode(const PASN_Boolean & value) { position->AddChild(new PXMLElement(position, value.GetValue() ? "true" : "false")); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::IntegerDecode(PASN_Integer & value) { value = position->GetData().AsInteger(); return TRUE; } void PXER_Stream::IntegerEncode(const PASN_Integer & value) { position->AddChild(new PXMLData(position, value.GetValue())); } /////////////////////////////////////////////////////////////////////// BOOL PASN_Enumeration::DecodeXER(PXER_Stream & strm) { value = strm.GetCurrentElement()->GetData().AsInteger(); return TRUE; } void PASN_Enumeration::EncodeXER(PXER_Stream & strm) const { PXMLElement * elem = strm.GetCurrentElement(); elem->AddChild(new PXMLData(elem, value)); } BOOL PXER_Stream::EnumerationDecode(PASN_Enumeration & value) { return value.DecodeXER(*this); } void PXER_Stream::EnumerationEncode(const PASN_Enumeration & value) { value.EncodeXER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::RealDecode(PASN_Real & value) { value = position->GetData().AsReal(); return TRUE; } void PXER_Stream::RealEncode(const PASN_Real & value) { position->AddChild(new PXMLData(position, PString(PString::Decimal, value.GetValue(), 10))); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::ObjectIdDecode(PASN_ObjectId & value) { value.SetValue(position->GetData()); return TRUE; } void PXER_Stream::ObjectIdEncode(const PASN_ObjectId & value) { position->AddChild(new PXMLData(position, value.AsString())); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::BitStringDecode(PASN_BitString & value) { PString bits = position->GetData(); PINDEX len = bits.GetLength(); value.SetSize(len); for (PINDEX i = 0 ; i < len ; i++) { if (bits[i] == '1') value.Set(i); else if (bits[i] != '0') return FALSE; } return TRUE; } void PXER_Stream::BitStringEncode(const PASN_BitString & value) { PString bits; for (PINDEX i = 0 ; i < (PINDEX)value.GetSize() ; i++) { bits += (value[i] ? '1' : '0'); } position->AddChild(new PXMLData(position, bits)); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::OctetStringDecode(PASN_OctetString & value) { char elem[3] = { 0, 0, 0 }; PString data = position->GetData(); PINDEX len = data.GetLength(); if (len % 2) return FALSE; BYTE * bin = value.GetPointer(len / 2); unsigned octet; for (PINDEX i = 0, j = 0 ; i < len ; i += 2, j++) { elem[0] = data[i]; elem[1] = data[i + 1]; sscanf(elem, "%x", &octet); bin[j] = (BYTE)octet; } return TRUE; } void PXER_Stream::OctetStringEncode(const PASN_OctetString & value) { PString bin; for (PINDEX i = 0 ; i < value.GetSize() ; i++) { unsigned v = (unsigned)value[i]; bin.sprintf("%02x", v); } position->AddChild(new PXMLData(position, bin)); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::ConstrainedStringDecode(PASN_ConstrainedString & value) { value = position->GetData(); return TRUE; } void PXER_Stream::ConstrainedStringEncode(const PASN_ConstrainedString & value) { position->AddChild(new PXMLData(position, value.GetValue())); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::BMPStringDecode(PASN_BMPString &) { return FALSE; } void PXER_Stream::BMPStringEncode(const PASN_BMPString &) { } /////////////////////////////////////////////////////////////////////// BOOL PASN_Choice::DecodeXER(PXER_Stream & strm) { PXMLElement * elem = strm.GetCurrentElement(); PXMLElement * choice_elem = (PXMLElement *)elem->GetElement(); if (!choice_elem || !choice_elem->IsElement()) return FALSE; for (unsigned int i = 0 ; i < namesCount ; i++) { if (choice_elem->GetName() == names[i].name) { tag = names[i].value; if (!CreateObject()) return FALSE; strm.SetCurrentElement(choice_elem); BOOL res = choice->Decode(strm); strm.SetCurrentElement(elem); return res; } } return FALSE; } void PASN_Choice::EncodeXER(PXER_Stream & strm) const { if (choice) { PXMLElement * elem = strm.GetCurrentElement(); strm.SetCurrentElement(elem->AddChild(new PXMLElement(elem, GetTagName()))); choice->Encode(strm); strm.SetCurrentElement(elem); } } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::ChoiceDecode(PASN_Choice & value) { return value.DecodeXER(*this); } void PXER_Stream::ChoiceEncode(const PASN_Choice & value) { value.EncodeXER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PASN_Sequence::PreambleDecodeXER(PXER_Stream &) { return TRUE; } void PASN_Sequence::PreambleEncodeXER(PXER_Stream &) const { } BOOL PASN_Sequence::KnownExtensionDecodeXER(PXER_Stream &, PINDEX, PASN_Object &) { return TRUE; } void PASN_Sequence::KnownExtensionEncodeXER(PXER_Stream &, PINDEX, const PASN_Object &) const { } BOOL PASN_Sequence::UnknownExtensionsDecodeXER(PXER_Stream &) { return TRUE; } void PASN_Sequence::UnknownExtensionsEncodeXER(PXER_Stream &) const { } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::SequencePreambleDecode(PASN_Sequence & seq) { return seq.PreambleDecodeXER(*this); } void PXER_Stream::SequencePreambleEncode(const PASN_Sequence & seq) { seq.PreambleEncodeXER(*this); } BOOL PXER_Stream::SequenceKnownDecode(PASN_Sequence & seq, PINDEX fld, PASN_Object & field) { return seq.KnownExtensionDecodeXER(*this, fld, field); } void PXER_Stream::SequenceKnownEncode(const PASN_Sequence & seq, PINDEX fld, const PASN_Object & field) { seq.KnownExtensionEncodeXER(*this, fld, field); } BOOL PXER_Stream::SequenceUnknownDecode(PASN_Sequence & seq) { return seq.UnknownExtensionsDecodeXER(*this); } void PXER_Stream::SequenceUnknownEncode(const PASN_Sequence & seq) { seq.UnknownExtensionsEncodeXER(*this); } /////////////////////////////////////////////////////////////////////// BOOL PXER_Stream::ArrayDecode(PASN_Array & array) { array.RemoveAll(); unsigned size = position->GetSize(); if (!array.SetSize(size)) return FALSE; PXMLElement * elem = position; BOOL res = TRUE; for (PINDEX i = 0; i < (PINDEX)size; i++) { position = (PXMLElement *)elem->GetElement(i); if (!position->IsElement() || !array[i].Decode(*this)) { res = FALSE; break; } } position = elem; return res; } void PXER_Stream::ArrayEncode(const PASN_Array & array) { PINDEX size = array.GetSize(); PXMLElement * elem = position; for (PINDEX i = 0; i < (PINDEX)size; i++) { PString name = array[i].GetTypeAsString(); name.Replace(" ", "_", TRUE); position = elem->AddChild(new PXMLElement(elem, name)); array[i].Encode(*this); } position = elem; } /////////////////////////////////////////////////////////////////////// PXER_Stream::PXER_Stream(PXMLElement * elem) : position(PAssertNULL(elem)) { } PXER_Stream::PXER_Stream(PXMLElement * elem, const PBYTEArray & bytes) : PASN_Stream(bytes), position(PAssertNULL(elem)) { } PXER_Stream::PXER_Stream(PXMLElement * elem, const BYTE * buf, PINDEX size) : PASN_Stream(buf, size), position(PAssertNULL(elem)) { } BOOL PXER_Stream::Read(PChannel &) { return FALSE; } BOOL PXER_Stream::Write(PChannel &) { return FALSE; } pwlib_v1_10_2/src/ptclib/cypher.cxx0100644000176200056700000010344310175626265017477 0ustar releasepostincr/* * cypher.cxx * * Encryption support classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: cypher.cxx,v $ * Revision 1.47 2005/01/26 05:37:57 csoutheren * Added ability to remove config file support * * Revision 1.46 2004/07/06 10:12:52 csoutheren * Added static integer o factory template to assist in ensuring factories are instantiated * * Revision 1.45 2004/06/29 12:22:22 rjongbloed * Fixed incorrect usage of result (now object rather than scalar), thanks Michal Zygmuntowicz * * Revision 1.44 2004/04/09 06:52:17 rjongbloed * Removed #pargma linker command for /delayload of DLL as documentations sais that * you cannot do this. * * Revision 1.43 2004/04/03 23:53:09 csoutheren * Added various changes to improce compatibility with the Sun Forte compiler * Thanks to Brian Cameron * Added detection of readdir_r version * * Revision 1.42 2004/03/23 05:59:17 csoutheren * Moved the Base64 routines into cypher.cxx, which is a more sensible * place and reduces the inclusion of unrelated code * * Revision 1.41 2004/03/14 10:03:47 rjongbloed * Fixed "security patch" that cleared entire object (including the vtable!) isntead of * clearing the "sensitive" information it was supposed to clear. * * Revision 1.40 2004/03/02 12:08:27 rjongbloed * Added missing pragmas to automatically include libraries for OpenSSL * * Revision 1.39 2004/02/23 23:52:19 csoutheren * Added pragmas to avoid every Windows application needing to include libs explicitly * * Revision 1.38 2003/04/27 23:52:57 craigs * Fixed problem with SHA1 not calling Start * * Revision 1.37 2003/04/17 12:12:59 robertj * Added windows library inclusion for optional openssl. * * Revision 1.36 2003/04/17 07:34:46 robertj * Fixed correct test for P_SSL * * Revision 1.35 2003/04/17 01:21:55 craigs * Fixed problem with delete'ing a void * * * Revision 1.33 2003/04/10 07:14:27 craigs * Fixed link problem in MD5 class * * Revision 1.32 2003/04/10 06:16:09 craigs * Added SHA-1 digest * * Revision 1.31 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.30 2002/06/05 12:29:15 craigs * Changes for gcc 3.1 * * Revision 1.29 2001/03/01 03:55:59 robertj * Fixed MSVC warnings. * * Revision 1.28 2001/02/28 21:10:47 craigs * Fixed problem in Decode function * Added randomizer to fill data in Decode * * Revision 1.27 2000/02/17 12:05:02 robertj * Added better random number generator after finding major flaws in MSVCRT version. * * Revision 1.26 1998/11/30 04:50:45 robertj * New directory structure * * Revision 1.25 1998/09/23 06:21:56 robertj * Added open source copyright license. * * Revision 1.24 1998/07/24 06:58:13 robertj * Improved robustness of encrypted data decoding, error on illegal tail block size. * * Revision 1.23 1998/02/16 00:14:36 robertj * Fixed ability to register in one stage instead of always having to use 2. * * Revision 1.22 1998/01/26 02:49:14 robertj * GNU support. * * Revision 1.21 1997/10/30 10:19:19 robertj * Fixed bug with having empty string in encrypted text. * * Revision 1.20 1997/10/10 10:43:41 robertj * Fixed bug in password encryption, missing string terminator. * * Revision 1.19 1997/08/04 10:39:53 robertj * Fixed bug for decoding empty string. * * Revision 1.18 1997/07/26 11:35:38 robertj * Fixed bug where illegal data errors were not propagated. * * Revision 1.17 1996/11/16 10:50:26 robertj * ?? * * Revision 1.16 1996/08/17 09:56:02 robertj * Fixed big endian processor platform conformance. * * Revision 1.15 1996/07/15 10:33:42 robertj * Changed memory block base64 conversion functions to be void *. * Changed memory block cypher conversion functions to be void *. * Changed endian classes to be memory mapped. * * Revision 1.14 1996/06/18 12:35:49 robertj * Fixed bug in registration when language is not English. * * Revision 1.13 1996/06/10 10:01:23 robertj * Fixed bug in getting cypher key, not copying all the bytes. * * Revision 1.12 1996/05/26 03:46:31 robertj * Compatibility to GNU 2.7.x * * Revision 1.11 1996/04/09 03:32:45 robertj * Fixed bug in registration so now works in time zones other than Eastern Australia. * * Revision 1.11 1996/04/08 05:18:38 robertj * Fixed bug in registering programs in a different time zone. * * Revision 1.10 1996/03/17 05:47:19 robertj * Changed secured config to allow for expiry dates. * * Revision 1.9 1996/03/16 04:37:20 robertj * Redesign of secure config to accommodate expiry dates and option values passed in security key code. * * Revision 1.8 1996/03/11 10:28:53 robertj * Fixed bug in C++ optimising compiler. * * Revision 1.7 1996/03/02 03:20:52 robertj * Fixed secured config parameters so leading/trailing blanks not significant. * * Revision 1.6 1996/02/25 11:22:42 robertj * Added assertion if try and SetValidation when not pending. * * Revision 1.5 1996/02/25 02:53:05 robertj * Further secure config development. * * Revision 1.4 1996/02/15 14:43:28 robertj * Allowed no secured config data at all to be "valid". All vars will then be guarenteed to default. * * Revision 1.3 1996/01/28 14:14:12 robertj * Further implementation of secure config. * * Revision 1.2 1996/01/28 02:49:00 robertj * Removal of MemoryPointer classes as usage didn't work for GNU. * Added the secure configuration mechanism for protecting applications. * * Revision 1.1 1996/01/23 13:05:58 robertj * Initial revision * */ #ifdef __GNUC__ #pragma implementation "cypher.h" #endif #define P_DISABLE_FACTORY_INSTANCES #include #include #include #include /////////////////////////////////////////////////////////////////////////////// // PBase64 PBase64::PBase64() { StartEncoding(); StartDecoding(); } void PBase64::StartEncoding(BOOL useCRLF) { encodedString = ""; encodeLength = nextLine = saveCount = 0; useCRLFs = useCRLF; } void PBase64::ProcessEncoding(const PString & str) { ProcessEncoding((const char *)str); } void PBase64::ProcessEncoding(const char * cstr) { ProcessEncoding((const BYTE *)cstr, strlen(cstr)); } void PBase64::ProcessEncoding(const PBYTEArray & data) { ProcessEncoding(data, data.GetSize()); } static const char Binary2Base64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; void PBase64::OutputBase64(const BYTE * data) { char * out = encodedString.GetPointer(((encodeLength+7)&~255) + 256); out[encodeLength++] = Binary2Base64[data[0] >> 2]; out[encodeLength++] = Binary2Base64[((data[0]&3)<<4) | (data[1]>>4)]; out[encodeLength++] = Binary2Base64[((data[1]&15)<<2) | (data[2]>>6)]; out[encodeLength++] = Binary2Base64[data[2]&0x3f]; if (++nextLine > 18) { // 76 columns if (useCRLFs) out[encodeLength++] = '\r'; out[encodeLength++] = '\n'; nextLine = 0; } } void PBase64::ProcessEncoding(const void * dataPtr, PINDEX length) { if (length == 0) return; const BYTE * data = (const BYTE *)dataPtr; while (saveCount < 3) { saveTriple[saveCount++] = *data++; if (--length == 0) return; } OutputBase64(saveTriple); PINDEX i; for (i = 0; i+2 < length; i += 3) OutputBase64(data+i); saveCount = length - i; switch (saveCount) { case 2 : saveTriple[0] = data[i++]; saveTriple[1] = data[i]; break; case 1 : saveTriple[0] = data[i]; } } PString PBase64::GetEncodedString() { PString retval = encodedString; encodedString = ""; encodeLength = 0; return retval; } PString PBase64::CompleteEncoding() { char * out = encodedString.GetPointer(encodeLength + 5)+encodeLength; switch (saveCount) { case 1 : *out++ = Binary2Base64[saveTriple[0] >> 2]; *out++ = Binary2Base64[(saveTriple[0]&3)<<4]; *out++ = '='; *out = '='; break; case 2 : *out++ = Binary2Base64[saveTriple[0] >> 2]; *out++ = Binary2Base64[((saveTriple[0]&3)<<4) | (saveTriple[1]>>4)]; *out++ = Binary2Base64[((saveTriple[1]&15)<<2)]; *out = '='; } return encodedString; } PString PBase64::Encode(const PString & str) { return Encode((const char *)str); } PString PBase64::Encode(const char * cstr) { return Encode((const BYTE *)cstr, strlen(cstr)); } PString PBase64::Encode(const PBYTEArray & data) { return Encode(data, data.GetSize()); } PString PBase64::Encode(const void * data, PINDEX length) { PBase64 encoder; encoder.ProcessEncoding(data, length); return encoder.CompleteEncoding(); } void PBase64::StartDecoding() { perfectDecode = TRUE; quadPosition = 0; decodedData.SetSize(0); decodeSize = 0; } BOOL PBase64::ProcessDecoding(const PString & str) { return ProcessDecoding((const char *)str); } BOOL PBase64::ProcessDecoding(const char * cstr) { static const BYTE Base642Binary[256] = { 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 99, 99, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 62, 99, 99, 99, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 99, 99, 99, 97, 99, 99, 99, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 99, 99, 99, 99, 99, 99, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 }; for (;;) { BYTE value = Base642Binary[(BYTE)*cstr++]; switch (value) { case 96 : // end of string return FALSE; case 97 : // '=' sign if (quadPosition == 3 || (quadPosition == 2 && *cstr == '=')) { quadPosition = 0; // Reset this to zero, as have a perfect decode return TRUE; // Stop decoding now as must be at end of data } perfectDecode = FALSE; // Ignore '=' sign but flag decode as suspect break; case 98 : // CRLFs break; // Ignore totally case 99 : // Illegal characters perfectDecode = FALSE; // Ignore rubbish but flag decode as suspect break; default : // legal value from 0 to 63 BYTE * out = decodedData.GetPointer(((decodeSize+1)&~255) + 256); switch (quadPosition) { case 0 : out[decodeSize] = (BYTE)(value << 2); break; case 1 : out[decodeSize++] |= (BYTE)(value >> 4); out[decodeSize] = (BYTE)((value&15) << 4); break; case 2 : out[decodeSize++] |= (BYTE)(value >> 2); out[decodeSize] = (BYTE)((value&3) << 6); break; case 3 : out[decodeSize++] |= (BYTE)value; break; } quadPosition = (quadPosition+1)&3; } } } PBYTEArray PBase64::GetDecodedData() { perfectDecode = quadPosition == 0; decodedData.SetSize(decodeSize); PBYTEArray retval = decodedData; retval.MakeUnique(); decodedData.SetSize(0); decodeSize = 0; return retval; } BOOL PBase64::GetDecodedData(void * dataBlock, PINDEX length) { perfectDecode = quadPosition == 0; BOOL bigEnough = length >= decodeSize; memcpy(dataBlock, decodedData, bigEnough ? decodeSize : length); decodedData.SetSize(0); decodeSize = 0; return bigEnough; } PString PBase64::Decode(const PString & str) { PBYTEArray data; Decode(str, data); return PString((const char *)(const BYTE *)data, data.GetSize()); } BOOL PBase64::Decode(const PString & str, PBYTEArray & data) { PBase64 decoder; decoder.ProcessDecoding(str); data = decoder.GetDecodedData(); return decoder.IsDecodeOK(); } BOOL PBase64::Decode(const PString & str, void * dataBlock, PINDEX length) { PBase64 decoder; decoder.ProcessDecoding(str); return decoder.GetDecodedData(dataBlock, length); } /////////////////////////////////////////////////////////////////////////////// // PMessageDigest PMessageDigest::PMessageDigest() { } void PMessageDigest::Process(const PString & str) { Process((const char *)str); } void PMessageDigest::Process(const char * cstr) { Process(cstr, strlen(cstr)); } void PMessageDigest::Process(const PBYTEArray & data) { Process(data, data.GetSize()); } void PMessageDigest::Process(const void * dataBlock, PINDEX length) { InternalProcess(dataBlock, length); } PString PMessageDigest::CompleteDigest() { Result result; CompleteDigest(result); return PBase64::Encode(result.GetPointer(), result.GetSize()); } void PMessageDigest::CompleteDigest(Result & result) { InternalCompleteDigest(result); } /////////////////////////////////////////////////////////////////////////////// // PMessageDigest5 PMessageDigest5::PMessageDigest5() { Start(); } // Constants for MD5Transform routine. #define S11 7 #define S12 12 #define S13 17 #define S14 22 #define S21 5 #define S22 9 #define S23 14 #define S24 20 #define S31 4 #define S32 11 #define S33 16 #define S34 23 #define S41 6 #define S42 10 #define S43 15 #define S44 21 // F, G, H and I are basic MD5 functions. #define F(x, y, z) (((x) & (y)) | ((~x) & (z))) #define G(x, y, z) (((x) & (z)) | ((y) & (~z))) #define H(x, y, z) ((x) ^ (y) ^ (z)) #define I(x, y, z) ((y) ^ ((x) | (~z))) // ROTATE_LEFT rotates x left n bits. #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) // FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. // Rotation is separate from addition to prevent recomputation. #define FF(a, b, c, d, x, s, ac) \ (a) += F ((b), (c), (d)) + (x) + (DWORD)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ #define GG(a, b, c, d, x, s, ac) \ (a) += G ((b), (c), (d)) + (x) + (DWORD)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ #define HH(a, b, c, d, x, s, ac) \ (a) += H ((b), (c), (d)) + (x) + (DWORD)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ #define II(a, b, c, d, x, s, ac) \ (a) += I ((b), (c), (d)) + (x) + (DWORD)(ac); \ (a) = ROTATE_LEFT ((a), (s)); \ (a) += (b); \ void PMessageDigest5::Transform(const BYTE * block) { DWORD a = state[0]; DWORD b = state[1]; DWORD c = state[2]; DWORD d = state[3]; DWORD x[16]; for (PINDEX i = 0; i < 16; i++) x[i] = ((PUInt32l*)block)[i]; /* Round 1 */ FF(a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ FF(d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ FF(c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ FF(b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ FF(a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ FF(d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ FF(c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ FF(b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ FF(a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ FF(d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ /* Round 2 */ GG(a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ GG(d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ GG(b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ GG(a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ GG(b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ GG(a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ GG(c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ GG(b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ GG(d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ GG(c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ /* Round 3 */ HH(a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ HH(d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ HH(a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ HH(d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ HH(c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ HH(d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ HH(c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ HH(b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ HH(a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ HH(b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ /* Round 4 */ II(a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ II(d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ II(b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ II(d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ II(b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ II(a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ II(c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ II(a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ II(c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ II(b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ state[0] += a; state[1] += b; state[2] += c; state[3] += d; // Zeroize sensitive information. memset(x, 0, sizeof(x)); } void PMessageDigest5::Start() { // Load magic initialization constants. state[0] = 0x67452301; state[1] = 0xefcdab89; state[2] = 0x98badcfe; state[3] = 0x10325476; count = 0; } void PMessageDigest5::InternalProcess(const void * dataPtr, PINDEX length) { const BYTE * data = (const BYTE *)dataPtr; // Compute number of bytes mod 64 PINDEX index = (PINDEX)((count >> 3) & 0x3F); PINDEX partLen = 64 - index; // Update number of bits count += (PUInt64)length << 3; // See if have a buffer full PINDEX i; if (length < partLen) i = 0; else { // Transform as many times as possible. memcpy(&buffer[index], data, partLen); Transform(buffer); for (i = partLen; i + 63 < length; i += 64) Transform(&data[i]); index = 0; } // Buffer remaining input memcpy(&buffer[index], &data[i], length-i); } void PMessageDigest5::InternalCompleteDigest(Result & result) { // Put the count into bytes platform independently PUInt64l countBytes = count; // Pad out to 56 mod 64. PINDEX index = (PINDEX)((count >> 3) & 0x3f); PINDEX padLen = (index < 56) ? (56 - index) : (120 - index); static BYTE const padding[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; Process(padding, padLen); // Append length Process(&countBytes, sizeof(countBytes)); // Store state in digest PUInt32l * valuep = (PUInt32l *)result.value.GetPointer(4 * sizeof(PUInt32l)); for (PINDEX i = 0; i < PARRAYSIZE(state); i++) valuep[i] = state[i]; // Zeroize sensitive information. memset(buffer, 0, sizeof(buffer)); memset(state, 0, sizeof(state)); } PString PMessageDigest5::Encode(const PString & str) { return Encode((const char *)str); } void PMessageDigest5::Encode(const PString & str, Result & result) { Encode((const char *)str, result); } PString PMessageDigest5::Encode(const char * cstr) { return Encode((const BYTE *)cstr, strlen(cstr)); } void PMessageDigest5::Encode(const char * cstr, Result & result) { Encode((const BYTE *)cstr, strlen(cstr), result); } PString PMessageDigest5::Encode(const PBYTEArray & data) { return Encode(data, data.GetSize()); } void PMessageDigest5::Encode(const PBYTEArray & data, Result & result) { Encode(data, data.GetSize(), result); } PString PMessageDigest5::Encode(const void * data, PINDEX length) { Result result; Encode(data, length, result); return PBase64::Encode(result.GetPointer(), result.GetSize()); } void PMessageDigest5::Encode(const void * data, PINDEX len, Result & result) { PMessageDigest5 stomach; stomach.Process(data, len); stomach.CompleteDigest(result); } //// backwards compatability functions void PMessageDigest5::Encode(const PString & str, Code & result) { Encode((const char *)str, result); } void PMessageDigest5::Encode(const char * cstr, Code & result) { Encode((const BYTE *)cstr, strlen(cstr), result); } void PMessageDigest5::Encode(const PBYTEArray & data, Code & result) { Encode(data, data.GetSize(), result); } void PMessageDigest5::Encode(const void * data, PINDEX len, Code & codeResult) { PMessageDigest5 stomach; stomach.Process(data, len); stomach.Complete(codeResult); } PString PMessageDigest5::Complete() { Code result; Complete(result); return PBase64::Encode(&result, sizeof(result)); } void PMessageDigest5::Complete(Code & codeResult) { Result result; InternalCompleteDigest(result); memcpy(codeResult.value, result.GetPointer(), sizeof(codeResult.value)); } /////////////////////////////////////////////////////////////////////////////// // PMessageDigestSHA1 #if P_SSL #include #ifdef _MSC_VER #pragma comment(lib, P_SSL_LIB1) #pragma comment(lib, P_SSL_LIB2) #endif PMessageDigestSHA1::PMessageDigestSHA1() { shaContext = NULL; Start(); } PMessageDigestSHA1::~PMessageDigestSHA1() { delete (SHA_CTX *)shaContext; } void PMessageDigestSHA1::Start() { delete (SHA_CTX *)shaContext; shaContext = new SHA_CTX; SHA1_Init((SHA_CTX *)shaContext); } void PMessageDigestSHA1::InternalProcess(const void * data, PINDEX len) { if (shaContext == NULL) return; SHA1_Update((SHA_CTX *)shaContext, data, (unsigned long)len); } void PMessageDigestSHA1::InternalCompleteDigest(Result & result) { if (shaContext == NULL) return; SHA1_Final(result.value.GetPointer(20), (SHA_CTX *)shaContext); delete ((SHA_CTX *)shaContext); shaContext = NULL; } PString PMessageDigestSHA1::Encode(const PString & str) { return Encode((const char *)str); } void PMessageDigestSHA1::Encode(const PString & str, Result & result) { Encode((const char *)str, result); } PString PMessageDigestSHA1::Encode(const char * cstr) { return Encode((const BYTE *)cstr, strlen(cstr)); } void PMessageDigestSHA1::Encode(const char * cstr, Result & result) { Encode((const BYTE *)cstr, strlen(cstr), result); } PString PMessageDigestSHA1::Encode(const PBYTEArray & data) { return Encode(data, data.GetSize()); } void PMessageDigestSHA1::Encode(const PBYTEArray & data, Result & result) { Encode(data, data.GetSize(), result); } PString PMessageDigestSHA1::Encode(const void * data, PINDEX length) { Result result; Encode(data, length, result); return PBase64::Encode(result.GetPointer(), result.GetSize()); } void PMessageDigestSHA1::Encode(const void * data, PINDEX len, Result & result) { PMessageDigestSHA1 stomach; stomach.Process(data, len); stomach.CompleteDigest(result); } #endif /////////////////////////////////////////////////////////////////////////////// // PCypher PCypher::PCypher(PINDEX blkSize, BlockChainMode mode) : blockSize(blkSize), chainMode(mode) { } PCypher::PCypher(const void * keyData, PINDEX keyLength, PINDEX blkSize, BlockChainMode mode) : key((const BYTE *)keyData, keyLength), blockSize(blkSize), chainMode(mode) { } PString PCypher::Encode(const PString & str) { return Encode((const char *)str, str.GetLength()); } PString PCypher::Encode(const PBYTEArray & clear) { return Encode((const BYTE *)clear, clear.GetSize()); } PString PCypher::Encode(const void * data, PINDEX length) { PBYTEArray coded; Encode(data, length, coded); return PBase64::Encode(coded); } void PCypher::Encode(const PBYTEArray & clear, PBYTEArray & coded) { Encode((const BYTE *)clear, clear.GetSize(), coded); } void PCypher::Encode(const void * data, PINDEX length, PBYTEArray & coded) { PAssert((blockSize%8) == 0, PUnsupportedFeature); Initialise(TRUE); const BYTE * in = (const BYTE *)data; BYTE * out = coded.GetPointer( blockSize > 1 ? (length/blockSize+1)*blockSize : length); while (length >= blockSize) { EncodeBlock(in, out); in += blockSize; out += blockSize; length -= blockSize; } if (blockSize > 1) { PBYTEArray extra(blockSize); PINDEX i; for (i = 0; i < length; i++) extra[i] = *in++; PTime now; PRandom rand((DWORD)now.GetTimestamp()); for (; i < blockSize-1; i++) extra[i] = (BYTE)rand.Generate(); extra[blockSize-1] = (BYTE)length; EncodeBlock(extra, out); } } PString PCypher::Decode(const PString & cypher) { PString clear; if (Decode(cypher, clear)) return clear; return PString(); } BOOL PCypher::Decode(const PString & cypher, PString & clear) { clear = PString(); PBYTEArray clearText; if (!Decode(cypher, clearText)) return FALSE; if (clearText.IsEmpty()) return TRUE; PINDEX sz = clearText.GetSize(); memcpy(clear.GetPointer(sz+1), (const BYTE *)clearText, sz); return TRUE; } BOOL PCypher::Decode(const PString & cypher, PBYTEArray & clear) { PBYTEArray coded; if (!PBase64::Decode(cypher, coded)) return FALSE; return Decode(coded, clear); } PINDEX PCypher::Decode(const PString & cypher, void * data, PINDEX length) { PBYTEArray coded; PBase64::Decode(cypher, coded); PBYTEArray clear; if (!Decode(coded, clear)) return 0; memcpy(data, clear, PMIN(length, clear.GetSize())); return clear.GetSize(); } PINDEX PCypher::Decode(const PBYTEArray & coded, void * data, PINDEX length) { PBYTEArray clear; if (!Decode(coded, clear)) return 0; memcpy(data, clear, PMIN(length, clear.GetSize())); return clear.GetSize(); } BOOL PCypher::Decode(const PBYTEArray & coded, PBYTEArray & clear) { PAssert((blockSize%8) == 0, PUnsupportedFeature); if (coded.IsEmpty() || (coded.GetSize()%blockSize) != 0) return FALSE; Initialise(FALSE); const BYTE * in = coded; PINDEX length = coded.GetSize(); BYTE * out = clear.GetPointer(length); for (PINDEX count = 0; count < length; count += blockSize) { DecodeBlock(in, out); in += blockSize; out += blockSize; } if (blockSize != 1) { if (*--out >= blockSize) return FALSE; clear.SetSize(length - blockSize + *out); } return TRUE; } /////////////////////////////////////////////////////////////////////////////// // PTEACypher PTEACypher::PTEACypher(BlockChainMode chainMode) : PCypher(8, chainMode) { GenerateKey(*(Key*)key.GetPointer(sizeof(Key))); } PTEACypher::PTEACypher(const Key & keyData, BlockChainMode chainMode) : PCypher(&keyData, sizeof(Key), 8, chainMode) { } void PTEACypher::SetKey(const Key & newKey) { memcpy(key.GetPointer(sizeof(Key)), &newKey, sizeof(Key)); } void PTEACypher::GetKey(Key & newKey) const { memcpy(&newKey, key, sizeof(Key)); } void PTEACypher::GenerateKey(Key & newKey) { static PRandom rand; //=1 // Explicitly set seed if need known random sequence for (size_t i = 0; i < sizeof(Key); i++) newKey.value[i] = (BYTE)rand; } static const DWORD TEADelta = 0x9e3779b9; // Magic number for key schedule void PTEACypher::Initialise(BOOL) { k0 = ((const PUInt32l *)(const BYTE *)key)[0]; k1 = ((const PUInt32l *)(const BYTE *)key)[1]; k2 = ((const PUInt32l *)(const BYTE *)key)[2]; k3 = ((const PUInt32l *)(const BYTE *)key)[3]; } void PTEACypher::EncodeBlock(const void * in, void * out) { DWORD y = ((PUInt32b*)in)[0]; DWORD z = ((PUInt32b*)in)[1]; DWORD sum = 0; for (PINDEX count = 32; count > 0; count--) { sum += TEADelta; // Magic number for key schedule y += (z<<4)+k0 ^ z+sum ^ (z>>5)+k1; z += (y<<4)+k2 ^ y+sum ^ (y>>5)+k3; /* end cycle */ } ((PUInt32b*)out)[0] = y; ((PUInt32b*)out)[1] = z; } void PTEACypher::DecodeBlock(const void * in, void * out) { DWORD y = ((PUInt32b*)in)[0]; DWORD z = ((PUInt32b*)in)[1]; DWORD sum = TEADelta<<5; for (PINDEX count = 32; count > 0; count--) { z -= (y<<4)+k2 ^ y+sum ^ (y>>5)+k3; y -= (z<<4)+k0 ^ z+sum ^ (z>>5)+k1; sum -= TEADelta; // Magic number for key schedule } ((PUInt32b*)out)[0] = y; ((PUInt32b*)out)[1] = z; } /////////////////////////////////////////////////////////////////////////////// // PSecureConfig #ifdef P_CONFIG_FILE static const char DefaultSecuredOptions[] = "Secured Options"; static const char DefaultSecurityKey[] = "Validation"; static const char DefaultExpiryDateKey[] = "Expiry Date"; static const char DefaultOptionBitsKey[] = "Option Bits"; static const char DefaultPendingPrefix[] = "Pending:"; PSecureConfig::PSecureConfig(const PTEACypher::Key & prodKey, const PStringArray & secKeys, Source src) : PConfig(PString(DefaultSecuredOptions), src), securedKeys(secKeys), securityKey(DefaultSecurityKey), expiryDateKey(DefaultExpiryDateKey), optionBitsKey(DefaultOptionBitsKey), pendingPrefix(DefaultPendingPrefix) { productKey = prodKey; } PSecureConfig::PSecureConfig(const PTEACypher::Key & prodKey, const char * const * secKeys, PINDEX count, Source src) : PConfig(PString(DefaultSecuredOptions), src), securedKeys(count, secKeys), securityKey(DefaultSecurityKey), expiryDateKey(DefaultExpiryDateKey), optionBitsKey(DefaultOptionBitsKey), pendingPrefix(DefaultPendingPrefix) { productKey = prodKey; } void PSecureConfig::GetProductKey(PTEACypher::Key & prodKey) const { prodKey = productKey; } PSecureConfig::ValidationState PSecureConfig::GetValidation() const { PString str; BOOL allEmpty = TRUE; PMessageDigest5 digestor; for (PINDEX i = 0; i < securedKeys.GetSize(); i++) { str = GetString(securedKeys[i]); if (!str.IsEmpty()) { digestor.Process(str.Trim()); allEmpty = FALSE; } } str = GetString(expiryDateKey); if (!str.IsEmpty()) { digestor.Process(str); allEmpty = FALSE; } str = GetString(optionBitsKey); if (!str.IsEmpty()) { digestor.Process(str); allEmpty = FALSE; } PString vkey = GetString(securityKey); if (allEmpty) return (!vkey || GetBoolean(pendingPrefix + securityKey)) ? Pending : Defaults; PMessageDigest5::Code code; digestor.Complete(code); if (vkey.IsEmpty()) return Invalid; BYTE info[sizeof(code)+1+sizeof(DWORD)]; PTEACypher crypt(productKey); if (crypt.Decode(vkey, info, sizeof(info)) != sizeof(info)) return Invalid; if (memcmp(info, &code, sizeof(code)) != 0) return Invalid; PTime now; if (now > GetTime(expiryDateKey)) return Expired; return IsValid; } BOOL PSecureConfig::ValidatePending() { if (GetValidation() != Pending) return FALSE; PString vkey = GetString(securityKey); if (vkey.IsEmpty()) return TRUE; PMessageDigest5::Code code; BYTE info[sizeof(code)+1+sizeof(DWORD)]; PTEACypher crypt(productKey); if (crypt.Decode(vkey, info, sizeof(info)) != sizeof(info)) return FALSE; PTime expiryDate(0, 0, 0, 1, info[sizeof(code)]&15, (info[sizeof(code)]>>4)+1996, PTime::GMT); PString expiry = expiryDate.AsString("d MMME yyyy", PTime::GMT); // This is for alignment problems on processors that care about such things PUInt32b opt; void * dst = &opt; void * src = &info[sizeof(code)+1]; memcpy(dst, src, sizeof(opt)); PString options(PString::Unsigned, (DWORD)opt); PMessageDigest5 digestor; PINDEX i; for (i = 0; i < securedKeys.GetSize(); i++) digestor.Process(GetString(pendingPrefix + securedKeys[i]).Trim()); digestor.Process(expiry); digestor.Process(options); digestor.Complete(code); if (memcmp(info, &code, sizeof(code)) != 0) return FALSE; SetString(expiryDateKey, expiry); SetString(optionBitsKey, options); for (i = 0; i < securedKeys.GetSize(); i++) { PString str = GetString(pendingPrefix + securedKeys[i]); if (!str.IsEmpty()) SetString(securedKeys[i], str); DeleteKey(pendingPrefix + securedKeys[i]); } DeleteKey(pendingPrefix + securityKey); return TRUE; } void PSecureConfig::ResetPending() { if (GetBoolean(pendingPrefix + securityKey)) { for (PINDEX i = 0; i < securedKeys.GetSize(); i++) DeleteKey(securedKeys[i]); } else { SetBoolean(pendingPrefix + securityKey, TRUE); for (PINDEX i = 0; i < securedKeys.GetSize(); i++) { PString str = GetString(securedKeys[i]); if (!str.IsEmpty()) SetString(pendingPrefix + securedKeys[i], str); DeleteKey(securedKeys[i]); } } DeleteKey(expiryDateKey); DeleteKey(optionBitsKey); } #endif // P_CONFIG_FILE /////////////////////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/delaychan.cxx0100644000176200056700000000720707625112500020122 0ustar releasepostincr/* * delaychan.cxx * * Class for controlling the timing of data passing through it. * * Portable Windows Library * * Copyright (c) 2001 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: delaychan.cxx,v $ * Revision 1.5 2003/02/20 08:43:44 rogerh * On Mac OS X, the thread sleep() (which uses select) is not as fine grained * as usleep. So use usleep(). Tested by Shawn. * * Revision 1.4 2002/02/26 00:42:13 robertj * Fixed MSVC warning. * * Revision 1.3 2002/02/25 11:05:02 rogerh * New Delay code which solves the accumulated error problem. Based on ideas * by Tomasz Motylewski , Roger and Craig. * * Revision 1.2 2002/01/15 03:56:03 craigs * Added PAdaptiveDelay class * * Revision 1.1 2001/07/10 03:07:07 robertj * Added queue channel and delay channel classes to ptclib. * */ #ifdef __GNUC__ #pragma implementation "delaychan.h" #endif #include #include ///////////////////////////////////////////////////////// PAdaptiveDelay::PAdaptiveDelay() { firstTime = TRUE; } void PAdaptiveDelay::Restart() { firstTime = TRUE; } BOOL PAdaptiveDelay::Delay(int frameTime) { if (firstTime) { firstTime = FALSE; targetTime = PTime(); // targetTime is the time we want to delay to return TRUE; } // Set the new target targetTime += frameTime; // Calculate the sleep time so we delay until the target time PTimeInterval delay = targetTime - PTime(); int sleep_time = (int)delay.GetMilliSeconds(); if (sleep_time > 0) #if defined(P_LINUX) || defined(P_MACOSX) usleep(sleep_time * 1000); #else PThread::Current()->Sleep(sleep_time); #endif return sleep_time <= -frameTime; } ///////////////////////////////////////////////////////// PDelayChannel::PDelayChannel(Mode m, unsigned delay, PINDEX size, unsigned max, unsigned min) { mode = m; frameDelay = delay; frameSize = size; maximumSlip = -PTimeInterval(max); minimumDelay = min; } BOOL PDelayChannel::Read(void * buf, PINDEX count) { if (mode != DelayWritesOnly) Wait(count, nextReadTick); return PIndirectChannel::Read(buf, count); } BOOL PDelayChannel::Write(const void * buf, PINDEX count) { if (mode != DelayReadsOnly) Wait(count, nextWriteTick); return PIndirectChannel::Write(buf, count); } void PDelayChannel::Wait(PINDEX count, PTimeInterval & nextTick) { PTimeInterval thisTick = PTimer::Tick(); if (nextTick == 0) nextTick = thisTick; PTimeInterval delay = nextTick - thisTick; if (delay > maximumSlip) PTRACE(6, "Delay\t" << delay); else { PTRACE(6, "Delay\t" << delay << " ignored, too large"); nextTick = thisTick; delay = 0; } if (frameSize > 0) nextTick += count*frameDelay/frameSize; else nextTick += frameDelay; if (delay > minimumDelay) PThread::Current()->Sleep(delay); } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/dtmf.cxx0100644000176200056700000001766710343317555017147 0ustar releasepostincr/* * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * * Extract DTMF signals from 16 bit PCM audio * * Originally written by Poul-Henning Kamp * Made into a C++ class by Roger Hardiman , January 2002 * * $Log: dtmf.cxx,v $ * Revision 1.14 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.13 2005/01/25 06:35:27 csoutheren * Removed warnings under MSVC * * Revision 1.12 2004/11/17 10:13:14 csoutheren * Fixed compilation with gcc 4.0.0 * * Revision 1.11 2004/09/09 23:50:49 csoutheren * Fixed problem with duplicate definition of sinetab causing problems * * Revision 1.10 2004/09/09 05:23:38 dereksmithies * Add utility function to report on dtmf characters used. * * Revision 1.9 2004/09/09 04:22:46 csoutheren * Added sine table for DTMF encoder * * Revision 1.8 2004/09/09 04:00:01 csoutheren * Added DTMF encoding functions * * Revision 1.7 2003/03/17 07:39:25 robertj * Fixed possible invalid value causing DTMF detector to crash. * * Revision 1.6 2002/02/20 02:59:34 yurik * Added end of line to trace statement * * Revision 1.5 2002/02/12 10:21:56 rogerh * Stop sending '?' when a bad DTMF tone is detected. * * Revision 1.4 2002/01/24 11:14:45 rogerh * Back out robert's change. It did not work (no sign extending) * and replace it with a better solution which should be happy on both big * endian and little endian systems. * * Revision 1.3 2002/01/24 10:40:17 rogerh * Add version log * * */ #ifdef __GNUC__ #pragma implementation "dtmf.h" #endif #include #include #include /* Integer math scaling factor */ #define FSC (1<<12) /* This is the Q of the filter (pole radius) */ #define POLRAD .99 #define P2 ((int)(POLRAD*POLRAD*FSC)) PDTMFDecoder::PDTMFDecoder() { // Initialise the class int i,kk; for (kk = 0; kk < 8; kk++) { y[kk] = h[kk] = k[kk] = 0; } nn = 0; ia = 0; so = 0; for (i = 0; i < 256; i++) { key[i] = '?'; } /* We encode the tones in 8 bits, translate those to symbol */ key[0x11] = '1'; key[0x12] = '4'; key[0x14] = '7'; key[0x18] = '*'; key[0x21] = '2'; key[0x22] = '5'; key[0x24] = '8'; key[0x28] = '0'; key[0x41] = '3'; key[0x42] = '6'; key[0x44] = '9'; key[0x48] = '#'; key[0x81] = 'A'; key[0x82] = 'B'; key[0x84] = 'C'; key[0x88] = 'D'; /* The frequencies we're trying to detect */ /* These are precalculated to save processing power */ /* static int dtmf[8] = {697, 770, 852, 941, 1209, 1336, 1477, 1633}; */ /* p1[kk] = (-cos(2 * 3.141592 * dtmf[kk] / 8000.0) * FSC) */ p1[0] = -3497; p1[1] = -3369; p1[2] = -3212; p1[3] = -3027; p1[4] = -2384; p1[5] = -2040; p1[6] = -1635; p1[7] = -1164; } PString PDTMFDecoder::Decode(const void *buf, PINDEX bytes) { int x; int s, kk; int c, d, f, n; short *buffer = (short *)buf; PINDEX numSamples = bytes >> 1; PString keyString; PINDEX pos; for (pos = 0; pos < numSamples; pos++) { /* Read (and scale) the next 16 bit sample */ x = ((int)(*buffer++)) / (32768/FSC); /* Input amplitude */ if (x > 0) ia += (x - ia) / 128; else ia += (-x - ia) / 128; /* For each tone */ s = 0; for(kk = 0; kk < 8; kk++) { /* Turn the crank */ c = (P2 * (x - k[kk])) / FSC; d = x + c; f = (p1[kk] * (d - h[kk])) / FSC; n = x - k[kk] - c; k[kk] = h[kk] + f; h[kk] = f + d; /* Detect and Average */ if (n > 0) y[kk] += (n - y[kk]) / 64; else y[kk] += (-n - y[kk]) / 64; /* Threshold */ if (y[kk] > FSC/10 && y[kk] > ia) s |= 1 << kk; } /* Hysteresis and noise supressor */ if (s != so) { nn = 0; so = s; } else if (nn++ == 520 && s < 256 && key[s] != '?') { PTRACE(3,"DTMF\tDetected '" << key[s] << "' in PCM-16 stream"); keyString += key[s]; } } return keyString; } //////////////////////////////////////////////////////////////////////////////////////////// // // implement a PCM tone generator // // For reference, the US tones are (as indictated by http://www.elexp.com/t_tele.htm) // // Dial Tone 350 Hz + 440 Hz Continuous // Ring Back 440 Hz + 480 Hz ON 2.0, OFF 4.0 seconds // Busy 480 Hz + 620 Hz On 0.5, OFF 0.5 seconds // // this code is based on code copied from http://www-users.cs.york.ac.uk/~fisher/telecom/tones/teletones.C #define DTMF_LEN 100 #ifndef M_PI #define M_PI 3.1415926 #endif #define TWOPI (2.0 * M_PI) #define MAXSTR 512 #define SAMPLERATE 8000 #define SINEBITS 11 #define SINELEN (1 << SINEBITS) #define TWO32 4294967296.0 /* 2^32 */ static double amptab[2] = { 8191.75, 16383.5 }; static inline int ifix(double x) { return (x >= 0.0) ? (int) (x+0.5) : (int) (x-0.5); } // given frequency f, return corresponding phase increment static inline int phinc(double f) { return ifix(TWO32 * f / (double) SAMPLERATE); } static char dtmfSymbols[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', '*', '#' }; char PDTMFEncoder::DtmfChar(PINDEX i) { PAssert(i < 16, "Only 16 dtmf symbols. Index too large"); return dtmfSymbols[i]; } // DTMF frequencies as per http://www.commlinx.com.au/DTMF_frequencies.htm static double dtmfFreqs[16][2] = { { 941.0, 1336.0 }, // 0 { 697.0, 1209.0 }, // 1 { 697.0, 1336.0 }, // 2 { 697.0, 1477.0 }, // 3 { 770.0, 1209.0 }, // 4 { 770.0, 1336.0 }, // 5 { 770.0, 1477.0 }, // 6 { 852.0, 1209.0 }, // 7 { 852.0, 1336.0 }, // 8 { 852.0, 1477.0 }, // 9 { 697.0, 1633.0 }, // A { 770.0, 1633.0 }, // B { 852.0, 1633.0 }, // C { 941.0, 1633.0 }, // D { 941.0, 1209.0 }, // * { 941.0, 1477.0 } // # }; //////////////////////////////////////////////////////////////////////// double PDTMFEncoder::sinetab[1 << 11]; PMutex & PDTMFEncoder::GetMutex() { static PMutex mutex; return mutex; } void PDTMFEncoder::MakeSineTable() { PWaitAndSignal m(GetMutex()); static BOOL sineTabInit = FALSE; if (!sineTabInit) { for (int k = 0; k < SINELEN; k++) { double th = TWOPI * (double) k / (double) SINELEN; double v = sin(th); sinetab[k] = v; } sineTabInit = TRUE; } } void PDTMFEncoder::AddTone(char _digit, unsigned len) { char digit = (char)toupper(_digit); if ('0' <= digit && digit <= '9') digit = (char)(digit - '0'); else if ('A' <= digit && digit <= 'D') digit = (char)(digit + 10 - 'A'); else if (digit == '*') digit = 14; else if (digit == '#') digit = 15; else return; AddTone(dtmfFreqs[(int)digit][0], dtmfFreqs[(int)digit][1], len); } void PDTMFEncoder::AddTone(const PString & str, unsigned len) { PINDEX i; for (i = 0; i < str.GetLength(); i++) AddTone(str[i], len); } void PDTMFEncoder::AddTone(double f1, double f2, unsigned ms) { int ak = 0; MakeSineTable(); PINDEX dataPtr = GetSize(); double amp = amptab[ak]; int phinc1 = phinc(f1), phinc2 = phinc(f2); int ns = ms * (SAMPLERATE/1000); unsigned int ptr1 = 0, ptr2 = 0; for (int n = 0; n < ns; n++) { double val = amp * (sine(ptr1) + sine(ptr2)); int ival = ifix(val); if (ival < -32768) ival = -32768; else if (val > 32767) ival = 32767; if (dataPtr == GetSize()) SetSize(GetSize() + 1024); (*this)[dataPtr++] = (BYTE)(ival & 0xff); (*this)[dataPtr++] = (BYTE)(ival >> 8); ptr1 += phinc1; ptr2 += phinc2; } SetSize(dataPtr); } //////////////////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/enum.cxx0100644000176200056700000002654010343317555017147 0ustar releasepostincr/* * enum.cxx * * Portable Windows Library * * Copyright (C) 2004 Post Increment * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Post Increment * * Contributor(s): ______________________________________. * * $Log: enum.cxx,v $ * Revision 1.9 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.8 2005/08/31 05:55:03 shorne * Reworked ENUM to craigs' exacting requirements * * Revision 1.7 2005/08/31 04:07:53 shorne * added ability to set ENUM Servers at runtime * * Revision 1.6 2004/08/04 10:26:39 csoutheren * Changed service to be case insignificant * * Revision 1.5 2004/08/03 13:37:45 csoutheren * Added ability to set ENUM search path from environment variable * * Revision 1.4 2004/07/19 13:55:41 csoutheren * Work-around for crash on gcc 3.5-20040704 * * Revision 1.3 2004/06/05 01:58:37 rjongbloed * Fixed MSVC 6 compatibility * * Revision 1.2 2004/05/31 23:14:17 csoutheren * Fixed warnings under VS.net and fixed problem with SRV records when returning multiple records * * Revision 1.1 2004/05/31 13:56:37 csoutheren * Added implementation of ENUM resolution of E.164 numbers by DNS * */ #ifdef __GNUC__ #pragma implementation "enum.h" #endif #include #include #include #if P_DNS #ifdef _WIN32 #define PATH_SEP ";" #else #define PATH_SEP ":" #endif static const char * PWLIB_ENUM_PATH = "PWLIB_ENUM_PATH"; /////////////////////////////////////////////////////////////////////// PObject::Comparison PDNS::NAPTRRecord::Compare(const PObject & obj) const { const NAPTRRecord * other = dynamic_cast(&obj); if (other == NULL) return LessThan; if (order < other->order) return LessThan; else if (order > other->order) return GreaterThan; if (preference < other->preference) return LessThan; else if (preference > other->preference) return GreaterThan; return EqualTo; } void PDNS::NAPTRRecord::PrintOn(ostream & strm) const { strm << "order=" << order << ", " << "preference=" << preference << ", " << "flags=" << flags << ", " << "service=" << service << ", " << "regex=" << regex << ", " << "replacement=" << replacement; } /////////////////////////////////////////////////////////////////////// struct NAPTR_DNS { PUInt16b order; PUInt16b preference; char info[1]; char * GetFlagsBase() const { return (char *)&info; } int GetFlagsLen() const { return (int)GetFlagsBase()[0]; } char * GetServiceBase() const { return GetFlagsBase() + 1 + GetFlagsLen(); } int GetServiceLen() const { return (int)GetServiceBase()[0]; } char * GetRegexBase() const { return GetServiceBase() + 1 + GetServiceLen(); } int GetRegexLen() const { return (int)GetRegexBase()[0]; } char * GetReplacementBase() const { return GetRegexBase() + 1 + GetRegexLen(); } int GetReplacementLen() const { return (int)GetReplacementBase()[0]; } PString GetFlags() const { return PString(GetFlagsBase()+1, GetFlagsLen()); } PString GetService() const { return PString(GetServiceBase()+1, GetServiceLen()); } PString GetRegex() const { return PString(GetRegexBase()+1, GetRegexLen()); } PString GetReplacement() const { return PString(GetReplacementBase()+1, GetReplacementLen()); } }; PDNS::NAPTRRecord * PDNS::NAPTRRecordList::HandleDNSRecord(PDNS_RECORD dnsRecord, PDNS_RECORD /*results*/) { PDNS::NAPTRRecord * record = NULL; if ( (dnsRecord->Flags.S.Section == DnsSectionAnswer) && (dnsRecord->wType == DNS_TYPE_NAPTR) ) { record = new NAPTRRecord(); NAPTR_DNS * naptr = (NAPTR_DNS *)&dnsRecord->Data; record->order = naptr->order; record->preference = naptr->preference; record->flags = naptr->GetFlags(); record->service = naptr->GetService(); record->regex = naptr->GetRegex(); record->replacement = naptr->GetReplacement(); } return record; } void PDNS::NAPTRRecordList::PrintOn(ostream & strm) const { PINDEX i; for (i = 0; i < GetSize(); i++) strm << (*this)[i] << endl; } PDNS::NAPTRRecord * PDNS::NAPTRRecordList::GetFirst(const char * service) { if (GetSize() == 0) return NULL; currentPos = 0; lastOrder = operator[](0).order; orderLocked = FALSE; return GetNext(service); } PDNS::NAPTRRecord * PDNS::NAPTRRecordList::GetNext(const char * service) { if (GetSize() == 0) return NULL; while (currentPos < GetSize()) { NAPTRRecord & record = operator[](currentPos); // once we have a match, we cannot look at higher order records // and note that the list is already sorted by preference if (orderLocked && lastOrder != record.order) return NULL; else { currentPos++; lastOrder = record.order; if (record.order == lastOrder) { if ((service == NULL) || (record.service *= service)) { orderLocked = TRUE; return &record; } } } } return NULL; } static PString ApplyRegex(const PString & orig, const PString & regexStr) { // must have at least 3 delimiters and two chars of text if (regexStr.GetLength() < 5) { PTRACE(1, "ENUM regex is too short: " << regexStr); return PString::Empty(); } // first char in the regex is always the delimiter char delimiter = regexStr[0]; // break the string into match and replace strings by looking for non-escaped delimiters PString strings[2]; PINDEX strNum = 0; PINDEX pos = 1; PINDEX start = pos; for (pos = 1; strNum < 2 && pos < regexStr.GetLength(); pos++) { if (regexStr[pos] == '\\') pos++; else if (regexStr[pos] == delimiter) { strings[strNum] = regexStr(start, pos-1); strNum++; pos++; start = pos; } } // make sure we have some strings // CRS: this construct avoids a gcc crash with gcc 3.5-20040704/ // when using the following: // if (strings[0].IsEmpty() || strings[1].IsEmpty()) { PString & str1 = strings[0]; PString & str2 = strings[1]; if (str1.IsEmpty() || str2.IsEmpty()) { PTRACE(1, "ENUM regex does not parse into two string: " << regexStr); return PString::Empty(); } // get the flags PString flags; if (strNum == 2 && pos < regexStr.GetLength()-1) { pos++; flags = regexStr.Mid(pos+1).ToLower(); } // construct the regular expression PRegularExpression regex; int regexFlags = PRegularExpression::Extended; if (flags.Find('i') != P_MAX_INDEX) regexFlags += PRegularExpression::IgnoreCase; if (!regex.Compile(strings[0], regexFlags)) { PTRACE(1, "ENUM regex does not compile : " << regexStr); return PString(); } // apply the regular expression to the original string PIntArray starts(10), ends(10); if (!regex.Execute(orig, starts, ends)) { PTRACE(1, "ENUM regex does not execute : " << regexStr); return PString(); } // replace variables in the second string PString value = strings[1]; for (pos = 0; pos < value.GetLength(); pos++) { if (value[pos] == '\\' && pos < value.GetLength()-1) { int var = value[pos+1]-'1'+1; PString str; if (var >= 0 && var < starts.GetSize() && var < ends.GetSize()) str = orig(starts[var], ends[var]); value = value.Left(pos) + str + value.Mid(pos+2); } } return value; } static PStringArray & GetENUMServers() { static const char * defaultDomains[] = { "e164.voxgratia.net","e164.org","e164.arpa"}; static PStringArray servers( sizeof(defaultDomains)/sizeof(defaultDomains[0]), defaultDomains ); return servers; } static PMutex & GetENUMServerMutex() { static PMutex mutex; return mutex; } void PDNS::SetENUMServers(const PStringArray & servers) { PWaitAndSignal m(GetENUMServerMutex()); GetENUMServers() = servers; } BOOL PDNS::ENUMLookup(const PString & e164, const PString & service,PString & dn) { PWaitAndSignal m(GetENUMServerMutex()); PStringArray domains; char * env = ::getenv(PWLIB_ENUM_PATH); if (env == NULL) domains += GetENUMServers(); else domains += PString(env).Tokenise(PATH_SEP); return PDNS::ENUMLookup(e164, service, domains, dn); } static BOOL InternalENUMLookup(const PString & e164, const PString & service, PDNS::NAPTRRecordList & records, PString & returnStr) { BOOL result = FALSE; // get the first record that matches the service. PDNS::NAPTRRecord * rec = records.GetFirst(service); do { // if no more records that match this service, then fail if (rec == NULL) break; // process the flags BOOL handled = FALSE; BOOL terminal = TRUE; for (PINDEX f = 0; !handled && f < rec->flags.GetLength(); ++f) { switch (tolower(rec->flags[f])) { // do an SRV lookup case 's': terminal = TRUE; handled = FALSE; break; // do an A lookup case 'a': terminal = TRUE; handled = FALSE; break; // apply regex and do the lookup case 'u': returnStr = ApplyRegex(e164, rec->regex); result = TRUE; terminal = TRUE; handled = TRUE; break; // handle in a protocol specific way - not supported case 'p': handled = FALSE; break; default: handled = FALSE; } } // if no flags were accepted, then unlock the order on the record and get the next record if (!handled) { records.UnlockOrder(); rec = records.GetNext(service); continue; } // if this was a terminal lookup, finish now if (terminal) break; } while (!result); return result; } BOOL PDNS::ENUMLookup( const PString & _e164, const PString & service, const PStringArray & enumSpaces, PString & returnStr ) { PString e164 = _e164; if (e164[0] != '+') e164 = PString('+') + e164; //////////////////////////////////////////////////////// // convert to domain name as per RFC 2916 // remove all non-digits PINDEX pos = 1; while (pos < e164.GetLength()) { if (isdigit(e164[pos])) pos++; else e164 = e164.Left(pos) + e164.Mid(pos+1); } // reverse the order of the digits, and add "." in between each digit PString domain; for (pos = 1; pos < e164.GetLength(); pos++) { if (!domain.IsEmpty()) domain = PString('.') + domain; domain = PString(e164[pos]) + domain; } for (PINDEX i = 0; i < enumSpaces.GetSize(); i++) { PDNS::NAPTRRecordList records; // do the initial lookup - if no answer then the lookup failed if (!PDNS::GetRecords(domain + "." + enumSpaces[i], records)) continue; if (InternalENUMLookup(e164, service, records, returnStr)) return TRUE; } return FALSE; } #endif // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/ftp.cxx0100644000176200056700000000634707562315774017011 0ustar releasepostincr/* * ftp.cxx * * FTP ancestor class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ftp.cxx,v $ * Revision 1.14 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.13 1998/11/30 04:50:46 robertj * New directory structure * * Revision 1.12 1998/09/23 06:21:59 robertj * Added open source copyright license. * * Revision 1.11 1998/01/26 05:20:30 robertj * GNU Support. * * Revision 1.10 1997/07/14 11:47:09 robertj * Added "const" to numerous variables. * * Revision 1.9 1996/09/14 13:09:26 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.8 1996/05/30 10:04:46 robertj * Fixed bug in breaking accept within FTP constructor returning wrong error code. * * Revision 1.7 1996/05/26 03:46:36 robertj * Compatibility to GNU 2.7.x * * Revision 1.6 1996/05/23 09:56:27 robertj * Changed FTP so can do passive/active mode on all data transfers. * * Revision 1.5 1996/03/31 09:01:20 robertj * More FTP client implementation. * * Revision 1.4 1996/03/26 00:50:30 robertj * FTP Client Implementation. * * Revision 1.3 1996/03/18 13:33:15 robertj * Fixed incompatibilities to GNU compiler where PINDEX != int. * * Revision 1.2 1996/03/16 04:51:12 robertj * Changed lastResponseCode to an integer. * * Revision 1.1 1996/03/04 12:12:51 robertj * Initial revision * */ #ifdef __GNUC__ #pragma implementation "ftp.h" #endif #include #include #include ///////////////////////////////////////////////////////// // File Transfer Protocol static const char * const FTPCommands[PFTP::NumCommands] = { "USER", "PASS", "ACCT", "CWD", "CDUP", "SMNT", "QUIT", "REIN", "PORT", "PASV", "TYPE", "STRU", "MODE", "RETR", "STOR", "STOU", "APPE", "ALLO", "REST", "RNFR", "RNTO", "ABOR", "DELE", "RMD", "MKD", "PWD", "LIST", "NLST", "SITE", "SYST", "STAT", "HELP", "NOOP" }; PFTP::PFTP() : PInternetProtocol("ftp 21", NumCommands, FTPCommands) { } BOOL PFTP::SendPORT(const PIPSocket::Address & addr, WORD port) { PString str(PString::Printf, "%i,%i,%i,%i,%i,%i", addr.Byte1(), addr.Byte2(), addr.Byte3(), addr.Byte4(), port/256, port%256); return ExecuteCommand(PORT, str)/100 == 2; } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/ftpclnt.cxx0100644000176200056700000002042007562315774017656 0ustar releasepostincr/* * ftpclnt.cxx * * FTP client class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ftpclnt.cxx,v $ * Revision 1.11 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.10 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.9 2000/06/21 01:14:23 robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.8 2000/04/07 06:29:46 rogerh * Add a short term workaround for an Internal Compiler Error on MAC OS X when * returning certain types of PString. Submitted by Kevin Packard. * * Revision 1.7 1998/12/23 00:34:55 robertj * Fixed normal TCP socket support after adding SOCKS support. * * Revision 1.6 1998/12/22 10:29:42 robertj * Added support for SOCKS based channels. * * Revision 1.5 1998/12/18 03:48:32 robertj * Fixed wanring on PPC linux compile * * Revision 1.4 1998/11/30 04:50:47 robertj * New directory structure * * Revision 1.3 1998/09/23 06:22:00 robertj * Added open source copyright license. * * Revision 1.2 1997/03/28 13:06:58 robertj * made STAT command more robust for getting file info from weird FTP servers. * * Revision 1.1 1996/09/14 13:02:18 robertj * Initial revision * */ #include #include #include ///////////////////////////////////////////////////////// // FTP Client PFTPClient::PFTPClient() { } PFTPClient::~PFTPClient() { Close(); } BOOL PFTPClient::Close() { if (!IsOpen()) return FALSE; BOOL ok = ExecuteCommand(QUIT)/100 == 2; return PFTP::Close() && ok; } BOOL PFTPClient::OnOpen() { if (!ReadResponse() || lastResponseCode != 220) return FALSE; // the default data port for a server is the adjacent port PIPSocket::Address remoteHost; PIPSocket * socket = GetSocket(); if (socket == NULL) return FALSE; socket->GetPeerAddress(remoteHost, remotePort); remotePort--; return TRUE; } BOOL PFTPClient::LogIn(const PString & username, const PString & password) { if (ExecuteCommand(USER, username)/100 != 3) return FALSE; return ExecuteCommand(PASS, password)/100 == 2; } PString PFTPClient::GetSystemType() { if (ExecuteCommand(SYST)/100 != 2) return PString(); return lastResponseInfo.Left(lastResponseInfo.Find(' ')); } BOOL PFTPClient::SetType(RepresentationType type) { static const char * const typeCode[] = { "A", "E", "I" }; PAssert((PINDEX)type < PARRAYSIZE(typeCode), PInvalidParameter); return ExecuteCommand(TYPE, typeCode[type])/100 == 2; } BOOL PFTPClient::ChangeDirectory(const PString & dirPath) { return ExecuteCommand(CWD, dirPath)/100 == 2; } PString PFTPClient::GetCurrentDirectory() { if (ExecuteCommand(PWD) != 257) return PString(); PINDEX quote1 = lastResponseInfo.Find('"'); if (quote1 == P_MAX_INDEX) return PString(); PINDEX quote2 = quote1 + 1; do { quote2 = lastResponseInfo.Find('"', quote2); if (quote2 == P_MAX_INDEX) return PString(); while (lastResponseInfo[quote2]=='"' && lastResponseInfo[quote2+1]=='"') quote2 += 2; } while (lastResponseInfo[quote2] != '"'); // make Apple's and Tornado's gnu compiler happy PString retval = lastResponseInfo(quote1+1, quote2-1); return retval; } PStringArray PFTPClient::GetDirectoryNames(NameTypes type, DataChannelType ctype) { return GetDirectoryNames(PString(), type, ctype); } PStringArray PFTPClient::GetDirectoryNames(const PString & path, NameTypes type, DataChannelType ctype) { SetType(PFTP::ASCII); Commands lcmd = type == DetailedNames ? LIST : NLST; PTCPSocket * socket = ctype != Passive ? NormalClientTransfer(lcmd, path) : PassiveClientTransfer(lcmd, path); if (socket == NULL) return PStringArray(); PString response = lastResponseInfo; PString str; int count = 0; while(socket->Read(str.GetPointer(count+1000)+count, 1000)) count += socket->GetLastReadCount(); str.SetSize(count+1); delete socket; ReadResponse(); lastResponseInfo = response + '\n' + lastResponseInfo; return str.Lines(); } PString PFTPClient::GetFileStatus(const PString & path, DataChannelType ctype) { if (ExecuteCommand(STATcmd, path)/100 == 2 && lastResponseInfo.Find(path) != P_MAX_INDEX) { PINDEX start = lastResponseInfo.Find('\n'); if (start != P_MAX_INDEX) { PINDEX end = lastResponseInfo.Find('\n', ++start); if (end != P_MAX_INDEX) return lastResponseInfo(start, end-1); } } PTCPSocket * socket = ctype != Passive ? NormalClientTransfer(LIST, path) : PassiveClientTransfer(LIST, path); if (socket == NULL) return PString(); PString str; socket->Read(str.GetPointer(200), 199); str[socket->GetLastReadCount()] = '\0'; delete socket; ReadResponse(); PINDEX end = str.FindOneOf("\r\n"); if (end != P_MAX_INDEX) str[end] = '\0'; return str; } PTCPSocket * PFTPClient::NormalClientTransfer(Commands cmd, const PString & args) { PIPSocket * socket = GetSocket(); if (socket == NULL) return NULL; // setup a socket so we can tell the host where to connect to PTCPSocket * listenSocket = (PTCPSocket *)socket->Clone(); listenSocket->SetPort(0); // Want new random port number listenSocket->Listen(); // The following is just used to automatically delete listenSocket PIndirectChannel autoDeleteSocket; autoDeleteSocket.Open(listenSocket); // get host address and port to send to other end WORD localPort = listenSocket->GetPort(); PIPSocket::Address localAddr; socket->GetLocalAddress(localAddr); // send PORT command to host if (!SendPORT(localAddr, localPort)) return NULL; if (ExecuteCommand(cmd, args)/100 != 1) return NULL; PTCPSocket * dataSocket = (PTCPSocket *)socket->Clone(); if (dataSocket->Accept(*listenSocket)) return dataSocket; delete dataSocket; return NULL; } PTCPSocket * PFTPClient::PassiveClientTransfer(Commands cmd, const PString & args) { PIPSocket::Address passiveAddress; WORD passivePort; if (ExecuteCommand(PASV) != 227) return NULL; PINDEX start = lastResponseInfo.FindOneOf("0123456789"); if (start == P_MAX_INDEX) return NULL; PStringArray bytes = lastResponseInfo(start, P_MAX_INDEX).Tokenise(','); if (bytes.GetSize() != 6) return NULL; passiveAddress = PIPSocket::Address((BYTE)bytes[0].AsInteger(), (BYTE)bytes[1].AsInteger(), (BYTE)bytes[2].AsInteger(), (BYTE)bytes[3].AsInteger()); passivePort = (WORD)(bytes[4].AsInteger()*256 + bytes[5].AsInteger()); PTCPSocket * socket = new PTCPSocket(passiveAddress, passivePort); if (socket->IsOpen()) if (ExecuteCommand(cmd, args)/100 == 1) return socket; delete socket; return NULL; } PTCPSocket * PFTPClient::GetFile(const PString & filename, DataChannelType channel) { return channel != Passive ? NormalClientTransfer(RETR, filename) : PassiveClientTransfer(RETR, filename); } PTCPSocket * PFTPClient::PutFile(const PString & filename, DataChannelType channel) { return channel != Passive ? NormalClientTransfer(STOR, filename) : PassiveClientTransfer(STOR, filename); } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/ftpsrvr.cxx0100644000176200056700000003625310343317555017713 0ustar releasepostincr/* * ftpsrvr.cxx * * FTP server class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: ftpsrvr.cxx,v $ * Revision 1.10 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.9 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.8 2000/06/21 01:10:18 robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.7 2000/06/21 01:01:22 robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.6 1999/02/16 06:04:41 robertj * Fixed bug in FTP server for PASV mode, may return incorrect IP address. * * Revision 1.5 1998/11/30 04:50:48 robertj * New directory structure * * Revision 1.4 1998/10/13 14:06:21 robertj * Complete rewrite of memory leak detection code. * * Revision 1.3 1998/09/23 06:22:02 robertj * Added open source copyright license. * * Revision 1.2 1996/10/26 01:39:49 robertj * Added check for security breach using 3 way FTP transfer or use of privileged PORT. * * Revision 1.1 1996/09/14 13:02:35 robertj * Initial revision * */ #include #include #include #define new PNEW #define READY_STRING "PWLib FTP Server v1.0 ready" #define GOOBYE_STRING "Goodbye" ///////////////////////////////////////////////////////// // FTPServer PFTPServer::PFTPServer() : readyString(PIPSocket::GetHostName() & READY_STRING) { Construct(); } PFTPServer::PFTPServer(const PString & readyStr) : readyString(readyStr) { Construct(); } void PFTPServer::Construct() { thirdPartyPort = FALSE; illegalPasswordCount = 0; state = NotConnected; type = 'A'; structure = 'F'; mode = 'S'; passiveSocket = NULL; } PFTPServer::~PFTPServer() { delete passiveSocket; } BOOL PFTPServer::OnOpen() { // the default data port for a client is the same port PIPSocket * socket = GetSocket(); if (socket == NULL) return FALSE; state = NeedUser; if (!WriteResponse(220, readyString)) return FALSE; socket->GetPeerAddress(remoteHost, remotePort); return TRUE; } PString PFTPServer::GetHelloString(const PString & user) const { return PString("User") & user & "logged in."; } PString PFTPServer::GetGoodbyeString(const PString &) const { return PString(GOOBYE_STRING); } PString PFTPServer::GetSystemTypeString() const { return PProcess::GetOSClass() + " " + PProcess::GetOSName() + " " + PProcess::GetOSVersion(); } BOOL PFTPServer::AuthoriseUser(const PString &, const PString &, BOOL &) { return TRUE; } BOOL PFTPServer::ProcessCommand() { PString args; PINDEX code; if (!ReadCommand(code, args)) return FALSE; if (code == P_MAX_INDEX) return OnUnknown(args); // handle commands that require login if (state == Connected || !CheckLoginRequired(code)) return DispatchCommand(code, args); // otherwise enforce login WriteResponse(530, "Please login with USER and PASS."); return TRUE; } BOOL PFTPServer::DispatchCommand(PINDEX code, const PString & args) { switch (code) { // mandatory commands case USER: return OnUSER(args); case PASS: return OnPASS(args); case QUIT: return OnQUIT(args); case PORT: return OnPORT(args); case STRU: return OnSTRU(args); case MODE: return OnMODE(args); case NOOP: return OnNOOP(args); case TYPE: return OnTYPE(args); case RETR: return OnRETR(args); case STOR: return OnSTOR(args); case SYST: return OnSYST(args); case STATcmd: return OnSTAT(args); case ACCT: return OnACCT(args); case CWD: return OnCWD(args); case CDUP: return OnCDUP(args); case PASV: return OnPASV(args); case APPE: return OnAPPE(args); case RNFR: return OnRNFR(args); case RNTO: return OnRNTO(args); case DELE: return OnDELE(args); case RMD: return OnRMD(args); case MKD: return OnMKD(args); case PWD: return OnPWD(args); case LIST: return OnLIST(args); case NLST: return OnNLST(args); // optional commands case HELP: return OnHELP(args); case SITE: return OnSITE(args); case ABOR: return OnABOR(args); case SMNT: return OnSMNT(args); case REIN: return OnREIN(args); case STOU: return OnSTOU(args); case ALLO: return OnALLO(args); case REST: return OnREST(args); default: PAssertAlways("Registered FTP command not handled"); return FALSE; } return TRUE; } BOOL PFTPServer::CheckLoginRequired(PINDEX cmd) { static const BYTE RequiresLogin[NumCommands] = { 1, // USER 1, // PASS 0, // ACCT 0, // CWD 0, // CDUP 0, // SMNT 1, // QUIT 0, // REIN 1, // PORT 0, // PASV 1, // TYPE 1, // STRU 1, // MODE 0, // RETR 0, // STOR 0, // STOU 0, // APPE 0, // ALLO 0, // REST 0, // RNFR 0, // RNTO 1, // ABOR 0, // DELE 0, // RMD 0, // MKD 0, // PWD 0, // LIST 0, // NLST 1, // SITE 1, // SYST 1, // STAT 1, // HELP 1, // NOOP }; if (cmd < NumCommands) return RequiresLogin[cmd] == 0; else return TRUE; } BOOL PFTPServer::OnUnknown(const PCaselessString & command) { WriteResponse(500, "\"" + command + "\" command unrecognised."); return TRUE; } void PFTPServer::OnError(PINDEX errorCode, PINDEX cmdNum, const char * msg) { if (cmdNum < commandNames.GetSize()) WriteResponse(errorCode, "Command \"" + commandNames[cmdNum] + "\":" + msg); else WriteResponse(errorCode, msg); } void PFTPServer::OnNotImplemented(PINDEX cmdNum) { OnError(502, cmdNum, "not implemented"); } void PFTPServer::OnSyntaxError(PINDEX cmdNum) { OnError(501, cmdNum, "syntax error in parameters or arguments."); } void PFTPServer::OnCommandSuccessful(PINDEX cmdNum) { if (cmdNum < commandNames.GetSize()) WriteResponse(200, "\"" + commandNames[cmdNum] + "\" command successful."); } // mandatory commands that can be performed without loggin in BOOL PFTPServer::OnUSER(const PCaselessString & args) { userName = args; state = NeedPassword; WriteResponse(331, "Password required for " + args + "."); return TRUE; } BOOL PFTPServer::OnPASS(const PCaselessString & args) { BOOL replied = FALSE; if (state != NeedPassword) WriteResponse(503, "Login with USER first."); else if (!AuthoriseUser(userName, args, replied)) { if (!replied) WriteResponse(530, "Login incorrect."); if (illegalPasswordCount++ == MaxIllegalPasswords) return FALSE; } else { if (!replied) WriteResponse(230, GetHelloString(userName)); illegalPasswordCount = 0; state = Connected; } return TRUE; } BOOL PFTPServer::OnQUIT(const PCaselessString & userName) { WriteResponse(221, GetGoodbyeString(userName)); return FALSE; } BOOL PFTPServer::OnPORT(const PCaselessString & args) { PStringArray tokens = args.Tokenise(","); long values[6]; PINDEX len = PMIN(args.GetSize(), 6); PINDEX i; for (i = 0; i < len; i++) { values[i] = tokens[i].AsInteger(); if (values[i] < 0 || values[i] > 255) break; } if (i < 6) OnSyntaxError(PORT); else { PIPSocket * socket = GetSocket(); if (socket == NULL) OnError(590, PORT, "not available on non-TCP transport."); else { remoteHost = PIPSocket::Address((BYTE)values[0], (BYTE)values[1], (BYTE)values[2], (BYTE)values[3]); remotePort = (WORD)(values[4]*256 + values[5]); if (remotePort < 1024 && remotePort != socket->GetPort()-1) OnError(590, PORT, "cannot access privileged port number."); else { PIPSocket::Address controlHost; GetSocket()->GetPeerAddress(controlHost); if (thirdPartyPort || remoteHost == controlHost) OnCommandSuccessful(PORT); else OnError(591, PORT, "three way transfer not allowed."); } } } return TRUE; } BOOL PFTPServer::OnPASV(const PCaselessString &) { if (passiveSocket != NULL) delete passiveSocket; passiveSocket = new PTCPSocket; passiveSocket->Listen(); WORD portNo = passiveSocket->GetPort(); PIPSocket::Address ourAddr; PIPSocket * socket = GetSocket(); if (socket != NULL) socket->GetLocalAddress(ourAddr); PString str(PString::Printf, "Entering Passive Mode (%i,%i,%i,%i,%i,%i)", ourAddr.Byte1(), ourAddr.Byte2(), ourAddr.Byte3(), ourAddr.Byte4(), portNo/256, portNo%256); return WriteResponse(227, str); } BOOL PFTPServer::OnTYPE(const PCaselessString & args) { if (args.IsEmpty()) OnSyntaxError(TYPE); else { switch (toupper(args[0])) { case 'A': type = 'A'; break; case 'I': type = 'I'; break; case 'E': case 'L': WriteResponse(504, PString("TYPE not implemented for parameter ") + args); return TRUE; default: OnSyntaxError(TYPE); return TRUE; } } OnCommandSuccessful(TYPE); return TRUE; } BOOL PFTPServer::OnMODE(const PCaselessString & args) { if (args.IsEmpty()) OnSyntaxError(MODE); else { switch (toupper(args[0])) { case 'S': structure = 'S'; break; case 'B': case 'C': WriteResponse(504, PString("MODE not implemented for parameter ") + args); return TRUE; default: OnSyntaxError(MODE); return TRUE; } } OnCommandSuccessful(MODE); return TRUE; } BOOL PFTPServer::OnSTRU(const PCaselessString & args) { if (args.IsEmpty()) OnSyntaxError(STRU); else { switch (toupper(args[0])) { case 'F': structure = 'F'; break; case 'R': case 'P': WriteResponse(504, PString("STRU not implemented for parameter ") + args); return TRUE; default: OnSyntaxError(STRU); return TRUE; } } OnCommandSuccessful(STRU); return TRUE; } BOOL PFTPServer::OnNOOP(const PCaselessString &) { OnCommandSuccessful(NOOP); return TRUE; } // mandatory commands that cannot be performed without logging in BOOL PFTPServer::OnRETR(const PCaselessString &) { OnNotImplemented(RETR); return TRUE; } BOOL PFTPServer::OnSTOR(const PCaselessString &) { OnNotImplemented(STOR); return TRUE; } BOOL PFTPServer::OnACCT(const PCaselessString &) { WriteResponse(532, "Need account for storing files"); return TRUE; } BOOL PFTPServer::OnCWD(const PCaselessString &) { OnNotImplemented(CWD); return TRUE; } BOOL PFTPServer::OnCDUP(const PCaselessString &) { OnNotImplemented(CDUP); return TRUE; } BOOL PFTPServer::OnSMNT(const PCaselessString &) { OnNotImplemented(SMNT); return TRUE; } BOOL PFTPServer::OnREIN(const PCaselessString &) { OnNotImplemented(REIN); return TRUE; } BOOL PFTPServer::OnSTOU(const PCaselessString &) { OnNotImplemented(STOU); return TRUE; } BOOL PFTPServer::OnAPPE(const PCaselessString &) { OnNotImplemented(APPE); return TRUE; } BOOL PFTPServer::OnALLO(const PCaselessString &) { OnNotImplemented(ALLO); return TRUE; } BOOL PFTPServer::OnREST(const PCaselessString &) { OnNotImplemented(REST); return TRUE; } BOOL PFTPServer::OnRNFR(const PCaselessString &) { OnNotImplemented(RNFR); return TRUE; } BOOL PFTPServer::OnRNTO(const PCaselessString &) { OnNotImplemented(RNTO); return TRUE; } BOOL PFTPServer::OnABOR(const PCaselessString &) { OnNotImplemented(ABOR); return TRUE; } BOOL PFTPServer::OnDELE(const PCaselessString &) { OnNotImplemented(DELE); return TRUE; } BOOL PFTPServer::OnRMD(const PCaselessString &) { OnNotImplemented(RMD); return TRUE; } BOOL PFTPServer::OnMKD(const PCaselessString &) { OnNotImplemented(MKD); return TRUE; } BOOL PFTPServer::OnPWD(const PCaselessString &) { OnNotImplemented(PWD); return TRUE; } BOOL PFTPServer::OnLIST(const PCaselessString &) { OnNotImplemented(LIST); return TRUE; } BOOL PFTPServer::OnNLST(const PCaselessString &) { OnNotImplemented(NLST); return TRUE; } BOOL PFTPServer::OnSITE(const PCaselessString &) { OnNotImplemented(SITE); return TRUE; } BOOL PFTPServer::OnSYST(const PCaselessString &) { WriteResponse(215, GetSystemTypeString()); return TRUE; } BOOL PFTPServer::OnSTAT(const PCaselessString &) { OnNotImplemented(STATcmd); return TRUE; } BOOL PFTPServer::OnHELP(const PCaselessString &) { OnNotImplemented(HELP); return TRUE; } void PFTPServer::SendToClient(const PFilePath & filename) { if (!PFile::Exists(filename)) WriteResponse(450, filename + ": file not found"); else { PTCPSocket * dataSocket; if (passiveSocket != NULL) { dataSocket = new PTCPSocket(*passiveSocket); delete passiveSocket; passiveSocket = NULL; } else dataSocket = new PTCPSocket(remoteHost, remotePort); if (!dataSocket->IsOpen()) WriteResponse(425, "Cannot open data connection"); else { if (type == 'A') { PTextFile file(filename, PFile::ReadOnly); if (!file.IsOpen()) WriteResponse(450, filename + ": cannot open file"); else { PString fileSize(PString::Unsigned, file.GetLength()); WriteResponse(150, PString("Opening ASCII data connection for " + filename.GetFileName() + "(" + fileSize + " bytes)")); PString line; BOOL ok = TRUE; while (ok && file.ReadLine(line)) { if (!dataSocket->Write((const char *)line, line.GetLength())) { WriteResponse(426, "Connection closed - transfer aborted"); ok = FALSE; } } file.Close(); } } else { PFile file(filename, PFile::ReadOnly); if (!file.IsOpen()) WriteResponse(450, filename + ": cannot open file"); else { PString fileSize(PString::Unsigned, file.GetLength()); WriteResponse(150, PString("Opening BINARY data connection for " + filename.GetFileName() + "(" + fileSize + " bytes)")); BYTE buffer[2048]; BOOL ok = TRUE; while (ok && file.Read(buffer, 2048)) { if (!dataSocket->Write(buffer, file.GetLastReadCount())) { WriteResponse(426, "Connection closed - transfer aborted"); ok = FALSE; } } file.Close(); } } delete dataSocket; WriteResponse(226, "Transfer complete"); } } } // End of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/html.cxx0100644000176200056700000007124710036426101017136 0ustar releasepostincr/* * html.cxx * * HTML classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: html.cxx,v $ * Revision 1.21 2004/04/12 05:42:25 csoutheren * Fixed problem with radio buttons * * Revision 1.20 2004/04/03 06:54:24 rjongbloed * Many and various changes to support new Visual C++ 2003 * * Revision 1.19 2002/11/06 22:47:24 robertj * Fixed header comment (copyright etc) * * Revision 1.18 2001/02/13 04:39:08 robertj * Fixed problem with operator= in container classes. Some containers will * break unless the copy is virtual (eg PStringStream's buffer pointers) so * needed to add a new AssignContents() function to all containers. * * Revision 1.17 1998/11/30 04:51:51 robertj * New directory structure * * Revision 1.16 1998/09/23 06:22:04 robertj * Added open source copyright license. * * Revision 1.15 1998/01/26 02:49:15 robertj * GNU support. * * Revision 1.14 1997/06/16 13:18:03 robertj * Set Is() function to be const as it should have been. * * Revision 1.13 1996/08/19 13:40:31 robertj * Fixed incorrect formatting of HTML tags (cosmetic only). * * Revision 1.12 1996/06/28 13:08:55 robertj * Changed PHTML class so can create html fragments. * Fixed nesting problem in tables. * * Revision 1.11 1996/06/01 04:18:45 robertj * Fixed bug in RadioButton, having 2 VALUE fields * * Revision 1.10 1996/04/29 12:21:22 robertj * Fixed spelling error in assert. * Fixed check box HTML, should always have a value. * Added display of value of unclosed HTML element. * * Revision 1.9 1996/04/14 02:52:04 robertj * Added hidden fields to HTML. * * Revision 1.8 1996/03/31 09:03:07 robertj * Changed HTML token so doesn't have trailing CRLF. * * Revision 1.7 1996/03/16 04:54:06 robertj * Made the assert for unclosed HTML elements only on debug version. * * Revision 1.6 1996/03/12 11:30:33 robertj * Fixed resetting of HTML output using operator=. * * Revision 1.5 1996/03/10 13:14:55 robertj * Simplified some of the classes and added catch all string for attributes. * * Revision 1.4 1996/02/25 11:14:22 robertj * Radio button support for forms. * * Revision 1.3 1996/02/19 13:31:51 robertj * Removed MSC_VER test as now completely removed from WIN16 library. * * Revision 1.2 1996/02/08 12:24:30 robertj * Further implementation. * * Revision 1.1 1996/02/03 11:18:46 robertj * Initial revision * * Revision 1.3 1996/01/28 02:49:16 robertj * Further implementation. * * Revision 1.2 1996/01/26 02:24:30 robertj * Further implemetation. * * Revision 1.1 1996/01/23 13:04:32 robertj * Initial revision * */ #ifdef __GNUC__ #pragma implementation "html.h" #endif #include #include ////////////////////////////////////////////////////////////////////////////// // PHTML PHTML::PHTML(ElementInSet initialState) { memset(elementSet, 0, sizeof(elementSet)); tableNestLevel = 0; initialElement = initialState; switch (initialState) { case NumElementsInSet : break; case InBody : Set(InBody); break; case InForm : Set(InBody); Set(InForm); break; default : PAssertAlways(PInvalidParameter); } } PHTML::PHTML(const char * cstr) { memset(elementSet, 0, sizeof(elementSet)); tableNestLevel = 0; initialElement = NumElementsInSet; ostream & this_stream = *this; this_stream << Title(cstr) << Body() << Heading(1) << cstr << Heading(1); } PHTML::PHTML(const PString & str) { memset(elementSet, 0, sizeof(elementSet)); tableNestLevel = 0; initialElement = NumElementsInSet; ostream & this_stream = *this; this_stream << Title(str) << Body() << Heading(1) << str << Heading(1); } PHTML::~PHTML() { #ifndef NDEBUG if (initialElement != NumElementsInSet) { Clr(initialElement); Clr(InBody); } for (PINDEX i = 0; i < PARRAYSIZE(elementSet); i++) PAssert(elementSet[i] == 0, psprintf("Failed to close element %u", i)); #endif } void PHTML::AssignContents(const PContainer & cont) { PStringStream::AssignContents(cont); memset(elementSet, 0, sizeof(elementSet)); } BOOL PHTML::Is(ElementInSet elmt) const { return (elementSet[elmt>>3]&(1<<(elmt&7))) != 0; } void PHTML::Set(ElementInSet elmt) { elementSet[elmt>>3] |= (1<<(elmt&7)); } void PHTML::Clr(ElementInSet elmt) { elementSet[elmt>>3] &= ~(1<<(elmt&7)); } void PHTML::Toggle(ElementInSet elmt) { elementSet[elmt>>3] ^= (1<<(elmt&7)); } void PHTML::Element::Output(PHTML & html) const { PAssert(reqElement == NumElementsInSet || html.Is(reqElement), "HTML element out of context"); if (crlf == BothCRLF || (crlf == OpenCRLF && !html.Is(inElement))) html << "\r\n"; html << '<'; if (html.Is(inElement)) html << '/'; html << name; AddAttr(html); if (attr != NULL) html << ' ' << attr; html << '>'; if (crlf == BothCRLF || (crlf == CloseCRLF && html.Is(inElement))) html << "\r\n"; if (inElement != NumElementsInSet) html.Toggle(inElement); } void PHTML::Element::AddAttr(PHTML &) const { } PHTML::HTML::HTML(const char * attr) : Element("HTML", attr, InHTML, NumElementsInSet, BothCRLF) { } PHTML::Head::Head() : Element("HEAD", NULL, InHead, NumElementsInSet, BothCRLF) { } void PHTML::Head::Output(PHTML & html) const { PAssert(!html.Is(InBody), "HTML element out of context"); if (!html.Is(InHTML)) html << HTML(); Element::Output(html); } PHTML::Body::Body(const char * attr) : Element("BODY", attr, InBody, NumElementsInSet, BothCRLF) { } void PHTML::Body::Output(PHTML & html) const { if (!html.Is(InHTML)) html << HTML(); if (html.Is(InTitle)) html << Title(); if (html.Is(InHead)) html << Head(); Element::Output(html); if (!html.Is(InBody)) html << HTML(); } PHTML::Title::Title() : Element("TITLE", NULL, InTitle, InHead, CloseCRLF) { titleString = NULL; } PHTML::Title::Title(const char * titleCStr) : Element("TITLE", NULL, InTitle, InHead, CloseCRLF) { titleString = titleCStr; } PHTML::Title::Title(const PString & titleStr) : Element("TITLE", NULL, InTitle, InHead, CloseCRLF) { titleString = titleStr; } void PHTML::Title::Output(PHTML & html) const { PAssert(!html.Is(InBody), "HTML element out of context"); if (!html.Is(InHead)) html << Head(); if (html.Is(InTitle)) { if (titleString != NULL) html << titleString; Element::Output(html); } else { Element::Output(html); if (titleString != NULL) { html << titleString; Element::Output(html); } } } PHTML::Banner::Banner(const char * attr) : Element("BANNER", attr, NumElementsInSet, InBody, BothCRLF) { } PHTML::Division::Division(const char * attr) : Element("DIV", attr, InDivision, InBody, BothCRLF) { } PHTML::Heading::Heading(int number, int sequence, int skip, const char * attr) : Element("H", attr, InHeading, InBody, CloseCRLF) { num = number; srcString = NULL; seqNum = sequence; skipSeq = skip; } PHTML::Heading::Heading(int number, const char * image, int sequence, int skip, const char * attr) : Element("H", attr, InHeading, InBody, CloseCRLF) { num = number; srcString = image; seqNum = sequence; skipSeq = skip; } PHTML::Heading::Heading(int number, const PString & imageStr, int sequence, int skip, const char * attr) : Element("H", attr, InHeading, InBody, CloseCRLF) { num = number; srcString = imageStr; seqNum = sequence; skipSeq = skip; } void PHTML::Heading::AddAttr(PHTML & html) const { PAssert(num >= 1 && num <= 6, "Bad heading number"); html << num; if (srcString != NULL) html << " SRC=\"" << srcString << '"'; if (seqNum > 0) html << " SEQNUM=" << seqNum; if (skipSeq > 0) html << " SKIP=" << skipSeq; } PHTML::BreakLine::BreakLine(const char * attr) : Element("BR", attr, NumElementsInSet, InBody, CloseCRLF) { } PHTML::Paragraph::Paragraph(const char * attr) : Element("P", attr, NumElementsInSet, InBody, OpenCRLF) { } PHTML::PreFormat::PreFormat(int widthInChars, const char * attr) : Element("PRE", attr, InPreFormat, InBody, CloseCRLF) { width = widthInChars; } void PHTML::PreFormat::AddAttr(PHTML & html) const { if (width > 0) html << " WIDTH=" << width; } PHTML::HotLink::HotLink(const char * href, const char * attr) : Element("A", attr, InAnchor, InBody, NoCRLF) { hrefString = href; } void PHTML::HotLink::AddAttr(PHTML & html) const { if (hrefString != NULL && *hrefString != '\0') html << " HREF=\"" << hrefString << '"'; else PAssert(html.Is(InAnchor), PInvalidParameter); } PHTML::Target::Target(const char * name, const char * attr) : Element("A", attr, NumElementsInSet, InBody, NoCRLF) { nameString = name; } void PHTML::Target::AddAttr(PHTML & html) const { if (nameString != NULL && *nameString != '\0') html << " NAME=\"" << nameString << '"'; } PHTML::ImageElement::ImageElement(const char * n, const char * attr, ElementInSet elmt, ElementInSet req, OptionalCRLF c, const char * image) : Element(n, attr, elmt, req, c) { srcString = image; } void PHTML::ImageElement::AddAttr(PHTML & html) const { if (srcString != NULL) html << " SRC=\"" << srcString << '"'; } PHTML::Image::Image(const char * src, int w, int h, const char * attr) : ImageElement("IMG", attr, NumElementsInSet, InBody, NoCRLF, src) { altString = NULL; width = w; height = h; } PHTML::Image::Image(const char * src, const char * alt, int w, int h, const char * attr) : ImageElement("IMG", attr, NumElementsInSet, InBody, NoCRLF, src) { altString = alt; width = w; height = h; } void PHTML::Image::AddAttr(PHTML & html) const { PAssert(srcString != NULL && *srcString != '\0', PInvalidParameter); if (altString != NULL) html << " ALT=\"" << altString << '"'; if (width != 0) html << " WIDTH=" << width; if (height != 0) html << " HEIGHT=" << height; ImageElement::AddAttr(html); } PHTML::HRule::HRule(const char * image, const char * attr) : ImageElement("HR", attr, NumElementsInSet, InBody, BothCRLF, image) { } PHTML::Note::Note(const char * image, const char * attr) : ImageElement("NOTE", attr, InNote, InBody, BothCRLF, image) { } PHTML::Address::Address(const char * attr) : Element("ADDRESS", attr, InAddress, InBody, BothCRLF) { } PHTML::BlockQuote::BlockQuote(const char * attr) : Element("BQ", attr, InBlockQuote, InBody, BothCRLF) { } PHTML::Credit::Credit(const char * attr) : Element("CREDIT", attr, NumElementsInSet, InBlockQuote, OpenCRLF) { } PHTML::SetTab::SetTab(const char * id, const char * attr) : Element("TAB", attr, NumElementsInSet, InBody, NoCRLF) { ident = id; } void PHTML::SetTab::AddAttr(PHTML & html) const { PAssert(ident != NULL && *ident != '\0', PInvalidParameter); html << " ID=" << ident; } PHTML::Tab::Tab(int indent, const char * attr) : Element("TAB", attr, NumElementsInSet, InBody, NoCRLF) { ident = NULL; indentSize = indent; } PHTML::Tab::Tab(const char * id, const char * attr) : Element("TAB", attr, NumElementsInSet, InBody, NoCRLF) { ident = id; indentSize = 0; } void PHTML::Tab::AddAttr(PHTML & html) const { PAssert(indentSize!=0 || (ident!=NULL && *ident!='\0'), PInvalidParameter); if (indentSize > 0) html << " INDENT=" << indentSize; else html << " TO=" << ident; } PHTML::SimpleList::SimpleList(const char * attr) : Element("UL", attr, InList, InBody, BothCRLF) { } void PHTML::SimpleList::AddAttr(PHTML & html) const { html << " PLAIN"; } PHTML::BulletList::BulletList(const char * attr) : Element("UL", attr, InList, InBody, BothCRLF) { } PHTML::OrderedList::OrderedList(int seqNum, const char * attr) : Element("OL", attr, InList, InBody, BothCRLF) { sequenceNum = seqNum; } void PHTML::OrderedList::AddAttr(PHTML & html) const { if (sequenceNum > 0) html << " SEQNUM=" << sequenceNum; if (sequenceNum < 0) html << " CONTINUE"; } PHTML::DefinitionList::DefinitionList(const char * attr) : Element("DL", attr, InList, InBody, BothCRLF) { } PHTML::ListHeading::ListHeading(const char * attr) : Element("LH", attr, InListHeading, InList, CloseCRLF) { } PHTML::ListItem::ListItem(int skip, const char * attr) : Element("LI", attr, NumElementsInSet, InList, OpenCRLF) { skipSeq = skip; } void PHTML::ListItem::AddAttr(PHTML & html) const { if (skipSeq > 0) html << " SKIP=" << skipSeq; } PHTML::DefinitionTerm::DefinitionTerm(const char * attr) : Element("DT", attr, NumElementsInSet, InList, NoCRLF) { } void PHTML::DefinitionTerm::Output(PHTML & html) const { PAssert(!html.Is(InDefinitionTerm), "HTML definition item missing"); Element::Output(html); html.Set(InDefinitionTerm); } PHTML::DefinitionItem::DefinitionItem(const char * attr) : Element("DD", attr, NumElementsInSet, InList, NoCRLF) { } void PHTML::DefinitionItem::Output(PHTML & html) const { PAssert(html.Is(InDefinitionTerm), "HTML definition term missing"); Element::Output(html); html.Clr(InDefinitionTerm); } PHTML::TableStart::TableStart(const char * attr) : Element("TABLE", attr, InTable, InBody, BothCRLF) { borderFlag = FALSE; } PHTML::TableStart::TableStart(BorderCodes border, const char * attr) : Element("TABLE", attr, InTable, InBody, BothCRLF) { borderFlag = border == Border; } void PHTML::TableStart::Output(PHTML & html) const { if (html.tableNestLevel > 0) html.Clr(InTable); Element::Output(html); } void PHTML::TableStart::AddAttr(PHTML & html) const { if (borderFlag) html << " BORDER"; html.tableNestLevel++; } PHTML::TableEnd::TableEnd() : Element("TABLE", "", InTable, InBody, BothCRLF) { } void PHTML::TableEnd::Output(PHTML & html) const { PAssert(html.tableNestLevel > 0, "Table nesting error"); Element::Output(html); html.tableNestLevel--; if (html.tableNestLevel > 0) html.Set(InTable); } PHTML::TableRow::TableRow(const char * attr) : Element("TR", attr, NumElementsInSet, InTable, OpenCRLF) { } PHTML::TableHeader::TableHeader(const char * attr) : Element("TH", attr, NumElementsInSet, InTable, CloseCRLF) { } PHTML::TableData::TableData(const char * attr) : Element("TD", attr, NumElementsInSet, InTable, NoCRLF) { } PHTML::Form::Form(const char * method, const char * action, const char * mimeType, const char * script) : Element("FORM", NULL, InForm, InBody, BothCRLF) { methodString = method; actionString = action; mimeTypeString = mimeType; scriptString = script; } void PHTML::Form::AddAttr(PHTML & html) const { if (methodString != NULL) html << " METHOD=" << methodString; if (actionString != NULL) html << " ACTION=\"" << actionString << '"'; if (mimeTypeString != NULL) html << " ENCTYPE=\"" << mimeTypeString << '"'; if (scriptString != NULL) html << " SCRIPT=\"" << scriptString << '"'; } PHTML::FieldElement::FieldElement(const char * n, const char * attr, ElementInSet elmt, OptionalCRLF c, DisableCodes disabled) : Element(n, attr, elmt, InForm, c) { disabledFlag = disabled == Disabled; } void PHTML::FieldElement::AddAttr(PHTML & html) const { if (disabledFlag) html << " DISABLED"; } PHTML::Select::Select(const char * fname, const char * attr) : FieldElement("SELECT", attr, InSelect, BothCRLF, Enabled) { nameString = fname; } PHTML::Select::Select(const char * fname, DisableCodes disabled, const char * attr) : FieldElement("SELECT", attr, InSelect, BothCRLF, disabled) { nameString = fname; } void PHTML::Select::AddAttr(PHTML & html) const { if (!html.Is(InSelect)) { PAssert(nameString != NULL && *nameString != '\0', PInvalidParameter); html << " NAME=\"" << nameString << '"'; } FieldElement::AddAttr(html); } PHTML::Option::Option(const char * attr) : FieldElement("OPTION", attr, NumElementsInSet, NoCRLF, Enabled) { selectedFlag = FALSE; } PHTML::Option::Option(SelectionCodes select, const char * attr) : FieldElement("OPTION", attr, NumElementsInSet, NoCRLF, Enabled) { selectedFlag = select == Selected; } PHTML::Option::Option(DisableCodes disabled, const char * attr) : FieldElement("OPTION", attr, NumElementsInSet, NoCRLF, disabled) { selectedFlag = FALSE; } PHTML::Option::Option(SelectionCodes select, DisableCodes disabled, const char * attr) : FieldElement("OPTION", attr, NumElementsInSet, NoCRLF, disabled) { selectedFlag = select == Selected; } void PHTML::Option::AddAttr(PHTML & html) const { if (selectedFlag) html << " SELECTED"; FieldElement::AddAttr(html); } PHTML::FormField::FormField(const char * n, const char * attr, ElementInSet elmt, OptionalCRLF c, DisableCodes disabled, const char * fname) : FieldElement(n, attr, elmt, c, disabled) { nameString = fname; } void PHTML::FormField::AddAttr(PHTML & html) const { PAssert(nameString != NULL && *nameString != '\0', PInvalidParameter); html << " NAME=\"" << nameString << '"'; FieldElement::AddAttr(html); } PHTML::TextArea::TextArea(const char * fname, DisableCodes disabled, const char * attr) : FormField("TEXTAREA", attr, InSelect, BothCRLF, disabled, fname) { numRows = numCols = 0; } PHTML::TextArea::TextArea(const char * fname, int rows, int cols, DisableCodes disabled, const char * attr) : FormField("TEXTAREA", attr, InSelect, BothCRLF, disabled, fname) { numRows = rows; numCols = cols; } void PHTML::TextArea::AddAttr(PHTML & html) const { if (numRows > 0) html << " ROWS=" << numRows; if (numCols > 0) html << " COLS=" << numCols; FormField::AddAttr(html); } PHTML::InputField::InputField(const char * type, const char * fname, DisableCodes disabled, const char * attr) : FormField("INPUT", attr, NumElementsInSet, NoCRLF, disabled, fname) { typeString = type; } void PHTML::InputField::AddAttr(PHTML & html) const { PAssert(typeString != NULL && *typeString != '\0', PInvalidParameter); html << " TYPE=" << typeString; FormField::AddAttr(html); } PHTML::HiddenField::HiddenField(const char * fname, const char * value, const char * attr) : InputField("hidden", fname, Enabled, attr) { valueString = value; } void PHTML::HiddenField::AddAttr(PHTML & html) const { InputField::AddAttr(html); PAssert(valueString != NULL, PInvalidParameter); html << " VALUE=\"" << valueString << '"'; } PHTML::InputText::InputText(const char * fname, int size, const char * init, const char * attr) : InputField("text", fname, Enabled, attr) { width = size; length = 0; value = init; } PHTML::InputText::InputText(const char * fname, int size, DisableCodes disabled, const char * attr) : InputField("text", fname, disabled, attr) { width = size; length = 0; value = NULL; } PHTML::InputText::InputText(const char * fname, int size, int maxLength, DisableCodes disabled, const char * attr) : InputField("text", fname, disabled, attr) { width = size; length = maxLength; value = NULL; } PHTML::InputText::InputText(const char * fname, int size, const char * init, int maxLength, DisableCodes disabled, const char * attr) : InputField("text", fname, disabled, attr) { width = size; length = maxLength; value = init; } PHTML::InputText::InputText(const char * type, const char * fname, int size, const char * init, int maxLength, DisableCodes disabled, const char * attr) : InputField(type, fname, disabled, attr) { width = size; length = maxLength; value = init; } void PHTML::InputText::AddAttr(PHTML & html) const { InputField::AddAttr(html); html << " SIZE=" << width; if (length > 0) html << " MAXLENGTH=" << length; if (value != NULL) html << " VALUE=\"" << value << '"'; } PHTML::InputPassword::InputPassword(const char * fname, int size, const char * init, const char * attr) : InputText("password", fname, size, init, 0, Enabled, attr) { } PHTML::InputPassword::InputPassword(const char * fname, int size, DisableCodes disabled, const char * attr) : InputText("password", fname, size, NULL, 0, disabled, attr) { } PHTML::InputPassword::InputPassword(const char * fname, int size, int maxLength, DisableCodes disabled, const char * attr) : InputText("password", fname, size, NULL, maxLength, disabled, attr) { } PHTML::InputPassword::InputPassword(const char * fname, int size, const char * init, int maxLength, DisableCodes disabled, const char * attr) : InputText("password", fname, size, init, maxLength, disabled, attr) { } PHTML::RadioButton::RadioButton(const char * fname, const char * value, const char * attr) : InputField("radio", fname, Enabled, attr) { valueString = value; checkedFlag = FALSE; } PHTML::RadioButton::RadioButton(const char * fname, const char * value, DisableCodes disabled, const char * attr) : InputField("radio", fname, disabled, attr) { valueString = value; checkedFlag = FALSE; } PHTML::RadioButton::RadioButton(const char * fname, const char * value, CheckedCodes check, DisableCodes disabled, const char * attr) : InputField("radio", fname, disabled, attr) { valueString = value; checkedFlag = check == Checked; } PHTML::RadioButton::RadioButton(const char * type, const char * fname, const char * value, CheckedCodes check, DisableCodes disabled, const char * attr) : InputField(type, fname, disabled, attr) { valueString = value; checkedFlag = check == Checked; } void PHTML::RadioButton::AddAttr(PHTML & html) const { InputField::AddAttr(html); PAssert(valueString != NULL, PInvalidParameter); html << " VALUE=\"" << valueString << "\""; if (checkedFlag) html << " CHECKED"; } PHTML::CheckBox::CheckBox(const char * fname, const char * attr) : RadioButton("checkbox", fname, "TRUE", UnChecked, Enabled, attr) { } PHTML::CheckBox::CheckBox(const char * fname, DisableCodes disabled, const char * attr) : RadioButton("checkbox", fname, "TRUE", UnChecked, disabled, attr) { } PHTML::CheckBox::CheckBox(const char * fname, CheckedCodes check, DisableCodes disabled, const char * attr) : RadioButton("checkbox", fname, "TRUE", check, disabled, attr) { } PHTML::InputRange::InputRange(const char * fname, int min, int max, int value, DisableCodes disabled, const char * attr) : InputField("range", fname, disabled, attr) { PAssert(min <= max, PInvalidParameter); minValue = min; maxValue = max; if (value < min) initValue = min; else if (value > max) initValue = max; else initValue = value; } void PHTML::InputRange::AddAttr(PHTML & html) const { InputField::AddAttr(html); PINDEX max = PMAX(-minValue, maxValue); PINDEX width = 3; while (max > 10) { width++; max /= 10; } html << " SIZE=" << width << " MIN=" << minValue << " MAX=" << maxValue << " VALUE=\"" << initValue << "\""; } PHTML::InputFile::InputFile(const char * fname, const char * accept, DisableCodes disabled, const char * attr) : InputField("file", fname, disabled, attr) { acceptString = accept; } void PHTML::InputFile::AddAttr(PHTML & html) const { InputField::AddAttr(html); if (acceptString != NULL) html << " ACCEPT=\"" << acceptString << '"'; } PHTML::InputImage::InputImage(const char * fname, const char * src, DisableCodes disabled, const char * attr) : InputField("image", fname, disabled, attr) { srcString = src; } PHTML::InputImage::InputImage(const char * type, const char * fname, const char * src, DisableCodes disabled, const char * attr) : InputField(type, fname, disabled, attr) { srcString = src; } void PHTML::InputImage::AddAttr(PHTML & html) const { InputField::AddAttr(html); if (srcString != NULL) html << " SRC=\"" << srcString << '"'; } PHTML::InputScribble::InputScribble(const char * fname, const char * src, DisableCodes disabled, const char * attr) : InputImage("scribble", fname, src, disabled, attr) { } PHTML::ResetButton::ResetButton(const char * title, const char * fname, const char * src, DisableCodes disabled, const char * attr) : InputImage("reset", fname != NULL ? fname : "reset", src, disabled, attr) { titleString = title; } PHTML::ResetButton::ResetButton(const char * type, const char * title, const char * fname, const char * src, DisableCodes disabled, const char * attr) : InputImage(type, fname, src, disabled, attr) { titleString = title; } void PHTML::ResetButton::AddAttr(PHTML & html) const { InputImage::AddAttr(html); if (titleString != NULL) html << " VALUE=\"" << titleString << '"'; } PHTML::SubmitButton::SubmitButton(const char * title, const char * fname, const char * src, DisableCodes disabled, const char * attr) : ResetButton("submit", title, fname != NULL ? fname : "submit", src, disabled, attr) { } // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/http.cxx0100644000176200056700000011577610343317555017174 0ustar releasepostincr/* * http.cxx * * HTTP ancestor class and common classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: http.cxx,v $ * Revision 1.116 2005/11/30 12:47:41 csoutheren * Removed tabs, reformatted some code, and changed tags for Doxygen * * Revision 1.115 2005/04/20 05:19:48 csoutheren * Patch 1185334. Ensure SIP URLs correctly store status of port * Thanks to Ted Szoczei * * Revision 1.114 2005/01/16 20:36:48 csoutheren * Changed URLS to put IP address in [] if contains a ":" * * Revision 1.113 2005/01/04 08:09:41 csoutheren * Fixed Linux configure problems * * Revision 1.112 2004/12/08 00:51:12 csoutheren * Move PURLLegacyScheme to header file to allow external usage * * Revision 1.111 2004/10/23 11:27:24 ykiryanov * Added ifdef _WIN32_WCE for PocketPC 2003 SDK port * * Revision 1.110 2004/08/31 23:40:51 csoutheren * Fixed problem with absolute file paths in URLs * * Revision 1.109 2004/07/14 13:15:45 rjongbloed * Fixed minor bug where a URL is "non-empty" if requires a host but has none. * eg could end up with "sip:" or "http://:80" which are illegal. * * Revision 1.108 2004/07/12 09:17:20 csoutheren * Fixed warnings and errors under Linux * * Revision 1.107 2004/07/06 10:12:52 csoutheren * Added static integer o factory template to assist in ensuring factories are instantiated * * Revision 1.106 2004/06/30 12:17:05 rjongbloed * Rewrite of plug in system to use single global variable for all factories to avoid all sorts * of issues with startup orders and Windows DLL multiple instances. * * Revision 1.105 2004/06/16 07:48:12 csoutheren * Added assert to clarify usage of default scheme * * Revision 1.104 2004/06/03 13:30:58 csoutheren * Renamed INSTANTIATE_FACTORY to avoid potential namespace collisions * Added documentaton on new PINSTANTIATE_FACTORY macro * Added generic form of PINSTANTIATE_FACTORY * * Revision 1.103 2004/06/03 12:47:58 csoutheren * Decomposed PFactory declarations to hopefully avoid problems with Windows DLLs * * Revision 1.102 2004/06/01 07:28:45 csoutheren * Changed URL parsing to use abstract factory code * * Revision 1.101 2004/04/04 00:21:47 csoutheren * FIxed problem with some URL parsing * * Revision 1.100 2004/04/03 08:22:20 csoutheren * Remove pseudo-RTTI and replaced with real RTTI * * Revision 1.99 2004/03/23 05:08:21 csoutheren * Fixed problem with use of ShellExecuteEx function * * Revision 1.98 2004/03/13 06:30:52 rjongbloed * Virtualised parse function. * * Revision 1.97 2004/02/24 11:14:44 rjongbloed * Fixed correct initialisation of some internal variables in URL if parse fails. * * Revision 1.96 2004/01/17 17:44:17 csoutheren * Changed to use PString::MakeEmpty * * Revision 1.95 2003/11/18 09:22:17 csoutheren * Fixed problems with PURL::OpenBrowser, thanks to David Parr * * Revision 1.94 2003/08/27 03:37:45 dereksmithies * Fix initialization of pathStr so it really is empty. BIG thanks to Diego Tartara. * * Revision 1.93 2003/07/22 03:26:10 csoutheren * Fixed problem with parsing default H323 addresses * * Revision 1.92 2003/06/23 15:31:40 ykiryanov * Slightly changed call to ShellExecuteEx to make compatible with Win32 * * Revision 1.91 2003/06/23 14:31:33 ykiryanov * Modified for WinCE - used ShellExecuteEx instead of ShellExecute * * Revision 1.90 2003/06/05 00:15:54 rjongbloed * Fixed callto bug created by previous patch. * * Revision 1.89 2003/06/04 01:42:05 rjongbloed * Fixed h323 scheme, does not have a "password" field. * * Revision 1.88 2003/06/02 02:46:45 rjongbloed * Fixed issue with callto URL parsing incorrect username field. * Added automatic removal of illegal (though common) "//" in callto URL. * * Revision 1.87 2003/05/05 07:30:17 craigs * Fixed problem with URLs that do not specify schemes * * Revision 1.86 2003/05/02 13:50:23 craigs * Fixed a problem with callto:localhost * * Revision 1.85 2003/05/02 13:20:33 craigs * Fixed callto problems * * Revision 1.84 2003/04/28 04:41:22 robertj * Changed URL parsing so if a default scheme is present then explicit scheme * must be "known" to avoid ambiguity with host:port parsing. * * Revision 1.83 2003/04/10 00:13:56 robertj * Fixed correct decoding of user/password/host/port field, for non h323 schemes. * * Revision 1.82 2003/04/08 06:28:14 craigs * Fixed introduced problem with HTTP server mistaking relative URLs for proxy requests * * Revision 1.81 2003/04/04 08:03:55 robertj * Fixed special case of h323 URL default port changing depending on * if it the host is an endpoint or gatekeeper. * * Revision 1.80 2003/04/04 05:18:08 robertj * Added "callto", "tel" and fixed "h323" URL types. * * Revision 1.79 2002/12/02 00:17:03 robertj * Fixed URL parsing/display problems with non-path URL type eg mailto * * Revision 1.78 2002/11/22 06:16:49 robertj * Fixed usage of URI (relative http/https URL). * * Revision 1.77 2002/11/20 02:10:56 robertj * Fixed some more realtive/absolute path issues. * * Revision 1.76 2002/11/20 01:01:49 robertj * Fixed GNU compatibility * * Revision 1.75 2002/11/20 00:49:37 robertj * Fixed correct interpretation of url re double slashes as per latest RFC, * including file: mapping and relative paths. Probably still more to do. * * Revision 1.74 2002/11/19 22:45:03 robertj * Fixed support for file: scheme under unix * * Revision 1.73 2002/11/19 10:36:50 robertj * Added functions to set anf get "file:" URL. as PFilePath and do the right * things with platform dependent directory components. * * Revision 1.72 2002/11/06 22:47:25 robertj * Fixed header comment (copyright etc) * * Revision 1.71 2002/09/23 07:17:24 robertj * Changes to allow winsock2 to be included. * * Revision 1.70 2002/08/28 08:06:11 craigs * Fixed problem (again) with file:// URLs * * Revision 1.69 2002/08/28 05:11:23 craigs * Fixed problem with file:// URLs * * Revision 1.68 2002/05/02 05:11:29 craigs * Fixed problem with not translating + chars in URL query parameters * * Revision 1.67 2002/03/19 23:39:57 robertj * Fixed string output to include PathOnly variant, lost in previous mod. * * Revision 1.66 2002/03/19 23:24:08 robertj * Fixed problems with backward compatibility on parameters processing. * * Revision 1.65 2002/03/18 05:02:27 robertj * Added functions to set component parts of URL. * Fixed output of parameters when more than one ';' involved. * * Revision 1.64 2001/11/09 05:46:14 robertj * Removed double slash on sip URL. * Fixed extra : if have username but no password. * Added h323: scheme * * Revision 1.63 2001/11/08 00:32:49 robertj * Added parsing of ';' based parameter fields into string dictionary if there are multiple parameters, with '=' values. * * Revision 1.62 2001/10/31 01:33:07 robertj * Added extra const for constant HTTP tag name strings. * * Revision 1.61 2001/10/03 00:26:34 robertj * Upgraded client to HTTP/1.1 and for chunked mode entity bodies. * * Revision 1.60 2001/09/28 00:45:42 robertj * Broke out internal static function for unstranslating URL strings. * * Revision 1.59 2001/07/16 00:43:06 craigs * Added ability to parse other transport URLs * * Revision 1.58 2000/05/02 08:29:07 craigs * Removed "memory leaks" caused by brain-dead GNU linker * * Revision 1.57 1999/05/11 12:24:18 robertj * Fixed URL parser so leading blanks are ignored. * * Revision 1.56 1999/05/04 15:26:01 robertj * Improved HTTP/1.1 compatibility (pass through user commands). * Fixed problems with quicktime installer. * * Revision 1.55 1999/04/21 01:56:13 robertj * Fixed problem with escape codes greater that %80 * * Revision 1.54 1999/01/16 12:45:54 robertj * Added RTSP schemes to URL's * * Revision 1.53 1998/11/30 05:38:15 robertj * Moved PURL::Open() code to .cxx file to avoid linking unused code. * * Revision 1.52 1998/11/30 04:51:53 robertj * New directory structure * * Revision 1.51 1998/09/23 06:22:07 robertj * Added open source copyright license. * * Revision 1.50 1998/02/03 10:02:34 robertj * Added ability to get scheme, host and port from URL as a string. * * Revision 1.49 1998/02/03 06:27:26 robertj * Fixed URL encoding to be closer to RFC * * Revision 1.48 1998/01/26 02:49:16 robertj * GNU support. * * Revision 1.47 1997/11/10 12:40:20 robertj * Fixed illegal character set for URL's. * * Revision 1.46 1997/07/14 11:47:10 robertj * Added "const" to numerous variables. * * Revision 1.45 1997/07/12 09:45:01 robertj * Fixed bug when URL has + sign in somthing other than parameters. * * Revision 1.44 1997/06/06 08:54:47 robertj * Allowed username/password on http scheme URL. * * Revision 1.43 1997/04/06 07:46:09 robertj * Fixed bug where URL has more than special character ('?', '#' etc). * * Revision 1.42 1997/03/28 04:40:24 robertj * Added tags for cookies. * * Revision 1.41 1997/03/18 22:03:44 robertj * Fixed bug that incorrectly parses URL with double slashes. * * Revision 1.40 1997/02/14 13:55:44 robertj * Fixed bug in URL for reproducing fields with special characters, must be escaped and weren't. * * Revision 1.39 1997/01/12 04:15:21 robertj * Globalised MIME tag strings. * * Revision 1.38 1996/09/14 13:09:28 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.37 1996/08/25 09:37:41 robertj * Added function to detect "local" host name. * Fixed printing of trailing '/' in empty URL, is distinction between with and without. * * Revision 1.36 1996/08/22 13:22:26 robertj * Fixed bug in print of URLs, extra @ signs. * * Revision 1.35 1996/08/19 13:42:40 robertj * Fixed errors in URL parsing and display. * Fixed "Forbidden" problem out of HTTP authorisation system. * Fixed authorisation so if have no user/password on basic authentication, does not require it. * * Revision 1.34 1996/07/27 04:13:47 robertj * Fixed use of HTTP proxy on non-persistent connections. * * Revision 1.33 1996/07/15 10:37:20 robertj * Improved proxy "self" detection (especially localhost). * * Revision 1.32 1996/06/28 13:20:24 robertj * Modified HTTPAuthority so gets PHTTPReqest (mainly for URL) passed in. * Moved HTTP form resource to another compilation module. * Fixed memory leak in POST command. * * Revision 1.31 1996/06/10 10:00:00 robertj * Added global function for query parameters parsing. * * Revision 1.30 1996/06/07 13:52:23 robertj * Added PUT to HTTP proxy FTP. Necessitating redisign of entity body processing. * * Revision 1.29 1996/06/05 12:33:04 robertj * Fixed bug in parsing URL with no path, is NOT absolute! * * Revision 1.28 1996/05/30 10:07:26 robertj * Fixed bug in version number checking of return code compatibility. * * Revision 1.27 1996/05/26 03:46:42 robertj * Compatibility to GNU 2.7.x * * Revision 1.26 1996/05/23 10:02:13 robertj * Added common function for GET and HEAD commands. * Fixed status codes to be the actual status code instead of sequential enum. * This fixed some problems with proxy pass through of status codes. * Fixed bug in URL parsing of username and passwords. * * Revision 1.19.1.1 1996/04/17 11:08:22 craigs * New version by craig pending confirmation by robert * * Revision 1.19 1996/04/05 01:46:30 robertj * Assured PSocket::Write always writes the number of bytes specified, no longer need write loops. * Added workaraound for NT Netscape Navigator bug with persistent connections. * * Revision 1.18 1996/03/31 09:05:07 robertj * HTTP 1.1 upgrade. * * Revision 1.17 1996/03/17 05:48:07 robertj * Fixed host name print out of URLs. * Added hit count to PHTTPResource. * * Revision 1.16 1996/03/16 05:00:26 robertj * Added ParseReponse() for splitting reponse line into code and info. * Added client side support for HTTP socket. * Added hooks for proxy support in HTTP socket. * Added translation type to TranslateString() to accommodate query variables. * Defaulted scheme field in URL to "http". * Inhibited output of port field on string conversion of URL according to scheme. * * Revision 1.15 1996/03/11 10:29:50 robertj * Fixed bug in help image HTML. * * Revision 1.14 1996/03/10 13:15:24 robertj * Redesign to make resources thread safe. * * Revision 1.13 1996/03/02 03:27:37 robertj * Added function to translate a string to a form suitable for inclusion in a URL. * Added radio button and selection boxes to HTTP form resource. * Fixed bug in URL parsing, losing first / if hostname specified. * * Revision 1.12 1996/02/25 11:14:24 robertj * Radio button support for forms. * * Revision 1.11 1996/02/25 03:10:34 robertj * Removed pass through HTTP resource. * Fixed PHTTPConfig resource to use correct name for config key. * * Revision 1.10 1996/02/19 13:48:28 robertj * Put multiple uses of literal strings into const variables. * Fixed URL parsing so that the unmangling of strings occurs correctly. * Moved nested classes from PHTTPForm. * Added overwrite option to AddResource(). * Added get/set string to PHTTPString resource. * * Revision 1.9 1996/02/13 13:09:17 robertj * Added extra parameters to callback function in PHTTPResources, required * by descendants to make informed decisions on data being loaded. * * Revision 1.8 1996/02/08 12:26:29 robertj * Redesign of resource callback mechanism. * Added new resource types for HTML data entry forms. * * Revision 1.7 1996/02/03 11:33:19 robertj * Changed RadCmd() so can distinguish between I/O error and unknown command. * * Revision 1.6 1996/02/03 11:11:49 robertj * Numerous bug fixes. * Added expiry date and ismodifiedsince support. * * Revision 1.5 1996/01/30 23:32:40 robertj * Added single . * * Revision 1.4 1996/01/28 14:19:09 robertj * Split HTML into separate source file. * Beginning of pass through resource type. * Changed PCharArray in OnLoadData to PString for convenience in mangling data. * Made PHTTPSpace return standard page on selection of partial path. * * Revision 1.3 1996/01/28 02:49:16 robertj * Further implementation. * * Revision 1.2 1996/01/26 02:24:30 robertj * Further implemetation. * * Revision 1.1 1996/01/23 13:04:32 robertj * Initial revision * */ #ifdef __GNUC__ #pragma implementation "http.h" #pragma implementation "url.h" #endif #include #define P_DISABLE_FACTORY_INSTANCES #include #include #include #include #ifdef WIN32 #include #endif // RFC 1738 // http://host:port/path... // https://host:port/path.... // gopher://host:port // wais://host:port // nntp://host:port // prospero://host:port // ftp://user:password@host:port/path... // telnet://user:password@host:port // file://hostname/path... // mailto:user@hostname // news:string #define DEFAULT_FTP_PORT 21 #define DEFAULT_TELNET_PORT 23 #define DEFAULT_GOPHER_PORT 70 #define DEFAULT_HTTP_PORT 80 #define DEFAULT_NNTP_PORT 119 #define DEFAULT_WAIS_PORT 210 #define DEFAULT_HTTPS_PORT 443 #define DEFAULT_RTSP_PORT 554 #define DEFAULT_RTSPU_PORT 554 #define DEFAULT_PROSPERO_PORT 1525 #define DEFAULT_H323_PORT 1720 #define DEFAULT_H323RAS_PORT 1719 #define DEFAULT_SIP_PORT 5060 #define DEFINE_LEGACY_URL_SCHEME(schemeName, user, pass, host, def, defhost, query, params, frags, path, rel, port) \ class PURLLegacyScheme_##schemeName : public PURLLegacyScheme \ { \ public: \ PURLLegacyScheme_##schemeName() \ : PURLLegacyScheme(#schemeName ) \ { \ hasUsername = user; \ hasPassword = pass; \ hasHostPort = host; \ defaultToUserIfNoAt = def; \ defaultHostToLocal = defhost; \ hasQuery = query; \ hasParameters = params; \ hasFragments = frags; \ hasPath = path; \ relativeImpliesScheme = rel; \ defaultPort = port; \ } \ }; \ static PFactory::Worker schemeName##Factory(#schemeName, true); \ DEFINE_LEGACY_URL_SCHEME(http, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, DEFAULT_HTTP_PORT ) DEFINE_LEGACY_URL_SCHEME(file, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, 0) DEFINE_LEGACY_URL_SCHEME(https, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, DEFAULT_HTTPS_PORT) DEFINE_LEGACY_URL_SCHEME(gopher, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_GOPHER_PORT) DEFINE_LEGACY_URL_SCHEME(wais, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_WAIS_PORT) DEFINE_LEGACY_URL_SCHEME(nntp, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_NNTP_PORT) DEFINE_LEGACY_URL_SCHEME(prospero, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_PROSPERO_PORT) DEFINE_LEGACY_URL_SCHEME(rtsp, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_RTSP_PORT) DEFINE_LEGACY_URL_SCHEME(rtspu, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_RTSPU_PORT) DEFINE_LEGACY_URL_SCHEME(ftp, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, DEFAULT_FTP_PORT) DEFINE_LEGACY_URL_SCHEME(telnet, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, DEFAULT_TELNET_PORT) DEFINE_LEGACY_URL_SCHEME(mailto, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, 0) DEFINE_LEGACY_URL_SCHEME(news, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 0) DEFINE_LEGACY_URL_SCHEME(h323, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, DEFAULT_H323_PORT) DEFINE_LEGACY_URL_SCHEME(sip, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, DEFAULT_SIP_PORT) DEFINE_LEGACY_URL_SCHEME(tel, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 0) DEFINE_LEGACY_URL_SCHEME(fax, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 0) DEFINE_LEGACY_URL_SCHEME(callto, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, 0) PINSTANTIATE_FACTORY(PURLScheme, PString) #define DEFAULT_SCHEME "http" #define FILE_SCHEME "file" ////////////////////////////////////////////////////////////////////////////// // PURL PURL::PURL() : //scheme(SchemeTable[DEFAULT_SCHEME].name), scheme(DEFAULT_SCHEME), port(0), portSupplied (FALSE), relativePath(FALSE) { } PURL::PURL(const char * str, const char * defaultScheme) { Parse(str, defaultScheme); } PURL::PURL(const PString & str, const char * defaultScheme) { Parse(str, defaultScheme); } PURL::PURL(const PFilePath & filePath) : //scheme(SchemeTable[FILE_SCHEME].name), scheme(FILE_SCHEME), port(0), portSupplied (FALSE), relativePath(FALSE) { PStringArray pathArray = filePath.GetDirectory().GetPath(); hostname = pathArray[0]; PINDEX i; for (i = 1; i < pathArray.GetSize(); i++) pathArray[i-1] = pathArray[i]; pathArray[i-1] = filePath.GetFileName(); SetPath(pathArray); } PObject::Comparison PURL::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PURL), PInvalidCast); return urlString.Compare(((const PURL &)obj).urlString); } PINDEX PURL::HashFunction() const { return urlString.HashFunction(); } void PURL::PrintOn(ostream & stream) const { stream << urlString; } void PURL::ReadFrom(istream & stream) { PString s; stream >> s; Parse(s); } PString PURL::TranslateString(const PString & str, TranslationType type) { PString xlat = str; PString safeChars = "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789$-_.!*'(),"; switch (type) { case LoginTranslation : safeChars += "+;?&="; break; case PathTranslation : safeChars += "+:@&="; break; case QueryTranslation : safeChars += ":@"; } PINDEX pos = (PINDEX)-1; while ((pos += 1+strspn(&xlat[pos+1], safeChars)) < xlat.GetLength()) xlat.Splice(psprintf("%%%02X", (BYTE)xlat[pos]), pos, 1); if (type == QueryTranslation) { PINDEX space = (PINDEX)-1; while ((space = xlat.Find(' ', space+1)) != P_MAX_INDEX) xlat[space] = '+'; } return xlat; } PString PURL::UntranslateString(const PString & str, TranslationType type) { PString xlat = str; xlat.MakeUnique(); PINDEX pos; if (type == PURL::QueryTranslation) { pos = (PINDEX)-1; while ((pos = xlat.Find('+', pos+1)) != P_MAX_INDEX) xlat[pos] = ' '; } pos = (PINDEX)-1; while ((pos = xlat.Find('%', pos+1)) != P_MAX_INDEX) { int digit1 = xlat[pos+1]; int digit2 = xlat[pos+2]; if (isxdigit(digit1) && isxdigit(digit2)) { xlat[pos] = (char)( (isdigit(digit2) ? (digit2-'0') : (toupper(digit2)-'A'+10)) + ((isdigit(digit1) ? (digit1-'0') : (toupper(digit1)-'A'+10)) << 4)); xlat.Delete(pos+1, 2); } } return xlat; } static void SplitVars(const PString & str, PStringToString & vars, char sep1, char sep2) { PINDEX sep1prev = 0; do { PINDEX sep1next = str.Find(sep1, sep1prev); if (sep1next == P_MAX_INDEX) sep1next--; // Implicit assumption string is not a couple of gigabytes long ... PINDEX sep2pos = str.Find(sep2, sep1prev); if (sep2pos > sep1next) sep2pos = sep1next; PCaselessString key = PURL::UntranslateString(str(sep1prev, sep2pos-1), PURL::QueryTranslation); if (!key) { PString data = PURL::UntranslateString(str(sep2pos+1, sep1next-1), PURL::QueryTranslation); if (vars.Contains(key)) vars.SetAt(key, vars[key] + ',' + data); else vars.SetAt(key, data); } sep1prev = sep1next+1; } while (sep1prev != P_MAX_INDEX); } void PURL::SplitQueryVars(const PString & queryStr, PStringToString & queryVars) { SplitVars(queryStr, queryVars, '&', '='); } BOOL PURL::InternalParse(const char * cstr, const char * defaultScheme) { urlString = cstr; scheme.MakeEmpty(); username.MakeEmpty(); password.MakeEmpty(); hostname.MakeEmpty(); port = 0; portSupplied = FALSE; relativePath = FALSE; pathStr.MakeEmpty(); path.SetSize(0); paramVars.RemoveAll(); fragment.MakeEmpty(); queryVars.RemoveAll(); // copy the string so we can take bits off it while (isspace(*cstr)) cstr++; PString url = cstr; // Character set as per RFC2396 PINDEX pos = 0; while (isalnum(url[pos]) || url[pos] == '+' || url[pos] == '-' || url[pos] == '.') pos++; PString schemeName; // get information which tells us how to parse URL for this // particular scheme PURLScheme * schemeInfo = NULL; // Determine if the URL has an explicit scheme if (url[pos] == ':') { // get the scheme information, or get the default scheme schemeInfo = PFactory::CreateInstance(url.Left(pos)); if (schemeInfo == NULL && defaultScheme == NULL) { PFactory::KeyList_T keyList = PFactory::GetKeyList(); if (keyList.size() != 0) schemeInfo = PFactory::CreateInstance(keyList[0]); } if (schemeInfo != NULL) url.Delete(0, pos+1); } // if we could not match a scheme, then use the specified default scheme if (schemeInfo == NULL && defaultScheme != NULL) schemeInfo = PFactory::CreateInstance(defaultScheme); // if that still fails, then use the global default scheme if (schemeInfo == NULL) schemeInfo = PFactory::CreateInstance(DEFAULT_SCHEME); // if that fails, then there is nowehere to go PAssert(schemeInfo != NULL, "Default scheme not available"); scheme = schemeInfo->GetName(); if (!schemeInfo->Parse(url, *this)) return FALSE; return !IsEmpty(); } BOOL PURL::LegacyParse(const PString & _url, const PURLLegacyScheme * schemeInfo) { PString url = _url; PINDEX pos; // Super special case! if (scheme *= "callto") { // Actually not part of MS spec, but a lot of people put in the // into // the URL, so we take it out of it is there. if (url.GetLength() > 2 && url[0] == '/' && url[1] == '/') url.Delete(0, 2); // For some bizarre reason callto uses + instead of ; for paramters // We do a loop so that phone numbers of the form +61243654666 still work do { pos = url.Find('+'); } while (pos != P_MAX_INDEX && isdigit(url[pos+1])); if (pos != P_MAX_INDEX) { SplitVars(url(pos+1, P_MAX_INDEX), paramVars, '+', '='); url.Delete(pos, P_MAX_INDEX); } hostname = paramVars("gateway"); if (!hostname) username = UntranslateString(url, LoginTranslation); else { PCaselessString type = paramVars("type"); if (type == "directory") { pos = url.Find('/'); if (pos == P_MAX_INDEX) username = UntranslateString(url, LoginTranslation); else { hostname = UntranslateString(url.Left(pos), LoginTranslation); username = UntranslateString(url.Mid(pos+1), LoginTranslation); } } else { // Now look for an @ and split user and host pos = url.Find('@'); if (pos != P_MAX_INDEX) { username = UntranslateString(url.Left(pos), LoginTranslation); hostname = UntranslateString(url.Mid(pos+1), LoginTranslation); } else { if (type == "ip" || type == "host") hostname = UntranslateString(url, LoginTranslation); else username = UntranslateString(url, LoginTranslation); } } } // Allow for [ipv6] form pos = hostname.Find(']'); if (pos == P_MAX_INDEX) pos = 0; pos = hostname.Find(':', pos); if (pos != P_MAX_INDEX) { port = (WORD)hostname.Mid(pos+1).AsUnsigned(); portSupplied = TRUE; hostname.Delete(pos, P_MAX_INDEX); } password = paramVars("password"); return TRUE; } // if the URL should have leading slash, then remove it if it has one if (schemeInfo != NULL && schemeInfo->hasHostPort && schemeInfo->hasPath) { if (url.GetLength() > 2 && url[0] == '/' && url[1] == '/') url.Delete(0, 2); else relativePath = TRUE; } // parse user/password/host/port if (!relativePath && schemeInfo->hasHostPort) { PString endHostChars; if (schemeInfo->hasPath) endHostChars += '/'; if (schemeInfo->hasQuery) endHostChars += '?'; if (schemeInfo->hasParameters) endHostChars += ';'; if (schemeInfo->hasFragments) endHostChars += '#'; if (endHostChars.IsEmpty()) pos = P_MAX_INDEX; else pos = url.FindOneOf(endHostChars); PString uphp = url.Left(pos); if (pos != P_MAX_INDEX) url.Delete(0, pos); else url.MakeEmpty(); // if the URL is of type UserPasswordHostPort, then parse it if (schemeInfo->hasUsername) { // extract username and password PINDEX pos2 = uphp.Find('@'); PINDEX pos3 = P_MAX_INDEX; if (schemeInfo->hasPassword) pos3 = uphp.Find(':'); switch (pos2) { case 0 : uphp.Delete(0, 1); break; case P_MAX_INDEX : if (schemeInfo->defaultToUserIfNoAt) { if (pos3 == P_MAX_INDEX) username = UntranslateString(uphp, LoginTranslation); else { username = UntranslateString(uphp.Left(pos3), LoginTranslation); password = UntranslateString(uphp.Mid(pos3+1), LoginTranslation); } uphp.MakeEmpty(); } break; default : if (pos3 > pos2) username = UntranslateString(uphp.Left(pos2), LoginTranslation); else { username = UntranslateString(uphp.Left(pos3), LoginTranslation); password = UntranslateString(uphp(pos3+1, pos2-1), LoginTranslation); } uphp.Delete(0, pos2+1); } } // if the URL does not have a port, then this is the hostname if (schemeInfo->defaultPort == 0) hostname = UntranslateString(uphp, LoginTranslation); else { // determine if the URL has a port number // Allow for [ipv6] form pos = uphp.Find(']'); if (pos == P_MAX_INDEX) pos = 0; pos = uphp.Find(':', pos); if (pos == P_MAX_INDEX) hostname = UntranslateString(uphp, LoginTranslation); else { hostname = UntranslateString(uphp.Left(pos), LoginTranslation); port = (WORD)uphp.Mid(pos+1).AsUnsigned(); portSupplied = TRUE; } if (hostname.IsEmpty() && schemeInfo->defaultHostToLocal) hostname = PIPSocket::GetHostName(); } } if (schemeInfo->hasQuery) { // chop off any trailing query pos = url.Find('?'); if (pos != P_MAX_INDEX) { SplitQueryVars(url(pos+1, P_MAX_INDEX), queryVars); url.Delete(pos, P_MAX_INDEX); } } if (schemeInfo->hasParameters) { // chop off any trailing parameters pos = url.Find(';'); if (pos != P_MAX_INDEX) { SplitVars(url(pos+1, P_MAX_INDEX), paramVars, ';', '='); url.Delete(pos, P_MAX_INDEX); } } if (schemeInfo->hasFragments) { // chop off any trailing fragment pos = url.Find('#'); if (pos != P_MAX_INDEX) { fragment = UntranslateString(url(pos+1, P_MAX_INDEX), PathTranslation); url.Delete(pos, P_MAX_INDEX); } } if (schemeInfo->hasPath) SetPathStr(url); // the hierarchy is what is left else { // if the rest of the URL isn't a path, then we are finished! pathStr = UntranslateString(url, PathTranslation); Recalculate(); } if (port == 0 && schemeInfo->defaultPort != 0 && !relativePath) { // Yes another horrible, horrible special case! if (scheme == "h323" && paramVars("type") == "gk") port = DEFAULT_H323RAS_PORT; else port = schemeInfo->defaultPort; Recalculate(); } return TRUE; } PFilePath PURL::AsFilePath() const { //if (scheme != SchemeTable[FILE_SCHEME].name) // return PString::Empty(); if (scheme != FILE_SCHEME) return PString::Empty(); PStringStream str; if (relativePath) { for (PINDEX i = 0; i < path.GetSize(); i++) { if (i > 0) str << PDIR_SEPARATOR; str << path[i]; } } else { if (hostname != "localhost") str << PDIR_SEPARATOR << hostname; for (PINDEX i = 0; i < path.GetSize(); i++) str << PDIR_SEPARATOR << path[i]; } return str; } PString PURL::AsString(UrlFormat fmt) const { if (fmt == FullURL) return urlString; if (scheme.IsEmpty()) return PString::Empty(); //const schemeStruct * schemeInfo = GetSchemeInfo(scheme); //if (schemeInfo == NULL) // schemeInfo = &SchemeTable[PARRAYSIZE(SchemeTable)-1]; const PURLScheme * schemeInfo = PFactory::CreateInstance(scheme); if (schemeInfo == NULL) schemeInfo = PFactory::CreateInstance(DEFAULT_SCHEME); return schemeInfo->AsString(fmt, *this); } PString PURL::LegacyAsString(PURL::UrlFormat fmt, const PURLLegacyScheme * schemeInfo) const { PStringStream str; PINDEX i; if (fmt == HostPortOnly) { if (schemeInfo->hasHostPort && hostname.IsEmpty()) return str; str << scheme << ':'; if (relativePath) { if (schemeInfo->relativeImpliesScheme) return PString::Empty(); return str; } if (schemeInfo->hasPath && schemeInfo->hasHostPort) str << "//"; if (schemeInfo->hasUsername) { if (!username) { str << TranslateString(username, LoginTranslation); if (schemeInfo->hasPassword && !password) str << ':' << TranslateString(password, LoginTranslation); str << '@'; } } if (schemeInfo->hasHostPort) { if (hostname.Find(':') != P_MAX_INDEX) str << '[' << hostname << ']'; else str << hostname; } if (schemeInfo->defaultPort != 0) { if (port != schemeInfo->defaultPort || portSupplied) str << ':' << port; } return str; } // URIOnly and PathOnly if (schemeInfo->hasPath) { for (i = 0; i < path.GetSize(); i++) { if (i > 0 || !relativePath) str << '/'; str << TranslateString(path[i], PathTranslation); } } else str << TranslateString(pathStr, PathTranslation); if (fmt == URIOnly) { if (!fragment) str << "#" << TranslateString(fragment, PathTranslation); for (i = 0; i < paramVars.GetSize(); i++) { str << ';' << TranslateString(paramVars.GetKeyAt(i), QueryTranslation); PString data = paramVars.GetDataAt(i); if (!data) str << '=' << TranslateString(data, QueryTranslation); } if (!queryVars.IsEmpty()) str << '?' << GetQuery(); } return str; } void PURL::SetScheme(const PString & s) { scheme = s; Recalculate(); } void PURL::SetUserName(const PString & u) { username = u; Recalculate(); } void PURL::SetPassword(const PString & p) { password = p; Recalculate(); } void PURL::SetHostName(const PString & h) { hostname = h; Recalculate(); } void PURL::SetPort(WORD newPort) { port = newPort; Recalculate(); } void PURL::SetPathStr(const PString & p) { pathStr = p; path = pathStr.Tokenise("/", TRUE); if (path.GetSize() > 0 && path[0].IsEmpty()) path.RemoveAt(0); for (PINDEX i = 0; i < path.GetSize(); i++) { path[i] = UntranslateString(path[i], PathTranslation); if (i > 0 && path[i] == ".." && path[i-1] != "..") { path.RemoveAt(i--); path.RemoveAt(i--); } } Recalculate(); } void PURL::SetPath(const PStringArray & p) { path = p; pathStr.MakeEmpty(); for (PINDEX i = 0; i < path.GetSize(); i++) pathStr += '/' + path[i]; Recalculate(); } PString PURL::GetParameters() const { PStringStream str; for (PINDEX i = 0; i < paramVars.GetSize(); i++) { if (i > 0) str << ';'; str << paramVars.GetKeyAt(i); PString data = paramVars.GetDataAt(i); if (!data) str << '=' << data; } return str; } void PURL::SetParameters(const PString & parameters) { SplitVars(parameters, paramVars, ';', '='); Recalculate(); } void PURL::SetParamVars(const PStringToString & p) { paramVars = p; Recalculate(); } void PURL::SetParamVar(const PString & key, const PString & data) { if (data.IsEmpty()) paramVars.RemoveAt(key); else paramVars.SetAt(key, data); Recalculate(); } PString PURL::GetQuery() const { PStringStream str; for (PINDEX i = 0; i < queryVars.GetSize(); i++) { if (i > 0) str << '&'; str << TranslateString(queryVars.GetKeyAt(i), QueryTranslation) << '=' << TranslateString(queryVars.GetDataAt(i), QueryTranslation); } return str; } void PURL::SetQuery(const PString & queryStr) { SplitQueryVars(queryStr, queryVars); Recalculate(); } void PURL::SetQueryVars(const PStringToString & q) { queryVars = q; Recalculate(); } void PURL::SetQueryVar(const PString & key, const PString & data) { if (data.IsEmpty()) queryVars.RemoveAt(key); else queryVars.SetAt(key, data); Recalculate(); } BOOL PURL::OpenBrowser(const PString & url) { #ifdef WIN32 SHELLEXECUTEINFO sei; ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO)); sei.cbSize = sizeof(SHELLEXECUTEINFO); sei.lpVerb = TEXT("open"); #ifndef _WIN32_WCE sei.lpFile = url; #else USES_CONVERSION; sei.lpFile = A2T(url); #endif // _WIN32_WCE if (ShellExecuteEx(&sei) != 0) return TRUE; #ifndef _WIN32_WCE MessageBox(NULL, "Unable to open page"&url, PProcess::Current().GetName(), MB_TASKMODAL); #else MessageBox(NULL, _T("Unable to open page"), A2T(PProcess::Current().GetName()), MB_APPLMODAL); #endif // _WIN32_WCE #endif // WIN32 return FALSE; } void PURL::Recalculate() { //if (scheme.IsEmpty()) // scheme = SchemeTable[DEFAULT_SCHEME].name; if (scheme.IsEmpty()) scheme = DEFAULT_SCHEME; urlString = AsString(HostPortOnly) + AsString(URIOnly); } ////////////////////////////////////////////////////////////////////////////// // PHTTP static char const * const HTTPCommands[PHTTP::NumCommands] = { // HTTP 1.0 commands "GET", "HEAD", "POST", // HTTP 1.1 commands "PUT", "DELETE", "TRACE", "OPTIONS", // HTTPS command "CONNECT" }; const char * const PHTTP::AllowTag = "Allow"; const char * const PHTTP::AuthorizationTag = "Authorization"; const char * const PHTTP::ContentEncodingTag = "Content-Encoding"; const char * const PHTTP::ContentLengthTag = "Content-Length"; const char * const PHTTP::ContentTypeTag = "Content-Type"; const char * const PHTTP::DateTag = "Date"; const char * const PHTTP::ExpiresTag = "Expires"; const char * const PHTTP::FromTag = "From"; const char * const PHTTP::IfModifiedSinceTag = "If-Modified-Since"; const char * const PHTTP::LastModifiedTag = "Last-Modified"; const char * const PHTTP::LocationTag = "Location"; const char * const PHTTP::PragmaTag = "Pragma"; const char * const PHTTP::PragmaNoCacheTag = "no-cache"; const char * const PHTTP::RefererTag = "Referer"; const char * const PHTTP::ServerTag = "Server"; const char * const PHTTP::UserAgentTag = "User-Agent"; const char * const PHTTP::WWWAuthenticateTag = "WWW-Authenticate"; const char * const PHTTP::MIMEVersionTag = "MIME-Version"; const char * const PHTTP::ConnectionTag = "Connection"; const char * const PHTTP::KeepAliveTag = "Keep-Alive"; const char * const PHTTP::TransferEncodingTag= "Transfer-Encoding"; const char * const PHTTP::ChunkedTag = "chunked"; const char * const PHTTP::ProxyConnectionTag = "Proxy-Connection"; const char * const PHTTP::ProxyAuthorizationTag = "Proxy-Authorization"; const char * const PHTTP::ProxyAuthenticateTag = "Proxy-Authenticate"; const char * const PHTTP::ForwardedTag = "Forwarded"; const char * const PHTTP::SetCookieTag = "Set-Cookie"; const char * const PHTTP::CookieTag = "Cookie"; PHTTP::PHTTP() : PInternetProtocol("www 80", NumCommands, HTTPCommands) { } PINDEX PHTTP::ParseResponse(const PString & line) { PINDEX endVer = line.Find(' '); if (endVer == P_MAX_INDEX) { lastResponseInfo = "Bad response"; lastResponseCode = PHTTP::InternalServerError; return 0; } lastResponseInfo = line.Left(endVer); PINDEX endCode = line.Find(' ', endVer+1); lastResponseCode = line(endVer+1,endCode-1).AsInteger(); if (lastResponseCode == 0) lastResponseCode = PHTTP::InternalServerError; lastResponseInfo &= line.Mid(endCode); return 0; } // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/httpclnt.cxx0100644000176200056700000005033310137513262020032 0ustar releasepostincr/* * httpclnt.cxx * * HTTP Client class. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: httpclnt.cxx,v $ * Revision 1.37 2004/10/26 18:25:54 ykiryanov * Added (const char*) qualifier to url parameter, similar to one below * * Revision 1.36 2004/10/21 09:20:33 csoutheren * Fixed compile problems on gcc 2.95.x * * Revision 1.35 2004/08/17 15:18:30 csoutheren * Added support for MovedTemp/MovedPerm to GetDocument * Fixed problem with empty URL passed to ExecuteCommand * * Revision 1.34 2004/04/19 12:53:06 csoutheren * Fix for iostream changes thanks to David Parr * * Revision 1.33 2003/04/23 07:00:15 rogerh * Fix the encoding checking. the find_ip sample program now works again * * Revision 1.32 2003/01/28 06:48:35 robertj * Added https support to PHTTPClient (if #define P_SSL availbel). * * Revision 1.31 2002/12/03 22:38:35 robertj * Removed get document that just returns a content length as the chunked * transfer encoding makes this very dangerous. * Added GetTextDocument() to get a URL content into a PString. * Added a version pf PostData() that gets the reponse content into a PString. * Added ReadContentBody() that takes a PString, not just PBYTEArray. * Fixed bug where conten-encoding must be checked even if there is a * full content length MIME field. * * Revision 1.30 2002/11/06 22:47:25 robertj * Fixed header comment (copyright etc) * * Revision 1.29 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.28 2002/05/28 01:41:50 robertj * Fixed bug in reading chunked data, thanks David Iodice * * Revision 1.27 2001/10/30 07:02:28 robertj * Fixed problem with bad servers causing endless loops in client. * * Revision 1.26 2001/10/03 00:26:34 robertj * Upgraded client to HTTP/1.1 and for chunked mode entity bodies. * * Revision 1.25 2001/09/28 08:55:15 robertj * More changes to support restartable PHTTPClient * * Revision 1.24 2001/09/28 00:43:47 robertj * Added automatic setting of some outward MIME fields. * Added "user agent" string field for automatic inclusion. * Added function to read the contents of the HTTP request. * Added "restarting" of connection if lost persistence. * * Revision 1.23 2001/09/11 03:27:46 robertj * Improved error processing on high level protocol failures, usually * caused by unexpected shut down of a socket. * * Revision 1.22 2001/09/10 02:51:23 robertj * Major change to fix problem with error codes being corrupted in a * PChannel when have simultaneous reads and writes in threads. * * Revision 1.21 2001/02/22 05:27:14 robertj * Added "nicer" version of GetDocument in HTTP client class. * * Revision 1.20 1999/05/13 04:59:24 robertj * Increased amount of buffering on output request write. * * Revision 1.19 1999/05/11 12:23:52 robertj * Fixed bug introduced in last revision to have arbitrary HTTP commands, missing CRLF. * * Revision 1.18 1999/05/04 15:26:01 robertj * Improved HTTP/1.1 compatibility (pass through user commands). * Fixed problems with quicktime installer. * * Revision 1.17 1998/11/30 04:51:55 robertj * New directory structure * * Revision 1.16 1998/09/23 06:22:09 robertj * Added open source copyright license. * * Revision 1.15 1998/07/24 06:57:21 robertj * Fixed error returned on illegal URL passed to unopened socket. * Changed PostData function so just has string for data instead of dictionary. * * Revision 1.14 1998/06/16 03:32:56 robertj * Changed TCP connection shutdown to be parameterised. * * Revision 1.13 1998/06/13 15:03:58 robertj * More conditions for NOT shutting down write. * * Revision 1.12 1998/06/13 12:28:04 robertj * Added shutdown to client command if no content length specified. * * Revision 1.11 1998/04/14 03:42:41 robertj * Fixed error code propagation in HTTP client. * * Revision 1.10 1998/02/03 06:27:10 robertj * Fixed propagation of error codes, especially EOF. * Fixed writing to some CGI scripts that require CRLF outside of byte count. * * Revision 1.9 1998/01/26 00:39:00 robertj * Added function to allow HTTPClient to automatically connect if URL has hostname. * Fixed incorrect return values on HTTPClient GetDocument(), Post etc functions. * * Revision 1.8 1997/06/12 12:33:35 robertj * Fixed bug where mising MIME fields is regarded as an eror. * * Revision 1.7 1997/03/31 08:26:58 robertj * GNU compiler compatibilty. * * Revision 1.6 1997/03/28 04:40:46 robertj * Fixed bug in Post function doing wrong command. * * Revision 1.5 1997/03/18 22:04:03 robertj * Fix bug for binary POST commands. * * Revision 1.4 1996/12/21 01:26:21 robertj * Fixed bug in persistent connections when server closes socket during command. * * Revision 1.3 1996/12/12 09:24:44 robertj * Persistent connection support. * * Revision 1.2 1996/10/08 13:12:03 robertj * Fixed bug in HTTP/0.9 response, first 5 character not put back properly. * * Revision 1.1 1996/09/14 13:02:18 robertj * Initial revision * * Revision 1.37 1996/08/25 09:37:41 robertj * Added function to detect "local" host name. * Fixed printing of trailing '/' in empty URL, is distinction between with and without. * * Revision 1.36 1996/08/22 13:22:26 robertj * Fixed bug in print of URLs, extra @ signs. * * Revision 1.35 1996/08/19 13:42:40 robertj * Fixed errors in URL parsing and display. * Fixed "Forbidden" problem out of HTTP authorisation system. * Fixed authorisation so if have no user/password on basic authentication, does not require it. * * Revision 1.34 1996/07/27 04:13:47 robertj * Fixed use of HTTP proxy on non-persistent connections. * * Revision 1.33 1996/07/15 10:37:20 robertj * Improved proxy "self" detection (especially localhost). * * Revision 1.32 1996/06/28 13:20:24 robertj * Modified HTTPAuthority so gets PHTTPReqest (mainly for URL) passed in. * Moved HTTP form resource to another compilation module. * Fixed memory leak in POST command. * * Revision 1.31 1996/06/10 10:00:00 robertj * Added global function for query parameters parsing. * * Revision 1.30 1996/06/07 13:52:23 robertj * Added PUT to HTTP proxy FTP. Necessitating redisign of entity body processing. * * Revision 1.29 1996/06/05 12:33:04 robertj * Fixed bug in parsing URL with no path, is NOT absolute! * * Revision 1.28 1996/05/30 10:07:26 robertj * Fixed bug in version number checking of return code compatibility. * * Revision 1.27 1996/05/26 03:46:42 robertj * Compatibility to GNU 2.7.x * * Revision 1.26 1996/05/23 10:02:13 robertj * Added common function for GET and HEAD commands. * Fixed status codes to be the actual status code instead of sequential enum. * This fixed some problems with proxy pass through of status codes. * Fixed bug in URL parsing of username and passwords. * * Revision 1.19.1.1 1996/04/17 11:08:22 craigs * New version by craig pending confirmation by robert * * Revision 1.19 1996/04/05 01:46:30 robertj * Assured PSocket::Write always writes the number of bytes specified, no longer need write loops. * Added workaraound for NT Netscape Navigator bug with persistent connections. * * Revision 1.18 1996/03/31 09:05:07 robertj * HTTP 1.1 upgrade. * * Revision 1.17 1996/03/17 05:48:07 robertj * Fixed host name print out of URLs. * Added hit count to PHTTPResource. * * Revision 1.16 1996/03/16 05:00:26 robertj * Added ParseReponse() for splitting reponse line into code and info. * Added client side support for HTTP socket. * Added hooks for proxy support in HTTP socket. * Added translation type to TranslateString() to accommodate query variables. * Defaulted scheme field in URL to "http". * Inhibited output of port field on string conversion of URL according to scheme. * * Revision 1.15 1996/03/11 10:29:50 robertj * Fixed bug in help image HTML. * * Revision 1.14 1996/03/10 13:15:24 robertj * Redesign to make resources thread safe. * * Revision 1.13 1996/03/02 03:27:37 robertj * Added function to translate a string to a form suitable for inclusion in a URL. * Added radio button and selection boxes to HTTP form resource. * Fixed bug in URL parsing, losing first / if hostname specified. * * Revision 1.12 1996/02/25 11:14:24 robertj * Radio button support for forms. * * Revision 1.11 1996/02/25 03:10:34 robertj * Removed pass through HTTP resource. * Fixed PHTTPConfig resource to use correct name for config key. * * Revision 1.10 1996/02/19 13:48:28 robertj * Put multiple uses of literal strings into const variables. * Fixed URL parsing so that the unmangling of strings occurs correctly. * Moved nested classes from PHTTPForm. * Added overwrite option to AddResource(). * Added get/set string to PHTTPString resource. * * Revision 1.9 1996/02/13 13:09:17 robertj * Added extra parameters to callback function in PHTTPResources, required * by descendants to make informed decisions on data being loaded. * * Revision 1.8 1996/02/08 12:26:29 robertj * Redesign of resource callback mechanism. * Added new resource types for HTML data entry forms. * * Revision 1.7 1996/02/03 11:33:19 robertj * Changed RadCmd() so can distinguish between I/O error and unknown command. * * Revision 1.6 1996/02/03 11:11:49 robertj * Numerous bug fixes. * Added expiry date and ismodifiedsince support. * * Revision 1.5 1996/01/30 23:32:40 robertj * Added single . * * Revision 1.4 1996/01/28 14:19:09 robertj * Split HTML into separate source file. * Beginning of pass through resource type. * Changed PCharArray in OnLoadData to PString for convenience in mangling data. * Made PHTTPSpace return standard page on selection of partial path. * * Revision 1.3 1996/01/28 02:49:16 robertj * Further implementation. * * Revision 1.2 1996/01/26 02:24:30 robertj * Further implemetation. * * Revision 1.1 1996/01/23 13:04:32 robertj * Initial revision * */ #include #include #include #if P_SSL #include #endif #include ////////////////////////////////////////////////////////////////////////////// // PHTTPClient PHTTPClient::PHTTPClient() { } PHTTPClient::PHTTPClient(const PString & userAgent) : userAgentName(userAgent) { } int PHTTPClient::ExecuteCommand(Commands cmd, const PURL & url, PMIMEInfo & outMIME, const PString & dataBody, PMIMEInfo & replyMime, BOOL persist) { return ExecuteCommand(commandNames[cmd], url, outMIME, dataBody, replyMime, persist); } int PHTTPClient::ExecuteCommand(const PString & cmdName, const PURL & url, PMIMEInfo & outMIME, const PString & dataBody, PMIMEInfo & replyMime, BOOL persist) { if (!outMIME.Contains(DateTag)) outMIME.SetAt(DateTag, PTime().AsString()); if (!userAgentName && !outMIME.Contains(UserAgentTag)) outMIME.SetAt(UserAgentTag, userAgentName); if (persist) outMIME.SetAt(ConnectionTag, KeepAliveTag); for (PINDEX retry = 0; retry < 3; retry++) { if (!AssureConnect(url, outMIME)) break; if (!WriteCommand(cmdName, url.AsString(PURL::URIOnly), outMIME, dataBody)) { lastResponseCode = -1; lastResponseInfo = GetErrorText(LastWriteError); break; } // If not persisting need to shut down write so other end stops reading if (!persist) Shutdown(ShutdownWrite); // Await a response, if all OK exit loop if (ReadResponse(replyMime)) break; // If not persisting, we have no oppurtunity to write again, just error out if (!persist) break; // If have had a failure to read a response but there was no error then // we have a shutdown socket probably due to a lack of persistence so ... if (GetErrorCode(LastReadError) != NoError) break; // ... we close the channel and allow AssureConnet() to reopen it. Close(); } return lastResponseCode; } BOOL PHTTPClient::WriteCommand(Commands cmd, const PString & url, PMIMEInfo & outMIME, const PString & dataBody) { return WriteCommand(commandNames[cmd], url, outMIME, dataBody); } BOOL PHTTPClient::WriteCommand(const PString & cmdName, const PString & url, PMIMEInfo & outMIME, const PString & dataBody) { ostream & this_stream = *this; PINDEX len = dataBody.GetSize()-1; if (!outMIME.Contains(ContentLengthTag)) outMIME.SetInteger(ContentLengthTag, len); if (cmdName.IsEmpty()) this_stream << "GET"; else this_stream << cmdName; this_stream << ' ' << (url.IsEmpty() ? "/" : (const char*) url) << " HTTP/1.1\r\n" << setfill('\r') << outMIME; return Write((const char *)dataBody, len); } BOOL PHTTPClient::ReadResponse(PMIMEInfo & replyMIME) { PString http = ReadString(7); if (!http) { UnRead(http); if (http.Find("HTTP/") == P_MAX_INDEX) { lastResponseCode = PHTTP::RequestOK; lastResponseInfo = "HTTP/0.9"; return TRUE; } if (http[0] == '\n') ReadString(1); else if (http[0] == '\r' && http[1] == '\n') ReadString(2); if (PHTTP::ReadResponse()) if (replyMIME.Read(*this)) return TRUE; } lastResponseCode = -1; if (GetErrorCode(LastReadError) != NoError) lastResponseInfo = GetErrorText(LastReadError); else { lastResponseInfo = "Premature shutdown"; SetErrorValues(ProtocolFailure, 0, LastReadError); } return FALSE; } BOOL PHTTPClient::ReadContentBody(PMIMEInfo & replyMIME, PString & body) { BOOL ok = InternalReadContentBody(replyMIME, body); body.SetSize(body.GetSize()+1); return ok; } BOOL PHTTPClient::ReadContentBody(PMIMEInfo & replyMIME, PBYTEArray & body) { return InternalReadContentBody(replyMIME, body); } BOOL PHTTPClient::InternalReadContentBody(PMIMEInfo & replyMIME, PAbstractArray & body) { PCaselessString encoding = replyMIME(TransferEncodingTag); if (encoding != ChunkedTag) { if (replyMIME.Contains(ContentLengthTag)) { PINDEX length = replyMIME.GetInteger(ContentLengthTag); body.SetSize(length); return ReadBlock(body.GetPointer(), length); } if (!(encoding.IsEmpty())) { lastResponseCode = -1; lastResponseInfo = "Unknown Transfer-Encoding extension"; return FALSE; } // Must be raw, read to end file variety static const PINDEX ChunkSize = 2048; PINDEX bytesRead = 0; while (ReadBlock((char *)body.GetPointer(bytesRead+ChunkSize)+bytesRead, ChunkSize)) bytesRead += GetLastReadCount(); body.SetSize(bytesRead + GetLastReadCount()); return GetErrorCode(LastReadError) == NoError; } // HTTP1.1 chunked format PINDEX bytesRead = 0; for (;;) { // Read chunk length line PString chunkLengthLine; if (!ReadLine(chunkLengthLine)) return FALSE; // A zero length chunk is end of output PINDEX chunkLength = chunkLengthLine.AsUnsigned(16); if (chunkLength == 0) break; // Read the chunk if (!ReadBlock((char *)body.GetPointer(bytesRead+chunkLength)+bytesRead, chunkLength)) return FALSE; bytesRead+= chunkLength; // Read the trailing CRLF if (!ReadLine(chunkLengthLine)) return FALSE; } // Read the footer PString footer; do { if (!ReadLine(footer)) return FALSE; } while (replyMIME.AddMIME(footer)); return TRUE; } BOOL PHTTPClient::GetTextDocument(const PURL & url, PString & document, BOOL persist) { PMIMEInfo outMIME, replyMIME; if (!GetDocument(url, outMIME, replyMIME, persist)) return FALSE; return ReadContentBody(replyMIME, document); } BOOL PHTTPClient::GetDocument(const PURL & _url, PMIMEInfo & _outMIME, PMIMEInfo & replyMIME, BOOL persist) { int count = 0; static const char locationTag[] = "Location"; PURL url = _url; for (;;) { PMIMEInfo outMIME = _outMIME; replyMIME.RemoveAll(); PString u = url.AsString(); int code = ExecuteCommand(GET, url, outMIME, PString(), replyMIME, persist); switch (code) { case RequestOK: return TRUE; case MovedPermanently: case MovedTemporarily: { if (count > 10) return FALSE; PString str = replyMIME(locationTag); if (str.IsEmpty()) return FALSE; PString doc; if (!ReadContentBody(replyMIME, doc)) return FALSE; url = str; count++; } break; default: return FALSE; } } } BOOL PHTTPClient::GetHeader(const PURL & url, PMIMEInfo & outMIME, PMIMEInfo & replyMIME, BOOL persist) { return ExecuteCommand(HEAD, url, outMIME, PString(), replyMIME, persist) == RequestOK; } BOOL PHTTPClient::PostData(const PURL & url, PMIMEInfo & outMIME, const PString & data, PMIMEInfo & replyMIME, BOOL persist) { PString dataBody = data; if (!outMIME.Contains(ContentTypeTag)) { outMIME.SetAt(ContentTypeTag, "application/x-www-form-urlencoded"); dataBody += "\r\n"; // Add CRLF for compatibility with some CGI servers. } return ExecuteCommand(POST, url, outMIME, data, replyMIME, persist) == RequestOK; } BOOL PHTTPClient::PostData(const PURL & url, PMIMEInfo & outMIME, const PString & data, PMIMEInfo & replyMIME, PString & body, BOOL persist) { if (!PostData(url, outMIME, data, replyMIME, persist)) return FALSE; return ReadContentBody(replyMIME, body); } BOOL PHTTPClient::AssureConnect(const PURL & url, PMIMEInfo & outMIME) { PString host = url.GetHostName(); // Is not open or other end shut down, restablish connection if (!IsOpen()) { if (host.IsEmpty()) { lastResponseCode = BadRequest; lastResponseInfo = "No host specified"; return SetErrorValues(ProtocolFailure, 0, LastReadError); } #if P_SSL if (url.GetScheme() == "https") { PTCPSocket * tcp = new PTCPSocket(url.GetPort()); tcp->SetReadTimeout(readTimeout); if (!tcp->Connect(host)) { lastResponseCode = -2; lastResponseInfo = tcp->GetErrorText(); delete tcp; return FALSE; } PSSLChannel * ssl = new PSSLChannel; if (!ssl->Connect(tcp)) { lastResponseCode = -2; lastResponseInfo = ssl->GetErrorText(); delete ssl; return FALSE; } if (!Open(ssl)) { lastResponseCode = -2; lastResponseInfo = GetErrorText(); return FALSE; } } else #endif if (!Connect(host, url.GetPort())) { lastResponseCode = -2; lastResponseInfo = GetErrorText(); return FALSE; } } // Have connection, so fill in the required MIME fields static char HostTag[] = "Host"; if (!outMIME.Contains(HostTag)) { if (!host) outMIME.SetAt(HostTag, host); else { PIPSocket * sock = GetSocket(); if (sock != NULL) outMIME.SetAt(HostTag, sock->GetHostName()); } } return TRUE; } // End Of File /////////////////////////////////////////////////////////////// pwlib_v1_10_2/src/ptclib/httpform.cxx0100644000176200056700000021230510042404354020030 0ustar releasepostincr/* * httpform.cxx * * Forms using HTTP user interface. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: httpform.cxx,v $ * Revision 1.49 2004/04/24 06:27:56 rjongbloed * Fixed GCC 3.4.0 warnings about PAssertNULL and improved recoverability on * NULL pointer usage in various bits of code. * * Revision 1.48 2004/04/03 08:22:20 csoutheren * Remove pseudo-RTTI and replaced with real RTTI * * Revision 1.47 2003/03/24 04:31:03 robertj * Added function to set and get strings from PConfig in correct format for * use with HTTP form array contsructs. * * Revision 1.46 2002/11/22 06:20:26 robertj * Added extra space around data entry fields. * Added borders around arrays and composite fields. * Added multi-line data entry for HTTPStringField > 128 characters. * * Revision 1.45 2002/11/06 22:47:25 robertj * Fixed header comment (copyright etc) * * Revision 1.44 2002/10/10 04:43:44 robertj * VxWorks port, thanks Martijn Roest * * Revision 1.43 2002/07/17 08:44:58 robertj * Added links back to page and home page on accepted data html. * Fixed display of validation error text if page not accepted. * * Revision 1.42 2001/10/10 08:07:48 robertj * Fixed large memory leak of strings when doing POST to a form. * * Revision 1.41 2001/05/16 06:03:14 craigs * Changed to allow access to absolute registry paths from within subforms * * Revision 1.40 2001/02/07 04:44:47 robertj * Added ability to use check box to add/delete fields from arrays. * * Revision 1.39 2001/01/08 04:13:23 robertj * Fixed bug with skipping every second option in determining the selected * option in a SELECT field. No longer requires a to work. * * Revision 1.38 2000/12/20 02:23:39 robertj * Fixed variable array size value (caused extra blank entry ever commit). * * Revision 1.37 2000/12/18 12:13:08 robertj * Fixed bug in auto-generated HTML in fixed size arrays, should not have add/delete box. * * Revision 1.36 2000/12/18 11:41:01 robertj * Fixed bug in auto-generated HTML in non-array composite fields * * Revision 1.35 2000/12/18 07:14:30 robertj * Added ability to have fixed length array fields. * Fixed regular expressions so can have single '-' in field name. * Fixed use of non-array subforprefix based compsite fields. * * Revision 1.34 2000/12/12 07:21:35 robertj * Added ability to expand fields based on regex into repeated chunks of HTML. * * Revision 1.33 2000/11/02 21:55:28 craigs * Added extra constructor * * Revision 1.32 2000/09/05 09:52:24 robertj * Fixed bug in HTTP form updating SELECT fields from registry. * * Revision 1.31 2000/06/19 11:35:01 robertj * Fixed bug in setting current value of options in select form fields. * * Revision 1.30 1999/02/10 13:19:45 robertj * Fixed PConfig update problem when POSTing to the form. Especiall with arrays. * * Revision 1.29 1998/11/30 04:51:57 robertj * New directory structure * * Revision 1.28 1998/11/14 11:11:06 robertj * PPC GNU compiler compatibility. * * Revision 1.27 1998/10/01 09:05:11 robertj * Fixed bug in nested composite field names, array indexes not being set correctly. * * Revision 1.26 1998/09/23 06:22:11 robertj * Added open source copyright license. * * Revision 1.25 1998/08/20 05:51:06 robertj * Fixed bug where substitutions did not always occur if near end of macro block. * Improved internationalisation. Allow HTML override of strings in macros. * * Revision 1.24 1998/08/09 11:25:51 robertj * GNU C++ warning removal. * * Revision 1.23 1998/08/09 10:35:11 robertj * Changed array control so can have language override. * * Revision 1.22 1998/07/24 06:56:05 robertj * Fixed case significance problem in HTTP forms. * Improved detection of VALUE= fields with and without quotes. * * Revision 1.21 1998/03/20 03:16:43 robertj * Fixed bug in beaing able to reset a check box field. * * Revision 1.20 1998/02/03 06:26:09 robertj * Fixed propagation of inital values in arrays subfields. * Fixed problem where hidden fields were being relaced with default values from PHTTPForm. * * Revision 1.19 1998/01/26 02:49:17 robertj * GNU support. * * Revision 1.18 1998/01/26 01:51:37 robertj * Fixed uninitialised variable. * * Revision 1.17 1998/01/26 00:25:25 robertj * Major rewrite of HTTP forms management. * * Revision 1.16 1997/12/18 05:06:51 robertj * Added missing braces to kill GNU compiler warning. * * Revision 1.15 1997/10/10 10:43:43 robertj * Fixed bug in password encryption, missing string terminator. * * Revision 1.14 1997/08/28 12:48:29 robertj * Changed array fields to allow for reordering. * * Revision 1.13 1997/08/21 12:44:10 robertj * Fixed bug in HTTP form array size field. * Fixed bug where section list was only replacing first instance of macro. * * Revision 1.12 1997/08/09 07:46:52 robertj * Fixed problems with value of SELECT fields in form * * Revision 1.11 1997/08/04 10:41:13 robertj * Fixed bug in new section list page for names with special characters in them. * * Revision 1.10 1997/07/26 11:38:20 robertj * Support for overridable pages in HTTP service applications. * * Revision 1.9 1997/07/14 11:49:51 robertj * Put "Add" and "Keep" on check boxes in array fields. * * Revision 1.8 1997/07/08 13:12:29 robertj * Major HTTP form enhancements for lists and arrays of fields. * * Revision 1.7 1997/06/08 04:47:27 robertj * Adding new llist based form field. * * Revision 1.6 1997/04/12 02:07:26 robertj * Fixed boolean check boxes being more flexible on string values. * * Revision 1.5 1997/04/01 06:00:53 robertj * Changed PHTTPConfig so if section empty string, does not write PConfig parameters. * * Revision 1.4 1996/10/08 13:10:34 robertj * Fixed bug in boolean (checkbox) html forms, cannot be reset. * * Revision 1.3 1996/09/14 13:09:31 robertj * Major upgrade: * rearranged sockets to help support IPX. * added indirect channel class and moved all protocols to descend from it, * separating the protocol from the low level byte transport. * * Revision 1.2 1996/08/08 13:34:10 robertj * Removed redundent call. * * Revision 1.1 1996/06/28 12:56:20 robertj * Initial revision * */ #ifdef __GNUC__ #pragma implementation "httpform.h" #endif #include #include #include ////////////////////////////////////////////////////////////////////////////// // PHTTPField PHTTPField::PHTTPField(const char * nam, const char * titl, const char * hlp) : baseName(nam), fullName(nam), title(titl != NULL ? titl : nam), help(hlp != NULL ? hlp : "") { notInHTML = TRUE; } PObject::Comparison PHTTPField::Compare(const PObject & obj) const { PAssert(PIsDescendant(&obj, PHTTPField), PInvalidCast); return fullName.Compare(((const PHTTPField &)obj).fullName); } void PHTTPField::SetName(const PString & newName) { fullName = newName; } const PHTTPField * PHTTPField::LocateName(const PString & name) const { if (fullName == name) return this; return NULL; } void PHTTPField::SetHelp(const PString & hotLinkURL, const PString & linkText) { help = "" + linkText + "\r\n"; } void PHTTPField::SetHelp(const PString & hotLinkURL, const PString & imageURL, const PString & imageText) { help = "\""\r\n"; } static BOOL FindSpliceBlock(const PRegularExpression & startExpr, const PRegularExpression & endExpr, const PString & text, PINDEX offset, PINDEX & pos, PINDEX & len, PINDEX & start, PINDEX & finish) { start = finish = P_MAX_INDEX; if (!text.FindRegEx(startExpr, pos, len, offset)) return FALSE; PINDEX endpos, endlen; if (!text.FindRegEx(endExpr, endpos, endlen, pos+len)) return TRUE; start = pos + len; finish = endpos - 1; len = endpos - pos + endlen; return TRUE; } static BOOL FindSpliceBlock(const PRegularExpression & startExpr, const PString & text, PINDEX offset, PINDEX & pos, PINDEX & len, PINDEX & start, PINDEX & finish) { static PRegularExpression EndBlock("?", PRegularExpression::Extended|PRegularExpression::IgnoreCase); return FindSpliceBlock(startExpr, EndBlock, text, offset, pos, len, start, finish); } static BOOL FindSpliceName(const PCaselessString & text, PINDEX start, PINDEX finish, PINDEX & pos, PINDEX & end) { if (text[start+1] != '!') { static PRegularExpression NameExpr("name[ \t\r\n]*=[ \t\r\n]*\"[^\"]*\"", PRegularExpression::Extended|PRegularExpression::IgnoreCase); if ((pos = text.FindRegEx(NameExpr, start)) == P_MAX_INDEX) return FALSE; if (pos >= finish) return FALSE; pos = text.Find('"', pos) + 1; end = text.Find('"', pos) - 1; } else { pos = start + 9; // Skip over the ?" "|" "<[a-z]+[ \t\r\n][^>]*name[ \t\r\n]*=[ \t\r\n]*\"[^\"]*\"[^>]*>", PRegularExpression::Extended|PRegularExpression::IgnoreCase); if (!text.FindRegEx(FieldName, pos, len, offset)) return FALSE; PINDEX nameStart, nameEnd; if (!FindSpliceName(text, pos, pos+len-1, nameStart, nameEnd)) return FALSE; name = text(nameStart, nameEnd); pos = nameStart; len = nameEnd - nameStart + 1; return TRUE; } static void SpliceAdjust(const PString & str, PString & text, PINDEX pos, PINDEX & len, PINDEX & finish) { text.Splice(str, pos, len); PINDEX newLen = str.GetLength(); if (finish != P_MAX_INDEX) finish += newLen - len; len = newLen; } void PHTTPField::ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const { PString name; PINDEX pos, len; while (start < finish && FindSpliceFieldName(text, start, pos, len, name)) { if (pos > finish) break; if (baseName == name) SpliceAdjust(fullName, text, pos, len, finish); start = pos + len; } } static BOOL FindInputValue(const PString & text, PINDEX & before, PINDEX & after) { static PRegularExpression Value("value[ \t\r\n]*=[ \t\r\n]*(\"[^\"]*\"|[^> \t\r\n]+)", PRegularExpression::Extended|PRegularExpression::IgnoreCase); PINDEX pos = text.FindRegEx(Value); if (pos == P_MAX_INDEX) return FALSE; before = text.Find('"', pos); if (before != P_MAX_INDEX) after = text.Find('"', before+1); else { before = text.Find('=', pos); while (isspace(text[before+1])) before++; after = before + 1; while (text[after] != '\0' && text[after] != '>' && !isspace(text[after])) after++; } return TRUE; } PString PHTTPField::GetHTMLInput(const PString & input) const { PINDEX before, after; if (FindInputValue(input, before, after)) return input(0, before) + GetValue(FALSE) + input.Mid(after); return "]*>", PRegularExpression::IgnoreCase); static PRegularExpression EndOption("<[ \t\r\n]*/?option[^>]*>", PRegularExpression::Extended|PRegularExpression::IgnoreCase); while (FindSpliceBlock(StartOption, EndOption, text, pos+len, pos, len, start, finish) && pos < end) { if (start == P_MAX_INDEX) start = text.Find('>', pos)+1; else { // Check for if option was not closed by but another