From e6e547b0a1c1b689bab5e23bfa040bd1acae1fed Mon Sep 17 00:00:00 2001 From: Tadas Baltrusaitis Date: Fri, 20 May 2016 16:48:43 -0400 Subject: [PATCH] GUI initial work (WIP) --- .gitignore | 6 + OpenFace.sln | 41 +- gui/OpenFace-offline/App.config | 6 + gui/OpenFace-offline/App.xaml | 9 + gui/OpenFace-offline/App.xaml.cs | 17 + gui/OpenFace-offline/FpsTracker.cs | 38 + gui/OpenFace-offline/MainWindow.xaml | 171 ++ gui/OpenFace-offline/MainWindow.xaml.cs | 1249 +++++++++++ gui/OpenFace-offline/OpenFaceOffline.csproj | 178 ++ .../Properties/AssemblyInfo.cs | 55 + .../Properties/Resources.Designer.cs | 63 + .../Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 26 + .../Properties/Settings.settings | 7 + gui/OpenFace-offline/UI_items/BarGraph.xaml | 17 + .../UI_items/BarGraph.xaml.cs | 39 + .../UI_items/BarGraphHorizontal.xaml | 14 + .../UI_items/BarGraphHorizontal.xaml.cs | 42 + .../UI_items/MultiBarGraph.xaml | 11 + .../UI_items/MultiBarGraph.xaml.cs | 59 + .../UI_items/MultiBarGraphHorz.xaml | 13 + .../UI_items/MultiBarGraphHorz.xaml.cs | 90 + .../UI_items/OverlayImage.xaml | 8 + .../UI_items/OverlayImage.xaml.cs | 110 + .../UI_items/SimpleImage.xaml | 8 + .../UI_items/SimpleImage.xaml.cs | 36 + gui/OpenFaceOffline/App.config | 6 + gui/OpenFaceOffline/App.xaml | 9 + gui/OpenFaceOffline/App.xaml.cs | 75 + gui/OpenFaceOffline/FpsTracker.cs | 96 + gui/OpenFaceOffline/MainWindow.xaml | 175 ++ gui/OpenFaceOffline/MainWindow.xaml.cs | 1194 ++++++++++ gui/OpenFaceOffline/OpenFaceOffline.csproj | 184 ++ .../Properties/AssemblyInfo.cs | 55 + .../Properties/Resources.Designer.cs | 71 + gui/OpenFaceOffline/Properties/Resources.resx | 117 + .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + gui/OpenFaceOffline/UI_items/BarGraph.xaml | 17 + gui/OpenFaceOffline/UI_items/BarGraph.xaml.cs | 97 + .../UI_items/BarGraphHorizontal.xaml | 14 + .../UI_items/BarGraphHorizontal.xaml.cs | 100 + .../UI_items/MultiBarGraph.xaml | 11 + .../UI_items/MultiBarGraph.xaml.cs | 117 + .../UI_items/MultiBarGraphHorz.xaml | 13 + .../UI_items/MultiBarGraphHorz.xaml.cs | 148 ++ .../UI_items/OverlayImage.xaml | 8 + .../UI_items/OverlayImage.xaml.cs | 168 ++ gui/OpenFaceOffline/UI_items/SimpleImage.xaml | 8 + .../UI_items/SimpleImage.xaml.cs | 94 + gui/OpenFaceOffline/logo1.ico | Bin 0 -> 1626582 bytes lib/local/CamCom/CamCom.props | 15 + lib/local/CamCom/CamCom.vcxproj | 167 ++ lib/local/CamCom/CamCom.vcxproj.filters | 45 + lib/local/CamCom/camera_helper.cpp | 192 ++ lib/local/CamCom/camera_helper.h | 720 ++++++ lib/local/CamCom/comet/array.h | 150 ++ lib/local/CamCom/comet/assert.h | 68 + lib/local/CamCom/comet/atl_module.h | 121 + lib/local/CamCom/comet/auto_buffer.h | 99 + lib/local/CamCom/comet/bstr.h | 948 ++++++++ lib/local/CamCom/comet/calllog.h | 628 ++++++ lib/local/CamCom/comet/cmd_line_parser.h | 101 + lib/local/CamCom/comet/comet.h | 776 +++++++ lib/local/CamCom/comet/common.h | 316 +++ lib/local/CamCom/comet/config.h | 243 +++ lib/local/CamCom/comet/cp.h | 436 ++++ lib/local/CamCom/comet/cptraits.h | 118 + lib/local/CamCom/comet/currency.h | 474 ++++ lib/local/CamCom/comet/date.h | 396 ++++ lib/local/CamCom/comet/datetime.h | 1943 +++++++++++++++++ lib/local/CamCom/comet/dispatch.h | 675 ++++++ lib/local/CamCom/comet/enum.h | 29 + lib/local/CamCom/comet/enum_common.h | 187 ++ lib/local/CamCom/comet/enum_iterator.h | 179 ++ lib/local/CamCom/comet/error.h | 429 ++++ lib/local/CamCom/comet/error_fwd.h | 119 + lib/local/CamCom/comet/exe_server.h | 292 +++ lib/local/CamCom/comet/functor.h | 1341 ++++++++++++ lib/local/CamCom/comet/git.h | 95 + lib/local/CamCom/comet/handle.h | 363 +++ lib/local/CamCom/comet/handle_except.h | 363 +++ lib/local/CamCom/comet/impqi.h | 546 +++++ lib/local/CamCom/comet/interface.h | 256 +++ lib/local/CamCom/comet/invariant_lock.h | 126 ++ lib/local/CamCom/comet/lw_lock.h | 228 ++ lib/local/CamCom/comet/module.h | 274 +++ lib/local/CamCom/comet/oleidl_comtypes.h | 72 + lib/local/CamCom/comet/ptr.h | 1261 +++++++++++ lib/local/CamCom/comet/reference_count.h | 100 + lib/local/CamCom/comet/registry.h | 1302 +++++++++++ lib/local/CamCom/comet/regkey.h | 65 + lib/local/CamCom/comet/safearray.h | 1498 +++++++++++++ lib/local/CamCom/comet/scope_guard.h | 363 +++ lib/local/CamCom/comet/server.h | 1588 ++++++++++++++ lib/local/CamCom/comet/smart_enum.h | 139 ++ lib/local/CamCom/comet/static_assert.h | 54 + lib/local/CamCom/comet/stl.h | 69 + lib/local/CamCom/comet/stl_enum.h | 188 ++ lib/local/CamCom/comet/stream.h | 1566 +++++++++++++ lib/local/CamCom/comet/threading.h | 228 ++ lib/local/CamCom/comet/tlbinfo.h | 451 ++++ lib/local/CamCom/comet/tstring.h | 125 ++ lib/local/CamCom/comet/type_traits.h | 262 +++ lib/local/CamCom/comet/typelist.h | 450 ++++ lib/local/CamCom/comet/unittest.h | 86 + lib/local/CamCom/comet/util.h | 125 ++ lib/local/CamCom/comet/uuid.h | 88 + lib/local/CamCom/comet/uuid_fwd.h | 441 ++++ lib/local/CamCom/comet/variant.h | 1054 +++++++++ lib/local/CamCom/comet/variant_iterator.h | 149 ++ lib/local/CamCom/comet_auto_mf.h | 20 + lib/local/CamCom/comet_com_ptr_array.h | 65 + lib/local/CamCom/comet_task_ptr.h | 85 + lib/local/CamCom/stdafx.cpp | 8 + lib/local/CamCom/stdafx.h | 15 + lib/local/CamCom/targetver.h | 8 + lib/local/CppInerop/AssemblyInfo.cpp | 38 + lib/local/CppInerop/CameraInterop.h | 462 ++++ lib/local/CppInerop/CppInerop.vcxproj | 205 ++ lib/local/CppInerop/CppInerop.vcxproj.filters | 39 + lib/local/CppInerop/CppInterop.cpp | 63 + lib/local/CppInerop/FaceAnalyserInterop.h | 463 ++++ lib/local/CppInerop/LandmarkDetectorInterop.h | 395 ++++ lib/local/CppInerop/OpenCVWrappers.h | 305 +++ .../FaceAnalyser/include/GazeEstimation.h | 3 + lib/local/FaceAnalyser/src/GazeEstimation.cpp | 2 +- .../DISFA_valid_res.txt | 22 +- .../results/fps_yt.mat | Bin 5119970 -> 5119964 bytes .../results/in-the-wild-res-no-outline.pdf | Bin 10497 -> 10497 bytes .../results/landmark_detections.mat | Bin 63347 -> 63365 bytes .../Gaze Experiments/mpii_1500_errs.mat | Bin 11735 -> 11733 bytes .../Gaze Experiments/mpii_1500_errs.txt | 2 +- .../Head Pose Experiments/results/Pose_OF.mat | Bin 2935684 -> 2935684 bytes 134 files changed, 32611 insertions(+), 15 deletions(-) create mode 100644 gui/OpenFace-offline/App.config create mode 100644 gui/OpenFace-offline/App.xaml create mode 100644 gui/OpenFace-offline/App.xaml.cs create mode 100644 gui/OpenFace-offline/FpsTracker.cs create mode 100644 gui/OpenFace-offline/MainWindow.xaml create mode 100644 gui/OpenFace-offline/MainWindow.xaml.cs create mode 100644 gui/OpenFace-offline/OpenFaceOffline.csproj create mode 100644 gui/OpenFace-offline/Properties/AssemblyInfo.cs create mode 100644 gui/OpenFace-offline/Properties/Resources.Designer.cs create mode 100644 gui/OpenFace-offline/Properties/Resources.resx create mode 100644 gui/OpenFace-offline/Properties/Settings.Designer.cs create mode 100644 gui/OpenFace-offline/Properties/Settings.settings create mode 100644 gui/OpenFace-offline/UI_items/BarGraph.xaml create mode 100644 gui/OpenFace-offline/UI_items/BarGraph.xaml.cs create mode 100644 gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml create mode 100644 gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml.cs create mode 100644 gui/OpenFace-offline/UI_items/MultiBarGraph.xaml create mode 100644 gui/OpenFace-offline/UI_items/MultiBarGraph.xaml.cs create mode 100644 gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml create mode 100644 gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml.cs create mode 100644 gui/OpenFace-offline/UI_items/OverlayImage.xaml create mode 100644 gui/OpenFace-offline/UI_items/OverlayImage.xaml.cs create mode 100644 gui/OpenFace-offline/UI_items/SimpleImage.xaml create mode 100644 gui/OpenFace-offline/UI_items/SimpleImage.xaml.cs create mode 100644 gui/OpenFaceOffline/App.config create mode 100644 gui/OpenFaceOffline/App.xaml create mode 100644 gui/OpenFaceOffline/App.xaml.cs create mode 100644 gui/OpenFaceOffline/FpsTracker.cs create mode 100644 gui/OpenFaceOffline/MainWindow.xaml create mode 100644 gui/OpenFaceOffline/MainWindow.xaml.cs create mode 100644 gui/OpenFaceOffline/OpenFaceOffline.csproj create mode 100644 gui/OpenFaceOffline/Properties/AssemblyInfo.cs create mode 100644 gui/OpenFaceOffline/Properties/Resources.Designer.cs create mode 100644 gui/OpenFaceOffline/Properties/Resources.resx create mode 100644 gui/OpenFaceOffline/Properties/Settings.Designer.cs create mode 100644 gui/OpenFaceOffline/Properties/Settings.settings create mode 100644 gui/OpenFaceOffline/UI_items/BarGraph.xaml create mode 100644 gui/OpenFaceOffline/UI_items/BarGraph.xaml.cs create mode 100644 gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml create mode 100644 gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml.cs create mode 100644 gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml create mode 100644 gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml.cs create mode 100644 gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml create mode 100644 gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml.cs create mode 100644 gui/OpenFaceOffline/UI_items/OverlayImage.xaml create mode 100644 gui/OpenFaceOffline/UI_items/OverlayImage.xaml.cs create mode 100644 gui/OpenFaceOffline/UI_items/SimpleImage.xaml create mode 100644 gui/OpenFaceOffline/UI_items/SimpleImage.xaml.cs create mode 100644 gui/OpenFaceOffline/logo1.ico create mode 100644 lib/local/CamCom/CamCom.props create mode 100644 lib/local/CamCom/CamCom.vcxproj create mode 100644 lib/local/CamCom/CamCom.vcxproj.filters create mode 100644 lib/local/CamCom/camera_helper.cpp create mode 100644 lib/local/CamCom/camera_helper.h create mode 100644 lib/local/CamCom/comet/array.h create mode 100644 lib/local/CamCom/comet/assert.h create mode 100644 lib/local/CamCom/comet/atl_module.h create mode 100644 lib/local/CamCom/comet/auto_buffer.h create mode 100644 lib/local/CamCom/comet/bstr.h create mode 100644 lib/local/CamCom/comet/calllog.h create mode 100644 lib/local/CamCom/comet/cmd_line_parser.h create mode 100644 lib/local/CamCom/comet/comet.h create mode 100644 lib/local/CamCom/comet/common.h create mode 100644 lib/local/CamCom/comet/config.h create mode 100644 lib/local/CamCom/comet/cp.h create mode 100644 lib/local/CamCom/comet/cptraits.h create mode 100644 lib/local/CamCom/comet/currency.h create mode 100644 lib/local/CamCom/comet/date.h create mode 100644 lib/local/CamCom/comet/datetime.h create mode 100644 lib/local/CamCom/comet/dispatch.h create mode 100644 lib/local/CamCom/comet/enum.h create mode 100644 lib/local/CamCom/comet/enum_common.h create mode 100644 lib/local/CamCom/comet/enum_iterator.h create mode 100644 lib/local/CamCom/comet/error.h create mode 100644 lib/local/CamCom/comet/error_fwd.h create mode 100644 lib/local/CamCom/comet/exe_server.h create mode 100644 lib/local/CamCom/comet/functor.h create mode 100644 lib/local/CamCom/comet/git.h create mode 100644 lib/local/CamCom/comet/handle.h create mode 100644 lib/local/CamCom/comet/handle_except.h create mode 100644 lib/local/CamCom/comet/impqi.h create mode 100644 lib/local/CamCom/comet/interface.h create mode 100644 lib/local/CamCom/comet/invariant_lock.h create mode 100644 lib/local/CamCom/comet/lw_lock.h create mode 100644 lib/local/CamCom/comet/module.h create mode 100644 lib/local/CamCom/comet/oleidl_comtypes.h create mode 100644 lib/local/CamCom/comet/ptr.h create mode 100644 lib/local/CamCom/comet/reference_count.h create mode 100644 lib/local/CamCom/comet/registry.h create mode 100644 lib/local/CamCom/comet/regkey.h create mode 100644 lib/local/CamCom/comet/safearray.h create mode 100644 lib/local/CamCom/comet/scope_guard.h create mode 100644 lib/local/CamCom/comet/server.h create mode 100644 lib/local/CamCom/comet/smart_enum.h create mode 100644 lib/local/CamCom/comet/static_assert.h create mode 100644 lib/local/CamCom/comet/stl.h create mode 100644 lib/local/CamCom/comet/stl_enum.h create mode 100644 lib/local/CamCom/comet/stream.h create mode 100644 lib/local/CamCom/comet/threading.h create mode 100644 lib/local/CamCom/comet/tlbinfo.h create mode 100644 lib/local/CamCom/comet/tstring.h create mode 100644 lib/local/CamCom/comet/type_traits.h create mode 100644 lib/local/CamCom/comet/typelist.h create mode 100644 lib/local/CamCom/comet/unittest.h create mode 100644 lib/local/CamCom/comet/util.h create mode 100644 lib/local/CamCom/comet/uuid.h create mode 100644 lib/local/CamCom/comet/uuid_fwd.h create mode 100644 lib/local/CamCom/comet/variant.h create mode 100644 lib/local/CamCom/comet/variant_iterator.h create mode 100644 lib/local/CamCom/comet_auto_mf.h create mode 100644 lib/local/CamCom/comet_com_ptr_array.h create mode 100644 lib/local/CamCom/comet_task_ptr.h create mode 100644 lib/local/CamCom/stdafx.cpp create mode 100644 lib/local/CamCom/stdafx.h create mode 100644 lib/local/CamCom/targetver.h create mode 100644 lib/local/CppInerop/AssemblyInfo.cpp create mode 100644 lib/local/CppInerop/CameraInterop.h create mode 100644 lib/local/CppInerop/CppInerop.vcxproj create mode 100644 lib/local/CppInerop/CppInerop.vcxproj.filters create mode 100644 lib/local/CppInerop/CppInterop.cpp create mode 100644 lib/local/CppInerop/FaceAnalyserInterop.h create mode 100644 lib/local/CppInerop/LandmarkDetectorInterop.h create mode 100644 lib/local/CppInerop/OpenCVWrappers.h diff --git a/.gitignore b/.gitignore index 60996a5..3aac9ad 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,9 @@ matlab_runners/Feature Point Experiments/yt_features/ matlab_runners/Feature Point Experiments/yt_features_clm/ matlab_runners/Gaze Experiments/mpii_out/ build/ +Debug/ +Release/AU_predictors/ +Release/ +ipch/ +matlab_runners/Demos/output_features_seq/ +matlab_runners/Demos/output_features_vid/ diff --git a/OpenFace.sln b/OpenFace.sln index 84732ad..73c1f0b 100644 --- a/OpenFace.sln +++ b/OpenFace.sln @@ -13,7 +13,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FeatureExtraction", "exe\Fe EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{99FEBA13-BDDF-4076-B57E-D8EF4076E20D}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Executables", "Executables", "{9961DDAC-BE6E-4A6E-8EEF-FFC7D67BD631}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Command line Executables", "Command line Executables", "{9961DDAC-BE6E-4A6E-8EEF-FFC7D67BD631}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FaceLandmarkVidMulti", "exe\FaceLandmarkVidMulti\FaceLandmarkVidMulti.vcxproj", "{C3FAF36F-44BC-4454-87C2-C5106575FE50}" EndProject @@ -23,6 +23,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FaceLandmarkVid", "exe\Face EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FaceLandmarkImg", "exe\FaceLandmarkImg\FaceLandmarkImg.vcxproj", "{DDC3535E-526C-44EC-9DF4-739E2D3A323B}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUI", "GUI", "{C9D8D0B0-11EC-41CB-8524-2DDB5BE94297}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppInerop", "lib\local\CppInerop\CppInerop.vcxproj", "{78196985-EE54-411F-822B-5A23EDF80642}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UtilLibs", "UtilLibs", "{D5F7B3E2-01FE-4F4A-8CE1-274D74D395D4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamCom", "lib\local\CamCom\CamCom.vcxproj", "{0CEC6A75-17BA-4DC5-9405-C74154921E60}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFaceOffline", "gui\OpenFaceOffline\OpenFaceOffline.csproj", "{A4760F41-2B1F-4144-B7B2-62785AFFE79B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -95,12 +105,36 @@ Global {DDC3535E-526C-44EC-9DF4-739E2D3A323B}.Release|Win32.Build.0 = Release|Win32 {DDC3535E-526C-44EC-9DF4-739E2D3A323B}.Release|x64.ActiveCfg = Release|x64 {DDC3535E-526C-44EC-9DF4-739E2D3A323B}.Release|x64.Build.0 = Release|x64 + {78196985-EE54-411F-822B-5A23EDF80642}.Debug|Win32.ActiveCfg = Debug|Win32 + {78196985-EE54-411F-822B-5A23EDF80642}.Debug|Win32.Build.0 = Debug|Win32 + {78196985-EE54-411F-822B-5A23EDF80642}.Debug|x64.ActiveCfg = Debug|x64 + {78196985-EE54-411F-822B-5A23EDF80642}.Debug|x64.Build.0 = Debug|x64 + {78196985-EE54-411F-822B-5A23EDF80642}.Release|Win32.ActiveCfg = Release|Win32 + {78196985-EE54-411F-822B-5A23EDF80642}.Release|Win32.Build.0 = Release|Win32 + {78196985-EE54-411F-822B-5A23EDF80642}.Release|x64.ActiveCfg = Release|x64 + {78196985-EE54-411F-822B-5A23EDF80642}.Release|x64.Build.0 = Release|x64 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Debug|Win32.ActiveCfg = Debug|Win32 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Debug|Win32.Build.0 = Debug|Win32 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Debug|x64.ActiveCfg = Debug|x64 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Debug|x64.Build.0 = Debug|x64 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Release|Win32.ActiveCfg = Release|Win32 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Release|Win32.Build.0 = Release|Win32 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Release|x64.ActiveCfg = Release|x64 + {0CEC6A75-17BA-4DC5-9405-C74154921E60}.Release|x64.Build.0 = Release|x64 + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Debug|Win32.ActiveCfg = Debug|x86 + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Debug|Win32.Build.0 = Debug|x86 + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Debug|x64.ActiveCfg = Debug|Any CPU + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Debug|x64.Build.0 = Debug|Any CPU + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Release|Win32.ActiveCfg = Release|Any CPU + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Release|Win32.Build.0 = Release|Any CPU + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Release|x64.ActiveCfg = Release|Any CPU + {A4760F41-2B1F-4144-B7B2-62785AFFE79B}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {B47A5F12-2567-44E9-AE49-35763EC82149} = {99FEBA13-BDDF-4076-B57E-D8EF4076E20D} + {B47A5F12-2567-44E9-AE49-35763EC82149} = {D5F7B3E2-01FE-4F4A-8CE1-274D74D395D4} {BDC1D107-DE17-4705-8E7B-CDDE8BFB2BF8} = {99FEBA13-BDDF-4076-B57E-D8EF4076E20D} {0E7FC556-0E80-45EA-A876-DDE4C2FEDCD7} = {99FEBA13-BDDF-4076-B57E-D8EF4076E20D} {8A23C00D-767D-422D-89A3-CF225E3DAB4B} = {9961DDAC-BE6E-4A6E-8EEF-FFC7D67BD631} @@ -108,5 +142,8 @@ Global {2D80FA0B-2DE8-4475-BA5A-C08A9E1EDAAC} = {9961DDAC-BE6E-4A6E-8EEF-FFC7D67BD631} {34032CF2-1B99-4A25-9050-E9C13DD4CD0A} = {9961DDAC-BE6E-4A6E-8EEF-FFC7D67BD631} {DDC3535E-526C-44EC-9DF4-739E2D3A323B} = {9961DDAC-BE6E-4A6E-8EEF-FFC7D67BD631} + {78196985-EE54-411F-822B-5A23EDF80642} = {D5F7B3E2-01FE-4F4A-8CE1-274D74D395D4} + {0CEC6A75-17BA-4DC5-9405-C74154921E60} = {D5F7B3E2-01FE-4F4A-8CE1-274D74D395D4} + {A4760F41-2B1F-4144-B7B2-62785AFFE79B} = {C9D8D0B0-11EC-41CB-8524-2DDB5BE94297} EndGlobalSection EndGlobal diff --git a/gui/OpenFace-offline/App.config b/gui/OpenFace-offline/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/gui/OpenFace-offline/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/gui/OpenFace-offline/App.xaml b/gui/OpenFace-offline/App.xaml new file mode 100644 index 0000000..a7c9cab --- /dev/null +++ b/gui/OpenFace-offline/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/gui/OpenFace-offline/App.xaml.cs b/gui/OpenFace-offline/App.xaml.cs new file mode 100644 index 0000000..21fd742 --- /dev/null +++ b/gui/OpenFace-offline/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/gui/OpenFace-offline/FpsTracker.cs b/gui/OpenFace-offline/FpsTracker.cs new file mode 100644 index 0000000..a7f2ee7 --- /dev/null +++ b/gui/OpenFace-offline/FpsTracker.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; + +namespace OpenFaceOffline +{ + public class FpsTracker + { + public TimeSpan HistoryLength { get; set; } + public FpsTracker() + { + HistoryLength = TimeSpan.FromSeconds(2); + } + + private Queue frameTimes = new Queue(); + + private void DiscardOldFrames() + { + while (frameTimes.Count > 0 && (MainWindow.CurrentTime - frameTimes.Peek()) > HistoryLength) + frameTimes.Dequeue(); + } + + public void AddFrame() + { + frameTimes.Enqueue(MainWindow.CurrentTime); + DiscardOldFrames(); + } + + public double GetFPS() + { + DiscardOldFrames(); + + if (frameTimes.Count == 0) + return 0; + + return frameTimes.Count / (MainWindow.CurrentTime - frameTimes.Peek()).TotalSeconds; + } + } +} diff --git a/gui/OpenFace-offline/MainWindow.xaml b/gui/OpenFace-offline/MainWindow.xaml new file mode 100644 index 0000000..ea38aad --- /dev/null +++ b/gui/OpenFace-offline/MainWindow.xaml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Appearance features + + + + + + + + + + + + + + + + + + + + + Geometry features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Action Units + + + + + Classification + + + + + + + Regression + + + + + + + + + + + + + + + diff --git a/gui/OpenFace-offline/MainWindow.xaml.cs b/gui/OpenFace-offline/MainWindow.xaml.cs new file mode 100644 index 0000000..2417eb0 --- /dev/null +++ b/gui/OpenFace-offline/MainWindow.xaml.cs @@ -0,0 +1,1249 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using Microsoft.Win32; + +using OpenCVWrappers; +using CppInterop; +using CppInterop.LandmarkDetector; +using CameraInterop; +using FaceAnalyser_Interop; +using System.Windows.Threading; +using System.IO; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + + // Timing for measuring FPS + #region High-Resolution Timing + static DateTime startTime; + static Stopwatch sw = new Stopwatch(); + + static MainWindow() + { + startTime = DateTime.Now; + sw.Start(); + } + + public static DateTime CurrentTime + { + get { return startTime + sw.Elapsed; } + } + #endregion + + Thread processing_thread; + + // Some members for displaying the results + private Capture capture; + private WriteableBitmap latest_img; + private WriteableBitmap latest_aligned_face; + private WriteableBitmap latest_HOG_descriptor; + + // Managing the running of the analysis system + private volatile bool thread_running; + private volatile bool thread_paused = false; + // Allows for going forward in time step by step + // Useful for visualising things + private volatile int skip_frames = 0; + + FpsTracker processing_fps = new FpsTracker(); + + volatile bool detectionSucceeding = false; + + volatile bool reset = false; + + // For tracking + FaceModelParameters clnf_params; + CLNF clnf_model; + FaceAnalyserManaged face_analyser; + + // Recording parameters (default values) + bool record_aus = false; // Recording Action Units + bool record_pose = false; // head location and orientation + bool record_params = false; // rigid and non-rigid shape parameters + bool record_2D_landmarks = false; // 2D landmark location + bool record_3D_landmarks = false; // 3D landmark locations in world coordinates + bool record_HOG = false; // HOG features extracted from face images + bool record_gaze = false; // Gaze recording + bool record_aligned = false; // aligned face images + bool record_tracked_vid = false; + + // Visualisation options + bool show_tracked_video = true; + bool show_appearance = true; + bool show_geometry = true; + bool show_aus = true; + + // TODO classifiers converted to regressors + + // TODO indication that track is done + + // The recording managers + StreamWriter output_head_pose_file; + StreamWriter output_clnf_params_file; + StreamWriter output_2D_landmarks_file; + StreamWriter output_3D_landmarks_file; + StreamWriter output_au_class; + StreamWriter output_au_reg; + StreamWriter output_gaze; + + // Where the recording is done (by default in a record directory, from where the application executed) + String record_root = "./record"; + + // For AU visualisation and output + List au_class_names; + List au_reg_names; + + // For AU prediction + bool dynamic_AU_shift = true; + bool dynamic_AU_scale = false; + bool use_dynamic_models = true; + + private volatile bool mirror_image = false; + + public MainWindow() + { + InitializeComponent(); + + // Set the icon + Uri iconUri = new Uri("logo1.ico", UriKind.RelativeOrAbsolute); + this.Icon = BitmapFrame.Create(iconUri); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 2000), (Action)(() => + { + RecordAUCheckBox.IsChecked = record_aus; + RecordAlignedCheckBox.IsChecked = record_aligned; + RecordTrackedVidCheckBox.IsChecked = record_tracked_vid; + RecordHOGCheckBox.IsChecked = record_HOG; + RecordGazeCheckBox.IsChecked = record_gaze; + RecordLandmarks2DCheckBox.IsChecked = record_2D_landmarks; + RecordLandmarks3DCheckBox.IsChecked = record_3D_landmarks; + RecordParamsCheckBox.IsChecked = record_params; + RecordPoseCheckBox.IsChecked = record_pose; + + UseDynamicModelsCheckBox.IsChecked = use_dynamic_models; + UseDynamicScalingCheckBox.IsChecked = dynamic_AU_scale; + UseDynamicShiftingCheckBox.IsChecked = dynamic_AU_shift; + })); + + String root = AppDomain.CurrentDomain.BaseDirectory; + + clnf_params = new FaceModelParameters(root); + clnf_model = new CLNF(clnf_params); + face_analyser = new FaceAnalyserManaged(root, use_dynamic_models); + + } + + private bool ProcessFrame(CLNF clnf_model, FaceModelParameters clnf_params, RawImage frame, RawImage grayscale_frame, double fx, double fy, double cx, double cy) + { + detectionSucceeding = clnf_model.DetectLandmarksInVideo(grayscale_frame, clnf_params); + return detectionSucceeding; + + } + + private List>> ProcessImage(CLNF clnf_model, FaceModelParameters clnf_params, RawImage frame, RawImage grayscale_frame) + { + List>> landmark_detections = clnf_model.DetectMultiFaceLandmarksInImage(grayscale_frame, clnf_params); + return landmark_detections; + + } + + private void SetupRecording(String root, String filename, int width, int height) + { + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + RecordingMenu.IsEnabled = false; + UseDynamicModelsCheckBox.IsEnabled = false; + })); + + if (!System.IO.Directory.Exists(root)) + { + System.IO.Directory.CreateDirectory(root); + } + + if (record_pose) + { + String filename_poses = root + "/" + filename + ".pose"; + output_head_pose_file = new StreamWriter(filename_poses); + output_head_pose_file.WriteLine("frame,success,confidence,pose_X(mm),pose_Y(mm),pose_Z(mm),pitch(rad),yaw(rad),roll(rad)"); + } + + if (record_params) + { + String filename_params = root + "/" + filename + ".params"; + output_clnf_params_file = new StreamWriter(filename_params); + + output_clnf_params_file.Write("frame,success,confidence,scale,rot_x,rot_y,rot_z,tx,ty"); + for (int i = 0; i < clnf_model.GetNumModes(); ++i) + { + output_clnf_params_file.Write(",p" + i); + } + output_clnf_params_file.WriteLine(); + } + + if (record_2D_landmarks) + { + String filename_2d_landmarks = root + "/" + filename + ".landmarks_2d"; + output_2D_landmarks_file = new StreamWriter(filename_2d_landmarks); + + output_2D_landmarks_file.Write("frame,success,confidence"); + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_2D_landmarks_file.Write(",x" + i); + } + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_2D_landmarks_file.Write(",y" + i); + } + output_2D_landmarks_file.WriteLine(); + } + + if (record_aus) + { + String filename_au_class = root + "/" + filename + ".au_class"; + output_au_class = new StreamWriter(filename_au_class); + + output_au_class.Write("frame,success,confidence"); + au_class_names = face_analyser.GetClassActionUnitsNames(); + au_class_names.Sort(); + foreach (var name in au_class_names) + { + output_au_class.Write("," + name); + } + output_au_class.WriteLine(); + + String filename_au_reg = root + "/" + filename + ".au_reg"; + output_au_reg = new StreamWriter(filename_au_reg); + + output_au_reg.Write("frame,success,confidence"); + au_reg_names = face_analyser.GetRegActionUnitsNames(); + au_reg_names.Sort(); + foreach (var name in au_reg_names) + { + output_au_reg.Write("," + name); + } + output_au_reg.WriteLine(); + + } + + if (record_gaze) + { + String filename_gaze = root + "/" + filename + ".gaze"; + output_gaze = new StreamWriter(filename_gaze); + + output_gaze.Write("frame, success, confidence, x_0, y_0, z_0, x_1, y_1, z_1, x_h0, y_h0, z_h0, x_h1, y_h1, z_h1"); + } + + if (record_3D_landmarks) + { + String filename_3d_landmarks = root + "/" + filename + ".landmarks_3d"; + output_3D_landmarks_file = new StreamWriter(filename_3d_landmarks); + + output_3D_landmarks_file.Write("frame,success,confidence"); + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_3D_landmarks_file.Write(",X" + i); + } + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_3D_landmarks_file.Write(",Y" + i); + } + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_3D_landmarks_file.Write(",Z" + i); + } + output_3D_landmarks_file.WriteLine(); + } + + if (record_aligned) + { + String aligned_root = root + "/" + filename + "_aligned/"; + System.IO.Directory.CreateDirectory(aligned_root); + face_analyser.SetupAlignedImageRecording(aligned_root); + } + + if (record_tracked_vid) + { + String vid_loc = root + "/" + filename + ".avi"; + System.IO.Directory.CreateDirectory(root); + face_analyser.SetupTrackingRecording(vid_loc, width, height, 30); + } + + if (record_HOG) + { + String filename_HOG = root + "/" + filename + ".hog"; + face_analyser.SetupHOGRecording(filename_HOG); + } + + } + + private void StopRecording() + { + if (record_pose && output_head_pose_file != null) + output_head_pose_file.Close(); + + if (record_params && output_clnf_params_file != null) + output_clnf_params_file.Close(); + + if (record_2D_landmarks && output_2D_landmarks_file != null) + output_2D_landmarks_file.Close(); + + if (record_3D_landmarks && output_3D_landmarks_file != null) + output_3D_landmarks_file.Close(); + + if (record_gaze && output_gaze != null) + output_gaze.Close(); + + if (record_HOG) + face_analyser.StopHOGRecording(); + + if (record_tracked_vid) + face_analyser.StopTrackingRecording(); + + if (record_aus && output_au_class != null && output_au_reg != null) + { + output_au_class.Close(); + output_au_reg.Close(); + } + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + RecordingMenu.IsEnabled = true; + UseDynamicModelsCheckBox.IsEnabled = true; + + })); + + } + + // Recording the relevant objects + private void RecordFrame(CLNF clnf_model, bool success_b, int frame_ind, RawImage frame, RawImage grayscale_frame, double fx, double fy, double cx, double cy) + { + double confidence = (-clnf_model.GetConfidence()) / 2.0 + 0.5; + + List pose = new List(); + clnf_model.GetCorrectedPoseWorld(pose, fx, fy, cx, cy); + + int success = 0; + if (success_b) + success = 1; + + if (record_pose) + { + String pose_string = String.Format("{0},{1},{2:F3},{3:F3},{4:F3},{5:F3},{6:F3},{7:F3},{8:F3}", frame_ind, success, confidence, pose[0], pose[1], pose[2], pose[3], pose[4], pose[5]); + output_head_pose_file.WriteLine(pose_string); + } + + if (record_params) + { + output_clnf_params_file.Write(String.Format("{0},{1},{2,0:F3}", frame_ind, success, confidence)); + + List all_params = clnf_model.GetParams(); + + for (int i = 0; i < all_params.Count; ++i) + { + String param = String.Format("{0,0:F5}", all_params[i]); + output_clnf_params_file.Write("," + param); + } + output_clnf_params_file.WriteLine(); + } + + if (record_2D_landmarks) + { + List> landmarks_2d = clnf_model.CalculateLandmarks(); + + output_2D_landmarks_file.Write(String.Format("{0},{1},{2:F3}", frame_ind, success, confidence)); + + for (int i = 0; i < landmarks_2d.Count; ++i) + { + output_2D_landmarks_file.Write(",{0:F2}", landmarks_2d[i].Item1); + } + for (int i = 0; i < landmarks_2d.Count; ++i) + { + output_2D_landmarks_file.Write(",{0:F2}", landmarks_2d[i].Item2); + } + output_2D_landmarks_file.WriteLine(); + } + + if (record_3D_landmarks) + { + List landmarks_3d = clnf_model.Calculate3DLandmarks(fx, fy, cx, cy); + + output_3D_landmarks_file.Write(String.Format("{0},{1},{2:F3}", frame_ind, success, confidence)); + + for (int i = 0; i < landmarks_3d.Count; ++i) + { + output_3D_landmarks_file.Write(",{0:F2}", landmarks_3d[i].X); + } + for (int i = 0; i < landmarks_3d.Count; ++i) + { + output_3D_landmarks_file.Write(",{0:F2}", landmarks_3d[i].Y); + } + for (int i = 0; i < landmarks_3d.Count; ++i) + { + output_3D_landmarks_file.Write(",{0:F2}", landmarks_3d[i].Z); + } + output_3D_landmarks_file.WriteLine(); + } + + if (record_aus) + { + var au_classes = face_analyser.GetCurrentAUsClass(); + var au_regs = face_analyser.GetCurrentAUsReg(); + + output_au_class.Write(String.Format("{0},{1},{2:F3}", frame_ind, success, confidence)); + + foreach (var name_class in au_class_names) + { + output_au_class.Write(",{0:F0}", au_classes[name_class]); + } + output_au_class.WriteLine(); + + output_au_reg.Write(String.Format("{0},{1},{2:F3}", frame_ind, success, confidence)); + + foreach (var name_reg in au_reg_names) + { + output_au_reg.Write(",{0:F2}", au_regs[name_reg]); + } + output_au_reg.WriteLine(); + + } + + if (record_gaze) + { + + var gaze_cam = face_analyser.GetGazeCamera(); + + output_gaze.Write(String.Format("{0},{1},{2:F3}", frame_ind, success, confidence)); + + output_gaze.Write(String.Format(",{0:F3},{1:F3},{2:F3},{3:F3},{4:F3},{5:F3}", gaze_cam.Item1.Item1, gaze_cam.Item1.Item2, gaze_cam.Item1.Item3, + gaze_cam.Item2.Item1, gaze_cam.Item2.Item2, gaze_cam.Item2.Item3)); + + output_gaze.WriteLine(); + + } + + if (record_aligned) + { + face_analyser.RecordAlignedFrame(frame_ind); + } + + if (record_HOG) + { + face_analyser.RecordHOGFrame(); + } + + if (record_tracked_vid) + { + face_analyser.RecordTrackedFace(); + } + } + + // The main function call for processing images, video files or webcam feed + private void ProcessingLoop(String[] filenames, int cam_id = -1, int width = -1, int height = -1, bool multi_face = false) + { + + thread_running = true; + + mirror_image = false; + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + ResetButton.IsEnabled = true; + PauseButton.IsEnabled = true; + StopButton.IsEnabled = true; + })); + + // Create the video capture and call the VideoLoop + if (filenames != null) + { + clnf_params.optimiseForVideo(); + if (cam_id == -2) + { + List image_files_all = new List(); + foreach (string image_name in filenames) + image_files_all.Add(image_name); + + // Loading an image sequence that represents a video + capture = new Capture(image_files_all); + + if (capture.isOpened()) + { + // Prepare recording if any based on the directory + String file_no_ext = System.IO.Path.GetDirectoryName(filenames[0]); + file_no_ext = System.IO.Path.GetFileName(file_no_ext); + SetupRecording(record_root, file_no_ext, capture.width, capture.height); + + // Start the actual processing + VideoLoop(); + + // Clear up the recording + StopRecording(); + + } + else + { + string messageBoxText = "Failed to open an image"; + string caption = "Not valid file"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + else if (cam_id == -3) + { + SetupImageMode(); + clnf_params.optimiseForImages(); + // Loading an image file (or a number of them) + foreach (string filename in filenames) + { + if (!thread_running) + { + continue; + } + + capture = new Capture(filename); + + if (capture.isOpened()) + { + // Start the actual processing + ProcessImage(); + + } + else + { + string messageBoxText = "File is not an image or the decoder is not supported."; + string caption = "Not valid file"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + } + else + { + clnf_params.optimiseForVideo(); + // Loading a video file (or a number of them) + foreach (string filename in filenames) + { + if (!thread_running) + { + continue; + } + + capture = new Capture(filename); + + if (capture.isOpened()) + { + // Prepare recording if any + String file_no_ext = System.IO.Path.GetFileNameWithoutExtension(filename); + + SetupRecording(record_root, file_no_ext, capture.width, capture.height); + + // Start the actual processing + VideoLoop(); + + // Clear up the recording + StopRecording(); + } + else + { + string messageBoxText = "File is not a video or the codec is not supported."; + string caption = "Not valid file"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + } + } + else + { + capture = new Capture(cam_id, width, height); + mirror_image = true; + + if (capture.isOpened()) + { + // Prepare recording if any + String dir_out = DateTime.Now.ToString("yyyy-MMM-dd--HH-mm"); + + SetupRecording(record_root + "/" + dir_out, "webcam", width, height); + + // Start the actual processing + VideoLoop(); + + StopRecording(); + } + else + { + + string messageBoxText = "Failed to open a webcam"; + string caption = "Webcam failure"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + + // TODO this should be up a level + // Some GUI clean up + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + Console.WriteLine("Cleaning up after processing is done"); + PauseButton.IsEnabled = false; + StopButton.IsEnabled = false; + ResetButton.IsEnabled = false; + NextFiveFramesButton.IsEnabled = false; + NextFrameButton.IsEnabled = false; + })); + + } + + // Capturing and processing the video frame by frame + private void ProcessImage() + { + Thread.CurrentThread.IsBackground = true; + + clnf_model.Reset(); + face_analyser.Reset(); + + + ////////////////////////////////////////////// + // CAPTURE FRAME AND DETECT LANDMARKS FOLLOWED BY THE REQUIRED IMAGE PROCESSING + ////////////////////////////////////////////// + RawImage frame = null; + double progress = -1; + + frame = new RawImage(capture.GetNextFrame(mirror_image)); + progress = capture.GetProgress(); + + if (frame.Width == 0) + { + // This indicates that we reached the end of the video file + return; + } + + var grayFrame = new RawImage(capture.GetCurrentFrameGray()); + + if (grayFrame == null) + { + Console.WriteLine("Gray is empty"); + return; + } + + List>> landmark_detections = ProcessImage(clnf_model, clnf_params, frame, grayFrame); + + List landmark_points = new List(); + + for (int i = 0; i < landmark_detections.Count; ++i) + { + + List> landmarks = landmark_detections[i]; + foreach (var p in landmarks) + { + landmark_points.Add(new Point(p.Item1, p.Item2)); + } + } + + // Visualisation + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + if (show_tracked_video) + { + if (latest_img == null) + { + latest_img = frame.CreateWriteableBitmap(); + } + + frame.UpdateWriteableBitmap(latest_img); + + video.Source = latest_img; + video.Confidence = 1; + video.FPS = processing_fps.GetFPS(); + video.Progress = progress; + + video.OverlayLines = new List>(); + + video.OverlayPoints = landmark_points; + } + + })); + + latest_img = null; + } + + + // Capturing and processing the video frame by frame + private void VideoLoop() + { + Thread.CurrentThread.IsBackground = true; + + DateTime? startTime = CurrentTime; + + var lastFrameTime = CurrentTime; + + clnf_model.Reset(); + face_analyser.Reset(); + + // TODO add an ability to change these through a calibration procedure or setting menu + double fx, fy, cx, cy; + fx = 500.0; + fy = 500.0; + cx = cy = -1; + + int frame_id = 0; + + while (thread_running) + { + ////////////////////////////////////////////// + // CAPTURE FRAME AND DETECT LANDMARKS FOLLOWED BY THE REQUIRED IMAGE PROCESSING + ////////////////////////////////////////////// + RawImage frame = null; + double progress = -1; + + frame = new RawImage(capture.GetNextFrame(mirror_image)); + progress = capture.GetProgress(); + + if (frame.Width == 0) + { + // This indicates that we reached the end of the video file + break; + } + + // TODO stop button actually clears the video + + lastFrameTime = CurrentTime; + processing_fps.AddFrame(); + + var grayFrame = new RawImage(capture.GetCurrentFrameGray()); + + if (grayFrame == null) + { + Console.WriteLine("Gray is empty"); + continue; + } + + // This is more ore less guess work, but seems to work well enough + if (cx == -1) + { + fx = fx * (grayFrame.Width / 640.0); + fy = fy * (grayFrame.Height / 480.0); + + fx = (fx + fy) / 2.0; + fy = fx; + + cx = grayFrame.Width / 2f; + cy = grayFrame.Height / 2f; + } + + bool detectionSucceeding = ProcessFrame(clnf_model, clnf_params, frame, grayFrame, fx, fy, cx, cy); + + + + double confidence = (-clnf_model.GetConfidence()) / 2.0 + 0.5; + + if (confidence < 0) + confidence = 0; + else if (confidence > 1) + confidence = 1; + + List pose = new List(); + clnf_model.GetCorrectedPoseWorld(pose, fx, fy, cx, cy); + List non_rigid_params = clnf_model.GetNonRigidParams(); + + // The face analysis step (only done if recording AUs, HOGs or video) + if (record_aus || record_HOG || record_aligned || show_aus || show_appearance || record_tracked_vid || record_gaze) + { + face_analyser.AddNextFrame(frame, clnf_model, fx, fy, cx, cy, false, show_appearance, record_tracked_vid); + } + + List> lines = null; + List> landmarks = null; + List> gaze_lines = null; + + if (detectionSucceeding) + { + landmarks = clnf_model.CalculateLandmarks(); + lines = clnf_model.CalculateBox((float)fx, (float)fy, (float)cx, (float)cy); + gaze_lines = face_analyser.CalculateGazeLines((float)fx, (float)fy, (float)cx, (float)cy); + + } + + // Visualisation + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + if (show_aus) + { + var au_classes = face_analyser.GetCurrentAUsClass(); + var au_regs = face_analyser.GetCurrentAUsReg(); + + auClassGraph.Update(au_classes); + + var au_regs_scaled = new Dictionary(); + foreach (var au_reg in au_regs) + { + au_regs_scaled[au_reg.Key] = au_reg.Value / 5.0; + if (au_regs_scaled[au_reg.Key] < 0) + au_regs_scaled[au_reg.Key] = 0; + + if (au_regs_scaled[au_reg.Key] > 1) + au_regs_scaled[au_reg.Key] = 1; + } + auRegGraph.Update(au_regs_scaled); + } + + if (show_geometry) + { + int yaw = (int)(pose[4] * 180 / Math.PI + 0.5); + int roll = (int)(pose[5] * 180 / Math.PI + 0.5); + int pitch = (int)(pose[3] * 180 / Math.PI + 0.5); + + YawLabel.Content = yaw + "°"; + RollLabel.Content = roll + "°"; + PitchLabel.Content = pitch + "°"; + + XPoseLabel.Content = (int)pose[0] + " mm"; + YPoseLabel.Content = (int)pose[1] + " mm"; + ZPoseLabel.Content = (int)pose[2] + " mm"; + + nonRigidGraph.Update(non_rigid_params); + + // Update eye gaze + var gaze_both = face_analyser.GetGazeCamera(); + double x = (gaze_both.Item1.Item1 + gaze_both.Item2.Item1) / 2.0; + double y = (gaze_both.Item1.Item2 + gaze_both.Item2.Item2) / 2.0; + + // Tweak it to a more presentable value + x = (int)(x * 35); + y = (int)(y * 70); + + if (x < -10) + x = -10; + if (x > 10) + x = 10; + if (y < -10) + y = -10; + if (y > 10) + y = 10; + + GazeXLabel.Content = x / 10.0; + GazeYLabel.Content = y / 10.0; + + + } + + if (show_tracked_video) + { + if (latest_img == null) + { + latest_img = frame.CreateWriteableBitmap(); + } + + frame.UpdateWriteableBitmap(latest_img); + + video.Source = latest_img; + video.Confidence = confidence; + video.FPS = processing_fps.GetFPS(); + video.Progress = progress; + + if (!detectionSucceeding) + { + video.OverlayLines.Clear(); + video.OverlayPoints.Clear(); + video.GazeLines.Clear(); + } + else + { + video.OverlayLines = lines; + + List landmark_points = new List(); + foreach (var p in landmarks) + { + landmark_points.Add(new Point(p.Item1, p.Item2)); + } + + video.OverlayPoints = landmark_points; + + video.GazeLines = gaze_lines; + } + } + + if (show_appearance) + { + RawImage aligned_face = face_analyser.GetLatestAlignedFace(); + RawImage hog_face = face_analyser.GetLatestHOGDescriptorVisualisation(); + + if (latest_aligned_face == null) + { + latest_aligned_face = aligned_face.CreateWriteableBitmap(); + latest_HOG_descriptor = hog_face.CreateWriteableBitmap(); + } + + aligned_face.UpdateWriteableBitmap(latest_aligned_face); + hog_face.UpdateWriteableBitmap(latest_HOG_descriptor); + + AlignedFace.Source = latest_aligned_face; + AlignedHOG.Source = latest_HOG_descriptor; + } + })); + + // Recording the tracked model + RecordFrame(clnf_model, detectionSucceeding, frame_id, frame, grayFrame, fx, fy, cx, cy); + + if (reset) + { + clnf_model.Reset(); + face_analyser.Reset(); + reset = false; + } + + while (thread_running & thread_paused && skip_frames == 0) + { + Thread.Sleep(10); + } + + frame_id++; + + if (skip_frames > 0) + skip_frames--; + + } + + latest_img = null; + skip_frames = 0; + + // Unpause if it's paused + if (thread_paused) + { + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + PauseButton_Click(null, null); + })); + } + } + + private void StopTracking() + { + // First complete the running of the thread + if (processing_thread != null) + { + // Tell the other thread to finish + thread_running = false; + processing_thread.Join(); + } + } + + private void imageFileOpenClick(object sender, RoutedEventArgs e) + { + new Thread(() => imageOpen()).Start(); + } + + private void imageOpen() + { + StopTracking(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 2, 0), (Action)(() => + { + var d = new OpenFileDialog(); + d.Multiselect = true; + d.Filter = "Image files|*.jpg;*.jpeg;*.bmp;*.png;*.gif"; + + if (d.ShowDialog(this) == true) + { + + string[] image_files = d.FileNames; + + processing_thread = new Thread(() => ProcessingLoop(image_files, -3)); + processing_thread.Start(); + + } + })); + } + + private void videoFileOpenClick(object sender, RoutedEventArgs e) + { + new Thread(() => openVideoFile()).Start(); + } + + private void openVideoFile() + { + StopTracking(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 2, 0), (Action)(() => + { + var d = new OpenFileDialog(); + d.Multiselect = true; + d.Filter = "Video files|*.avi;*.wmv;*.mov;*.mpg;*.mpeg;*.mp4"; + + if (d.ShowDialog(this) == true) + { + + string[] video_files = d.FileNames; + + processing_thread = new Thread(() => ProcessingLoop(video_files)); + processing_thread.Start(); + + } + })); + } + + private void imageSequenceFileOpenClick(object sender, RoutedEventArgs e) + { + new Thread(() => imageSequenceOpen()).Start(); + } + + private void imageSequenceOpen() + { + StopTracking(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 2, 0), (Action)(() => + { + var d = new OpenFileDialog(); + d.Multiselect = true; + d.Filter = "Image files|*.jpg;*.jpeg;*.bmp;*.png;*.gif"; + + if (d.ShowDialog(this) == true) + { + + string[] image_files = d.FileNames; + + processing_thread = new Thread(() => ProcessingLoop(image_files, -2)); + processing_thread.Start(); + + } + })); + } + + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + thread_running = false; + processing_thread.Join(); + + capture.Dispose(); + } + face_analyser.Dispose(); + } + + // Stopping the tracking + private void StopButton_Click(object sender, RoutedEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + thread_paused = false; + thread_running = false; + processing_thread.Join(); + + PauseButton.IsEnabled = false; + NextFrameButton.IsEnabled = false; + NextFiveFramesButton.IsEnabled = false; + StopButton.IsEnabled = false; + ResetButton.IsEnabled = false; + RecordingMenu.IsEnabled = true; + + UseDynamicModelsCheckBox.IsEnabled = true; + } + } + + // Stopping the tracking + private void ResetButton_Click(object sender, RoutedEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + reset = true; + } + } + + // Stopping the tracking + private void PauseButton_Click(object sender, RoutedEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + thread_paused = !thread_paused; + + ResetButton.IsEnabled = !thread_paused; + + NextFrameButton.IsEnabled = thread_paused; + NextFiveFramesButton.IsEnabled = thread_paused; + + if (thread_paused) + { + PauseButton.Content = "Resume"; + } + else + { + PauseButton.Content = "Pause"; + } + } + } + + private void SkipButton_Click(object sender, RoutedEventArgs e) + { + if (sender.Equals(NextFrameButton)) + { + skip_frames += 1; + } + else if (sender.Equals(NextFiveFramesButton)) + { + skip_frames += 5; + } + } + + private void VisualisationCheckBox_Click(object sender, RoutedEventArgs e) + { + show_tracked_video = ShowVideoCheckBox.IsChecked; + show_appearance = ShowAppearanceFeaturesCheckBox.IsChecked; + show_geometry = ShowGeometryFeaturesCheckBox.IsChecked; + show_aus = ShowAUsCheckBox.IsChecked; + + // Collapsing or restoring the windows here + if (!show_tracked_video) + { + VideoBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[0].Width = new GridLength(0, GridUnitType.Star); + } + else + { + VideoBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[0].Width = new GridLength(2.1, GridUnitType.Star); + } + + if (!show_appearance) + { + AppearanceBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[1].Width = new GridLength(0, GridUnitType.Star); + } + else + { + AppearanceBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[1].Width = new GridLength(0.8, GridUnitType.Star); + } + + // Collapsing or restoring the windows here + if (!show_geometry) + { + GeometryBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[2].Width = new GridLength(0, GridUnitType.Star); + } + else + { + GeometryBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[2].Width = new GridLength(1.0, GridUnitType.Star); + } + + // Collapsing or restoring the windows here + if (!show_aus) + { + ActionUnitBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[3].Width = new GridLength(0, GridUnitType.Star); + } + else + { + ActionUnitBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[3].Width = new GridLength(1.6, GridUnitType.Star); + } + + } + + private void SetupImageMode() + { + // Turn off recording + record_aus = false; + record_aligned = false; + record_HOG = false; + record_gaze = false; + record_tracked_vid = false; + record_2D_landmarks = false; + record_3D_landmarks = false; + record_params = false; + record_pose = false; + + // Turn off unneeded visualisations + show_tracked_video = true; + show_appearance = false; + show_geometry = false; + show_aus = false; + + // Actually update the GUI accordingly + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 2000), (Action)(() => + { + RecordAUCheckBox.IsChecked = record_aus; + RecordAlignedCheckBox.IsChecked = record_aligned; + RecordTrackedVidCheckBox.IsChecked = record_tracked_vid; + RecordHOGCheckBox.IsChecked = record_HOG; + RecordGazeCheckBox.IsChecked = record_gaze; + RecordLandmarks2DCheckBox.IsChecked = record_2D_landmarks; + RecordLandmarks3DCheckBox.IsChecked = record_3D_landmarks; + RecordParamsCheckBox.IsChecked = record_params; + RecordPoseCheckBox.IsChecked = record_pose; + + ShowVideoCheckBox.IsChecked = true; + ShowAppearanceFeaturesCheckBox.IsChecked = false; + ShowGeometryFeaturesCheckBox.IsChecked = false; + ShowAUsCheckBox.IsChecked = false; + + VisualisationCheckBox_Click(null, null); + })); + + // TODO change what next and back buttons do? + } + + private void recordCheckBox_click(object sender, RoutedEventArgs e) + { + record_aus = RecordAUCheckBox.IsChecked; + record_aligned = RecordAlignedCheckBox.IsChecked; + record_HOG = RecordHOGCheckBox.IsChecked; + record_gaze = RecordGazeCheckBox.IsChecked; + record_tracked_vid = RecordTrackedVidCheckBox.IsChecked; + record_2D_landmarks = RecordLandmarks2DCheckBox.IsChecked; + record_3D_landmarks = RecordLandmarks3DCheckBox.IsChecked; + record_params = RecordParamsCheckBox.IsChecked; + record_pose = RecordPoseCheckBox.IsChecked; + } + + private void UseDynamicModelsCheckBox_Click(object sender, RoutedEventArgs e) + { + dynamic_AU_shift = UseDynamicShiftingCheckBox.IsChecked; + dynamic_AU_scale = UseDynamicScalingCheckBox.IsChecked; + + if (use_dynamic_models != UseDynamicModelsCheckBox.IsChecked) + { + // Change the face analyser, this should be safe as the model is only allowed to change when not running + String root = AppDomain.CurrentDomain.BaseDirectory; + face_analyser = new FaceAnalyserManaged(root, UseDynamicModelsCheckBox.IsChecked); + } + use_dynamic_models = UseDynamicModelsCheckBox.IsChecked; + } + + } +} diff --git a/gui/OpenFace-offline/OpenFaceOffline.csproj b/gui/OpenFace-offline/OpenFaceOffline.csproj new file mode 100644 index 0000000..71f59c2 --- /dev/null +++ b/gui/OpenFace-offline/OpenFaceOffline.csproj @@ -0,0 +1,178 @@ + + + + + Debug + AnyCPU + {9661BE5C-2EE5-495E-BA64-6588602F411B} + WinExe + Properties + OpenFaceOffline + OpenFaceOffline + v4.5.2 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + + + + + + + true + ..\..\Debug\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + true + + + ..\..\Release\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + + + true + ..\..\x64\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + + + ..\..\x64\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + BarGraph.xaml + + + + BarGraphHorizontal.xaml + + + MultiBarGraph.xaml + + + MultiBarGraphHorz.xaml + + + SimpleImage.xaml + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + OverlayImage.xaml + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + {78196985-ee54-411f-822b-5a23edf80642} + CppInerop + + + + + \ No newline at end of file diff --git a/gui/OpenFace-offline/Properties/AssemblyInfo.cs b/gui/OpenFace-offline/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..75449e4 --- /dev/null +++ b/gui/OpenFace-offline/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("OpenFaceOffline")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("OpenFaceOffline")] +[assembly: AssemblyCopyright("Copyright © Cambridge 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/gui/OpenFace-offline/Properties/Resources.Designer.cs b/gui/OpenFace-offline/Properties/Resources.Designer.cs new file mode 100644 index 0000000..a359eea --- /dev/null +++ b/gui/OpenFace-offline/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace OpenFaceOffline.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenFaceOffline.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/gui/OpenFace-offline/Properties/Resources.resx b/gui/OpenFace-offline/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/gui/OpenFace-offline/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/gui/OpenFace-offline/Properties/Settings.Designer.cs b/gui/OpenFace-offline/Properties/Settings.Designer.cs new file mode 100644 index 0000000..f31bb9d --- /dev/null +++ b/gui/OpenFace-offline/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace OpenFaceOffline.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/gui/OpenFace-offline/Properties/Settings.settings b/gui/OpenFace-offline/Properties/Settings.settings new file mode 100644 index 0000000..033d7a5 --- /dev/null +++ b/gui/OpenFace-offline/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/gui/OpenFace-offline/UI_items/BarGraph.xaml b/gui/OpenFace-offline/UI_items/BarGraph.xaml new file mode 100644 index 0000000..2101d74 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/BarGraph.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/gui/OpenFace-offline/UI_items/BarGraph.xaml.cs b/gui/OpenFace-offline/UI_items/BarGraph.xaml.cs new file mode 100644 index 0000000..0a089c7 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/BarGraph.xaml.cs @@ -0,0 +1,39 @@ +using System.Windows.Controls; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for BarGraph.xaml + /// + public partial class BarGraph : UserControl + { + private double targetValue = 0; + + public BarGraph() + { + InitializeComponent(); + } + + public void SetValue(double value) + { + targetValue = 1.5 * value; + if (targetValue > 0) + { + if (targetValue > barContainerPos.ActualHeight) + targetValue = barContainerPos.ActualHeight; + + barPos.Height = targetValue; + barNeg.Height = 0; + } + if (targetValue < 0) + { + if (-targetValue > barContainerNeg.ActualHeight) + targetValue = -barContainerNeg.ActualHeight; + + barPos.Height = 0; + barNeg.Height = -targetValue; + } + } + + } +} diff --git a/gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml b/gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml new file mode 100644 index 0000000..f5ccbe5 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml.cs b/gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml.cs new file mode 100644 index 0000000..8c18d4a --- /dev/null +++ b/gui/OpenFace-offline/UI_items/BarGraphHorizontal.xaml.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for BarGraphHorizontal.xaml + /// + public partial class BarGraphHorizontal : UserControl + { + double targetValue = 0; + + public BarGraphHorizontal(String label) + { + InitializeComponent(); + Label.Content = label; + } + + public void SetValue(double value) + { + targetValue = value; + barPos.Width = targetValue * barContainerPos.ActualWidth; + } + + public double GetTarget() + { + return targetValue; + } + } +} diff --git a/gui/OpenFace-offline/UI_items/MultiBarGraph.xaml b/gui/OpenFace-offline/UI_items/MultiBarGraph.xaml new file mode 100644 index 0000000..836c974 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/MultiBarGraph.xaml @@ -0,0 +1,11 @@ + + + + + diff --git a/gui/OpenFace-offline/UI_items/MultiBarGraph.xaml.cs b/gui/OpenFace-offline/UI_items/MultiBarGraph.xaml.cs new file mode 100644 index 0000000..c101941 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/MultiBarGraph.xaml.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for MultiBarGraph.xaml + /// + public partial class MultiBarGraph : UserControl + { + + int num_bars = 0; + List graphs; + + public MultiBarGraph() + { + InitializeComponent(); + + graphs = new List(); + } + + public void Update(List data) + { + // Create new bars if necessary + if (num_bars != data.Count) + { + num_bars = data.Count; + barGrid.Children.Clear(); + foreach (var value in data) + { + BarGraph newBar = new BarGraph(); + graphs.Add(newBar); + barGrid.ColumnDefinitions.Add(new ColumnDefinition()); + Grid.SetColumn(newBar, graphs.Count); + barGrid.Children.Add(newBar); + + } + } + + // Update the bars + for (int i = 0; i < data.Count; ++i) + { + graphs[i].SetValue(data[i]); + } + } + } +} diff --git a/gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml b/gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml new file mode 100644 index 0000000..db5728f --- /dev/null +++ b/gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml.cs b/gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml.cs new file mode 100644 index 0000000..f960b71 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/MultiBarGraphHorz.xaml.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for MultiBarGraphHorz.xaml + /// + public partial class MultiBarGraphHorz : UserControl + { + int num_bars = 0; + Dictionary graphs; + + // Name mapping + Dictionary mapping; + + public MultiBarGraphHorz() + { + InitializeComponent(); + + graphs = new Dictionary(); + + mapping = new Dictionary(); + mapping["AU01"] = "Inner Brow raiser"; + mapping["AU02"] = "Outer Brow raiser"; + mapping["AU04"] = "Brow lowerer"; + mapping["AU05"] = "Upper lid raiser"; + mapping["AU06"] = "Cheek raiser"; + mapping["AU07"] = "Lid tightener"; + mapping["AU09"] = "Nose wrinkler"; + mapping["AU10"] = "Upper lip raiser"; + mapping["AU12"] = "Lip corner puller (smile)"; + mapping["AU14"] = "Dimpler"; + mapping["AU15"] = "Lip corner depressor"; + mapping["AU17"] = "Chin Raiser"; + mapping["AU20"] = "Lip Stretcher"; + mapping["AU23"] = "Lip tightener"; + mapping["AU25"] = "Lips part"; + mapping["AU26"] = "Jaw drop"; + mapping["AU28"] = "Lip suck"; + mapping["AU45"] = "Blink"; + + + + } + + public void Update(Dictionary data) + { + // Create new bars if necessary + if (num_bars != data.Count) + { + num_bars = data.Count; + barGrid.Children.Clear(); + + // Make sure AUs are sorted + var data_labels = data.Keys.ToList(); + data_labels.Sort(); + + foreach (var label in data_labels) + { + BarGraphHorizontal newBar = new BarGraphHorizontal(label + " - " + mapping[label]); + barGrid.RowDefinitions.Add(new RowDefinition()); + Grid.SetRow(newBar, graphs.Count); + graphs.Add(label, newBar); + barGrid.Children.Add(newBar); + } + } + + // Update the bars + foreach (var value in data) + { + double old_value = graphs[value.Key].GetTarget(); + // some smoothing as well + graphs[value.Key].SetValue(old_value * 0.15 + 0.85 * value.Value); + } + } + } +} diff --git a/gui/OpenFace-offline/UI_items/OverlayImage.xaml b/gui/OpenFace-offline/UI_items/OverlayImage.xaml new file mode 100644 index 0000000..8dcdaea --- /dev/null +++ b/gui/OpenFace-offline/UI_items/OverlayImage.xaml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/gui/OpenFace-offline/UI_items/OverlayImage.xaml.cs b/gui/OpenFace-offline/UI_items/OverlayImage.xaml.cs new file mode 100644 index 0000000..4546fec --- /dev/null +++ b/gui/OpenFace-offline/UI_items/OverlayImage.xaml.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Imaging; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for OverlayImage.xaml + /// + public partial class OverlayImage : Image + { + public OverlayImage() + { + InitializeComponent(); + OverlayLines = new List>(); + OverlayPoints = new List(); + GazeLines = new List>(); + + Progress = -1; + } + + protected override void OnRender(DrawingContext dc) + { + base.OnRender(dc); + + if (OverlayLines == null) + OverlayLines = new List>(); + + if (OverlayPoints == null) + OverlayPoints = new List(); + + if (Source == null || !(Source is WriteableBitmap)) + return; + + var width = ((WriteableBitmap)Source).PixelWidth; + var height = ((WriteableBitmap)Source).PixelHeight; + + foreach (var line in OverlayLines) + { + + var p1 = new Point(ActualWidth * line.Item1.X / width, ActualHeight * line.Item1.Y / height); + var p2 = new Point(ActualWidth * line.Item2.X / width, ActualHeight * line.Item2.Y / height); + + dc.DrawLine(new Pen(new SolidColorBrush(Color.FromArgb(200, (byte)(100 + (155 * (1 - Confidence))), (byte)(100 + (155 * Confidence)), 100)), 2), p1, p2); + } + + foreach (var line in GazeLines) + { + + var p1 = new Point(ActualWidth * line.Item1.X / width, ActualHeight * line.Item1.Y / height); + var p2 = new Point(ActualWidth * line.Item2.X / width, ActualHeight * line.Item2.Y / height); + + dc.DrawLine(new Pen(new SolidColorBrush(Color.FromArgb(200, (byte)(240), (byte)(30), (byte)100)), 3), p1, p2); + + } + + foreach (var p in OverlayPoints) + { + + var q = new Point(ActualWidth * p.X / width, ActualHeight * p.Y / height); + + dc.DrawEllipse(new SolidColorBrush(Color.FromArgb((byte)(200 * Confidence), 255, 255, 100)), null, q, 2, 2); + } + + double scaling = ActualWidth / 400.0; + + int confidence_width = (int)(107.0 * scaling); + int confidence_height = (int)(18.0 * scaling); + + Brush conf_brush = new SolidColorBrush(Color.FromRgb((byte)((1 - Confidence) * 255), (byte)(Confidence * 255), (byte)40)); + dc.DrawRoundedRectangle(conf_brush, new Pen(Brushes.Black, 0.5 * scaling), new Rect(ActualWidth - confidence_width - 1, 0, confidence_width, confidence_height), 3.0 * scaling, 3.0 * scaling); + + FormattedText txt = new FormattedText("Confidence: " + (int)(100 * Confidence) + "%", System.Globalization.CultureInfo.CurrentCulture, System.Windows.FlowDirection.LeftToRight, new Typeface("Verdana"), 12.0 * scaling, Brushes.Black); + dc.DrawText(txt, new Point(ActualWidth - confidence_width + 2, 2)); + + int fps_width = (int)(52.0 * scaling); + int fps_height = (int)(18.0 * scaling); + + dc.DrawRoundedRectangle(Brushes.WhiteSmoke, new Pen(Brushes.Black, 0.5 * scaling), new Rect(0, 0, fps_width, fps_height), 3.0 * scaling, 3.0 * scaling); + FormattedText fps_txt = new FormattedText("FPS: " + (int)FPS, System.Globalization.CultureInfo.CurrentCulture, System.Windows.FlowDirection.LeftToRight, new Typeface("Verdana"), 12.0 * scaling, Brushes.Black); + dc.DrawText(fps_txt, new Point(2.0 * scaling, 0)); + + old_width = width; + old_height = height; + + // Drawing a progress bar at the bottom of the image + if (Progress > 0) + { + int progress_bar_height = (int)(6.0 * scaling); + dc.DrawRectangle(Brushes.GreenYellow, new Pen(Brushes.Black, 0.5 * scaling), new Rect(0, ActualHeight - progress_bar_height, Progress * ActualWidth, progress_bar_height)); + } + + } + + public List> OverlayLines { get; set; } + public List> GazeLines { get; set; } + public List OverlayPoints { get; set; } + public double Confidence { get; set; } + public double FPS { get; set; } + + // 0 to 1 indicates how much video has been processed so far + public double Progress { get; set; } + + int old_width; + int old_height; + } +} diff --git a/gui/OpenFace-offline/UI_items/SimpleImage.xaml b/gui/OpenFace-offline/UI_items/SimpleImage.xaml new file mode 100644 index 0000000..9cf612d --- /dev/null +++ b/gui/OpenFace-offline/UI_items/SimpleImage.xaml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/gui/OpenFace-offline/UI_items/SimpleImage.xaml.cs b/gui/OpenFace-offline/UI_items/SimpleImage.xaml.cs new file mode 100644 index 0000000..7ef9830 --- /dev/null +++ b/gui/OpenFace-offline/UI_items/SimpleImage.xaml.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for OverlayImage.xaml + /// + public partial class SimpleImage : Image + { + public SimpleImage() + { + InitializeComponent(); + } + + protected override void OnRender(DrawingContext dc) + { + base.OnRender(dc); + + if (Source == null || !(Source is WriteableBitmap)) + return; + } + } +} diff --git a/gui/OpenFaceOffline/App.config b/gui/OpenFaceOffline/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/gui/OpenFaceOffline/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/gui/OpenFaceOffline/App.xaml b/gui/OpenFaceOffline/App.xaml new file mode 100644 index 0000000..a7c9cab --- /dev/null +++ b/gui/OpenFaceOffline/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/gui/OpenFaceOffline/App.xaml.cs b/gui/OpenFaceOffline/App.xaml.cs new file mode 100644 index 0000000..300701a --- /dev/null +++ b/gui/OpenFaceOffline/App.xaml.cs @@ -0,0 +1,75 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/gui/OpenFaceOffline/FpsTracker.cs b/gui/OpenFaceOffline/FpsTracker.cs new file mode 100644 index 0000000..6bb5908 --- /dev/null +++ b/gui/OpenFaceOffline/FpsTracker.cs @@ -0,0 +1,96 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; + +namespace OpenFaceOffline +{ + public class FpsTracker + { + public TimeSpan HistoryLength { get; set; } + public FpsTracker() + { + HistoryLength = TimeSpan.FromSeconds(2); + } + + private Queue frameTimes = new Queue(); + + private void DiscardOldFrames() + { + while (frameTimes.Count > 0 && (MainWindow.CurrentTime - frameTimes.Peek()) > HistoryLength) + frameTimes.Dequeue(); + } + + public void AddFrame() + { + frameTimes.Enqueue(MainWindow.CurrentTime); + DiscardOldFrames(); + } + + public double GetFPS() + { + DiscardOldFrames(); + + if (frameTimes.Count == 0) + return 0; + + return frameTimes.Count / (MainWindow.CurrentTime - frameTimes.Peek()).TotalSeconds; + } + } +} diff --git a/gui/OpenFaceOffline/MainWindow.xaml b/gui/OpenFaceOffline/MainWindow.xaml new file mode 100644 index 0000000..9049955 --- /dev/null +++ b/gui/OpenFaceOffline/MainWindow.xaml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Appearance features + + + + + + + + + + + + + + + + + + + + + Geometry features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Action Units + + + + + Classification + + + + + + + Regression + + + + + + + + + + + + + + + diff --git a/gui/OpenFaceOffline/MainWindow.xaml.cs b/gui/OpenFaceOffline/MainWindow.xaml.cs new file mode 100644 index 0000000..295d740 --- /dev/null +++ b/gui/OpenFaceOffline/MainWindow.xaml.cs @@ -0,0 +1,1194 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; +using System.Windows; +using System.Windows.Threading; +using System.Windows.Media.Imaging; +using System.IO; +using Microsoft.Win32; + +// Internal libraries +using OpenCVWrappers; +using CppInterop; +using CppInterop.LandmarkDetector; +using CameraInterop; +using FaceAnalyser_Interop; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + + // Timing for measuring FPS + #region High-Resolution Timing + static DateTime startTime; + static Stopwatch sw = new Stopwatch(); + + static MainWindow() + { + startTime = DateTime.Now; + sw.Start(); + } + + public static DateTime CurrentTime + { + get { return startTime + sw.Elapsed; } + } + #endregion + + // ----------------------------------------------------------------- + // Members + // ----------------------------------------------------------------- + + Thread processing_thread; + + // Some members for displaying the results + private Capture capture; + private WriteableBitmap latest_img; + private WriteableBitmap latest_aligned_face; + private WriteableBitmap latest_HOG_descriptor; + + // Managing the running of the analysis system + private volatile bool thread_running; + private volatile bool thread_paused = false; + // Allows for going forward in time step by step + // Useful for visualising things + private volatile int skip_frames = 0; + + FpsTracker processing_fps = new FpsTracker(); + + volatile bool detectionSucceeding = false; + + volatile bool reset = false; + + // For tracking + FaceModelParameters clnf_params; + CLNF clnf_model; + FaceAnalyserManaged face_analyser; + + // Recording parameters (default values) + // TODO these should only be initialized when starting the recording, might not need to have them as members (also all should be on by default) + bool record_HOG = false; // HOG features extracted from face images + bool record_aligned = false; // aligned face images + bool record_tracked_vid = false; + + // Visualisation options + bool show_tracked_video = true; + bool show_appearance = true; + bool show_geometry = true; + bool show_aus = true; + + // TODO classifiers converted to regressors + + // TODO indication that track is done + + // The recording managers, TODO they should be all one + StreamWriter output_features_file; + + // Where the recording is done (by default in a record directory, from where the application executed), TODO maybe the same folder as iput? + String record_root = "./record"; + + // For AU visualisation and output + List au_class_names; + List au_reg_names; + + // For AU prediction + bool dynamic_AU_shift = true; + bool dynamic_AU_scale = false; + bool use_dynamic_models = true; + + public MainWindow() + { + InitializeComponent(); + + // Set the icon + Uri iconUri = new Uri("logo1.ico", UriKind.RelativeOrAbsolute); + this.Icon = BitmapFrame.Create(iconUri); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 2000), (Action)(() => + { + RecordAlignedCheckBox.IsChecked = record_aligned; + RecordTrackedVidCheckBox.IsChecked = record_tracked_vid; + RecordHOGCheckBox.IsChecked = record_HOG; + + UseDynamicModelsCheckBox.IsChecked = use_dynamic_models; + UseDynamicScalingCheckBox.IsChecked = dynamic_AU_scale; + UseDynamicShiftingCheckBox.IsChecked = dynamic_AU_shift; + })); + + String root = AppDomain.CurrentDomain.BaseDirectory; + + clnf_params = new FaceModelParameters(root); + clnf_model = new CLNF(clnf_params); + face_analyser = new FaceAnalyserManaged(root, use_dynamic_models); + + } + + // ---------------------------------------------------------- + // Actual work gets done here + + // The main function call for processing images or video files + private void ProcessingLoop(String[] filenames, int cam_id = -1, int width = -1, int height = -1, bool multi_face = false) + { + + thread_running = true; + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + ResetButton.IsEnabled = true; + PauseButton.IsEnabled = true; + StopButton.IsEnabled = true; + })); + + // Create the video capture and call the VideoLoop + if (filenames != null) + { + clnf_params.optimiseForVideo(); + if (cam_id == -2) + { + List image_files_all = new List(); + foreach (string image_name in filenames) + image_files_all.Add(image_name); + + // Loading an image sequence that represents a video + capture = new Capture(image_files_all); + + if (capture.isOpened()) + { + // Prepare recording if any based on the directory + String file_no_ext = System.IO.Path.GetDirectoryName(filenames[0]); + file_no_ext = System.IO.Path.GetFileName(file_no_ext); + SetupRecording(record_root, file_no_ext, capture.width, capture.height); + + // Start the actual processing + VideoLoop(); + + // Clear up the recording + StopRecording(); + + } + else + { + string messageBoxText = "Failed to open an image"; + string caption = "Not valid file"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + else if (cam_id == -3) + { + SetupImageMode(); + clnf_params.optimiseForImages(); + // Loading an image file (or a number of them) + foreach (string filename in filenames) + { + if (!thread_running) + { + continue; + } + + capture = new Capture(filename); + + if (capture.isOpened()) + { + // Start the actual processing + ProcessImage(); + + } + else + { + string messageBoxText = "File is not an image or the decoder is not supported."; + string caption = "Not valid file"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + } + else + { + clnf_params.optimiseForVideo(); + // Loading a video file (or a number of them) + foreach (string filename in filenames) + { + if (!thread_running) + { + continue; + } + + capture = new Capture(filename); + + if (capture.isOpened()) + { + // Prepare recording if any + String file_no_ext = System.IO.Path.GetFileNameWithoutExtension(filename); + + SetupRecording(record_root, file_no_ext, capture.width, capture.height); + + // Start the actual processing + VideoLoop(); + + // Clear up the recording + StopRecording(); + } + else + { + string messageBoxText = "File is not a video or the codec is not supported."; + string caption = "Not valid file"; + MessageBoxButton button = MessageBoxButton.OK; + MessageBoxImage icon = MessageBoxImage.Warning; + + // Display message box + MessageBox.Show(messageBoxText, caption, button, icon); + } + } + } + } + + // TODO this should be up a level + // Some GUI clean up + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + Console.WriteLine("Cleaning up after processing is done"); + PauseButton.IsEnabled = false; + StopButton.IsEnabled = false; + ResetButton.IsEnabled = false; + NextFiveFramesButton.IsEnabled = false; + NextFrameButton.IsEnabled = false; + })); + + } + + // Capturing and processing the video frame by frame + private void ProcessImage() + { + Thread.CurrentThread.IsBackground = true; + + clnf_model.Reset(); + face_analyser.Reset(); + + + ////////////////////////////////////////////// + // CAPTURE FRAME AND DETECT LANDMARKS FOLLOWED BY THE REQUIRED IMAGE PROCESSING + ////////////////////////////////////////////// + RawImage frame = null; + double progress = -1; + + frame = new RawImage(capture.GetNextFrame(false)); + progress = capture.GetProgress(); + + if (frame.Width == 0) + { + // This indicates that we reached the end of the video file + return; + } + + var grayFrame = new RawImage(capture.GetCurrentFrameGray()); + + if (grayFrame == null) + { + Console.WriteLine("Gray is empty"); + return; + } + + List>> landmark_detections = ProcessImage(clnf_model, clnf_params, frame, grayFrame); + + List landmark_points = new List(); + + for (int i = 0; i < landmark_detections.Count; ++i) + { + + List> landmarks = landmark_detections[i]; + foreach (var p in landmarks) + { + landmark_points.Add(new Point(p.Item1, p.Item2)); + } + } + + // Visualisation + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + if (show_tracked_video) + { + if (latest_img == null) + { + latest_img = frame.CreateWriteableBitmap(); + } + + frame.UpdateWriteableBitmap(latest_img); + + video.Source = latest_img; + video.Confidence = 1; + video.FPS = processing_fps.GetFPS(); + video.Progress = progress; + + video.OverlayLines = new List>(); + + video.OverlayPoints = landmark_points; + } + + })); + + latest_img = null; + } + + + // Capturing and processing the video frame by frame + private void VideoLoop() + { + Thread.CurrentThread.IsBackground = true; + + DateTime? startTime = CurrentTime; + + var lastFrameTime = CurrentTime; + + clnf_model.Reset(); + face_analyser.Reset(); + + // TODO add an ability to change these through a calibration procedure or setting menu + double fx, fy, cx, cy; + fx = 500.0; + fy = 500.0; + cx = cy = -1; + + int frame_id = 0; + + double fps = capture.GetFPS(); + if (fps <= 0) fps = 30; + + // Check wich things need to be recorded + bool output_2D_landmarks = RecordLandmarks2DCheckBox.IsChecked; + bool output_3D_landmarks = RecordLandmarks3DCheckBox.IsChecked; + bool output_model_params = RecordParamsCheckBox.IsChecked; + bool output_pose = RecordPoseCheckBox.IsChecked; + bool output_AUs = RecordAUCheckBox.IsChecked; + bool output_gaze = RecordGazeCheckBox.IsChecked; + + while (thread_running) + { + ////////////////////////////////////////////// + // CAPTURE FRAME AND DETECT LANDMARKS FOLLOWED BY THE REQUIRED IMAGE PROCESSING + ////////////////////////////////////////////// + RawImage frame = null; + double progress = -1; + + frame = new RawImage(capture.GetNextFrame(false)); + progress = capture.GetProgress(); + + if (frame.Width == 0) + { + // This indicates that we reached the end of the video file + break; + } + + // TODO stop button should actually clear the video + lastFrameTime = CurrentTime; + processing_fps.AddFrame(); + + var grayFrame = new RawImage(capture.GetCurrentFrameGray()); + + if (grayFrame == null) + { + Console.WriteLine("Gray is empty"); + continue; + } + + // This is more ore less guess work, but seems to work well enough + if (cx == -1) + { + fx = fx * (grayFrame.Width / 640.0); + fy = fy * (grayFrame.Height / 480.0); + + fx = (fx + fy) / 2.0; + fy = fx; + + cx = grayFrame.Width / 2f; + cy = grayFrame.Height / 2f; + } + + bool detectionSucceeding = ProcessFrame(clnf_model, clnf_params, frame, grayFrame, fx, fy, cx, cy); + + double confidence = (-clnf_model.GetConfidence()) / 2.0 + 0.5; + + if (confidence < 0) + confidence = 0; + else if (confidence > 1) + confidence = 1; + + List pose = new List(); + clnf_model.GetCorrectedPoseWorld(pose, fx, fy, cx, cy); + List non_rigid_params = clnf_model.GetNonRigidParams(); + + // The face analysis step (only done if recording AUs, HOGs or video) + if (output_AUs || record_HOG || record_aligned || show_aus || show_appearance || record_tracked_vid || output_gaze) + { + face_analyser.AddNextFrame(frame, clnf_model, fx, fy, cx, cy, false, show_appearance, record_tracked_vid); + } + + List> lines = null; + List> landmarks = null; + List> gaze_lines = null; + + if (detectionSucceeding) + { + landmarks = clnf_model.CalculateLandmarks(); + lines = clnf_model.CalculateBox((float)fx, (float)fy, (float)cx, (float)cy); + //gaze_lines = face_analyser.CalculateGazeLines((float)fx, (float)fy, (float)cx, (float)cy); // TODO figure out what is happening here + gaze_lines = new List>(); + } + + // Visualisation + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + if (show_aus) + { + var au_classes = face_analyser.GetCurrentAUsClass(); + var au_regs = face_analyser.GetCurrentAUsReg(); + + auClassGraph.Update(au_classes); + + var au_regs_scaled = new Dictionary(); + foreach (var au_reg in au_regs) + { + au_regs_scaled[au_reg.Key] = au_reg.Value / 5.0; + if (au_regs_scaled[au_reg.Key] < 0) + au_regs_scaled[au_reg.Key] = 0; + + if (au_regs_scaled[au_reg.Key] > 1) + au_regs_scaled[au_reg.Key] = 1; + } + auRegGraph.Update(au_regs_scaled); + } + + if (show_geometry) + { + int yaw = (int)(pose[4] * 180 / Math.PI + 0.5); + int roll = (int)(pose[5] * 180 / Math.PI + 0.5); + int pitch = (int)(pose[3] * 180 / Math.PI + 0.5); + + YawLabel.Content = yaw + "°"; + RollLabel.Content = roll + "°"; + PitchLabel.Content = pitch + "°"; + + XPoseLabel.Content = (int)pose[0] + " mm"; + YPoseLabel.Content = (int)pose[1] + " mm"; + ZPoseLabel.Content = (int)pose[2] + " mm"; + + nonRigidGraph.Update(non_rigid_params); + + // Update eye gaze + var gaze_both = face_analyser.GetGazeCamera(); + double x = (gaze_both.Item1.Item1 + gaze_both.Item2.Item1) / 2.0; + double y = (gaze_both.Item1.Item2 + gaze_both.Item2.Item2) / 2.0; + + // Tweak it to a more presentable value + x = (int)(x * 35); + y = (int)(y * 70); + + if (x < -10) + x = -10; + if (x > 10) + x = 10; + if (y < -10) + y = -10; + if (y > 10) + y = 10; + + GazeXLabel.Content = x / 10.0; + GazeYLabel.Content = y / 10.0; + + + } + + if (show_tracked_video) + { + if (latest_img == null) + { + latest_img = frame.CreateWriteableBitmap(); + } + + frame.UpdateWriteableBitmap(latest_img); + + video.Source = latest_img; + video.Confidence = confidence; + video.FPS = processing_fps.GetFPS(); + video.Progress = progress; + + if (!detectionSucceeding) + { + video.OverlayLines.Clear(); + video.OverlayPoints.Clear(); + video.GazeLines.Clear(); + } + else + { + video.OverlayLines = lines; + + List landmark_points = new List(); + foreach (var p in landmarks) + { + landmark_points.Add(new Point(p.Item1, p.Item2)); + } + + video.OverlayPoints = landmark_points; + + video.GazeLines = gaze_lines; + } + } + + if (show_appearance) + { + RawImage aligned_face = face_analyser.GetLatestAlignedFace(); + RawImage hog_face = face_analyser.GetLatestHOGDescriptorVisualisation(); + + if (latest_aligned_face == null) + { + latest_aligned_face = aligned_face.CreateWriteableBitmap(); + latest_HOG_descriptor = hog_face.CreateWriteableBitmap(); + } + + aligned_face.UpdateWriteableBitmap(latest_aligned_face); + hog_face.UpdateWriteableBitmap(latest_HOG_descriptor); + + AlignedFace.Source = latest_aligned_face; + AlignedHOG.Source = latest_HOG_descriptor; + } + })); + + // Recording the tracked model + RecordFrame(clnf_model, detectionSucceeding, frame_id, frame, grayFrame, (fps * (double)frame_id)/1000.0, + output_2D_landmarks, output_2D_landmarks, output_model_params, output_pose, output_AUs, output_gaze, fx, fy, cx, cy); + + if (reset) + { + clnf_model.Reset(); + face_analyser.Reset(); + reset = false; + } + + while (thread_running & thread_paused && skip_frames == 0) + { + Thread.Sleep(10); + } + + frame_id++; + + if (skip_frames > 0) + skip_frames--; + + } + + latest_img = null; + skip_frames = 0; + + // Unpause if it's paused + if (thread_paused) + { + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + PauseButton_Click(null, null); + })); + } + } + + private void StopTracking() + { + // First complete the running of the thread + if (processing_thread != null) + { + // Tell the other thread to finish + thread_running = false; + processing_thread.Join(); + } + } + + + + // ---------------------------------------------------------- + // Interacting with landmark detection and face analysis + + private bool ProcessFrame(CLNF clnf_model, FaceModelParameters clnf_params, RawImage frame, RawImage grayscale_frame, double fx, double fy, double cx, double cy) + { + detectionSucceeding = clnf_model.DetectLandmarksInVideo(grayscale_frame, clnf_params); + return detectionSucceeding; + + } + + private List>> ProcessImage(CLNF clnf_model, FaceModelParameters clnf_params, RawImage frame, RawImage grayscale_frame) + { + List>> landmark_detections = clnf_model.DetectMultiFaceLandmarksInImage(grayscale_frame, clnf_params); + return landmark_detections; + + } + + + // ---------------------------------------------------------- + // Recording helpers (TODO simplify) + + private void SetupRecording(String root, String filename, int width, int height, bool output_2D_landmarks, bool output_3D_landmarks, + bool output_model_params, bool output_pose, bool output_AUs, bool output_gaze) + { + // Disallow changing recording settings when the recording starts, TODO move this up a bit + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + RecordingMenu.IsEnabled = false; + UseDynamicModelsCheckBox.IsEnabled = false; + })); + + if (!System.IO.Directory.Exists(root)) + { + System.IO.Directory.CreateDirectory(root); + } + + output_features_file = new StreamWriter(root + "/" + filename + ".txt"); + output_features_file.Write("frame, timestamp, confidence, success"); + + if (output_gaze) + output_features_file.Write(", gaze_0_x, gaze_0_y, gaze_0_z, gaze_1_x, gaze_1_y, gaze_2_z"); + + if (output_pose) + output_features_file.Write(", pose_Tx, pose_Ty, pose_Tz, pose_Rx, pose_Ry, pose_Rz"); + + if (output_2D_landmarks) + { + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_features_file.Write(", x_" + i); + } + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_features_file.Write(", y_" + i); + } + } + + if (output_3D_landmarks) + { + + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_features_file.Write(", X_" + i); + } + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_features_file.Write(", Y_" + i); + } + for (int i = 0; i < clnf_model.GetNumPoints(); ++i) + { + output_features_file.Write(", Z_" + i); + } + } + + if (output_model_params) + { + output_features_file.Write(", p_scale, p_rx, p_ry, p_rz, p_tx, p_ty"); + for (int i = 0; i < clnf_model.GetNumModes(); ++i) + { + output_features_file.Write(", p_" + i); + } + } + + if (output_AUs) + { + + au_reg_names = face_analyser.GetRegActionUnitsNames(); + au_reg_names.Sort(); + foreach (var name in au_reg_names) + { + output_features_file.Write(", " + name + "_r"); + } + + au_class_names = face_analyser.GetClassActionUnitsNames(); + au_class_names.Sort(); + foreach (var name in au_class_names) + { + output_features_file.Write(", " + name + "_c"); + } + + } + + output_features_file.WriteLine(); + + + if (record_aligned) + { + String aligned_root = root + "/" + filename + "_aligned/"; + System.IO.Directory.CreateDirectory(aligned_root); + face_analyser.SetupAlignedImageRecording(aligned_root); + } + + if (record_tracked_vid) + { + String vid_loc = root + "/" + filename + ".avi"; + System.IO.Directory.CreateDirectory(root); + face_analyser.SetupTrackingRecording(vid_loc, width, height, 30); + } + + if (record_HOG) + { + String filename_HOG = root + "/" + filename + ".hog"; + face_analyser.SetupHOGRecording(filename_HOG); + } + + } + + private void StopRecording() + { + if (output_features_file != null) + output_features_file.Close(); + + if (record_HOG) + face_analyser.StopHOGRecording(); + + if (record_tracked_vid) + face_analyser.StopTrackingRecording(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 200), (Action)(() => + { + RecordingMenu.IsEnabled = true; + UseDynamicModelsCheckBox.IsEnabled = true; + + })); + + } + + // Recording the relevant objects + private void RecordFrame(CLNF clnf_model, bool success, int frame_ind, RawImage frame, RawImage grayscale_frame, double time_stamp, bool output_2D_landmarks, bool output_3D_landmarks, + bool output_model_params, bool output_pose, bool output_AUs, bool output_gaze, double fx, double fy, double cx, double cy) + { + double confidence = (-clnf_model.GetConfidence()) / 2.0 + 0.5; + + List pose = new List(); + clnf_model.GetCorrectedPoseWorld(pose, fx, fy, cx, cy); + + output_features_file.Write(String.Format("{0}, {1}, {2:F3}, {3}", frame_ind, time_stamp, confidence, success ? 1 : 0)); + + if (output_gaze) + { + var gaze = face_analyser.GetGazeCamera(); + + output_features_file.Write(String.Format(", {0:F3}, {1:F3}, {2:F3}, {3:F3}, {4:F3}, {5:F3}", gaze.Item1.Item1, gaze.Item1.Item2, gaze.Item1.Item3, + gaze.Item2.Item1, gaze.Item2.Item2, gaze.Item2.Item3)); + } + + if (output_pose) + output_features_file.WriteLine(String.Format("{1:F3},{2:F3},{3:F3},{4:F3},{5:F3},{6:F3}", pose[0], pose[1], pose[2], pose[3], pose[4], pose[5])); + + if (output_2D_landmarks) + { + List> landmarks_2d = clnf_model.CalculateLandmarks(); + + for (int i = 0; i < landmarks_2d.Count; ++i) + output_features_file.Write(", {0:F2}", landmarks_2d[i].Item1); + + for (int i = 0; i < landmarks_2d.Count; ++i) + output_features_file.Write(", {0:F2}", landmarks_2d[i].Item2); + } + + if (output_3D_landmarks) + { + List landmarks_3d = clnf_model.Calculate3DLandmarks(fx, fy, cx, cy); + + for (int i = 0; i < landmarks_3d.Count; ++i) + output_features_file.Write(", {0:F2}", landmarks_3d[i].X); + + for (int i = 0; i < landmarks_3d.Count; ++i) + output_features_file.Write(", {0:F2}", landmarks_3d[i].Y); + + for (int i = 0; i < landmarks_3d.Count; ++i) + output_features_file.Write(", {0:F2}", landmarks_3d[i].Z); + } + + if (output_model_params) + { + List all_params = clnf_model.GetParams(); + + for (int i = 0; i < all_params.Count; ++i) + output_features_file.Write(String.Format(", {0,0:F5}", all_params[i])); + } + + if (output_AUs) + { + var au_regs = face_analyser.GetCurrentAUsReg(); + + foreach (var name_reg in au_reg_names) + output_features_file.Write(", {0:F2}", au_regs[name_reg]); + + var au_classes = face_analyser.GetCurrentAUsClass(); + + foreach (var name_class in au_class_names) + output_features_file.Write(", {0:F0}", au_classes[name_class]); + + } + + output_features_file.WriteLine(); + + if (record_aligned) + { + face_analyser.RecordAlignedFrame(frame_ind); + } + + if (record_HOG) + { + face_analyser.RecordHOGFrame(); + } + + if (record_tracked_vid) + { + face_analyser.RecordTrackedFace(); + } + } + + + // ---------------------------------------------------------- + // Mode handling (image, video) + // ---------------------------------------------------------- + private void SetupImageMode() + { + // Turn off recording + record_aligned = false; + record_HOG = false; + record_tracked_vid = false; + + // Turn off unneeded visualisations + show_tracked_video = true; + show_appearance = false; + show_geometry = false; + show_aus = false; + + // Actually update the GUI accordingly + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 0, 2000), (Action)(() => + { + RecordAlignedCheckBox.IsChecked = record_aligned; + RecordTrackedVidCheckBox.IsChecked = record_tracked_vid; + RecordHOGCheckBox.IsChecked = record_HOG; + + ShowVideoCheckBox.IsChecked = true; + ShowAppearanceFeaturesCheckBox.IsChecked = false; + ShowGeometryFeaturesCheckBox.IsChecked = false; + ShowAUsCheckBox.IsChecked = false; + + VisualisationCheckBox_Click(null, null); + })); + + // TODO change what next and back buttons do? + } + + + // ---------------------------------------------------------- + // Opening Videos/Images + // ---------------------------------------------------------- + + private void videoFileOpenClick(object sender, RoutedEventArgs e) + { + new Thread(() => openVideoFile()).Start(); + } + + private void openVideoFile() + { + StopTracking(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 2, 0), (Action)(() => + { + var d = new OpenFileDialog(); + d.Multiselect = true; + d.Filter = "Video files|*.avi;*.wmv;*.mov;*.mpg;*.mpeg;*.mp4"; + + if (d.ShowDialog(this) == true) + { + + string[] video_files = d.FileNames; + + processing_thread = new Thread(() => ProcessingLoop(video_files)); + processing_thread.Start(); + + } + })); + } + + + private void imageFileOpenClick(object sender, RoutedEventArgs e) + { + new Thread(() => imageOpen()).Start(); + } + + private void imageOpen() + { + StopTracking(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 2, 0), (Action)(() => + { + var d = new OpenFileDialog(); + d.Multiselect = true; + d.Filter = "Image files|*.jpg;*.jpeg;*.bmp;*.png;*.gif"; + + if (d.ShowDialog(this) == true) + { + + string[] image_files = d.FileNames; + + processing_thread = new Thread(() => ProcessingLoop(image_files, -3)); + processing_thread.Start(); + + } + })); + } + + private void imageSequenceFileOpenClick(object sender, RoutedEventArgs e) + { + new Thread(() => imageSequenceOpen()).Start(); + } + + private void imageSequenceOpen() + { + StopTracking(); + + Dispatcher.Invoke(DispatcherPriority.Render, new TimeSpan(0, 0, 0, 2, 0), (Action)(() => + { + var d = new OpenFileDialog(); + d.Multiselect = true; + d.Filter = "Image files|*.jpg;*.jpeg;*.bmp;*.png;*.gif"; + + if (d.ShowDialog(this) == true) + { + + string[] image_files = d.FileNames; + + processing_thread = new Thread(() => ProcessingLoop(image_files, -2)); + processing_thread.Start(); + + } + })); + } + + // -------------------------------------------------------- + // Button handling + // -------------------------------------------------------- + + // Cleanup stuff when closing the window + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + thread_running = false; + processing_thread.Join(); + + capture.Dispose(); + } + face_analyser.Dispose(); + } + + // Stopping the tracking + private void StopButton_Click(object sender, RoutedEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + thread_paused = false; + thread_running = false; + processing_thread.Join(); + + PauseButton.IsEnabled = false; + NextFrameButton.IsEnabled = false; + NextFiveFramesButton.IsEnabled = false; + StopButton.IsEnabled = false; + ResetButton.IsEnabled = false; + RecordingMenu.IsEnabled = true; + + UseDynamicModelsCheckBox.IsEnabled = true; + } + } + + // Resetting the tracker + private void ResetButton_Click(object sender, RoutedEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + reset = true; + } + } + + private void PauseButton_Click(object sender, RoutedEventArgs e) + { + if (processing_thread != null) + { + // Stop capture and tracking + thread_paused = !thread_paused; + + ResetButton.IsEnabled = !thread_paused; + + NextFrameButton.IsEnabled = thread_paused; + NextFiveFramesButton.IsEnabled = thread_paused; + + if (thread_paused) + { + PauseButton.Content = "Resume"; + } + else + { + PauseButton.Content = "Pause"; + } + } + } + + private void SkipButton_Click(object sender, RoutedEventArgs e) + { + if (sender.Equals(NextFrameButton)) + { + skip_frames += 1; + } + else if (sender.Equals(NextFiveFramesButton)) + { + skip_frames += 5; + } + } + + + private void VisualisationCheckBox_Click(object sender, RoutedEventArgs e) + { + show_tracked_video = ShowVideoCheckBox.IsChecked; + show_appearance = ShowAppearanceFeaturesCheckBox.IsChecked; + show_geometry = ShowGeometryFeaturesCheckBox.IsChecked; + show_aus = ShowAUsCheckBox.IsChecked; + + // Collapsing or restoring the windows here + if (!show_tracked_video) + { + VideoBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[0].Width = new GridLength(0, GridUnitType.Star); + } + else + { + VideoBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[0].Width = new GridLength(2.1, GridUnitType.Star); + } + + if (!show_appearance) + { + AppearanceBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[1].Width = new GridLength(0, GridUnitType.Star); + } + else + { + AppearanceBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[1].Width = new GridLength(0.8, GridUnitType.Star); + } + + // Collapsing or restoring the windows here + if (!show_geometry) + { + GeometryBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[2].Width = new GridLength(0, GridUnitType.Star); + } + else + { + GeometryBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[2].Width = new GridLength(1.0, GridUnitType.Star); + } + + // Collapsing or restoring the windows here + if (!show_aus) + { + ActionUnitBorder.Visibility = System.Windows.Visibility.Collapsed; + MainGrid.ColumnDefinitions[3].Width = new GridLength(0, GridUnitType.Star); + } + else + { + ActionUnitBorder.Visibility = System.Windows.Visibility.Visible; + MainGrid.ColumnDefinitions[3].Width = new GridLength(1.6, GridUnitType.Star); + } + + } + + + private void recordCheckBox_click(object sender, RoutedEventArgs e) + { + record_aligned = RecordAlignedCheckBox.IsChecked; + record_HOG = RecordHOGCheckBox.IsChecked; + record_tracked_vid = RecordTrackedVidCheckBox.IsChecked; + } + + private void UseDynamicModelsCheckBox_Click(object sender, RoutedEventArgs e) + { + dynamic_AU_shift = UseDynamicShiftingCheckBox.IsChecked; + dynamic_AU_scale = UseDynamicScalingCheckBox.IsChecked; + + if (use_dynamic_models != UseDynamicModelsCheckBox.IsChecked) + { + // Change the face analyser, this should be safe as the model is only allowed to change when not running + String root = AppDomain.CurrentDomain.BaseDirectory; + face_analyser = new FaceAnalyserManaged(root, UseDynamicModelsCheckBox.IsChecked); + } + use_dynamic_models = UseDynamicModelsCheckBox.IsChecked; + } + + } +} diff --git a/gui/OpenFaceOffline/OpenFaceOffline.csproj b/gui/OpenFaceOffline/OpenFaceOffline.csproj new file mode 100644 index 0000000..c9e4d7c --- /dev/null +++ b/gui/OpenFaceOffline/OpenFaceOffline.csproj @@ -0,0 +1,184 @@ + + + + + Debug + AnyCPU + {A4760F41-2B1F-4144-B7B2-62785AFFE79B} + WinExe + Properties + OpenFaceOffline + OpenFaceOffline + v4.5.2 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + + + AnyCPU + true + full + false + ..\..\x64\Debug\ + DEBUG;TRACE + prompt + 4 + + + x64 + pdbonly + true + ..\..\x64\Release\ + TRACE + prompt + 4 + + + true + ..\..\Debug\ + DEBUG;TRACE + full + x86 + prompt + MinimumRecommendedRules.ruleset + true + + + ..\..\Release\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + true + + + logo1.ico + + + + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + + BarGraph.xaml + + + BarGraphHorizontal.xaml + + + MultiBarGraph.xaml + + + MultiBarGraphHorz.xaml + + + OverlayImage.xaml + + + SimpleImage.xaml + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + + + {78196985-ee54-411f-822b-5a23edf80642} + CppInerop + + + + + + + + xcopy /I /E /Y /D "$(ProjectDir)logo1.ico" "$(SolutionDir)/$(Configuration)" + + + \ No newline at end of file diff --git a/gui/OpenFaceOffline/Properties/AssemblyInfo.cs b/gui/OpenFaceOffline/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..74fe00e --- /dev/null +++ b/gui/OpenFaceOffline/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("OpenFaceOffline")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("OpenFaceOffline")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +//In order to begin building localizable applications, set +//CultureYouAreCodingWith in your .csproj file +//inside a . For example, if you are using US english +//in your source files, set the to en-US. Then uncomment +//the NeutralResourceLanguage attribute below. Update the "en-US" in +//the line below to match the UICulture setting in the project file. + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] + + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/gui/OpenFaceOffline/Properties/Resources.Designer.cs b/gui/OpenFaceOffline/Properties/Resources.Designer.cs new file mode 100644 index 0000000..644558e --- /dev/null +++ b/gui/OpenFaceOffline/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace OpenFaceOffline.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenFaceOffline.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/gui/OpenFaceOffline/Properties/Resources.resx b/gui/OpenFaceOffline/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/gui/OpenFaceOffline/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/gui/OpenFaceOffline/Properties/Settings.Designer.cs b/gui/OpenFaceOffline/Properties/Settings.Designer.cs new file mode 100644 index 0000000..6ab083e --- /dev/null +++ b/gui/OpenFaceOffline/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace OpenFaceOffline.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/gui/OpenFaceOffline/Properties/Settings.settings b/gui/OpenFaceOffline/Properties/Settings.settings new file mode 100644 index 0000000..033d7a5 --- /dev/null +++ b/gui/OpenFaceOffline/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/gui/OpenFaceOffline/UI_items/BarGraph.xaml b/gui/OpenFaceOffline/UI_items/BarGraph.xaml new file mode 100644 index 0000000..2101d74 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/BarGraph.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/gui/OpenFaceOffline/UI_items/BarGraph.xaml.cs b/gui/OpenFaceOffline/UI_items/BarGraph.xaml.cs new file mode 100644 index 0000000..35303f9 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/BarGraph.xaml.cs @@ -0,0 +1,97 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System.Windows.Controls; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for BarGraph.xaml + /// + public partial class BarGraph : UserControl + { + private double targetValue = 0; + + public BarGraph() + { + InitializeComponent(); + } + + public void SetValue(double value) + { + targetValue = 1.5 * value; + if (targetValue > 0) + { + if (targetValue > barContainerPos.ActualHeight) + targetValue = barContainerPos.ActualHeight; + + barPos.Height = targetValue; + barNeg.Height = 0; + } + if (targetValue < 0) + { + if (-targetValue > barContainerNeg.ActualHeight) + targetValue = -barContainerNeg.ActualHeight; + + barPos.Height = 0; + barNeg.Height = -targetValue; + } + } + + } +} diff --git a/gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml b/gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml new file mode 100644 index 0000000..f5ccbe5 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml.cs b/gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml.cs new file mode 100644 index 0000000..44a7d1a --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/BarGraphHorizontal.xaml.cs @@ -0,0 +1,100 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for BarGraphHorizontal.xaml + /// + public partial class BarGraphHorizontal : UserControl + { + double targetValue = 0; + + public BarGraphHorizontal(String label) + { + InitializeComponent(); + Label.Content = label; + } + + public void SetValue(double value) + { + targetValue = value; + barPos.Width = targetValue * barContainerPos.ActualWidth; + } + + public double GetTarget() + { + return targetValue; + } + } +} diff --git a/gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml b/gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml new file mode 100644 index 0000000..836c974 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml @@ -0,0 +1,11 @@ + + + + + diff --git a/gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml.cs b/gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml.cs new file mode 100644 index 0000000..7f32909 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/MultiBarGraph.xaml.cs @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for MultiBarGraph.xaml + /// + public partial class MultiBarGraph : UserControl + { + + int num_bars = 0; + List graphs; + + public MultiBarGraph() + { + InitializeComponent(); + + graphs = new List(); + } + + public void Update(List data) + { + // Create new bars if necessary + if (num_bars != data.Count) + { + num_bars = data.Count; + barGrid.Children.Clear(); + foreach (var value in data) + { + BarGraph newBar = new BarGraph(); + graphs.Add(newBar); + barGrid.ColumnDefinitions.Add(new ColumnDefinition()); + Grid.SetColumn(newBar, graphs.Count); + barGrid.Children.Add(newBar); + + } + } + + // Update the bars + for (int i = 0; i < data.Count; ++i) + { + graphs[i].SetValue(data[i]); + } + } + } +} diff --git a/gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml b/gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml new file mode 100644 index 0000000..db5728f --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml.cs b/gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml.cs new file mode 100644 index 0000000..f9af7c7 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/MultiBarGraphHorz.xaml.cs @@ -0,0 +1,148 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for MultiBarGraphHorz.xaml + /// + public partial class MultiBarGraphHorz : UserControl + { + int num_bars = 0; + Dictionary graphs; + + // Name mapping + Dictionary mapping; + + public MultiBarGraphHorz() + { + InitializeComponent(); + + graphs = new Dictionary(); + + mapping = new Dictionary(); + mapping["AU01"] = "Inner Brow raiser"; + mapping["AU02"] = "Outer Brow raiser"; + mapping["AU04"] = "Brow lowerer"; + mapping["AU05"] = "Upper lid raiser"; + mapping["AU06"] = "Cheek raiser"; + mapping["AU07"] = "Lid tightener"; + mapping["AU09"] = "Nose wrinkler"; + mapping["AU10"] = "Upper lip raiser"; + mapping["AU12"] = "Lip corner puller (smile)"; + mapping["AU14"] = "Dimpler"; + mapping["AU15"] = "Lip corner depressor"; + mapping["AU17"] = "Chin Raiser"; + mapping["AU20"] = "Lip Stretcher"; + mapping["AU23"] = "Lip tightener"; + mapping["AU25"] = "Lips part"; + mapping["AU26"] = "Jaw drop"; + mapping["AU28"] = "Lip suck"; + mapping["AU45"] = "Blink"; + + + + } + + public void Update(Dictionary data) + { + // Create new bars if necessary + if (num_bars != data.Count) + { + num_bars = data.Count; + barGrid.Children.Clear(); + + // Make sure AUs are sorted + var data_labels = data.Keys.ToList(); + data_labels.Sort(); + + foreach (var label in data_labels) + { + BarGraphHorizontal newBar = new BarGraphHorizontal(label + " - " + mapping[label]); + barGrid.RowDefinitions.Add(new RowDefinition()); + Grid.SetRow(newBar, graphs.Count); + graphs.Add(label, newBar); + barGrid.Children.Add(newBar); + } + } + + // Update the bars + foreach (var value in data) + { + double old_value = graphs[value.Key].GetTarget(); + // some smoothing as well + graphs[value.Key].SetValue(old_value * 0.15 + 0.85 * value.Value); + } + } + } +} diff --git a/gui/OpenFaceOffline/UI_items/OverlayImage.xaml b/gui/OpenFaceOffline/UI_items/OverlayImage.xaml new file mode 100644 index 0000000..8dcdaea --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/OverlayImage.xaml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/gui/OpenFaceOffline/UI_items/OverlayImage.xaml.cs b/gui/OpenFaceOffline/UI_items/OverlayImage.xaml.cs new file mode 100644 index 0000000..b7bce90 --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/OverlayImage.xaml.cs @@ -0,0 +1,168 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using System.Windows.Media.Imaging; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for OverlayImage.xaml + /// + public partial class OverlayImage : Image + { + public OverlayImage() + { + InitializeComponent(); + OverlayLines = new List>(); + OverlayPoints = new List(); + GazeLines = new List>(); + + Progress = -1; + } + + protected override void OnRender(DrawingContext dc) + { + base.OnRender(dc); + + if (OverlayLines == null) + OverlayLines = new List>(); + + if (OverlayPoints == null) + OverlayPoints = new List(); + + if (Source == null || !(Source is WriteableBitmap)) + return; + + var width = ((WriteableBitmap)Source).PixelWidth; + var height = ((WriteableBitmap)Source).PixelHeight; + + foreach (var line in OverlayLines) + { + + var p1 = new Point(ActualWidth * line.Item1.X / width, ActualHeight * line.Item1.Y / height); + var p2 = new Point(ActualWidth * line.Item2.X / width, ActualHeight * line.Item2.Y / height); + + dc.DrawLine(new Pen(new SolidColorBrush(Color.FromArgb(200, (byte)(100 + (155 * (1 - Confidence))), (byte)(100 + (155 * Confidence)), 100)), 2), p1, p2); + } + + foreach (var line in GazeLines) + { + + var p1 = new Point(ActualWidth * line.Item1.X / width, ActualHeight * line.Item1.Y / height); + var p2 = new Point(ActualWidth * line.Item2.X / width, ActualHeight * line.Item2.Y / height); + + dc.DrawLine(new Pen(new SolidColorBrush(Color.FromArgb(200, (byte)(240), (byte)(30), (byte)100)), 3), p1, p2); + + } + + foreach (var p in OverlayPoints) + { + + var q = new Point(ActualWidth * p.X / width, ActualHeight * p.Y / height); + + dc.DrawEllipse(new SolidColorBrush(Color.FromArgb((byte)(200 * Confidence), 255, 255, 100)), null, q, 2, 2); + } + + double scaling = ActualWidth / 400.0; + + int confidence_width = (int)(107.0 * scaling); + int confidence_height = (int)(18.0 * scaling); + + Brush conf_brush = new SolidColorBrush(Color.FromRgb((byte)((1 - Confidence) * 255), (byte)(Confidence * 255), (byte)40)); + dc.DrawRoundedRectangle(conf_brush, new Pen(Brushes.Black, 0.5 * scaling), new Rect(ActualWidth - confidence_width - 1, 0, confidence_width, confidence_height), 3.0 * scaling, 3.0 * scaling); + + FormattedText txt = new FormattedText("Confidence: " + (int)(100 * Confidence) + "%", System.Globalization.CultureInfo.CurrentCulture, System.Windows.FlowDirection.LeftToRight, new Typeface("Verdana"), 12.0 * scaling, Brushes.Black); + dc.DrawText(txt, new Point(ActualWidth - confidence_width + 2, 2)); + + int fps_width = (int)(52.0 * scaling); + int fps_height = (int)(18.0 * scaling); + + dc.DrawRoundedRectangle(Brushes.WhiteSmoke, new Pen(Brushes.Black, 0.5 * scaling), new Rect(0, 0, fps_width, fps_height), 3.0 * scaling, 3.0 * scaling); + FormattedText fps_txt = new FormattedText("FPS: " + (int)FPS, System.Globalization.CultureInfo.CurrentCulture, System.Windows.FlowDirection.LeftToRight, new Typeface("Verdana"), 12.0 * scaling, Brushes.Black); + dc.DrawText(fps_txt, new Point(2.0 * scaling, 0)); + + old_width = width; + old_height = height; + + // Drawing a progress bar at the bottom of the image + if (Progress > 0) + { + int progress_bar_height = (int)(6.0 * scaling); + dc.DrawRectangle(Brushes.GreenYellow, new Pen(Brushes.Black, 0.5 * scaling), new Rect(0, ActualHeight - progress_bar_height, Progress * ActualWidth, progress_bar_height)); + } + + } + + public List> OverlayLines { get; set; } + public List> GazeLines { get; set; } + public List OverlayPoints { get; set; } + public double Confidence { get; set; } + public double FPS { get; set; } + + // 0 to 1 indicates how much video has been processed so far + public double Progress { get; set; } + + int old_width; + int old_height; + } +} diff --git a/gui/OpenFaceOffline/UI_items/SimpleImage.xaml b/gui/OpenFaceOffline/UI_items/SimpleImage.xaml new file mode 100644 index 0000000..9cf612d --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/SimpleImage.xaml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/gui/OpenFaceOffline/UI_items/SimpleImage.xaml.cs b/gui/OpenFaceOffline/UI_items/SimpleImage.xaml.cs new file mode 100644 index 0000000..19cb0eb --- /dev/null +++ b/gui/OpenFaceOffline/UI_items/SimpleImage.xaml.cs @@ -0,0 +1,94 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED “AS IS” FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called “open source” software licenses (“Open Source +// Components”), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensee’s request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltrušaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltrušaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace OpenFaceOffline +{ + /// + /// Interaction logic for OverlayImage.xaml + /// + public partial class SimpleImage : Image + { + public SimpleImage() + { + InitializeComponent(); + } + + protected override void OnRender(DrawingContext dc) + { + base.OnRender(dc); + + if (Source == null || !(Source is WriteableBitmap)) + return; + } + } +} diff --git a/gui/OpenFaceOffline/logo1.ico b/gui/OpenFaceOffline/logo1.ico new file mode 100644 index 0000000000000000000000000000000000000000..60a49af1447681999547e550283974db1ec6b731 GIT binary patch literal 1626582 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%0DO!IGE`MK}k+@bUL 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

< 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

2nyu0BIseDU_>#|$`HLQO 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 z z!GCSmrz`)ef9v>v>H0m{MUQNvr+$Pv^7+_(enO8XTeq+Hx_-+3##MHo^B;U`gID8k z{TW|=LXRi;Wa#_a)kb-JrS00p7Wdf~9lq+4zvHjIidOs6emXRs*z=gKbki1X{Gva7 zm5gkNKKXdDqv!ujtudWT_AQw>E1ndm(4KMjZ2!`G{KZJ^#B4EgV`cGFxwy5s2Pa^r zeNOwg)^gr+!w#|DUUL@=Wt;r~a~o%-`!>sWZLr3g(40V9c9KOeI!d!$40X|4UG;RO zCmgeP@2r?T2y1t^B84Sz*YC2pryqRw-rcuu_Ad7C%U}NT125RQmv6`H=ewMD;0I;q z8*Egr%p8MHtY_^zz}voYBj>{pKYW;Pm}gk~!a(#cJgkAGcv{2D`)1RgiS_X6ByXN! zUH_G@d}Yme$lKR|r{(~#iJz323pwM-@9Qh`H27cNH&%=feW4HP6JxZ#LI>-*$J3sM z{w2%r{qTpmA^y(x@uBggtTE%Bp4zLo7htaFJcWKW&WuU@4u5yvNIt!d>2!tF%INhr zu2Vk!%y;c08DsgX@k$5rON@{g8;WVl#R>6Ic{r@Tn6hydUGWhHp7Bpy!c!V88azsq zzp*+!q}mnNH~uY8JXZe6ldSM(xAM|8E5;$L6IGg^Gms6S~}*ZA^f`mSH` z)BbM!7DHi$HN3T>wV5^lQ~TqvMjRIt;Z*OIwZY3e(C^yX1NVRT_yIk;T4RwP?u+B; z3Iphfw+q%ga~1x>6zeb82W!Y6*PH~t*qea=;`Cy30BUY?eh0Sq?DwsKd5sIsnG5+2 zjZNNlSOYo_i1si3;xA(TkeYMQHLO7IvPWRgz&jOu{WcCcuDfs3(#gA{yFdSf54KwS z^9MhfpU_c1_AUZessEkd`JD%RHU{#oIhlTNwO`Kn#+W|QSMJrx`?lU0LOQd>_a}U= z&&;>X2h92KC$o1C$=g()IZt7J{JHCQjJ#JdM`%p;tR%lN?cP|SqjCMJ=fSh%89M1+ z^;|XQA&(qBFuyXlGk2q>@hd%fyD$C}L!_-~ig993u}CU@NjLr!SF0~xx!;(EPCO!4 z{EJukSKQJrp3$MDA6i(j_){#^1|9kID_)X!7k?j6%RCbil_&_D8(`?X{QxH(s)z|3ccodD;IT*7x~BTK}a_X?m`%jVV6E z4{dbI(;N7eek zKU#GsZStjftju(!Q}TOO`EGTU&)#(D`4^+a3u^}#Y!oZ42{fAC$+nC+H=$6U*y{Z{Qm|Gykx649k6^<(?hp2I%cY*n_qn zKmUBY?e|-p$CQ871*6E~BWDcYzBvs{*SF^!J-B%Syz~ypx1jdOSDyDQ ze79xgqb1in^Yf1$>@?rvSMw`#BL1M4bDO<;;1hE+{j1MmGau_uI2XR>f4HXq!#8~F z!RSZtHOvpqvBGP1ID6oo|K0l)vh**WE;9AA`G>jJQ;k{Gi2YwbK-qe&yz76eJS2};$Pf3V^who zo#z`Zz2s|?elQNtjZ?*?)?c+jgO4=%)s^BEF2++zHa){%seA3B^X$?m`&M6avmqU} z9v}R~*tG{w*GWqzImt^0Wy#T>#cJ)*B%A%&DX(6d{i}m^>36mN+b_iQXOn;Xw}1P0 zp7yiHyo3)Hf7q7I>e4a$c1%TAiat7J>nAeQlS#IEDPOHm@ZbF(bbM5Q;IlgNEt&kB zzUfnX*Z*rj9?@B)Q9CROM zh~43|G8pH~fV~bp)WI2h-f)48epep`&_PU3M(Og!1Fpkc-{8~FdQ%*R7uMOWxm4(cG81>QZb%B>R>3Gb-`VG`1Zk_tLu*(XY}8_ zemBng+joO-QvaK`;7dN9WVwt7^2yt|4|=q0=3D#szPB{z@!rAvb8`&%*?tT^bk5GY z+IpQ&>{K^t9$RMtt)?5AQ_uYrf(KX8`oi&MVjy&PN+h&j?%HyUZ`l zv7E0rU(|;^D=--D8!MhE4mqi6WD{N&XY@1yPh zjQ=Z#uJOFnA>HnW6%#zWiu7*Bk%vp&!czcW_27c0an@y(tw zED{S_yR>dViyz+ciEqz8f2c>t7W%p5>0G-r6(@_8;uD?7Z5}`$>v4E&O=!Q~`cb`@ zChp@Ytt~!cH5$C!tCx!N-jBlxm<+SX5F=qHT=2UGd;z!6!4Y+}4;$c77unVW0C<@Wxqot+aDqdR|YUzt3=Nds5#4qKB$5AxYXXF5sQ#m35`C)2tc zZrMlh4gxk?ciUTFKN%;^;)#c`p??+w)sdBqQhVt3o1K~0U-ndBzV9#KC0p6uJi|Q5 z_XobW^P7kIh0mPHuy>6w-Sl_*v7avbjP3f~I~)Jg$2`jKDtJF+t`#lc-~q4Szux1M zqby(YrwhNv3%)ykl%rw0xsl)IF&@n|%ty^zwDCNlmAZfG@?7*>Nj)z;tDb4kj(g8m z&r@l1@%JpyuV>o4(OCS+pZv*(zET%$Y4XVyJEUSL-mO!MF?aDt8|8G>M%&^KJ=N14 zjWnzvH~d1=6`d6AuIaT$hwmBx_(?tei}%ZuZtTEQTRP%{mMpaKlvn0HzUdXu)t}sx zE}rp1^D3Tb*Z+9ZK|5D6>MLdVe&Q3Kcx(7?{huGwqcr{M)B2x&^jh1a<#+Upzxbie zNA-ItzWD)NeCtywzWS0J^_$|aJ-RTJ{Q6&C#*+^2tCPAnR`IM}x;Bwb-)K&o@*$dZ zK$|bgM?>B|f9PvVCc1sT(sS)chcEtgXSXtG&%IQfD1M5w-t{_9C$>fxF1yzrKl%96 zj}E2k$ub7yUGmzp16{mJ>EUu;%p{jj?VE8HkX7iXKRXd?zHkEi&JUd)yk z^U=cs?>oGcw_b-aVs@B@7B=}E8^1GXufXrS!BV`##&AzL?DPAAy?d93ZQi>(cjnxf zxrMa%&+y1^xLNm_KUf>vuXX+(rs03SmnJ)1*_KVsZ=`T7-C#d#vKK(U_a4sYn`@A3 zUci2MQ5z{gNyC453q#zKzcOlvhxhExA$TW{UHXk(&e7QufJ^!ojyiA1Kd{>z3I6;2 zLVm=L-t=cja>%D2jCbbHZzk|%^BML0LT7FG$?qCCpI~04f7#JkVwb$}vt!OFtTPCo3S zBe_!Var6bBW*5KI4iEYki|A1N*_c8u8qapL#U;<_()Rpolb%b<4mR#uFWQwKU;MPe zL%V2~r?_ISz#i@Bh)!F&rFT5F#nU|<(Q13r(dV51pw+hdOY0wU@Xe>_=o?Qu7W zG5P4D%lCLzMu(4d`?Y6p=)aKglJ}j-qbFPFAkS8H^`mrY(eWQ2^NGvYV%Op?n&ru7 z`LsS#mJiU=1HbwP-)N(YCwldGq=S6)bVgf0(N~-L%02q{vfY&((Mr)q=N?b|wdbG4 zz#VO4GFrN>Pn9P-TJqSzKJ>11$bR+lB)?~0T3muP*22CK7q`@j?@KGsHWz+)ktHQR zo76?i_WFu$r~KtFUWNb4t*@*D?TcIUTmOl>>e9P(`D|XjHqpTw^=yQN)~E1U8h*kB zw$mlNwm!FBwuXi2a3%bMaj*#%+0Qm#ur7pa@D6{tMt^Hza}K{j1dq_e5OwAxu*&+` z9<}$@?!zg0*w0VtDwb!H)IGeB?i>a0@RMJ?2cQdlB_ICd-vuk!CnaBsAKtLlMIJv& zYljbC`Nqz-0_4JOeq^I>2;gP?>iivS^4pF2**9xw_}V$f-k0#Pd64;0^4Vek#Jha^ z@#Yich3$NlpX`D6tpR~$zN_IKe&pu=VB0^Z&x1?)fVFl&Rxmeea&1 z!i2R)d9>{5zJAgcUt=AedUVR8XK&+QUVlf!uV{N_wx7aBdZL$-(RhhAp7Du3y3_vp zsc}_1Hl!=w^4Sw@I`nL#bK!|LyQL>>{>Ll(ldUZt>sNH~l@|lVK5;-y7cYJD=lAlg z1)qwC+SgBOKl$mvUue*}lqYxNRPvR<6&GK@DesEC3-|kLFaZ9DX>@fhpO@tEfC*x@ z*l%s=%$xVma5p@q8{9*W4(@nAZEqfqI0FXX=>_}j6}Vs!Kf-_S+pSBT2SjTxL0jM9 ztFu1<6T@E^2`iPs67LM~hF5eB+xdxJ?(+*DC`(^$T;>X`fx~F)-|)Y(P4R4QgWuvm zImU-RKtnHbw3l~z@6HG8Gaq1&{SnyA-^%>%51+$szrO&V>^(V;V1DK7p6>#T1@i;= zpN@QKPss07@{|83$#-PaUCKA~WWV>|eCeGGU(h#yZ7Tngi*KSQmz~Zz+GFrNg>hT` zQ|bAfh)w%EsV`2*-#vfgz?}@=eR>yT?1uaLb7{p2u_wM{gyp5hwB&2k^G|kdia+>? z|9D0#j)i~PY+Q|&oV)msKR)=KJkwF^$5RYJi|1m{%1_VyTKwhr{2!)dU-Icf23ctF zr30Ss<4HEYXqC|qEq>%=f4+)mxR2)a)7qb|cs?7@Ur5N-?2>oo|N1Ha(>1^5f3)=} zJ&n7@z^m*hYyF!4ldnEsMk{R$vCr)&Mc;|g8!x9^qb2R!jw`TVjp z_-n6h`@eBQ&*#X;H@W$Wz4*HFzx+P)o99>GV0&Ndo%Pn8`JR*bt6%w*pZ$OGxx42x zu^KLT|7|Z~W9(g#)%S*m_ntbyLa`7eyHnZQ^2{xJAz~*Gbe|h%Xb23lT*Zcza;k3D* zeHQqSKK#eW*#W=vNX|MJ$d#5ysu)5J&>h)DqsBZ42f$!OJ}U`3|1FE_vNL=3j59Pog+1m-m$TBfOwU% z_p$ib^PjH!{N=0SAAZH3<*7WI@~N_T%4dHuO{~0&|0`d+o`3m`zc3-Jz%%*iiof#p zfAZNRAEuo4$5Y$l;GO;YB%WyFS*)fj`_!#X`SextUkK~ZCeKf&{PmT5Sf!up)BLYq zd02%f8xW4_aIg+^w8u1@q(>=Y>W^2D=Lv~o9EqU25J#i8(`S_Zv@RJK4 za|`QV>w7Y@%Up-u=18UO?fYiXT*?_h^8jZP;JY&yzDwY1e)!z=-Mw!M&86J)6B+u5 z9OH`q%GggoKF7;%8>*w{=`TJ!$4bwiG1K_U->*u^p||r3>@rW`FMM2g@|P!>u6?Fn z_55vn^4YKNjaluib ztvKbmjxYWAKwIVN<%_@3C0~l?T}%~w=@`E|+Tvt<(Pn$Pu6%OTpFHu&r`eC^tK$Ei zd^+d1?c=$(Y3x}S9J3HLT_X0q~$;TpI`CdBXrTOPxEbbCr|vM z;SY3lBY$GV{OXZ@eOr?1E(AH95fNzd_* z*JJjhtt~s~kxlCIiM&h9Ebkq(@1(7*#13)uE=KVQo^&O{Js+?MFE&c)fiC_}rR0e3 z<{#p;cj7ScPX5V|>9MEV|1#FL4ghI^0=H_1TfX z_{mr?Mj8+D#V_Nl`#U;iwYy8nF`qOh`h7~zj()tOuWaR$(Kx4z_QrOym$vp&{ofdI z9)o=2E1G=KJ)UAl_7;COR-*A-i$nAv8y#K5KW(EgR^f^6vG|J*p2Zc<)jW?(-9$(iM+sjF^ zW$M;f$u&;U;*SQeo^@$45}lY0_xwI>G`%ZyuPvL%#53MxsUyF%_GfzXqm!8IJ-EGI zYdh!h;mg_9J(=3bOWo%;dXb<1>7`H6p=nH^(cXPBU`8@wu;0U{k98`nhncWbEDwLf z%2N1c-g5W*J>FxRPk6r_-oeDy|6(%SgpDrw_aT?jqs2y5x!vcBWfu!J3KQsz=G z#!H*Cgptl7dUtM(nk=}<*2RDFU($w z_lJCFU&1)t-zf49#C*V>kaL0N67kh1`{n4F6gu*Ei_#Mi@))(_|!f9TkiZPDqAjSu30_#p1stM%=l^KasYx{XofldC=b>095bQ$`2r%Gi9d zs4{WiyYs&L7XQPrXf`E}&yve7Hj-Okv0Xh~rS!}f>e3bc^5%o$ukZZfu6M@D#7Vwz z!5i2jg_q$FJh!%Q-QVx)NWI?{e__9U4ezt1@E_L0LKhzJ(>cTD0KR4OuA5HqEqUa_ z73<&Zpl5wr%I7Y)C`AJ=d;hP$cw>TI#wXp@*UPKtYW3{-)0Tc{woQ3F@#Zu5 z@4HXW#hom+_N-)AF$KnG=NTe9`LIlR@$W9Cq3yZEXP;Mf zTkX(FI_x0=2#xwa+bm@B9L{|3EFS_vePClOGFYVf|oJ=(7SsA*p5{)bQQuq2P z`ELvV$;nsA=ZkbsUnza==0Euuuju9RY3>$3vcmu9)sdZiJmi-zf9W$i#B0-d<=1S| zm(exu;Jz%sXX(#8T6keS?7g_Pt?%xXo$-0w@++C-li`xbFF&!L z4$7jVt83}eEpK_Ulh1zNskNTcmM1Mz(d~*_}v}< zH^)3cJ2(#$;h=k%)qVI66U`~Kg>A_rpH8qEPH%tF-@HZrUd;i*|JMJ@7k|9thrc`- zPw~|bU*`$z-}~+#A2#t#dmK`(RMKludey=lJns^@4WM`pSiXFEV9d|f1VHM&t~?x-v=-4_p zyXe|@s6BcYo2!eSPuBj%zqYm4E_!M5ORHP|uU^qf@sw)A#^v{_F_j$th$nvd=*xI1 zli%@In>+dFjHTrB316dK|F6E$uD{82uN@ve<6@st78N55tKL1yylAWt?M`GgKqW%+-{N%Uxz_nBwA_~@H7 zSY-XE%>00^a74_u245V4+0GC2`?|2-xj$#s%ysN@z$E9aN;$a@P_zx@f4LtQ- zTy&*$&|l%+nGgHhvmmdwY=ZyRpp}*4ixxh_o6S3?xZ}xwzkz4IV-T zoQDkWA^KL(xBvX)42AQ9%>n#Qq5oar++=J2^?&%UAL;A2maY5wj6cu*b>CR&`8Sq( zR?cUtF=Z?jpV2m+j7@yvYy92G+%n&Y8vou0cpkj}z`tjTztOX2+sUJG^*mIc4&B54 z@ZWmh?*JKp{Ep@h|KrJq^O-vB=YuZ(3|F;NzJA>2l%8lxmloYg%fJ7Rx%~93RcV+rWKg!y|sRU1EeQ;;9cvFTKJ^jWg;fyabpvd zuj<;!n{Q<2@K@qnY_wPN9NV)1XVluni})_?OFw&&eEN!%e}pa zxH#3*fwJ?N);}jKoM>4`;uY`Ol;i=gU+&TFIe&kT2)y6?u~)Y)@w>cq^PAuN<^{%g zkj_o$gwMc5p7g)@-@3x@0r{B2HY2j`xD1*eT)!Kd$$ zPc3~qbWa!lR)OD1@SUTzPt%PM67A z{@J{WcQTM4T=E!8riInd7GUW*o20|^_8NWT*4}u4Gd|#sHr)B)Nk2YL`uKng9%Cxe z44?eZKO4L9qnH1a1q>X^BR%9x;ZSNPpK;(D12+06PV?G0e1lhSuFEy*;)A`Y^GGqa zn9w>P_$|Y^ZFhCJ=t8Xa{;}V4^}U>Yc*dQ(@!H6wM3byaHgIiQXC-uz{<5o5dv;+5 zc$L~7(bn!Avc5@^SLsDA6uT?6Su2$1#K5XG!EFw=)dBMmP55zAv@@A+xoh+-_ayTTl7gvk|cJKi<4k z;Tgf*8iibR4?jQVZ`L!u8Ki&ff;-!qPuk53zM)=>;5&Sy_%BX9ia(9#TX#MMkNJJ_ zP(HSPVJFW%{Qk6crZWq==G*7EXZOvM6NV1xMZ51MJ)d&+5M1X2-B<2hDZUi%#FFM2 zy2YU4c4Lb>blY4k{++S9ekD3^8vjiH!LlcQ;53Hq@Swjq87w=MdyE5TY_P>+rGE0k zS&qw3!i!I~0+&qM(v?2AqY`9(`E9r3tZWUJmIAmI9L8+I{4ro(O;Z!?Ylq!{PVA0QSf~o-1t~{GRafM zE6cUk9e77C9$NSG?4#fOH3pn_OYQZ2zxRvl_Z7Swh!4IYx6_T%`l0;qnTfRoS*<0k zi{R?QtGpj??BX{7J+I+s)&r+4yKi3QQ|zBV@t6EVTd+#{<3qvnGybM8AMHMzV557M zbgRvLpi}1`{NSh8cQBrd!GRYrU^^Q)@jSYx18a=>`HFV{thu!DiTbugmrSmWe|UKo zf5DS?W1l%nr`k6D$-&^8uV{jE(Q&#p2F~JU^tCmg;}dN7^ublUh`xSs#ouUUFC`k_ z*?Z+T4m{eyW$*BIUkrk4Wun8@A7nxUEjWv3iz}HcjsXiMJ?TrYcyym`)uXST z?bYwrpW36Zp6qzRD>~YfKiH)Y_S7j}!Qve(n0y7V_<|EmIJJFc_pjv-77txJzpIOx z_H+JbnsaWkR-ZT{CY|}bagWOO8T!R%f7e~S_q!wZ9@-v_tv!Cpo}E@t>6EV2$*(^j zsmxchfBwf;(15>sG?nqOCB8k^mM8l@vAvrZTb?U7DdjTndOO?o_h9NPr*|)}iT&Q2 zlee4)_?;kY0pq>@=NW-kxj(yR|Ke|cWnL9e!SE;kWj<=> zN5wyNe#UR|J7e4zf1>x6k__}i|K4}B9xw;qGWHn^d(nyc>03zOSAgI7y5q@E{87h4 zG3AUu;OHm$!Jay$kK$DLl<8G}@wfQ5I=!R+X#R(D=YMfx<79C)Ue~7Dmd}%ZaT;E5 zXZ~4TEo{0nhQ5^1U;o2+kNmu9m)21)jlYa3(|6@z^(kq^ttLsy2m`^Lo_7?hZ-`O7xeb4CY zPyTqUJat81!Qw4m;dh^}B)_&Uv9r2d;rlf4zL;9ydrQ2sgLos($XDJev_E`=%NTvi zt!Gnhr~b9I{$W4*hJ&vtPyK_>{_1!Br`>h(nXcqhdvj;jbOz2kNxvK=mX^bm+U=>G ztDNtxH|8vjvu^Nrj=TqNz2O=7nX|Ra>z*CUsV?7^`@KQm$-Dd}p}gyxFMB@knOTc? zzs~z~`_FlRysrAGr0^%@z8Zf6;ILNBiV8 zpYo0<`}rMYYcMq618?oQ`}z|{_jGBk)VmoMUx)x=okM_oaG-lvcLKrukdH9aynS{U-{Rkl0W+3lOL~O zm5=lfKKZ}W@87@i^}dH-fAS}P@^3D@|0Dgc{mE7SDX&Gpa%BpZU7pz=oNMJz_ouI% zYYKSNeR@j&aIn?V4;G*L(53&y3qJk7hdz4YCCizs(t#3<_t4M(7AM~F5wzjtZ|dl~ z$g!96MEf`U4RKShf*Xt&B(4VEIe<2~UAwr_o+3JQ=(($RnLOWh?khHj=PdCZpVcsB3%`M&t#i?83)k56X+&U~De zkOSW2tE2;Z<3n_j-uRX0AO1eDXaB(~!ST(_fA;?PvrfV9qdhGf@}pvN@nU_2Kb-S_ z{SPdd;uJsSKiZmq<{mh-@~LQp+d4S+cNhQh9EF~pg;*1waCfpcSGSL!@-=O~yS1+C zSs$Et>x9*n`I78+^ABwLq+j#Qyxy3)b1(Sf)Xr7-^`oaBe{@TC!L9z`1&hb*u&}Ma ziYYt)SFU(9Hrin0HJOsX_)AWB;_)r=rz>>Ai*CHanZA zOMlmY@B|wV$pkMN?(vEburBrZhdce_JwJ(8aBwAmc;U#e!8Y!s4-Oyo$3yh>g%dB} z!UtEeL)=vtU&I43(;4laYwH(h^^33P*zT2LFBjs8V~wSaA84~?gcC2u1*2Zo zp8Q~o|0}z;GyfP{oJyzoZT^XqVpMqP>#aJ)NA%%F2d-?TZ2rRw25x*tzxfZ>+BUq! z)MqgrU2yP*r6B_wcG8u!%^dH@;{KonJvioPNQ*_p* z@j#a7(|5K{4kg~{!g&2~HAjrk{yS!2@8kzdcll7fhBsS+Q%4uAZ0jChYyaq<EI#FEA;@u~D|-!n^j(fOi1?82ROJd#OCxA4#jow`?&K|ehu6I<1v{^{bB zKRxRU4*qk_!JB>1OC~frawG@3l{Hmpgo!5VRao|aQMhhU**AXoc}L=K8ufRqC_`+p^c~D z@Iemu+V#h$G3h^^gH`GWyEwIzi%hFeaIS2kj0a_S=@Oj#F8K1l+LA}v*h>7MosFX% z-tAlYjR%uGSN^4+u1@$n`q`hna7Paht$*M{3thY`!JF5v=D1iOE_*lMzC!$Ti7R4) z+|hoZxM93l(%QgY#Gc=89Hbml%@@VGM2hnVU+HP69)vo80NS&pJ7b$S%D<#&7JzDJ`|`qd5| zoP1`C_+9>$SMC4po2>(!?>i5-2lP&b_qUv{%LDQ&9?mm%w9rxR+9Dd|fA8AW_F8F; z!RFQ_E`M9c`vP*XJ-_D>p80z|;Qc?a_Ve*ZMslM=SMKpfCv>6BGZw!CbCpd_*lZOX*ygknug&Y)J(LqVrk&=d0b5=cJ#m zg29i=JssD+C3#ji+xM(~M?c-rKixGa;nDYq2R!N{54=lvZMyUSgfk``m8-%NuV|!? z`d%wf`s;gq;FKvI&;g6K3vBVh{8twf?BV=Ao!_V_PH5jN*o_fz$o0;)y;JTCLB5K{ zvyv_F=~6GIkR`q1J^xQfWYW*a7cT!l?SJa3_!Hbon~u;*SNid|vWS)9ur+}5Z*kbO zc6o`;(+4&L&a!n0THpQdcVE6!!;g0X{XT(j0K6~Y?-e)~0O#txKl*6B zLs#^fKIlPi_l={R?m0s`1*>j+I&?nZokqW<(3%#^+DmF{}15kz&Nn_^OtlL4&@zvyqx|QzRIOv+uEwOlYTxK z58zyQ%$LHAkMyK;-}r^m#=o^iH@uC{U!to_PhjDu^X9Ws-ZtOm9;LmOy_$D|w28m+ zg%~Ryh$GsKEymgdI*asHsUQ;XT&IgneGfAJT8@pA6seLVZ$#+_w&%bohsl{Y*8U%Kb`y=Qy*oZoog z(7A@+MDQEJ&L_O9AV2xd136rKxgQ>~(hpwnpmdKu-*Z`0!fg$tFMj1Oe#XD>-m@lS zvdNbDkhbElw&o9CaKCdcKhfU$b7LSM$yc_1=T~Tgh4ZAp{*M+oFs_wh>*gz+$?IhH z-h(qYzcJApK_Y9 z+JgzM_I%1XIOQf~aQS4i#@{3Q3-=Z5|Gez=A0EEk|AvkW=Vx?=Hzj%S6`y!j*QSr& zz$urXbU?Sse+QeN7@M4%f3r)t*+m_G<%yFXw%@Z$ND$vAzkWKj|G2XXg-nsUywsnDV(O8=5c)=^amDx%kz0wO9x<&^~_C5VC{euSsJ{?u+ zTbo8V|3l}_{&)$mIyg8_dAheBb{^}wtoP@&%k7&_>CkV|IRo(9HgpMw-oUxk#b#G_ z(C*zn@9F#2&w0BuacBSb*z&CS4X@vBa8}S*B^$Cyc-@yz@hN|J4_uDM(~fm-Tx*s3 zw0ZW?xsTk>cdSJ`m%wlL{K^^ietSSBvcpR+_>q_3*GERbAM6ZZ`2`CGU*!Jj_4_z} zPe@&x9F|S;9c4acj%HWw?CNTc@dT^ff!wXg& zEV?dq+$T?EdDlbR-YNg`isy8YOz}|sS)6nX4sLLK1y6X+Pl{D<(Z4b1UpW5j8`Atkkjn=? zi>@+VB^!RfqVv*+Uwq>~c>QEDHu!MTQ|l&h=_>qe5$xKi{yUuM?X*AIYvbiJe)Z!O ztnualg+=qE4>mdOVBab~y6nq-csl9VuB5Bg7hUH6#)5$hzs+T(7*O6(`Ym2@df(3y zFT@G)MQNP);Jn+O%ihkOUknkG;IyX@bC#AmozhqBbcI(XUEwibN&niiSN0F4F=Pk7 zIwAM!0o`;|sSPf0=3w-LRl-Ye;Pm4iJX*=IrMxdE+v965SBk%ML!b8R-jVRkgx*^t zsME3d+}f=1&I-I^D7K69_QP_v@7#Tdr{B8){(hYAH=QrEu7CsHVt@HF-1zifg5Trw z4js7ql?@W-SWRNEB{F!UO3W4aQFzV>ANA%&yreM(526k-^fArI7z7pPWDzibbA+#kWbO0_H+ejddz3?DR9B!N1ZN>ak)>n_FwMl$g^<2 zyioVPyUE+0 z54il!f_DR*&6LaKPk8`NdBT0`4KR4NXZH+P|Jq(XSbV}^jNhcOX7Jp@UL9?IPI%Pe3a@+Z{L^`Y_fb64ZcO9w=$t{n^;Gg?lP%dc+h*Bl3KjYvmrWC6x^@D}el~3pY;X@-hehuHsa@N^}F3dZ=#Q*pUAM=ig z-wkv=!#?2X_OvaW{ywvBb-}>{)^*Y|U+{`gyzTr`*G49~ZT`8xlmCpB=9lr=Dm{fS zT^3J`hqw8EM_+&N`q!rMN|xf!$^;fK`~eQQ$R0lQ*$REQ)ffJRJ^6$$`|tYW^gsOF z(MJnSwBc3dzE=18vXyf4DxEH@K0X#+veRq2N}p(j zH`&OV{ONz;(#13Sa7LTHmOftLfD;b&POi zpZs`5)A;09U%cVmd3@%6F~M((h~@Ty;)8vFJ!P>%9`pBT#9P1f;#+gEUhaoGoa*w} zvvoi`rdMOM#jASuSEsvE|Jsv(VHan1eP(}s=x5jLPw()a^ue;3^1Q@NdXmeW@%!By zI%^G(E}hNG|Gu-JE4d9Wc@S*tso?c{ug+Px-0!)&-0HH|_H5mId*xr}H-2N!9^9D@ z-0}qetO4NLi>C;vM$1{-aq`}j0YUhu5QcjM0V@kFL_J=v@Q@F@>@cL82!BF?3? zk&&!qMg!jDchCPmzW&ak-;KQc-5=|npZ)A-FTaT__n)@ddp2xNv1xOPukgA21YEwN z-u%m_*uA-T=c~>C<|-V)<*V9UcRn3#FqOfsOpoex(OSwnfFJN3&*=KiAbzm+rTahs z^FM#FzjsHP(|iSvrG+OtAftNmZ{tsT(yyLQ!EXFpJ(+*WpRLkAJi+4S4mSGP3LLwh zyut}zI#n;GqS5^4Cnqdff>&nK;?HUS{OXbX@f!W`CqEjClPqAhrz`c7{;7X3*Y&~q z{~G)0>L2ZNg};+NdiZ36V95klA6vOsk5};YL?_9g{j*j2NeAgaoXu;zrK{{8ES&f? zCYj(1PJ8s#@$5d>d@5c}|9@uFQ+}}Yldqze|EVYc;?$1z`V@Vx|Hor`3KpI75_83W z^WXDd-|iP1oUaz2#d~?*xwU<#d;pjDAor`6|4tg+pYxwA`jqjSoxrjaxwK`|WOE3_k(Nx%8j`s(RZ*?;wquhUnx1)E%F+4_gBd=DW{pE=cU`TJcYxiEciNtg60*E(Cb zHuDWV7<+%EoNEu>yLCHW-TArq1*|iy@v_w!|H0a0pY}iT$rJXM-tYGt1kN{382;n= zgTHyK&sxNuQr)?<_2XY&@29zkPp(q(!Enhx@;m+cp29k_KCmwDSdg1;>0hp*<7~lB zuAM8jtxdHV!&izw+U|UcFXeymKJvflz?rYq)|}>x=oLru|K=+AV3X;tBs1BQzx)q2 zy;?t6cX_|lw<7!ooc{D`txw*Lb9d;xt*@XDfC1 zz@GG1e)W^SF~-7yPdMQZmLB!70o-^X8<^9rko`iM^W= zp3Vy4MMrEYUM$_MoH~8i&sNz(Up6N{7xQkQEz3-HVa57u+>vb6mDJvNqix4k-E*x7y(KIi!Lq2q$r zxsWqwextwKuWqg548Xd_yQ8fw!&AwBtVgUByxW*e;PD_w`FlvdQ(2v_E!fk2c2YK< z*o{q_$NWV7)m6;qYq;aR(a)6Q0SWK-j`r~hmk%p>}2U`#mRTl(2G`pFbLSn@5Oa28)y zru4Kr2o?|U+~ps*qEBDRf9mz(<%9G8rKeBHzC32@)&I7UqxnS7c*7@|;uF4bDzn$Z zuCBDRm2&M*KX8MECmW%!k52NbY?|)V7uaX?SO2?KBxf=u|H_2dx5%H}@qlNt7@Pd) zFRx(I{YgJQ%vZcLZdLp7rlO*1Lb!2KMyjx4w<*o(_NTgCD&7KAZe3UW?7asry^N?BhH^ z47axnPQNza-i!PG9Uan5_YveN?S(73%K3$3%K&ld{(=*^*?Rl)AydMd1W1L{uxUj?koAvo;#Vp&iTCO zXTDoo^*5K<(eGIL4uCD$qBS3U^c#Q4Pfjw>8+~o8Dp!#|y^@_y(|>*N(VhE+0b49f zPvF=`jL)XcRa7q`gWrMKjdSMca7!R0sZ@!I+?ykPI>$7?j%EIWaZ_u!Jr{WJOF0j_XF zzj4cJGA2i`#`24N2wt?^H+RJY@j|Q?AIy6(z~6wgM>OxnZqJSFzwA4G-(9TMFaL*Q z&mYBK@h4hJv19MWkz&aSyKv9y=K#K$C^vhD-+s&cd-5B-_WWM{lXt=RT?Oa&o%t`Ey6+9- z$&Wtz=;eKQZRce@$F_c#&v|<12;idaY~DI$^S^w74|%}(g5U9V26W=@9^Zba-*3tG z%-;BDfOB5&TRp#3)ZalSw?01RnUk{t-wXIX3EvdxdJfK^8C&R6o)vv23g+2`IG&U~{D2)1>& zem2|OpN-g*jp@)ks@|{g?ud22wUzaL?*P#+I`Hn=YURg2`IP35nCSkD|LL^(6?}8A zT%|p|f~8*#dv+$H2W3**rajr23wt-;2{rK?TsZv^tG={<=^nUl|H$`sUC0n z6kehqui(%jJ9xaNTQK_IOjhHyxldPLtzG~AJKy=vzkB$B-;<6D-=}EOSGh9U=&8G+ zU7r$fWWY=E*H-++Z?MU)1V`_!jgmY0^nuwc+Vqr9MduDK__xq!1GJU#RU3W7ub-Zl zSGd8sz<^!4@v4juaCDGQe`Uk3^`8z-`e+*qk2v7Ix_j|LEOm*^z8QBuE&t0?@_?Mv zH~rr47r$NLizDKT9A|GRPIMJ7&=NP4;*c06K6ll>aYftzi;MpGBE8TLnsiTZ?&)1y zaOw+7_mB7_YdTQUi}jV~ug>Z1`>naG1Ag+8pS<`l zXb*od{7!!HtZB~x^jjM!J%jL!z#5c%^;r*CM_KdmE&eC}^Xc}(cXlyX%@ciW+m-FJ z=Q&rv8)y6--alqr^F-Nt*%~LB&8gNs!RLGQub$r7k>9Z?+ghLT1O8>M`@0mLB{|eL0`o)I;1P}#N{5GI7ol)7q%D(7To3)a9zfp@!uHz8y|y@b|oIg zPV|bUVDS@7CH~=*tCWiqo{j17-O?=Nw~iMgHwICu5?K=$?Jckk$X=Yp=SvE)E|H1AmY-rwFI{Hgzq z>+I;Ad%yo*`&|i-zl|f8d*4GYFXytizXJ~k`u2k^XT;8dtR2e5ceu4#=YaLBqi0K< zCGQwC?K{2KAeZwmvRgl>`#lN2<%>t{@{sQwJTLKH09^3%<+tSjY@;-%%oR2^pSJJY zuCGr&!@Y2PcYVJ+Z+z=%b$+I_?kV@f(Vd ze|}j9_jE9w(je%ELO{TujPtx zlpn*P+?cxg7k~QY>EO!$J6=7R&~ep&C%?W&`A1*8Zcd};^8XqC@ktl1uXqMd9UgTs#u$6XpkTuVw)(~@vTAq1gSYO_bIsb{Q=T}D#T(q@FaCgs`YnI!FVE%WNqcmc^Y0)2@P{w&W7~%rTmJ8?99}V9>3qQ7aPu1h@*?=? z8n^e>0N(TPExvVw900cO1?7WsuH0{};C#VZ{nCcFGXm=cILPDKzTcdQxA?FI+OvS~ zeeZiOviq(Cy<~TWK|j_J{1ESb|FGX1SYJ6ypyTr2TkK}8hy!nd1(W}&uP-%z?GLs& z&{(B5{tzr5RL}pK7x{Sdtp6{4GP{h28!nf+G2#UpWQE(+S%Ca+9cTaV9YDYL$QFJx z^8ELU>+dM{{i^XhugrgR=n|dcUpZl8S}{p^#?;0Y|KVFW@bH)a?(l|FX)NB#)yis%&tLu)nD>BO@|E9L6CXVL^&Hs#Ow8~++cQ~zbH;kX z{!Ls?*JL4+`#XN{QS5UbA$Aojl`e5j+|fq{a7yD^0|dLWijVHY3HF48d&j(159h++ z4PN}9g^oHt#o+RvQttKa+dj*CSiXs;UwW2LoqO9Gdp>Lb>%3dul{@7~Fy-3rwRsO7 zPI=P37>^zsD~(rbmxI}=HGpRfXnGIP`M-E?ob`YlY;VZM#=633EdVci<$CAI_Vhj1 z4^}^ZtryUD8Si}Ga{y-@<$vb^&KjI&@GI*PYYNY+`Bymk8C|nUb}h%QeZFZu|AQwV zM3ddouPmp#k0u{*55D{yuiEp!d>RgOLc0>|(r-Q~UFLi-gU`{awWDWD-r+GnJ!`Q( z^ggBEQTF>@{#KB)C}(}X`SZ8`yi; z*NIbqJ`{fU+D}+Gv!yZ^CHmxc8Sh>h&YiR3i+TJg|NqOs{L9PpVefExpWOSvE@#H_ zh1k)Wz_()F7Z*4DZkYGWYr_c<#cJc!?L!M u-qlT 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 literal 0 HcmV?d00001 diff --git a/lib/local/CamCom/CamCom.props b/lib/local/CamCom/CamCom.props new file mode 100644 index 0000000..9e4a266 --- /dev/null +++ b/lib/local/CamCom/CamCom.props @@ -0,0 +1,15 @@ + + + + + + + + $(SolutionDir)lib\local\CamCom;%(AdditionalIncludeDirectories) + + + dxva2.lib;evr.lib;mf.lib;mfplat.lib;mfplay.lib;mfreadwrite.lib;mfuuid.lib;Strmiids.lib;%(AdditionalDependencies) + + + + \ No newline at end of file diff --git a/lib/local/CamCom/CamCom.vcxproj b/lib/local/CamCom/CamCom.vcxproj new file mode 100644 index 0000000..5866b40 --- /dev/null +++ b/lib/local/CamCom/CamCom.vcxproj @@ -0,0 +1,167 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {0CEC6A75-17BA-4DC5-9405-C74154921E60} + Win32Proj + CamCom + 8.1 + + + + StaticLibrary + true + v140 + Unicode + + + StaticLibrary + false + v140 + true + Unicode + + + StaticLibrary + true + v140 + Unicode + + + StaticLibrary + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ./;%(AdditionalIncludeDirectories) + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + ./;%(AdditionalIncludeDirectories) + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ./;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + ./;%(AdditionalIncludeDirectories) + + + Console + true + true + true + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/local/CamCom/CamCom.vcxproj.filters b/lib/local/CamCom/CamCom.vcxproj.filters new file mode 100644 index 0000000..06e1b61 --- /dev/null +++ b/lib/local/CamCom/CamCom.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/lib/local/CamCom/camera_helper.cpp b/lib/local/CamCom/camera_helper.cpp new file mode 100644 index 0000000..0b060ad --- /dev/null +++ b/lib/local/CamCom/camera_helper.cpp @@ -0,0 +1,192 @@ +#include "stdafx.h" + +#include "camera_helper.h" + +//#include + +namespace { + namespace internal { + template struct property_traits {}; + + template + struct camera_control_property_traits + { + typedef IAMCameraControl Interface; + static long id() { return Id; } + }; + + template + struct video_proc_amp_property_traits + { + typedef IAMVideoProcAmp Interface; + static long id() { return Id; } + }; + + template<> struct property_traits < camera::Exposure > : public camera_control_property_traits {}; + template<> struct property_traits < camera::Focus > : public camera_control_property_traits{}; + template<> struct property_traits < camera::Zoom > : public camera_control_property_traits{}; + template<> struct property_traits < camera::Pan > : public camera_control_property_traits{}; + template<> struct property_traits < camera::Tilt > : public camera_control_property_traits{}; + template<> struct property_traits < camera::Roll > : public camera_control_property_traits{}; + template<> struct property_traits < camera::Iris > : public camera_control_property_traits{}; + + template<> struct property_traits < camera::Brightness > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::Contrast > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::Hue > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::Saturation > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::Sharpness > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::Gamma > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::ColorEnable > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::WhiteBalance > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::BacklightCompensation > : public video_proc_amp_property_traits{}; + template<> struct property_traits < camera::Gain > : public video_proc_amp_property_traits < VideoProcAmp_Gain > {}; + + template struct interface_traits {}; + template<> struct interface_traits < IAMCameraControl > + { + static long auto_flag() { return CameraControl_Flags_Auto; } + static long manual_flag() { return CameraControl_Flags_Manual; } + }; + template<> struct interface_traits + { + static long auto_flag() { return VideoProcAmp_Flags_Auto; } + static long manual_flag() { return VideoProcAmp_Flags_Manual; } + }; + + template + bool has(long id, const SourcePtr& source_ptr) { + comet::com_ptr pInterface = comet::com_cast(source_ptr); + if (!pInterface) return false; + long value, flags; + HRESULT hr = pInterface->Get(id, &value, &flags); + return SUCCEEDED(hr); + } + + template + cam_prop_range get_range(long id, const SourcePtr& source_ptr) { + comet::com_ptr pInterface = comet::try_cast(source_ptr); + cam_prop_range range; + long flags; + pInterface->GetRange(id, &range.min, &range.max, &range.step, &range.defaultValue, &flags) | comet::raise_exception; + range.canBeAuto = (flags & interface_traits::auto_flag()) != 0; + range.canBeManual = (flags & interface_traits::manual_flag()) != 0; + return range; + } + + template + cam_prop_value get(long id, const SourcePtr& source_ptr) { + comet::com_ptr pInterface = comet::try_cast(source_ptr); + cam_prop_value value; + long flags; + pInterface->Get(id, &value.value, &flags) | comet::raise_exception; + value.isAuto = (flags & interface_traits::auto_flag()) != 0 || (flags & interface_traits::manual_flag()) == 0; + return value; + } + + template + void set(long id, const cam_prop_value& value, const SourcePtr& source_ptr) { + comet::com_ptr pInterface = comet::try_cast(source_ptr); + long flags = value.isAuto ? interface_traits::auto_flag() : interface_traits::manual_flag(); + pInterface->Set(id, value.value, flags) | comet::raise_exception; + } + } +} + +#define MAP_OVER_CAMERA_PROPERTIES(FUNC) \ + FUNC(::camera::Exposure, Exposure) \ + FUNC(::camera::Focus, Focus) \ + FUNC(::camera::Zoom, Zoom) \ + FUNC(::camera::Pan, Pan) \ + FUNC(::camera::Tilt, Tilt) \ + FUNC(::camera::Roll, Roll) \ + FUNC(::camera::Iris, Iris) \ + FUNC(::camera::Brightness, Brightness) \ + FUNC(::camera::Contrast, Contrast) \ + FUNC(::camera::Hue, Hue) \ + FUNC(::camera::Saturation, Saturation) \ + FUNC(::camera::Sharpness, Sharpness) \ + FUNC(::camera::Gamma, Gamma) \ + FUNC(::camera::ColorEnable, Color Enable) \ + FUNC(::camera::WhiteBalance, White Balance) \ + FUNC(::camera::BacklightCompensation, Backlight Compensation) \ + FUNC(::camera::Gain, Gain) + + +bool camera::has(Property property) const +{ + switch (property) { +#define CASE(PROP, NAME) case PROP: return ::internal::has<::internal::property_traits::Interface>(::internal::property_traits::id(), source_ptr); + MAP_OVER_CAMERA_PROPERTIES(CASE) +#undef CASE + default: + return false; + } +} +cam_prop_range camera::get_range(Property property) const +{ + switch (property) { +#define CASE(PROP, NAME) case PROP: return ::internal::get_range<::internal::property_traits::Interface>(::internal::property_traits::id(), source_ptr); + MAP_OVER_CAMERA_PROPERTIES(CASE) +#undef CASE + default: + throw std::runtime_error("No such property: " + std::string(camera::property_name(property))); + } +} +cam_prop_value camera::get(Property property) const +{ + switch (property) { +#define CASE(PROP, NAME) case PROP: return ::internal::get<::internal::property_traits::Interface>(::internal::property_traits::id(), source_ptr); + MAP_OVER_CAMERA_PROPERTIES(CASE) +#undef CASE + default: + throw std::runtime_error("No such property: " + std::string(camera::property_name(property))); + } +} +void camera::set(Property property, const cam_prop_value& value) +{ + switch (property) { +#define CASE(PROP, NAME) case PROP: ::internal::set<::internal::property_traits::Interface>(::internal::property_traits::id(), value, source_ptr); break; + MAP_OVER_CAMERA_PROPERTIES(CASE) +#undef CASE + } +} + +std::vector camera::list_properties() +{ + std::vector properties; + properties.push_back(Exposure); // CameraControl + properties.push_back(Focus); + properties.push_back(Zoom); + properties.push_back(Pan); + properties.push_back(Tilt); + properties.push_back(Roll); + properties.push_back(Iris); + + properties.push_back(Brightness); + properties.push_back(Contrast); + properties.push_back(Hue); + properties.push_back(Saturation); + properties.push_back(Sharpness); + properties.push_back(Gamma); + properties.push_back(ColorEnable); + properties.push_back(WhiteBalance); + properties.push_back(BacklightCompensation); + properties.push_back(Gain); + + return properties; +//#define PROPENTRY(PROP, NAME) PROP, +// MAP_OVER_CAMERA_PROPERTIES(PROPENTRY) +//#undef PROPENTRY +// }; +} + +const char* camera::property_name(Property property) +{ + switch (property) { +#define CASE(PROP, NAME) case PROP: return #NAME; + MAP_OVER_CAMERA_PROPERTIES(CASE) +#undef CASE + default: + return "UNKNOWN"; + } +} diff --git a/lib/local/CamCom/camera_helper.h b/lib/local/CamCom/camera_helper.h new file mode 100644 index 0000000..6874647 --- /dev/null +++ b/lib/local/CamCom/camera_helper.h @@ -0,0 +1,720 @@ +#ifndef camera_helper_h__ +#define camera_helper_h__ + +#pragma once + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include + +namespace comet { + +#define MAKE_COMET_COMTYPE(T, BASE) \ + template<> struct comtype< ::T > \ + { \ + static const IID& uuid() { return IID_ ## T; } \ + typedef ::BASE base; \ + } + + MAKE_COMET_COMTYPE(IMF2DBuffer, IUnknown); + MAKE_COMET_COMTYPE(IAMVideoProcAmp, IUnknown); + MAKE_COMET_COMTYPE(IAMCameraControl, IUnknown); +} + +struct cam_prop_range +{ + long min; + long max; + long step; + long defaultValue; + bool canBeAuto; + bool canBeManual; +}; + +inline std::ostream& operator<<(std::ostream& os, const cam_prop_range& val) +{ + os << "[" << val.min << ":" << val.step << ":" << val.max << "], " << val.defaultValue; + if (val.canBeAuto && val.canBeManual) + os << " (auto/manual)"; + else if (val.canBeAuto) + os << " (auto)"; + else if (val.canBeManual) + os << " (manual)"; + return os; +} + +struct cam_prop_value +{ + long value; + bool isAuto; + + cam_prop_value() : value(0), isAuto(true) + { + } + + cam_prop_value(long value, bool isAuto = false) : value(value), isAuto(isAuto) + { + } + + operator long() const + { + return value; + } + + static cam_prop_value AUTO(long value = 0) { + return cam_prop_value(value, true); + }; + static cam_prop_value MANUAL(long value = 0) { + return cam_prop_value(value, false); + }; +}; + +inline std::ostream& operator<<(std::ostream& os, const cam_prop_value& val) +{ + os << val.value; + os << " ("; + if (val.isAuto) + os << "auto"; + else + os << "manual"; + os << ")"; + return os; +} + +namespace MediaFormat +{ + enum e + { + Unknown, + RGB32, // MFVideoFormat_RGB32 + ARGB32, // MFVideoFormat_ARGB32 + RGB24, // MFVideoFormat_RGB24 + RGB555, // MFVideoFormat_RGB555 + RGB565, // MFVideoFormat_RGB565 + RGB8, // MFVideoFormat_RGB8 + AI44, // MFVideoFormat_AI44 + AYUV, // MFVideoFormat_AYUV + YUY2, // MFVideoFormat_YUY2 + YVYU, // MFVideoFormat_YVYU + YVU9, // MFVideoFormat_YVU9 + UYVY, // MFVideoFormat_UYVY + NV11, // MFVideoFormat_NV11 + NV12, // MFVideoFormat_NV12 + YV12, // MFVideoFormat_YV12 + I420, // MFVideoFormat_I420 + IYUV, // MFVideoFormat_IYUV + Y210, // MFVideoFormat_Y210 + Y216, // MFVideoFormat_Y216 + Y410, // MFVideoFormat_Y410 + Y416, // MFVideoFormat_Y416 + Y41P, // MFVideoFormat_Y41P + Y41T, // MFVideoFormat_Y41T + Y42T, // MFVideoFormat_Y42T + P210, // MFVideoFormat_P210 + P216, // MFVideoFormat_P216 + P010, // MFVideoFormat_P010 + P016, // MFVideoFormat_P016 + v210, // MFVideoFormat_v210 + v216, // MFVideoFormat_v216 + v410, // MFVideoFormat_v410 + MP43, // MFVideoFormat_MP43 + MP4S, // MFVideoFormat_MP4S + M4S2, // MFVideoFormat_M4S2 + MP4V, // MFVideoFormat_MP4V + WMV1, // MFVideoFormat_WMV1 + WMV2, // MFVideoFormat_WMV2 + WMV3, // MFVideoFormat_WMV3 + WVC1, // MFVideoFormat_WVC1 + MSS1, // MFVideoFormat_MSS1 + MSS2, // MFVideoFormat_MSS2 + MPG1, // MFVideoFormat_MPG1 + DVSL, // MFVideoFormat_DVSL + DVSD, // MFVideoFormat_DVSD + DVHD, // MFVideoFormat_DVHD + DV25, // MFVideoFormat_DV25 + DV50, // MFVideoFormat_DV50 + DVH1, // MFVideoFormat_DVH1 + DVC, // MFVideoFormat_DVC + H264, // MFVideoFormat_H264 + MJPG, // MFVideoFormat_MJPG + YUV_420O, // MFVideoFormat_420O + H263, // MFVideoFormat_H263 + H264_ES, // MFVideoFormat_H264_ES + MPEG2, // MFVideoFormat_MPEG2 + }; + + inline e fromGUID(GUID guid) + { + if (guid == MFVideoFormat_RGB32) return RGB32; + else if (guid == MFVideoFormat_ARGB32) return ARGB32; + else if (guid == MFVideoFormat_RGB24) return RGB24; + else if (guid == MFVideoFormat_RGB555) return RGB555; + else if (guid == MFVideoFormat_RGB565) return RGB565; + else if (guid == MFVideoFormat_RGB8) return RGB8; + else if (guid == MFVideoFormat_AI44) return AI44; + else if (guid == MFVideoFormat_AYUV) return AYUV; + else if (guid == MFVideoFormat_YUY2) return YUY2; + else if (guid == MFVideoFormat_YVYU) return YVYU; + else if (guid == MFVideoFormat_YVU9) return YVU9; + else if (guid == MFVideoFormat_UYVY) return UYVY; + else if (guid == MFVideoFormat_NV11) return NV11; + else if (guid == MFVideoFormat_NV12) return NV12; + else if (guid == MFVideoFormat_YV12) return YV12; + else if (guid == MFVideoFormat_I420) return I420; + else if (guid == MFVideoFormat_IYUV) return IYUV; + else if (guid == MFVideoFormat_Y210) return Y210; + else if (guid == MFVideoFormat_Y216) return Y216; + else if (guid == MFVideoFormat_Y410) return Y410; + else if (guid == MFVideoFormat_Y416) return Y416; + else if (guid == MFVideoFormat_Y41P) return Y41P; + else if (guid == MFVideoFormat_Y41T) return Y41T; + else if (guid == MFVideoFormat_Y42T) return Y42T; + else if (guid == MFVideoFormat_P210) return P210; + else if (guid == MFVideoFormat_P216) return P216; + else if (guid == MFVideoFormat_P010) return P010; + else if (guid == MFVideoFormat_P016) return P016; + else if (guid == MFVideoFormat_v210) return v210; + else if (guid == MFVideoFormat_v216) return v216; + else if (guid == MFVideoFormat_v410) return v410; + else if (guid == MFVideoFormat_MP43) return MP43; + else if (guid == MFVideoFormat_MP4S) return MP4S; + else if (guid == MFVideoFormat_M4S2) return M4S2; + else if (guid == MFVideoFormat_MP4V) return MP4V; + else if (guid == MFVideoFormat_WMV1) return WMV1; + else if (guid == MFVideoFormat_WMV2) return WMV2; + else if (guid == MFVideoFormat_WMV3) return WMV3; + else if (guid == MFVideoFormat_WVC1) return WVC1; + else if (guid == MFVideoFormat_MSS1) return MSS1; + else if (guid == MFVideoFormat_MSS2) return MSS2; + else if (guid == MFVideoFormat_MPG1) return MPG1; + else if (guid == MFVideoFormat_DVSL) return DVSL; + else if (guid == MFVideoFormat_DVSD) return DVSD; + else if (guid == MFVideoFormat_DVHD) return DVHD; + else if (guid == MFVideoFormat_DV25) return DV25; + else if (guid == MFVideoFormat_DV50) return DV50; + else if (guid == MFVideoFormat_DVH1) return DVH1; + else if (guid == MFVideoFormat_DVC) return DVC; + else if (guid == MFVideoFormat_H264) return H264; + else if (guid == MFVideoFormat_MJPG) return MJPG; + else if (guid == MFVideoFormat_420O) return YUV_420O; + else if (guid == MFVideoFormat_H263) return H263; + else if (guid == MFVideoFormat_H264_ES) return H264_ES; + else if (guid == MFVideoFormat_MPEG2) return MPEG2; + else return Unknown; + } + + inline const char* to_string (const MediaFormat::e& format) + { + switch (format) + { + case RGB32: return "RGB32"; + case ARGB32: return "ARGB32"; + case RGB24: return "RGB24"; + case RGB555: return "RGB555"; + case RGB565: return "RGB565"; + case RGB8: return "RGB8"; + case AI44: return "AI44"; + case AYUV: return "AYUV"; + case YUY2: return "YUY2"; + case YVYU: return "YVYU"; + case YVU9: return "YVU9"; + case UYVY: return "UYVY"; + case NV11: return "NV11"; + case NV12: return "NV12"; + case YV12: return "YV12"; + case I420: return "I420"; + case IYUV: return "IYUV"; + case Y210: return "Y210"; + case Y216: return "Y216"; + case Y410: return "Y410"; + case Y416: return "Y416"; + case Y41P: return "Y41P"; + case Y41T: return "Y41T"; + case Y42T: return "Y42T"; + case P210: return "P210"; + case P216: return "P216"; + case P010: return "P010"; + case P016: return "P016"; + case v210: return "v210"; + case v216: return "v216"; + case v410: return "v410"; + case MP43: return "MP43"; + case MP4S: return "MP4S"; + case M4S2: return "M4S2"; + case MP4V: return "MP4V"; + case WMV1: return "WMV1"; + case WMV2: return "WMV2"; + case WMV3: return "WMV3"; + case WVC1: return "WVC1"; + case MSS1: return "MSS1"; + case MSS2: return "MSS2"; + case MPG1: return "MPG1"; + case DVSL: return "DVSL"; + case DVSD: return "DVSD"; + case DVHD: return "DVHD"; + case DV25: return "DV25"; + case DV50: return "DV50"; + case DVH1: return "DVH1"; + case DVC: return "DVC"; + case H264: return "H264"; + case MJPG: return "MJPG"; + case YUV_420O: return "420O"; + case H263: return "H263"; + case H264_ES: return "H264_ES"; + case MPEG2: return "MPEG2"; + default: return "Unknown"; + } + } + + inline std::ostream& operator<< (std::ostream& os, const MediaFormat::e& format) + { + return os << to_string(format); + } +} + +class media_type +{ +public: + media_type() : _ptr(NULL) + { + } + + media_type(IMFMediaType* ptr) : _ptr(ptr) + { + } + + media_type(comet::com_ptr ptr) : _ptr(ptr) + { + } + + cv::Size resolution() const + { + UINT32 width, height; + MFGetAttributeSize(_ptr.in(), MF_MT_FRAME_SIZE, &width, &height) | comet::raise_exception; + return cv::Size(width, height); + } + + double framerate() const + { + UINT32 num, denom; + MFGetAttributeRatio(_ptr.in(), MF_MT_FRAME_RATE, &num, &denom) | comet::raise_exception; + return static_cast(num) / denom; + } + + MediaFormat::e format() const + { + GUID subtype; + _ptr->GetGUID(MF_MT_SUBTYPE, &subtype) | comet::raise_exception; + return MediaFormat::fromGUID(subtype); + } + +#ifdef _TYPEDEF_BOOL_TYPE + typedef media_type _Myt; + _TYPEDEF_BOOL_TYPE; + _OPERATOR_BOOL() const _NOEXCEPT + { // test for non-null pointer + return (_ptr != 0 ? _CONVERTIBLE_TO_TRUE : 0); + } +#else + explicit operator bool() const + { // test for non-null pointer + return _ptr != 0; + } +#endif + + comet::com_ptr _ptr; +}; + + +class camera +{ +public: + camera() + { + } + + camera(IMFActivate* ptr) : activate_ptr(ptr) + { + } + + camera(comet::com_ptr ptr) : activate_ptr(ptr) + { + } + + // TODO actually implement these or make sure they are deleted/created correctly, this might be the reason for weird mapping of stuff + camera(const camera& other) + { +// this-> +// this = other; + } + //= delete; + + camera(camera&& other) + { + *this = std::move(other); + } + + //camera& operator=(const camera& other) = delete; + + camera& operator=(camera&& other) + { + activate_ptr.swap(other.activate_ptr); + source_ptr.swap(other.source_ptr); + reader_ptr.swap(other.reader_ptr); + return *this; + } + + ~camera() + { + shutdown(); + } + + bool is_active() const + { + return !source_ptr.is_null(); + } + + void activate() + { + if (activate_ptr) + activate_ptr->ActivateObject(IID_IMFMediaSource, reinterpret_cast(source_ptr.out())) | comet::raise_exception; + reader_ptr = NULL; + } + + void shutdown() + { + if (activate_ptr) + activate_ptr->ShutdownObject() | comet::raise_exception; + source_ptr = NULL; + reader_ptr = NULL; + } + + cv::Mat read_frame(int streamIndex = MF_SOURCE_READER_FIRST_VIDEO_STREAM, int bufferIndex = 0) + { + if (!activate_ptr) + return cv::Mat(); + + if (!reader_ptr) + { + comet::com_ptr pAttributes; + MFCreateAttributes(pAttributes.out(), 1) | comet::raise_exception; + pAttributes->SetUINT32(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING, TRUE) | comet::raise_exception; + pAttributes->SetUINT32(MF_SOURCE_READER_DISCONNECT_MEDIASOURCE_ON_SHUTDOWN, TRUE) | comet::raise_exception; + + MFCreateSourceReaderFromMediaSource(source_ptr.in(), pAttributes.in(), reader_ptr.out()) | comet::raise_exception; + } + + comet::com_ptr sample; + DWORD actualStreamIndex, flags; + LONGLONG timestamp; + try + { + do + { + reader_ptr->ReadSample( + streamIndex, // Stream index. + 0, // Flags. + &actualStreamIndex, // Receives the actual stream index. + &flags, // Receives status flags. + ×tamp, // Receives the time stamp. + sample.out() // Receives the sample or NULL. + ) | comet::raise_exception; + } while (sample == NULL && (flags & MF_SOURCE_READERF_STREAMTICK)); + } + catch (std::exception& e) + { + std::cerr << "Error getting frame: " << e.what() << std::endl; + std::cerr << " flags: " << flags << std::endl; + shutdown(); + activate(); + throw; + } + + media_type cur_media_type; + reader_ptr->GetCurrentMediaType(actualStreamIndex, cur_media_type._ptr.out()) | comet::raise_exception; + + //PrintAttributes(cur_media_type._ptr.in()); + + auto format = cur_media_type.format(); + + cv::Mat ret; + + DWORD bufCount; + sample->GetBufferCount(&bufCount) | comet::raise_exception; + + DWORD bufIndex = bufferIndex >= 0 ? bufferIndex : bufCount - bufferIndex; + + if (bufCount > bufIndex) + { + comet::com_ptr buffer; + sample->GetBufferByIndex(bufferIndex, buffer.out()) | comet::raise_exception; + + switch (format) + { + case MediaFormat::RGB24: + case MediaFormat::ARGB32: + case MediaFormat::RGB32: + { + comet::com_ptr buf2d = try_cast(buffer); + + //DWORD length; + //buf2d->GetContiguousLength(&length) | comet::raise_exception; + + //ret.create(); + + //COMET_ASSERT(ret.dataend - ret.datastart == length); + + auto resolution = cur_media_type.resolution(); + + struct buf2d_lock + { + comet::com_ptr& buf2d; + + buf2d_lock(comet::com_ptr& buf2d, BYTE*& scanline0, LONG& pitch) : buf2d(buf2d) + { + buf2d->Lock2D(&scanline0, &pitch) | comet::raise_exception; + } + + ~buf2d_lock() + { + buf2d->Unlock2D() | comet::raise_exception; + } + }; + + BYTE *scanline0; + LONG pitch; + buf2d_lock buf_lock_token(buf2d, scanline0, pitch); + if (pitch >= 0) + { + cv::Mat buf2dmat(resolution, + (format == MediaFormat::RGB24) ? CV_8UC3 : CV_8UC4, + scanline0, + pitch); + buf2dmat.copyTo(ret); + } + else + { + cv::Mat buf2dmat(resolution, + (format == MediaFormat::RGB24) ? CV_8UC3 : CV_8UC4, + scanline0 + pitch*(resolution.height-1), + -pitch); + cv::flip(buf2dmat, ret, 0); + } + + break; + } + case MediaFormat::MJPG: + { + struct buf_lock + { + comet::com_ptr& buffer; + + buf_lock(comet::com_ptr& buffer, BYTE*& data, DWORD& maxLength, DWORD& length) : buffer(buffer) + { + buffer->Lock(&data, &maxLength, &length) | comet::raise_exception; + } + + ~buf_lock() + { + buffer->Unlock() | comet::raise_exception; + } + }; + + BYTE* data; + DWORD length; + DWORD maxLength; + + buf_lock buf_lock_token(buffer, data, maxLength, length); + + ret = cv::imdecode(cv::Mat(length, 1, CV_8U, data), cv::IMREAD_COLOR); + + break; + } + default: + std::stringstream sstream; + sstream << "Unknown media format: " << format; + throw std::runtime_error(sstream.str()); + } + } + + return ret; + } + + std::string name() const + { + return get_attr_str(MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME); + } + + std::string symlink() const + { + return get_attr_str(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK); + } + + // TODO change + //explicit operator bool() const + //{ + // return !activate_ptr.is_null(); + //} + + enum Property + { + // CameraControl + Exposure, + Focus, + Zoom, + Pan, + Tilt, + Roll, + Iris, + + // VideoProcAmp + Brightness, + Contrast, + Hue, + Saturation, + Sharpness, + Gamma, + ColorEnable, + WhiteBalance, + BacklightCompensation, + Gain + }; + + bool has(Property property) const; + cam_prop_range get_range(Property property) const; + cam_prop_value get(Property property) const; + void set(Property property, const cam_prop_value& value); + + static std::vector list_properties(); + static const char* property_name(Property); + + std::vector media_types(int streamIndex = 0) const + { + auto pHandler = getMediaTypeHandler(streamIndex); + + DWORD cTypes = 0; + pHandler->GetMediaTypeCount(&cTypes) | comet::raise_exception; + + std::vector ret; + for (DWORD i = 0; i < cTypes; i++) + { + comet::com_ptr pType; + pHandler->GetMediaTypeByIndex(i, pType.out()) | comet::raise_exception; + ret.emplace_back(pType); + } + + return ret; + } + + media_type get_media_type(int streamIndex = 0) + { + media_type ret; + getMediaTypeHandler(streamIndex)->GetCurrentMediaType(ret._ptr.out()) | comet::raise_exception; + return ret; + } + + void set_media_type(const media_type& type, int streamIndex = 0) + { + getMediaTypeHandler(streamIndex)->SetCurrentMediaType(type._ptr.in()) | comet::raise_exception; + if (reader_ptr) + { + reader_ptr->SetCurrentMediaType(streamIndex, nullptr, type._ptr.in()) | comet::raise_exception; + } + } + + // TODO change + //explicit operator bool() { + // return !activate_ptr.is_null(); + //} + +private: + std::string get_attr_str(REFGUID guid) const + { + comet::task_ptr pStr; + UINT32 strLen; + activate_ptr->GetAllocatedString(guid, pStr.out(), &strLen) | comet::raise_exception; + return comet::bstr_t(pStr.in(), strLen).s_str(); + } + + comet::com_ptr getMediaTypeHandler(int streamIndex = 0) const + { + comet::com_ptr pPD; + source_ptr->CreatePresentationDescriptor(pPD.out()) | comet::raise_exception; + + BOOL fSelected; + comet::com_ptr pSD; + pPD->GetStreamDescriptorByIndex(streamIndex, &fSelected, pSD.out()) | comet::raise_exception; + + comet::com_ptr pHandler; + pSD->GetMediaTypeHandler(pHandler.out()) | comet::raise_exception; + + return pHandler; + } + + comet::com_ptr activate_ptr; + comet::com_ptr source_ptr; + comet::com_ptr reader_ptr; +}; + +class camera_helper +{ +public: + static std::vector get_all_cameras() + { + comet::com_ptr config; + MFCreateAttributes(config.out(), 1) | comet::raise_exception; + + config->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID) | comet::raise_exception; + + comet::com_ptr_array com_ptr_array; + MFEnumDeviceSources(config.in(), com_ptr_array.out(), com_ptr_array.out_count()) | comet::raise_exception; + + std::vector ret; + for (size_t i = 0; i < com_ptr_array.count(); ++i) + { + ret.emplace_back(com_ptr_array[i]); + } + return ret; + } + + static camera get_camera_by_symlink(const std::string& symlink) + { + // This is how you should do it, but for some reason it gives an activate pointer with no friendly name + + // comet::com_ptr config; + // MFCreateAttributes(config.out(), 1) | comet::raise_exception; + // + // config->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID) | comet::raise_exception; + // comet::bstr_t symlink_bstr(symlink); + // config->SetString(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK, symlink_bstr.c_str()) | comet::raise_exception; + // + // comet::com_ptr activate_ptr; + // MFCreateDeviceSourceActivate(config.in(), activate_ptr.out()) | comet::raise_exception; + // + // return camera(activate_ptr); + + for(auto&& camera : get_all_cameras()) + { + if (camera.symlink() == symlink) + return std::move(camera); + } + + throw std::runtime_error("No camera with symlink: " + std::string(symlink)); + } +}; + +#endif // camera_helper_h__ diff --git a/lib/local/CamCom/comet/array.h b/lib/local/CamCom/comet/array.h new file mode 100644 index 0000000..f305f74 --- /dev/null +++ b/lib/local/CamCom/comet/array.h @@ -0,0 +1,150 @@ +/** \file +* Array wrapper. +*/ +/* +* Copyright 2001 Sofus Mortensen +* +* This material is provided "as is", with absolutely no warranty +* expressed or implied. Any use is at your own risk. Permission to +* use or copy this software for any purpose is hereby granted without +* fee, provided the above notices are retained on all copies. +* Permission to modify the code and to distribute modified code is +* granted, provided the above notices are retained, and a notice that +* the code was modified is included with the above copyright notice. +* +* This header is part of Comet version 2. +* https://github.com/alamaison/comet +* +*/ + +/* +* comet::array_t is adapted from class array by Nicolai M. Josuttis +* +* (C) Copyright Nicolai M. Josuttis 2001. +* Permission to copy, use, modify, sell and distribute this software +* is granted provided this copyright notice appears in all copies. +* This software is provided "as is" without express or implied +* warranty, and with no claim as to its suitability for any purpose. +* +*/ + +#ifndef COMET_ARRAY_H +#define COMET_ARRAY_H + +#include +#include +#include +#include +#include + +namespace comet { + +#pragma pack(push) +#pragma pack(1) + + /*!\addtogroup Misc + */ + //@{ + + template class array_t + { + T a_[SZ]; + public: + typedef T value_type; + typedef typename std::vector::iterator iterator; + typedef typename std::vector::const_iterator const_iterator; + + typedef typename std::vector::reverse_iterator reverse_iterator; + typedef typename std::vector::const_reverse_iterator const_reverse_iterator; + + typedef typename std::vector::size_type size_type; + typedef typename std::vector::difference_type difference_type; + + typedef T& reference; + typedef const T& const_reference; + + // reference operator[](size_type i) { return a_[i]; } + // const_reference operator[](size_type i) const { return a_[i]; } + + iterator begin() { return iterator(a_); } + iterator end() { return iterator(a_ + SZ); } + const_iterator begin() const { return const_iterator(a_); } + const_iterator end() const { return const_iterator(a_ + SZ); } + + reverse_iterator rbegin() { return reverse_iterator(a_); } + reverse_iterator rend() { return reverse_iterator(a_ + SZ); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(a_); } + const_reverse_iterator rend() const { return const_reverse_iterator(a_ + SZ); } + + operator const T*() const { return a_; } + operator T*() { return a_; } + + static size_type size() { return SZ; } + static bool empty() { return false; } + static size_type max_size() { return SZ; } + enum { static_size = SZ }; + + reference front() { return a_[0]; } + const_reference front() const { return a_[0]; } + reference back() { return a_[SZ-1]; }; + const_reference back() const { return a_[SZ-1]; } + + // swap (note: linear complexity) + void swap (array_t& y) { + std::swap_ranges(begin(),end(),y.begin()); + } + + // assignment with type conversion + template + array_t& operator= (const array_t& rhs) { + std::copy(rhs.begin(),rhs.end(), begin()); + return *this; + } + + // assign one value to all elements + void assign (const T& value) + { + std::fill_n(begin(),size(),value); + } + + reference at(size_type i) { rangecheck(i); return a_[i]; } + const_reference at(size_type i) const { rangecheck(i); return a_[i]; } + + private: + // check range (may be private because it is static) + static void rangecheck (size_type i) { + if (i >= size()) { throw std::range_error("array"); } + } + + }; + //@} +#pragma pack(pop) + + // comparisons + template + bool operator== (const array_t& x, const array_t& y) { + return std::equal(x.begin(), x.end(), y.begin()); + } + template + bool operator< (const array_t& x, const array_t& y) { + return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); + } + template + bool operator!= (const array_t& x, const array_t& y) { + return !(x==y); + } + template + bool operator> (const array_t& x, const array_t& y) { + return y + bool operator<= (const array_t& x, const array_t& y) { + return !(y + bool operator>= (const array_t& x, const array_t& y) { + return !(x + +# if defined(COMET_ASSERT_THROWS) || defined(COMET_ASSERT_THROWS_ALWAYS) +# if defined(COMET_ASSERT_THROWS_ALWAYS) || !defined(NDEBUG) +namespace comet +{ + /*! \defgroup ErrorHandling Error handling. + */ + //@{ +//! Indicates a comet assertion failed. +/** This is enabled for debug builds if COMET_ASSERT_THROWS is defined and + * enabled for both debug and release if COMET_ASSERT_THROWS_ALWAYS is defined. + */ +struct assert_failed : std::runtime_error +{ + assert_failed( const char *val) : runtime_error(val) {} +}; + //@} +} +# define COMET_ASSERT(x_) if (x_) ; else throw comet::assert_failed("Assert Failed: " #x_ ); +# define COMET_THROWS_ASSERT throw( comet::assert_failed) +# else +# define COMET_ASSERT(x_) ; +# endif + +# else +# define COMET_THROWS_ASSERT throw() +# ifndef __CYGWIN__ + +# include +# define COMET_ASSERT _ASSERTE + +# else + +# include +# define COMET_ASSERT assert +# endif +# endif +/*! \addtogroup ErrorHandling + */ +//@{ +/** \def COMET_ASSERT Assertion in commet. + * \sa COMET_THROWS_ASSERT COMET_ASSERT_THROWS_ALWAYS + */ + //@} + +#endif diff --git a/lib/local/CamCom/comet/atl_module.h b/lib/local/CamCom/comet/atl_module.h new file mode 100644 index 0000000..5c37bdc --- /dev/null +++ b/lib/local/CamCom/comet/atl_module.h @@ -0,0 +1,121 @@ +/** \file + * ATL Module Compatability wrapper. + */ +/* + * Copyright 2000, 2001 Paul Hollingsworth, Michael Geddes + * Copyright 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_ATL_MODULE_H +#define COMET_ATL_MODULE_H + +#include + +#include + +namespace comet { + /*! \defgroup ATL ATL conversion. + */ + //@{ + + /** \struct declspec_comtype atl_module.h comet/atl_module.h + * Helper to create a 'comtype' for a non-comet interface. + * \code + * namespace comet{ + * template<> struct comtype : + * declspec_comtype + * { }; + * }; + * \endcode + * + */ + template struct declspec_comtype + { + static const uuid_t& uuid() { return uuid_t::create_const_reference(__uuidof(ITF)); } + typedef BASE base; + }; + + + /// Placeholder for an empty comet typelibrary. + struct empty_typelib + { + typedef nil coclasses; + }; + + template + class atl_module_ex : public ATL_MODULE + { + // ATL will take the responsibility of registering the embedded type library. + public: + HRESULT Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, const GUID* plibid = NULL) + { + module().instance(h); + return ATL_MODULE::Init(p, h, plibid); + } + + HRESULT RegisterServer(BOOL bRegTypeLib = FALSE, const CLSID* pCLSID = NULL) + { + HRESULT hr = ATL_MODULE::RegisterServer(bRegTypeLib, pCLSID); + if(SUCCEEDED(hr)) + hr = COM_SERVER::DllRegisterServer(); + return hr; + } + + HRESULT UnregisterServer(BOOL bUnRegTypeLib, const CLSID* pCLSID = NULL) + { + COM_SERVER::DllUnregisterServer(); + return ATL_MODULE::UnregisterServer(bUnRegTypeLib, pCLSID); + } + + HRESULT GetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) + { + HRESULT hr = COM_SERVER::DllGetClassObject( rclsid, riid, ppv); + if( hr == CLASS_E_CLASSNOTAVAILABLE ) + { + hr = ATL_MODULE::GetClassObject(rclsid, riid,ppv); + } + return hr; + } + + LONG GetLockCount() + { + return module().rc() + ATL_MODULE::GetLockCount(); + } + }; + + /** Wraps an ATL::CComModule to provide co-existing ATL/Comet co-classes. + * ATL will take responsibility for registering the embedded type-library. + * + * Here is an example of how to use it: + * \code + * struct typelib_subset + * { + * typedef COMET_STRICT_TYPENAME comet::typelist::make_list< CoClass1, CoClass2 > coclasses; + * }; + * comet::atl_module _Module; + * \endcode + * And in std.h: + * \code + * struct typelib_subset; + * extern comet::atl_module _Module; + * \endcode + */ + template + class atl_module : public atl_module_ex< com_server >, ATL_MODULE > + { + }; + //@} +} // namespace comet + +#endif diff --git a/lib/local/CamCom/comet/auto_buffer.h b/lib/local/CamCom/comet/auto_buffer.h new file mode 100644 index 0000000..0a304bd --- /dev/null +++ b/lib/local/CamCom/comet/auto_buffer.h @@ -0,0 +1,99 @@ +/** \file + * Simple uncopyable buffer class. + */ + /* + * Copyright 2004, Michael Geddes, Lijun Qin. + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef INCLUDE_COMET_AUTO_BUFFER_H +#define INCLUDE_COMET_AUTO_BUFFER_H + +#ifdef _SHOW_INC +#pragma message(" #Include " __FILE__) +#endif + +namespace comet +{ + /*!\addtogroup Misc + */ + //@{ + + /** \class auto_buffer_t auto_buffer.h comet/auto_buffer.h + * Simle auto-deleting buffer class. + * Non-copyable /returnable. + */ + template + class auto_buffer_t + { + public: + typedef size_t size_type; + /** Create a buffer of the given size. + * This is the only valid constructor. + */ + explicit auto_buffer_t(size_type size) + { + begin_ = new T[size]; + } + /// Auto-delete the buffer. + ~auto_buffer_t() throw() { delete[] begin_; } + + /// Clear the buffer. + void clear() throw() + { + delete[] begin_; + begin_ = 0; + } + /// Is the buffer empty. + bool empty() const throw() + { + return begin_ != NULL; + } + /// Resize the buffer. + void resize( size_type newSize) throw() + { + delete[] begin_; + begin_ = new T[newSize]; + } + + /// Return a reference to the specifed element. + T & at( size_type t) throw() { return begin_[t]; } + T & operator[]( size_type t) throw() { return begin_[t]; } + /// Return a const reference to the specifed element. + const T & at( size_type t) const throw() { return begin_[t]; } + const T & operator[]( size_type t) const throw() { return begin_[t]; } + + /// Detatch the memory. + T *detach() + { + T *val = begin_; + begin_ = NULL; + return val; + } + /// Return the memory. + T *get() { return begin_; } + const T *get()const { return begin_; } + + private: + /// Can't assign. + auto_buffer_t &operator=(const auto_buffer_t &); + /// can't copy. + auto_buffer_t(const auto_buffer_t&); + + /// Pointer to memory. + T *begin_; + }; + //@} +} + +#endif /* INCLUDE_COMET_AUTO_BUFFER_H */ diff --git a/lib/local/CamCom/comet/bstr.h b/lib/local/CamCom/comet/bstr.h new file mode 100644 index 0000000..23fd332 --- /dev/null +++ b/lib/local/CamCom/comet/bstr.h @@ -0,0 +1,948 @@ +/** \file + * BSTR wrapper classes. + */ +/* + * Copyright 2000-2004 Sofus Mortensen, Michael Geddes + * Copyright 2012 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_BSTR_H +#define COMET_BSTR_H + +#include + +#ifdef COMET_BROKEN_WTYPES +#include +#endif // COMET_BROKEN_WTYPES +#include +#include +#include +#ifndef COMET_GCC_HEADERS +#include +#endif // COMET_GCC_HEADERS + +#include +#include +#undef max +#include + +#include +#include +#include +#include +#include +#include +#include + +#pragma warning(push) +#pragma warning(disable : 4522 4521) + +#pragma comment( lib, "oleaut32" ) + +namespace comet { + +#ifndef NORM_IGNOREKASHIDA +#define NORM_IGNOREKASHIDA 0x00040000 +#endif // NORM_IGNOREKASHIDA + /*! \addtogroup COMType + */ + //@{ + //! Comparsion flags. + /*! Can be used with \link comet::bstr_t::cmp cmp \endlink or the comparsion functors. + \sa cmp + less + less_equal + greater + greater_equal + equal_to + not_equal_to + */ + + enum compare_flags_t + { + cf_ignore_case = NORM_IGNORECASE, //!< Ignore case. + cf_ingore_nonspace = NORM_IGNORENONSPACE, //!< Ignore nonspacing chars. + cf_ignore_symbols = NORM_IGNORESYMBOLS, //!< Ignore symbols. + cf_ignore_width = NORM_IGNOREWIDTH, //!< Ignore string width. + cf_ignore_kanatype = NORM_IGNOREKANATYPE, //!< Ignore Kana type. + cf_ignore_kashida = NORM_IGNOREKASHIDA //!< Ignore Arabic kashida characters. + }; + //@} + + namespace impl { + + inline const wchar_t* null_to_empty(const wchar_t* s) + { return s ? s : L""; } + + } // namespace + + + /*! \addtogroup COMType + */ + //@{ + + /*! \class bstr_t bstr.h comet/bstr.h + * BSTR Wrapper. + * \sa bstr_t + */ + class bstr_t { + public: + typedef wchar_t value_type; +#if !(defined(_STLP_DEBUG) || (defined(_HAS_ITERATOR_DEBUGGING)) && _MSC_VER >= 1400) + typedef std::wstring::iterator iterator; + typedef std::wstring::const_iterator const_iterator; + + typedef std::wstring::reverse_iterator reverse_iterator; + typedef std::wstring::const_reverse_iterator const_reverse_iterator; +#else // _STLP_DEBUG + typedef wchar_t *iterator; + typedef const wchar_t *const_iterator; +#if defined(COMET_STD_ITERATOR) + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#else + // workaround for broken reverse_iterator implementations due to no partial specialisation + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#endif +#endif // _STLP_DEBUG + + typedef std::wstring::size_type size_type; + typedef std::wstring::difference_type difference_type; + + typedef wchar_t& reference; + typedef const wchar_t const_reference; + + private: + BSTR str_; + + void construct() { str_ = 0; } + void construct(BSTR s, bool copy) throw(std::bad_alloc) + { if (copy) str_ = copy_str(s); else str_ = s; } + + void construct(const wchar_t* s) throw(std::bad_alloc) + { str_ = copy_str(s); } + + void construct(const wchar_t* s, size_t len) throw(std::bad_alloc) + { str_ = copy_str(s, len); } + + void construct(const char* s) throw(std::bad_alloc, std::runtime_error) { + convert_str(s, -1); + } + + void construct(const char* s, size_t len) + { + if (len >= static_cast(std::numeric_limits::max())) + throw std::length_error( + "String exceeded maximum length for conversion"); + + convert_str(s, static_cast(len+1)); + } + + void construct(const uuid_t& u, bool braces) + { + str_ = impl::bad_alloc_check(::SysAllocStringLen(0, braces?38:36)); + u.copy_to_str(str_+(braces?1:0)); + if (braces) + { + str_[0]=L'{'; + str_[37]=L'}'; + } + } + + void construct(const wchar_t* s1, size_t l1, const wchar_t* s2, size_t l2) throw(std::bad_alloc) + { + str_ = impl::bad_alloc_check(::SysAllocStringLen(NULL, UINT(l1+l2))); + if (l1) memcpy(str_, s1, sizeof(wchar_t)*(l1)); + if (l2) memcpy(str_+l1, s2, sizeof(wchar_t)*(1+l2)); + } + + void destroy() throw() + { if (str_) ::SysFreeString(str_); } + + bool is_regular() const throw() + { return !str_ || length() == wcslen(str_); } + + static BSTR copy_str(const wchar_t* src) throw(std::bad_alloc) + { return src ? impl::bad_alloc_check(::SysAllocString(src)) : 0; } + + static BSTR copy_str(const wchar_t* src, size_t len) throw(std::bad_alloc) + { return src ? impl::bad_alloc_check(::SysAllocStringLen(src, UINT(len))) : 0; } + + static BSTR copy_str(BSTR src) throw(std::bad_alloc) + { return src ? impl::bad_alloc_check(::SysAllocStringLen(src, ::SysStringLen(src))) : 0; } + + void convert_str(const char* s, int l) throw(std::bad_alloc, std::runtime_error) + { + if (s != 0) { +#if defined(_MBCS) || !defined(COMET_NO_MBCS) + int wl = ::MultiByteToWideChar(CP_ACP, 0, s, l, NULL,0); +#else + int wl = ((l>=0)?l: (1+strlen(s))); + COMET_ASSERT( wl == ::MultiByteToWideChar( CP_ACP, 0, s, l, NULL,0)); +#endif + str_ = impl::bad_alloc_check(::SysAllocStringLen(0, wl - 1)); + if (::MultiByteToWideChar(CP_ACP, 0, s, l, str_, wl) == 0) + { + destroy(); + throw std::runtime_error("MultiByteToWideChar has failed"); + } + } else str_ = 0; + } + + public: + /*! Default constructor + Constructs a null string. + */ + bstr_t() throw() + { + construct(); + } + + //! Copy constructor + /*! + \param s + String initialise bstr_t from. + + \exception std::bad_alloc + On memory exhaustion std::bad_alloc is thrown. + */ + bstr_t(const bstr_t& s) throw(std::bad_alloc) + { + construct(s.str_, true); + } + + //! Construct string from const wchar_t* + /*! + \param s + String to initialise bstr_t from. + + \exception std::bad_alloc + On memory exhaustion std::bad_alloc is thrown. + */ + bstr_t(const wchar_t* s) throw(std::bad_alloc) + { + construct(s); + } + + bstr_t(const wchar_t* s, size_t len) throw(std::bad_alloc) + { + construct(s, len); + } + + //! Construct string from const char* + /*! + \param s + String to initialise bstr_t from. + + \exception std::bad_alloc + On memory exhaustion std::bad_alloc is thrown. + \exception std::runtime_error + Should string conversion fail, std::runtime_error will be thrown. + */ + bstr_t(const char* s) throw(std::runtime_error) + { + construct(s); + } + + bstr_t(const char* s, size_t len) throw(std::bad_alloc) + { + construct(s, len); + } + + //! Construct string from const std::string& + /*! + \param s + String to initialise bstr_t from. + + \exception std::bad_alloc + On memory exhaustion std::bad_alloc is thrown. + \exception std::length_error + If this given string is too long to be converted, + std::length_error is thrown. + \exception std::runtime_error + Should string conversion fail, std::runtime_error is thrown. + */ + bstr_t(const std::string& s) + { + construct(s.c_str(), s.length()); + } + + //! Construct string from BSTR + /*! + Takes ownership of specified BSTR. To prevent misuse the BSTR must be wrapped using auto_attach. + + \code + bstr_t bs( auto_attach( myBSTR ) ); + \endcode + + \param s + String to initialise bstr_t from. + */ + bstr_t(const impl::auto_attach_t& s) throw() + { + construct(s.get(), false); + } + + + //! Construct string from const std::wstring& + /*! + \param s + String to initialise bstr_t from. + + \exception std::bad_alloc + On memory exhaustion std::bad_alloc is thrown. + */ + bstr_t(const std::wstring& s) throw(std::bad_alloc) + { + construct(s.c_str(), s.length()); + } + + explicit bstr_t(size_type sz, wchar_t c) throw(std::bad_alloc) + { + str_ = impl::bad_alloc_check(::SysAllocStringLen(0, UINT(sz))); + std::fill(begin(), end(), c); + } + + explicit bstr_t(size_type sz) throw(std::bad_alloc) + { + str_ = impl::bad_alloc_check(::SysAllocStringLen(0, UINT(sz))); + } + + template + explicit bstr_t(IT first, IT last) + { + str_ = 0; + assign(first, last); + } + + explicit bstr_t(const uuid_t& u, bool braces = false) + { + construct(u, braces); + } + + private: + bstr_t(const wchar_t* s1, size_t l1, const wchar_t* s2, size_t l2) throw(std::bad_alloc) + { + construct(s1, l1, s2, l2); + } + + public: + //! Destructor + /*! + Deletes the wrapped BSTR. + */ + ~bstr_t() throw() + { + destroy(); + } + + //! Swap + void swap(bstr_t& x) throw() + { + std::swap(str_, x.str_); + } + + //! Explicit conversion to const wchar_t* + const wchar_t* c_str() const throw() + { return impl::null_to_empty(str_); } + + //! Explicit conversion to std::wstring + std::wstring w_str() const throw() + { return impl::null_to_empty(str_); } + +#ifdef _MBCS +#ifndef COMET_NO_MBCS_WARNING +#pragma message( "Warning: _MBCS is defined. bstr_t::s_str may return an std::string containing multibyte characters" ) +#endif +#endif + + //! Explicit conversion to std::string + std::string s_str() const + { + if (is_empty()) return std::string(); + + if (length() > static_cast(std::numeric_limits::max())) + throw std::length_error("String is too large to be converted"); + + int ol = static_cast(length()); + +#if defined(_MBCS) || !defined(COMET_NO_MBCS) + // Calculate the required length of the buffer + int l = WideCharToMultiByte(CP_ACP, 0, str_, ol, NULL, 0, NULL, NULL); +#else // _MBCS + int l = ol; + COMET_ASSERT( l == WideCharToMultiByte(CP_ACP, 0, str_, ol, NULL, 0, NULL, NULL)); +#endif // _MBCS + + // Create the buffer + std::string rv(l, std::string::value_type()); + // Do the conversion. + if (0 == WideCharToMultiByte( + CP_ACP, 0, str_, ol, &rv[0], l, NULL, NULL)) + { + DWORD err = GetLastError(); + raise_exception(HRESULT_FROM_WIN32(err)); + } + + return rv; + } + + //! Explicit conversion to "tstring". +#ifdef _UNICODE + std::wstring t_str() const + { + return w_str(); + } +#else + std::string t_str() const + { + return s_str(); + } +#endif + + //! Implicit conversion to std::wstring + operator std::wstring() const { return w_str(); } + + //! Implicit conversion to std::string + operator std::string() const { return s_str(); } + + //! Returns true if and only if wrapped str is null + bool is_null() const throw() + { return str_ == 0; } + + /** Returns true if and only if wrapped str has zero length. + */ + bool is_empty() const throw() { return length() == 0; } + + //! Returns true if and only if wrapped str has zero length. + bool empty() const throw() { return length() == 0; } + + //! Returns length of wrapped string. + size_t length() const throw() + { return is_null() ? 0 : ::SysStringLen(str_); } + + size_t size() const throw() + { return length(); } + + /*! \internal */ + BSTR get_raw() const + { return str_; } + + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const bstr_t &val) + { os << val.s_str(); return os; } + + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const bstr_t &val) + { os << val.w_str(); return os; } + + /// \name Boolean operators + //@{ + + bool operator==(const wchar_t* s) const + { return 0 == wcscmp(c_str(), impl::null_to_empty(s) ) && is_regular(); } + + bool operator!=(const wchar_t* s) const + { return !operator==(s); } + + bool operator<(const wchar_t* s) const + { return wcscmp(c_str(), impl::null_to_empty(s)) < 0 && is_regular(); } + + bool operator>(const wchar_t* s) const + { return wcscmp(c_str(), impl::null_to_empty(s)) > 0 && !is_regular(); } + + bool operator>=(const wchar_t* s) const + { return !operator<(s); } + + bool operator<=(const wchar_t* s) const + { return !operator>(s); } + + bool operator==(const std::wstring& s) const + { + size_t l = length(); + if (l != s.length()) return false; + return 0 == memcmp(str_, s.c_str(), sizeof(wchar_t)*l); + } + + bool operator!=(const std::wstring& s) const + { return !operator==(s); } + + bool operator<(const std::wstring& s) const + { return std::lexicographical_compare(str_, str_+length(), s.begin(), s.end()); } + + bool operator>(const std::wstring& s) const + { return std::lexicographical_compare(str_, str_+length(), s.begin(), s.end(), std::greater()); } + + bool operator>=(const std::wstring& s) const + { return !operator<(s); } + + bool operator<=(const std::wstring& s) const + { return !operator>(s); } + + bool operator==(const bstr_t& s) const + { + if (str_ == 0 && s.str_ == 0) return true; + return ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), 0) == VARCMP_EQ; + } + + bool operator!=(const bstr_t& s) const + { return !operator==(s); } + + bool operator<(const bstr_t& s) const + { + if (str_ == 0) { + return s.str_ != 0; + } + + if (s.str_ == 0) return false; + + return ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), 0) == VARCMP_LT; + } + + bool operator>(const bstr_t& s) const + { + if (str_ == 0) { + return s.str_ != 0; + } + + if (s.str_ == 0) return false; + + return ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), 0) == VARCMP_GT; + } + + bool operator>=(const bstr_t& s) const + { return !operator<(s); } + + bool operator<=(const bstr_t& s) const + { return !operator>(s); } + //@} + + //! String comparsion function. + /*! \param s String to compare + \param flags Comparison Flags + \retval <0 if less + \retval 0 if Equal + \retval >0 if greater + */ + int cmp(const bstr_t& s, compare_flags_t flags = compare_flags_t(0)) const + { + HRESULT res = ::VarBstrCmp(str_, s.str_, ::GetThreadLocale(), flags); + switch(res) + { + case VARCMP_EQ: return 0; + case VARCMP_GT: return 1; + case VARCMP_LT: return -1; + case VARCMP_NULL: + return ((str_==0)?0:1) - ((s.str_==0)?0:1); + } + if (str_==0 || s.str_ ==0) + return ((str_==0)?0:1) - ((s.str_==0)?0:1); + raise_exception(res); return 0; + } + + //!\name Comparison Functors + //@{ + //! Less Functor. + /*! Useful for STL containers. + \code + typedef stl::map < comet::bstr_t, long, bstr_t::less > string_long_map; + \endcode + \param CF comparison flags. + \relates bstr_t + */ + template + struct less : std::binary_function< bstr_t,bstr_t,bool>{ + /// Functor. + bool operator()(const bstr_t& l, const bstr_t& r) const + { return l.cmp(r, CF) <0; } + }; + + //! less or equal functor. + /*! \relates bstr_t */ + template + struct less_equal : std::binary_function< bstr_t,bstr_t,bool> { + /// Functor. + bool operator()(const bstr_t& l, const bstr_t& r) const + { return l.cmp(r, CF) <=0; } + }; + + //! greater functor. + /*! \relates bstr_t */ + template + struct greater : std::binary_function< bstr_t,bstr_t,bool> { + /// Functor. + bool operator()(const bstr_t& l, const bstr_t& r) const + { return l.cmp(r, CF) > 0; } + }; + + //! greater or equal functor. + /*! \relates bstr_t */ + template + struct greater_equal : std::binary_function< bstr_t,bstr_t,bool> { + /// Functor. + bool operator()(const bstr_t& l, const bstr_t& r) const + { return l.cmp(r, CF) >=0; } + }; + + //! equality functor. + template + struct equal_to : std::binary_function< bstr_t,bstr_t,bool> { + bool operator()(const bstr_t& l, const bstr_t& r) const + { return l.cmp(r, CF) == 0; } + }; + + //! Inequality functor. + /*! \relates bstr_t */ + template + struct not_equal_to : std::binary_function< bstr_t,bstr_t,bool>{ + /// Functor. + bool operator()(const bstr_t& l, const bstr_t& r) const + { return l.cmp(r, CF) != 0; } + }; + //@} + + iterator begin() { return iterator(str_); } + iterator end() { return iterator(str_ + length()); } + const_iterator begin() const { return const_iterator(str_); } + const_iterator end() const { return const_iterator(str_ + length()); } + + reverse_iterator rbegin() { return reverse_iterator(str_); } + reverse_iterator rend() { return reverse_iterator(str_ + length()); } + const_reverse_iterator rbegin() const { return const_reverse_iterator(str_); } + const_reverse_iterator rend() const { return const_reverse_iterator(str_ + length()); } + + reference at(size_type i) { rangecheck(i); return str_[i]; } + const_reference at(size_type i) const { rangecheck(i); return str_[i]; } + + private: + // check range (may be private because it is static) + void rangecheck (size_type i) const { + if (i >= length()) { throw std::range_error("bstr_t"); } + } + + public: + const_reference operator[](size_type idx) const + { return str_[idx]; } + + reference operator[](size_type idx) + { return str_[idx]; } + + //! Assign string to be \p sz of character \p c . + void assign(size_type sz, wchar_t c) throw(std::bad_alloc) + { + bstr_t t(sz, c); + swap(t); + } + + //! Assign string from two iterators. + template + void assign(IT first, IT last) + { + bstr_t t( std::distance(first, last) ); + +#pragma warning(push) +#pragma warning(disable:4996) + std::copy(first, last, t.begin()); +#pragma warning(pop) + + swap(t); + } + + + //! Assignment operator from any (non integer) constructable. + template + bstr_t& operator=(const T& x) + { + COMET_STATIC_ASSERT( type_traits::is_integer::result == false ); + bstr_t t(x); + swap(t); + return *this; + } + + //! Default assignment. + bstr_t& operator=(const bstr_t& x) throw(std::bad_alloc) + { + bstr_t t(x); + swap(t); + return *this; + } + + //! Concat operation + bstr_t operator+(const bstr_t& s) const throw(std::bad_alloc) + { + return bstr_t(str_, length(), s.str_, s.length()); + } + + //! Concat with const wchar_t* + bstr_t operator+(const wchar_t* s) const throw(std::bad_alloc) + { + return bstr_t(str_, length(), s, wcslen(s)); + } + + //! Concat with std::wstring + bstr_t operator+(const std::wstring& s) const throw(std::bad_alloc) + { + return bstr_t(str_, length(), s.c_str(), s.length()); + } + + //! Concat assignment + bstr_t& operator+=(const bstr_t& s) throw(std::bad_alloc) + { + bstr_t t(str_, length(), s.str_, s.length()); + swap(t); + return *this; + } + + //! Concat assignment with const wchar_t* + bstr_t& operator+=(const wchar_t* s) throw(std::bad_alloc) + { + bstr_t t(str_, length(), s, wcslen(s)); + swap(t); + return *this; + } + + //! Concat assignment with std::wstring + bstr_t& operator+=(const std::wstring& s) throw(std::bad_alloc) + { + bstr_t t(str_, length(), s.c_str(), s.length()); + swap(t); + return *this; + } + + // Detach a raw BSTR from it's wrapper - detach function is dangerous. + BSTR detach() + { + BSTR s(str_); + str_ = 0; + return s; + } + + public: + + //!\name Create a reference to a BSTR + /*! + Creates a bstr_t that is a reference to the BSTR. + It will not be reference counted and will not be deleted when the bstr_t goes out of scope. + + This is used by the interface wrappers for [in] BSTR's. Typically clients do not need create_reference. + */ + //@{ + static const bstr_t& create_const_reference(const BSTR& s) throw() + { return *reinterpret_cast(&s); } + + static bstr_t& create_reference(BSTR& s) throw() + { return *reinterpret_cast(&s); } + //@} + + //! Detaches specified bstr + static BSTR detach(bstr_t& s) + { + return s.detach(); + } + + /*! \internal */ + template + static BSTR detach(const T& s) + { + return bstr_t(s).detach(); + } + + /*! \internal */ + BSTR* get_ptr_to_raw() const + { + return const_cast(&str_); + } + + //! [in] adapter. + /*! + Used when calling raw interfaces that require an [in] BSTR argument. + + \code + bstr_t bs; + HRESULT hr = pRawInterface->raw_Method(bs.in()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + BSTR in() const throw() + { + return str_; + } + + //! [in] adapter. + /*! + Used when calling raw interfaces that require an [in] BSTR* argument. + + \code + bstr_t bs; + HRESULT hr = pRawInterface->raw_Method(bs.in_ptr()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + BSTR* in_ptr() const throw() + { + return const_cast(&str_); + } + + //! [out] adapter. + /*! + Used when calling raw interfaces that require an [out] BSTR * argument. + + \code + bstr_t bs; + HRESULT hr = pRawInterface->raw_MethodThatReturnsBSTR(bs.out()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + BSTR* out() throw() + { + destroy(); + return &str_; + } + + //! [in, out] adapter. + /*! + Used when calling raw interfaces that require an [in, out] BSTR * argument. + + \code + bstr_t bs; + HRESULT hr = pRawInterface->raw_MethodThatChangesBSTR(bs.inout()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + + \note If the wrapped BSTR is shared. The bstr_t is copied so that only this version is modified. + + \exception std::bad_alloc + Throws std::bad_alloc if the bstr_t is being copied and memory is exhausted. + */ + BSTR* inout() throw(std::bad_alloc) + { + return &str_; + } + + friend bstr_t operator+(const std::wstring& s, const bstr_t& t) throw(std::bad_alloc); + friend bstr_t operator+(const wchar_t* s, const bstr_t& t) throw(std::bad_alloc); + }; + + //! Concat operation + inline bstr_t operator+(const std::wstring& s, const bstr_t& t) throw(std::bad_alloc) + { + return bstr_t(s.c_str(), s.length(), t.str_, t.length()); + } + + //! Concat operation + inline bstr_t operator+(const wchar_t* s, const bstr_t& t) throw(std::bad_alloc) + { + return bstr_t(s, wcslen(s), t.str_, t.length()); + } + //@} + + /*! \name Boolean Operators on String + * \relates bstr_t + */ + //@{ + inline bool operator==(const wchar_t* s1, const bstr_t& s2) throw() + { + return s2 == s1; + } + + inline bool operator!=(const wchar_t* s1, const bstr_t& s2) throw() + { + return s2 != s1; + } + + inline bool operator<(const wchar_t* s1, const bstr_t& s2) throw() + { + return s2 > s1; + } + + inline bool operator>(const wchar_t* s1, const bstr_t& s2) throw() + { + return s2 < s1; + } + + inline bool operator<=(const wchar_t* s1, const bstr_t& s2) throw() + { + return s2 >= s1; + } + + inline bool operator>=(const wchar_t* s1, const bstr_t& s2) throw() + { + return s2 <= s1; + } + + inline bool operator==(const std::wstring& s1, const bstr_t& s2) throw() + { + return s2 == s1; + } + + inline bool operator!=(const std::wstring& s1, const bstr_t& s2) throw() + { + return s2 != s1; + } + + inline bool operator<(const std::wstring& s1, const bstr_t& s2) throw() + { + return s2 > s1; + } + + inline bool operator>(const std::wstring& s1, const bstr_t& s2) throw() + { + return s2 < s1; + } + + inline bool operator<=(const std::wstring& s1, const bstr_t& s2) throw() + { + return s2 >= s1; + } + + inline bool operator>=(const std::wstring& s1, const bstr_t& s2) throw() + { + return s2 <= s1; + } + //@} + + + // Implementation of uuid_t construct from bstr. + inline uuid_t::uuid_t(const bstr_t& bs) + { + if (init_from_str(bs.c_str(), bs.length()) == false) throw std::runtime_error(err_msg()); + } + + inline currency_t& currency_t::parse( const bstr_t &str, LCID locale ) + { + VarCyFromStr( str.in(), locale, 0, &cy_ ) | raise_exception; + return *this; + } + +} // namespace + +namespace { + COMET_STATIC_ASSERT( sizeof(comet::bstr_t) == sizeof(BSTR) ); + COMET_STATIC_ASSERT( sizeof(comet::bstr_t) == sizeof(BSTR) ); +} + +namespace std { + template<> inline void swap( comet::bstr_t& x, comet::bstr_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +} + +#include + +#pragma warning(pop) + +#endif /* COMET_BSTR_H */ diff --git a/lib/local/CamCom/comet/calllog.h b/lib/local/CamCom/comet/calllog.h new file mode 100644 index 0000000..0193f9b --- /dev/null +++ b/lib/local/CamCom/comet/calllog.h @@ -0,0 +1,628 @@ +/** \file + * Provide logging for calls. + */ +/* + * Copyright 2003 Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_CALLLOG_H +#define COMET_CALLLOG_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** \page cometcalllogging Call Logging + This is a feature of the comet interfaces that allows the server to log all + calls to any of the interface methods. It logs parameter values, and also allows + logging of errors (see \ref comethandleexception ). + + Call logging in comet is enabled by using tlb2h -L (see \ref tlb2husage). + + To enable logging to a specified file, define COMET_LOGFILE and define + COMET_LOGFILE_DEFAULT to be the required logfile (see comet::stream_call_logger_t). + + To override logging, specialise comet::call_logger_ and implement all the interfaces + defined by the default comet::call_logger_. + + How various parameter types are output can be modified by specialising the + function comet::comet_log. + */ + +/** \defgroup CallLog Call-logging + *@{ + */ +#ifdef COMET_DOXYGEN // Only for doxygen +/** \def COMET_LOGFILE + * Define to get simple interface logfiles. + * Must use tlb2h -L to enable interface logging. See \ref tlb2husage. + * \sa comet_log comet_log_interface comet_log_array stream_call_logger_t tofstream_comet + */ + +#define COMET_LOGFILE + +/** \def COMET_LOGFILE_DEFAULT + * If COMET_LOGFILE is defined, define to set the default logfile name. + * \code + #define COMET_LOGFILE_DEFAULT "C:\\log\\comet.log" + * \endcode + * \relates call_logger_ + */ +#define COMET_LOGFILE_DEFAULT "C:\\log\\comet.log" +#endif // COMET_DOXYGEN + + //@} + +namespace comet +{ +/*!\addtogroup CallLog + */ +//@{ + /** \struct call_logger_ calllog.h comet/calllog.h + * Default NULL logger and description of 'call logger' concept. + * Specialise to \b true to override. + * \code + template<> + struct call_logger_ : stream_call_logger_t + { + }; + * \endcode + * \sa stream_call_logger_t tofstream_comet + */ + template + struct call_logger_ + { + /** Should the call be logged? + * \return Return true to allow call to be logged. + */ + static inline bool can_log_call() { return false; } + /** Should the return values be logged? + * \return Return true to allow call return values to be logged. + */ + static inline bool can_log_return() { return false; } + + /** Called by interfaces to provide call logging. + */ + static inline void log_call( const tstring &iface, const tstring &funcname, const tstring &log){} + + /// Called by interfaces to provide call return logging. + static inline void log_return( const tstring &iface, const tstring &funcname, const tstring &log, const tstring &retval){} + + + ///\name Exception handling redirection. + //@{ + + /** Should the error be logged? + * \return Return true to allow error to be logged. + */ + static inline bool can_log_exception() { return false; } + + /// Called by exception handlers to provide logging for errors. + static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource ,const source_info_t &callSource ){} + //@} + }; + + /** \struct stream_call_logger_t calllog.h comet/calllog.h + * Log calls to a tostream. + * A class/struct that subscribes to and implements the 'call logger' concept for a steam. + * Template paramter is expected to be a class that has a method that creates a tostream + * instance as follows: + * \code + * static tostream *create() + * \endcode + * \param CREATESTREAM Class with a static function \p create() that returns a tostream * + * \sa tofstream_comet call_logger_ + */ + template + struct stream_call_logger_t +#ifdef COMET_DOXYGEN // For documentation + : call_logger_ +#endif + { + static inline bool can_log_call() + { + tostream *ofs = logger(); + return ofs != NULL && ofs->good(); + } + static inline bool can_log_return() { return can_log_call(); } + static inline bool can_log_exception() { return can_log_call(); } + + static inline void log_call( const tstring &iface, const tstring &funcname, const tstring &log) + { + log_( false, iface, funcname, log, tstring()); + } + static inline void log_return( const tstring &iface, const tstring &funcname, const tstring &log, const tstring &retval) + { + log_( true, iface, funcname, log, retval); + } + static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource ,const source_info_t &callSource ) + { + COMET_NOTUSED(errorSource); + tostream *ofs= logger(); + if (ofs==NULL) return; // Should never be NULL, as can_log_call() should have been obeyed before calling. + *ofs << _T("Err ") << callSource.source().t_str(); + if ( !desc.empty() ) + { + *ofs << type << _T(": ") << desc ; + } + *ofs << std::endl; + } + + protected: + // Log a function call/return. + static void log_( bool return_val, const tstring &iface, const tstring &funcname, const tstring &log, const tstring &retval) + { + tostream *ofs= logger(); + if (ofs==NULL) return; // Should never be NULL, as can_log_call() should have been obeyed before calling. + + *ofs << (return_val?_T("Out "):_T("In ")) << iface << _T("::") << funcname; + if (!return_val || !log.empty()) + *ofs << _T("(") << log << _T(")"); + + if (return_val && !retval.empty()) + *ofs << _T(" returned ") << retval; + *ofs << std::endl; + + } + // Access to the static logger instance without needing to initialise a + // member. + static tostream *logger() + { + static tostream *ofs_= NULL; + if (ofs_ ==NULL) + { + ofs_ = CREATESTREAM::create(); + if (ofs_ != NULL) + { + // Safely clean up static pointer on module destruct + module().add_object_to_dispose( create_pointer_deleter( ofs_ ) ); + } + } + return ofs_; + } + }; + + namespace impl + { + /** Redirect default logging to calllog. + * \internal + */ + template<> + struct call_logger_redirect_ + { + // This trick allows the user to be able to still override the call logging. + // Without this, log_exception has to call + // call_logger_::log_exception which causes the template to be + // instantiated, and the user is no longer able to specialise + // call_logger_ + template + struct exe + { + static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource, const source_info_t &callSource ) + { + call_logger_::log_exception(type,desc,errorSource, callSource); + } + static inline bool can_log_exception() + { + return call_logger_::can_log_exception(); + } + }; + }; + } + +#ifdef COMET_LOGFILE +#ifndef COMET_LOGFILE_DEFAULT +#define COMET_LOGFILE_DEFAULT NULL +#endif +#include + /** \class tofstream_comet calllog.h comet/calllog.h + * Provides a filestream creator as well as the implementation of an output filestream logger. + * Allows overriding of file name. + */ + class tofstream_comet : public tofstream + { + static const char *&filename_() + { + static const char *default_filename= COMET_LOGFILE_DEFAULT; + return default_filename; + } + public: + /// Get the default filename. + static const char *get_default_filename() { return filename_(); } + /// Set the default filename to a new value. + void set_default_filename( const char *filename) { filename_() = filename; } + + tofstream_comet( const char *fname) : tofstream(fname) {} + + /** Create an instance of the logger. + * Returns NULL if the file doesn't exist. + */ + static tostream *create() + { + const char *fname = filename_(); + if (fname == NULL) + return NULL; + return new tofstream_comet(fname); + } + private: + tofstream_comet(const tofstream_comet &); + tofstream_comet &operator=(const tofstream_comet &); + + }; + + /** Override specialisation of the call_logger_. + * \relates call_logger_ + */ + template<> + struct call_logger_ : public stream_call_logger_t + { + }; + +#endif // FILE_LOG + + /** Default interface (com_ptr) logging. + * Specialise to provide custom logging for com_ptr. + \code + template<> + void comet_log_interface(tostream &os, const com_ptr &iface) + { + os << iface->GetName(); + } + \endcode + Specialisations for IUnknown and IDispatch are used by the variant loggers. + * \sa comet_log comet_log_array + * \relates call_logger_ + */ + template< typename IFACE> + void comet_log_interface(tostream &os, const com_ptr &iface) + { + os << _T("0x") << std::hex << reinterpret_cast(iface.get()) << std::dec; + } + + // Forward declarations. + template void comet_log(tostream &os, const T &value); + + namespace impl + { + // Forward declarations. + template inline void default_comet_log(tostream &os, const T &value); + static void comet_log_array_raw(tostream &os, SAFEARRAY *value); + + // The default variant handler. + template< bool B> + static inline void default_comet_log_variant(tostream &os, const variant_t &value, bool out_type) + { + VARTYPE vt = value.get_vt(); + if ((vt & VT_ARRAY) != 0) + { + comet_log_array_raw(os, value.get().parray); + } + else + { + VARIANT varcopy=value.in(); + if (vt == (VT_BYREF | VT_VARIANT)) // Dereference variant by reference + varcopy = *V_VARIANTREF(&varcopy); + const VARIANT *var=&varcopy; + +#define __VARIANT_LOGPOINTER_TYPE_CAST(vartype,cast) \ + case VT_##vartype:\ + if(out_type) os << _T("VT_")_T(#vartype)_T(":");\ + comet_log_interface(os, cast(V_##vartype(var))); \ + break + +#define __VARIANT_LOGPOINTER_REFTYPE_CAST(vartype,cast) \ + case VT_BYREF|VT_##vartype:\ + if(out_type) os << _T("BYREF VT_")_T(#vartype)_T(":");\ + comet_log_interface(os, cast(*V_##vartype##REF(var)));\ + break +#define __VARIANT_LOG_TYPE_CAST(vartype,cast) \ + case VT_##vartype: \ + if(out_type) os << _T("VT_")_T(#vartype)_T(":"); \ + comet_log(os, cast(V_##vartype(var))); \ + break + +#define __VARIANT_LOG_REFTYPE_CAST(vartype,cast)\ + case VT_BYREF|VT_##vartype:\ + if(out_type) os << _T("BYREF VT_")_T(#vartype)_T(":");\ + comet_log(os, cast(*V_##vartype##REF(var)));\ + break + +#define __VARIANT_LOG_TYPE(vartype) \ + case VT_##vartype: \ + if(out_type) os << _T("VT_")_T(#vartype)_T(":");\ + comet_log(os, V_##vartype(var));\ + break + +#define __VARIANT_LOG_REFTYPE(vartype)\ + case VT_BYREF|VT_##vartype: \ + if(out_type) os << _T("BYREF VT_")_T(#vartype)_T(":"); \ + comet_log(os, *V_##vartype##REF(var)); \ + break + + switch (vt) + { + __VARIANT_LOG_TYPE(UI1); + __VARIANT_LOG_TYPE(UI2); + __VARIANT_LOG_TYPE(UINT); + __VARIANT_LOG_TYPE(UI4); + __VARIANT_LOG_TYPE(I1); + __VARIANT_LOG_TYPE(I2); + __VARIANT_LOG_TYPE(INT); + __VARIANT_LOG_TYPE(I4); + __VARIANT_LOG_TYPE(R4); + __VARIANT_LOG_TYPE(R8); + __VARIANT_LOG_REFTYPE(UI1); + __VARIANT_LOG_REFTYPE(UI2); + __VARIANT_LOG_REFTYPE(UINT); + __VARIANT_LOG_REFTYPE(UI4); + __VARIANT_LOG_REFTYPE(I1); + __VARIANT_LOG_REFTYPE(I2); + __VARIANT_LOG_REFTYPE(INT); + __VARIANT_LOG_REFTYPE(I4); + __VARIANT_LOG_REFTYPE(R4); + __VARIANT_LOG_REFTYPE(R8); + + case VT_BOOL: + if(out_type) os << _T("VT_BOOL:"); + os << (V_BOOL(var)==VARIANT_FALSE)?_T("true"):_T("false"); + break; + case VT_BYREF|VT_BOOL: + if(out_type) os << _T("BYREF VT_BOOL:"); + os << (V_BOOL(var)==VARIANT_FALSE)?_T("true"):_T("false"); + break; + __VARIANT_LOG_TYPE_CAST( CY, currency_t::create_const_reference); + __VARIANT_LOG_REFTYPE_CAST( CY, currency_t::create_const_reference); + __VARIANT_LOG_TYPE_CAST( DATE, datetime_t::create_const_reference); + __VARIANT_LOG_REFTYPE_CAST( DATE, datetime_t::create_const_reference); + __VARIANT_LOG_TYPE_CAST( BSTR, bstr_t::create_const_reference); + __VARIANT_LOG_REFTYPE_CAST( BSTR, bstr_t::create_const_reference); + + __VARIANT_LOGPOINTER_TYPE_CAST( UNKNOWN, com_ptr::create_const_reference); + __VARIANT_LOGPOINTER_TYPE_CAST( DISPATCH, com_ptr::create_const_reference); + __VARIANT_LOGPOINTER_REFTYPE_CAST( UNKNOWN, com_ptr::create_const_reference); + __VARIANT_LOGPOINTER_REFTYPE_CAST( DISPATCH, com_ptr::create_const_reference); + + case VT_DECIMAL: + if(out_type) os << _T("BYREF VT_DECIMAL:"); + os << _T("?"); + break; + case VT_ERROR: + if(out_type) os << _T("VT_ERROR:"); + os <<_T("0x") << std::hex << V_ERROR(var) << std::dec; + break; + case VT_BYREF|VT_ERROR: + if(out_type) os << _T("BYREF VT_ERROR:"); + os <<_T("0x") << std::hex << *V_ERRORREF(var) << std::dec; + break; + default: + os << _T("???"); + } +#undef __VARIANT_LOG_TYPE_CAST +#undef __VARIANT_LOG_REFTYPE_CAST +#undef __VARIANT_LOG_TYPE +#undef __VARIANT_LOG_REFTYPE +#undef __VARIANT_LOGPOINTER_TYPE_CAST +#undef __VARIANT_LOGPOINTER_REFTYPE_CAST + } + } + + /* Logging for raw safearrays. + * For vector arrays of size <= 16, this fakes a variant and then uses the default variant logging to log the elements + */ + static void comet_log_array_raw(tostream &os, SAFEARRAY *value) + { + UINT dims = SafeArrayGetDim(value); + VARTYPE vt ; + if( FAILED(SafeArrayGetVartype(value, &vt ) ) ) + { + os << "???"; + return; + } + + long ubound=-1,lbound=0; // Outside so it can be used for the '1' case below. + for (UINT d = 1; d<= dims ; ++d) + { + if( SUCCEEDED(SafeArrayGetUBound( value, d, &ubound) ) && SUCCEEDED(SafeArrayGetLBound(value, d, &lbound) )) + { + if( lbound == 0) + os << _T("[") << ubound+1 << _T("]"); + else + os << _T("(") << lbound << _T("..") << ubound << _T(")"); + } + + } + if (dims == 1 ) + { + long size = 1+ubound-lbound; + if (size ==0) + { + os << _T("{}"); + } + else if( size > 0 && size <= 15) + { + // For small arrays, print out the elements. + os << _T("{"); + VARIANT v; + void *var; + bool first=true, is_variant= (vt==VT_VARIANT); + if ( is_variant) + var = (void *)&v; + else + { + V_VT(&v) = vt; + var = (void *)&V_UI1(&v); + } + + for (long i = lbound; i <= ubound; ++i ) + { + if(first) + first = false; + else + os << _T(","); + if( SUCCEEDED( SafeArrayGetElement( value, &i, var ) )) + default_comet_log_variant( os, variant_t(auto_attach(v)), first | is_variant); + } + os << _T("}"); + } + } + } + + // Default logging: stream the value. + template + inline void default_comet_log(tostream &os, const T &value) + { + // ERRORS: If a compiler error occurs here, you may need to + // specialise comet_log<> to the type T here. + os << value; + } + // Default logging for bstr_t + template<> + inline void default_comet_log(tostream &os, const bstr_t &value) + { + // Put quotes round the string - simplistic, don't worry about + // non-printables or escaping for the moment. + os << _T("'") << value << _T("'"); + } + + // Deafult logging for variants. + template<> + static inline void default_comet_log(tostream &os, const variant_t &value) + { + default_comet_log_variant( os, value, true); + } + } + + /** Type specific logger. + * The default is to use internal logging. This can be specialised to + * provide type-specific logging. + * \sa comet_log_array comet_log_interface + * \relates call_logger_ + */ + template + void comet_log(tostream &os, const T &value) + { + impl::default_comet_log(os,value); + } + + namespace impl + { + // trick to work out whether it is a safearray or com_ptr type (required because of no + // partial specialisation). Needed to handle the special circumstances + template + struct check_log_type_ + { + static long check(...); + + template + static char check(const safearray_t &); + + template + static short check( const com_ptr &); + + static T createT(); + enum { is = sizeof( check( createT() ) ) }; + + }; + template < int TYPE> struct choose_logger; + + // Default safearray_t logger where we know the type T. + // + template + inline void default_comet_log_array(tostream &os, const safearray_t &value) + { + safearray_t::index_type lbound=value.lower_bound(), size = value.size(); + if (lbound == 0) + os << _T("[") << size << _T("]"); + else + os << _T("(") << lbound << _T("..") << (lbound + size -1) << _T(")"); + + if( value.size() <= 15) + { + os << _T("{"); + bool first = true; + for (safearray_t::const_iterator it = value.begin(); it != value.end(); ++it) + { + choose_logger::is >::do_comet_log(os, *it); + if (first) + first=false; + else + os << _T(","); + } + os << _T("}"); + } + } + } + /** Typed safearray_t logger. + * The default is to use internal logging. This can be specialised to + * provide type-specific logging. + * \sa comet_log comet_log_interface + * \relates call_logger_ + */ + template + void comet_log_array(tostream &os, const safearray_t &value) + { + impl::default_comet_log_array(os,value); + } + + namespace impl + { + // choose the standard logger + template < int TYPE> + struct choose_logger + { + template + static inline void do_comet_log(tostream &os, const T &value) + { + comet_log(os,value); + } + }; + // Choose the array logger + template<> + struct choose_logger + { + template + static inline void do_comet_log(tostream &os, const safearray_t &value) + { + comet_log_array(os, value); + } + }; + // Choose the interface logger + template<> + struct choose_logger + { + template + static inline void do_comet_log(tostream &os, const com_ptr &value) + { + comet_log_interface(os, value); + } + }; + + // Choose which of the comet_loggers to use. + template + static inline tostream &do_comet_log(tostream &os, const T &value) + { + choose_logger::is >::do_comet_log(os, value); + return os; + } + } + //@} +} + +#endif /* COMET_CALLLOG_H */ diff --git a/lib/local/CamCom/comet/cmd_line_parser.h b/lib/local/CamCom/comet/cmd_line_parser.h new file mode 100644 index 0000000..65c4178 --- /dev/null +++ b/lib/local/CamCom/comet/cmd_line_parser.h @@ -0,0 +1,101 @@ +/** \file + * Command line parser. + */ +/* + * Copyright 2002 Mikael Lindgren + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_COMMAND_LINE_PARSER_H +#define COMET_COMMAND_LINE_PARSER_H + +#include + +namespace comet { + + /*! \addtogroup Misc + */ + //@{ + class cmd_line_parser + { + public: + enum kind_t { + Name, // Name type token, has no leading / or - + Option, // Option type token. Leading / or - skipped by token + Value, // Value for name or option. Leading : or = skipped by token + Done // No more tokens + }; + + explicit cmd_line_parser(const TCHAR* cmd_line): cmd_line_(cmd_line) + { + reset(); + } + + kind_t get_next_token(tstring& result) + { + static const TCHAR terminators[] = _T("=/- \t"); + static const TCHAR white_space[] = _T(" \t"); + + kind_t kind; + + token_ = next_token_ + _tcsspn(next_token_, white_space); // Skip leading whitespace + switch (*token_) + { + case 0: + return Done; + case _T('-'): + case _T('/'): + kind = Option; + ++token_; + break; + case _T('='): + kind = Value; + ++token_; + break; + default: + kind = Name; + break; + } + if (kind == Option || kind == Value) + token_ += _tcsspn(token_, white_space); // Skip any more whitespace + if (*token_ == _T('"')) + { + const TCHAR* next = _tcschr(token_+1, _T('"')); + if ( next ) + { + result.assign( token_+1, next ); + next_token_ = next+1; + return kind; + } + } + next_token_ = token_ + _tcscspn(token_, terminators); + result.assign(token_, next_token_); + return kind; + } + + void reset() + { + token_ = 0; + next_token_ = cmd_line_; + } + + private: + const TCHAR* cmd_line_; + const TCHAR* token_; + const TCHAR* next_token_; + }; + //@} + +} + +#endif diff --git a/lib/local/CamCom/comet/comet.h b/lib/local/CamCom/comet/comet.h new file mode 100644 index 0000000..b2ad70f --- /dev/null +++ b/lib/local/CamCom/comet/comet.h @@ -0,0 +1,776 @@ +/** \file + * Load basic comet libraries. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen, Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_COMET_H +#define COMET_COMET_H + +#include + +/** + @mainpage Comet + + See https://github.com/alamaison/comet + + See \ref comethistory. + + \section cometinfocontents Information Pages +

    +
  • \ref tlb2husage
  • +
  • \ref tlb2handidl
  • +
  • \ref cometcomptr
  • +
  • \ref cometrawcomaccess
  • +
  • \ref cometconnectionpoints
  • +
      +
    • \ref cometconnectionpointssource
    • +
    • \ref cometconnectionpointsink
    • +
    +
  • \ref comettstring
  • +
  • \ref cometdefineconfiguration
  • +
  • \ref cometcatchallexception
  • +
  • \ref cometclassfactory
  • +
  • \link custom_registration Custom Registration\endlink
  • +
  • \ref comethandleexception
  • +
  • \ref cometcalllogging
  • +
  • \ref cometautoexp
  • +
    • \ref cometautoexpusage
    +
+ */ + +/** + * \page cometrawcomaccess Raw COM Acces + * The designers of Comet have tried to avoid making the wrappers do too much + * implicitly, prefering discrete but explicit ways of triggering functionality. + * + * In order to provide interaction of Comet classes with their COM counterparts, + * a standard set of methods have been used, effectively providing a COM wrapper + * concept. + * + *
    + *
  • in(): Return a pointer suitable for [in] parameters,
  • + *
  • out(): Return a pointer suitable for [out] parameters, first freeing memory allocated,
  • + *
  • inout(): Return a pointer suitable for [in,out] parameters.
  • + *
  • detach(): Detach and return the internal pointer from the object
  • + *
  • in_ptr(): {optional} Return a pointer suitable for [out] parameter where a pointer is required, first freeing memory allocated
  • + *
  • get(): {optional} Returns a pointer to the internal pointer (same as STL pointers)
  • + *
  • auto_attach( RAW_TYPE ): Cause an assignment to attach the object to the specified raw COM type.
  • + *
  • create_reference( RAW_TYPE ): Static method to create a propper wrapper reference to the specified raw object.
  • + *
  • create_const_reference( RAW_TYPE ): Static method to create a const wrapper reference to the specified raw object.
  • + *
+ */ + +/** \page cometcatchallexception Exception Catching Policy +In an ideal world, Microsoft would have adhered to the C++ standard, and made +catch(...) not catch system exceptions like 'Access Violation', +however this is not the case. + +To make it worse, not only do system exceptions get caught by catch(...), +they also bypass the stack unwinding. This is quite problematic in an +environment where this mechanism is relied upon for resource management, commonly +'only' memory, but also including multithreading acces control mechanisms. + +One of the big problems with Access Violations is that it is an unplanned +exception, and in many situations will leave data structures incomplete, +resources locked or other equally vicious artifacts. Essentially, it breaks +invariants. One viable take on this is that if you don't know where an +exception came from, you shouldn't be catching it. + +A big advantage of letting access violations and it's ilk (or any other +unplanned exception) through is that these will then get caught by the JIT (Just +In Time) handlers such as Dr. Watson and Compiler environments that allow +immediate or post-mortem debugging of the problem. A lot of projects (like +Mozilla) have their own bug-reporting which can intercept the bugs at the top +level and generate their own crash dumps, and catching these exceptions is +actually going to bypass a very useful mechanism. + +All this is to say that we have made a shift away from exception handling +policies that cause system expeptions to be caught, however in order to +allow as much flexibility as possible, an improved exception handling mechanism +has been added to the interface implementations and to the server implementation +that uses catch and rethrow to allow logging and custom handling of all exceptions. + +The default action of the mechanisms will be to finally rethrow unknown +exceptions. The good thing about this is that the rethrow behaves to a JIT handler +as if the expeption had never been caught. + +*/ + +/** \page cometautoexp Comet AutoExp.Dat Support +There is a largely undocumented feature is Visual Studio 6 and 7 that allows +you to create a dll 'ADDIN' that provides custom formatting for variables in the +debugger. CometAutoExp.dll allows you to view simple automation types in more +detail than currently provided internally by the debugger. + +By enabling this, you will get to see real date/times when you view datetime_t, you +get to see SAFEARRAY types (including IIDs), and possibly their contents, you +will see full VARIANT types, including SAFEARRAYs. + +The file in comet/src/cometautoexp/AutoExp.dat shows the entries that will +be needed to included in your own AutoExp.dat for this to work. (Usually +found at "c:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\AUTOEXP.DAT") + +See \ref cometautoexpusage for more information on how to use this. + */ + +/** \page cometdefineconfiguration Comet Configuation + While Comet barely uses macros for the import work of creating a COM library, + there are a number of preprocessor switches that are used to alter certain + behaviours and select code. While most of these refer to the compiler being used, + there are a few that are intended to be used as external switches. + +
  • COMET_ALLOW_DECLSPEC_PROPERTY : Wrapper headers include declspec + properties, allowing interface properties to be assigned-to and read as + properties.
  • COMET_ASSERT_THROWS : Comet throws + comet::assert_failed when internal assertions fail in debug builds.
  • +
  • COMET_ASSERT_THROWS_ALWAYS : Comet throws comet::assert_failed when + internal assertions fail in both debug and release builds.
  • +
  • COMET_LOGFILE : See \ref cometcalllogging.
  • +
  • COMET_LOGFILE_DEFAULT : See \ref cometcalllogging.
  • +
  • COMET_NO_MBCS : Disable comet multi-byte-character-set conversion handling.
  • +
  • COMET_NO_MBCS_WARNING : Turn off the warning indicating that sdt::string is not compatible with MBCS.
  • +
  • COMET_USE_RAW_WRAPPERS : Tells com_ptr not to use the comet wrappers but to return raw interface pointers.
  • +
+ + There are also a number of macros that are either utitlity macros, reflect compiler differences + or Comet version differences that may be convenient to use within your own code. + +
    +
  • COMET_ASSERT(expression) : Run-time assert.
  • +
  • COMET_STATIC_ASSERT(static-expression) : Compile-time assert.
  • +
  • COMET_NOTUSED(info) : Specify unused argument.
  • +
  • COMET_FORCEINLINE : Use before a method to apply force-inline if available.
  • +
  • COMET_VARIANT_TRUE,COMET_VARIANT_FALSE : Use in place of VARIANT_TRUE,VARIANT_FALSE to avoid type warnings.
  • +
  • COMET_MAJOR_VER : Major comet version
  • +
  • COMET_MINOR_VER : Minor comet version
  • +
  • COMET_BUILD : Comet version to compare against (yyyymmdd of distribution)
  • +
  • COMET_STRICT_TYPENAME : Used for when stricter compilers require 'typename' keyword and VC6 has an error.
  • +
  • COMET_CONST_TYPE(vartype, varname, value) : Define a typed constant for a class/struct (or use enum if not supported)
  • +
+ + */ + +/** \page comethistory Comet History +\par Version 1 gamma 32 ( ) +\li Support for VC++2005 (Sofus Mortensen) +\li Numerous bug fixes and better support for Intel C++ (Richard Crossley) +\li Fixed off-by-one bug regarding array sizes (Yunusov Bulat) + +\par Version 1 beta 31 ( ) +\li safearray.h - Fix a few omissions/bugs (Lijun Qin) +\li comet_lint.lnt - Add pclint options file. (Michael Geddes) +\li server.h - Fix singlton_autorelease class (Ralf Jrgensen) +\li datetime.h - Fix bug in century non-leap-years. (Michael Geddes) +\li datetime.h - Use julian date conversions from boost - to drastically improve split/join efficiency (Michael Geddes) +\li datetime.h - Make invalid() rather than valid() the default (Michael Geddes) +\li date.h - Make use of above improvements in datetime_t (Michael Geddes) +\li datetime.h/date.h - Add ability to construct/assign invalid/null dates from dt_null, dt_invalid (Michael Geddes) +\li datetime.h - Fixed bug in to_unixtime (Lijun Qin) +\li array.h - Fixed typename problem (Sofus Mortensen) +\li safearray.h - Fixed problem with sa_debug_iterator and MSVC 7.1 (Sofus Mortensen) +\li uuid_fwd.h - Fixed bug in !operator (Sofus Mortensen) + +\par Version 1 beta 30 (2004-3-5) +\li Support for VC7.1 partial specialisation. (Lijun Qin) +\li datetime.h - Bugfix in datetime_t conversion (Gordon Donaldson) +\li safearray.h - Separate safearray_t::resize into resize and resize_bound to avoid ambiguous conversions. (Michael Geddes) +\li safearray.h - Fix bug in safearray_t:resize_bound using an incorrect copy. (Michael Geddes) +\li safearray.h - Add safearray_t debug iterator for debug builds. (Michael Geddes) +\li safearray.h - Add more comments for safearray_t (Michael Geddes) +\li safearray.h - Support more container-type methods (erase,push_front,push_back,pop_front,pop_back) (Michael Geddes) +\li server.h - Add auto-release singleton (Michael Geddes) +\li uuid.h - uuid_t::operator! no longer reversed (Lijun Qin) +\li uuid.h - fix ambiguous ++ operator usage. (Lijun Qin, Bulat Raditch, Michael Geddes) +\li handle.h - Extension of handles for GDI objects for cometw (Michael Geddes/Vladimir Voinkov/Lindgren Mikael) +\li bstr.h - Throw comparison errors if they occur. (Michael Geddes) +\li cp.h - add 'is_connected' method to connection points. (Lijun Qin) +\li common.h - Support for pclint (Michael Geddes, Gabriel Barta) +\li datetime.h - Support for timezones (Michael Geddes) +\li datetime.h - Fix up buffer handling (Michael Geddes, Lijun Qin) +\li variant.h - Support for strings with embedded nulls (Michael Geddes) +\li tlb2h - Support for bool in structs and in safearrays (Michael Geddes) +\li tlb2h - Support for wrapper renaming of specific methods on specific interfaces/struct/unions. (Michael Geddes) +\li tlb2h - Dual interfaces inherited from an interface in a different type-library now works when called by dispatch (Michael Geddes) +\li tlb2h - Output of HTML now better restricted to only required interfaces. (Michael Geddes) +\li tlb2h - Obey COM rules that require [out] pointers to be initialised on failure (Michael Geddes) +\li tlb2h - Support implementation of an interface that inherits from an interface from a different typelibrary (Michael Geddes) +\li cometautoexp - Support for more types, and better handling of strings. (std::basic_string, COLEDateTime) (Michael Geddes) +\li date.h - Added dateonly_t class. (Michael Geddes) +\li uuid.h - Make the strings accessors consistant (Michael Geddes, Lijun Qin) + +\par Version 1 beta 29 (2003-12-30) +\li Added loads of documentation, reduced doxygen warnings to 1(Michael Geddes) +\li Added CometAutoExp.dll extended support for AutoExp.dat +\li Remove unnecessary catch(...) - use specific catches (Michael Geddes) +\li Support create_const_reference in all wrapper classes. (Michael Geddes) +\li tlb2h - Enhance support for error information (interface/coclass name) (Michael Geddes) +\li tlb2h - Add support for logging calls & exceptions. (Michael Geddes) +\li tlb2h - Support for special characters in help strings. (Michael Geddes) +\li tlb2h - Few tweaks to get correct output. (Michael Geddes) +\li tlb2h - Option to show version (Michael Geddes) +\li bstr.h - Work with _STLP_DEBUG wrappers (Michael Geddes) +\li bstr.h - Constructor works with MBCS (Michael Geddes) +\li bstr.h - Support for {} round uuid_t (Michael Geddes) +\li cp.h - Add convenience methods. (Michael Geddes) +\li datetime.h - Constructor to supply date and time (Michael Geddes) +\li datetime.h - Support output streams. (Michael Geddes) +\li error.h - Support for source, iid and helpfile in errors. (Michael Geddes) +\li interface.h - Provide extra comtype definitions. (Michael Geddes) +\li interface.h - Provide convenience macro to define extra comtype with IID_ instances. (Michael Geddes) +\li ptr.h - Add identity_ptr class that references an identity IUnknown. All other comparisons QI on both pointers. (Michael Geddes) +\li server.h - Add support for singelton classes. (Michael Geddes) +\li tlbinfo.h - Fix up reference counting on struct wrappers. (Michael Geddes) +\li tlbinfo.h - Support ITypeInfo2 (Michael Geddes) +\li variant.h - Added explicit converts (as_uchar(), as_uint(), as_double() etc) (Michael Geddes) +\li variant.h - Added is_empty(), is_null() and is_nothing() (Michael Geddes) + +\par Version 1 beta 28 (2003-6-18) +\li Support for Visual Studio 2003 + +\par Version 1 beta 27 (2003-3-5) +\li tlb2h - bug fix variant_t members of dispinterfaces (Michael Geddes) +\li tlb2h - support for safearrays of interfaces (Michael Geddes) + +\par Version 1 beta 26 (2003-2-1) +\li tlb2h - major update. See http://groups.yahoo.com/group/tlb2h/message/706 (Michael Geddes) +\li Enum.h - allow copy policies with members (Michael Geddes) +\li datetime.h - fixed bug in timeperiod_t::split (Michael Geddes) + +\par Version 1 beta 25 (2002-11-28) +\li Connection point implementation is now customisable via traits. See http://groups.yahoo.com/group/tlb2h/message/688 (Michael Geddes) +\li Fixed bug in str_formattime in datetime.h (Sofus Mortensen). +\li Fixed bug in add_months in datetime.h (Michael Geddes). + +\par Version 1 beta 24 (2002-11-13) +\li Major update of tlb2h. See http://groups.yahoo.com/group/tlb2h/message/659 and http://groups.yahoo.com/group/tlb2h/message/661. (Michael Geddes) +\li Fixed problem with variant_t::operator==. (Kyle Alons) +\li Fixed bug in bstr_t::s_str(), bstr_t::is_empty(), bstr_t::length() (Mikael Lindgren, Michael Geddes) +\li safearray_t: 1. Changed the constructor that takes two iterators to not have a default lowerbound (to be consistant with the other constructor) +2. Changed resize to allow specifying a lower-bound. +3. Changed the default lb to be 0 in the case where none is specified and where the safearray is NULL. (Michael Geddes) + +\par Version 1 beta 23 (2002-9-1) +\li Bug fixes to namespace handling. (Michael Geddes) +\li Added friendly error message for missing tlbinf32.dll. (Sofus Mortensen) +\li Worked around MSVC6 internal compiler error when contructing an enum. (Michael Geddes) +\li Bug fixes to currency.h (Michael Geddes) +\li Bug fixes to datetime.h (Michael Geddes) + +\par Version 1 beta 22 (2002-8-19) +\li Update of tlb2h - better handling of namespace mangling, and support for +unwrapping the type of aliases without unwrapping the name of the aliases (Michael Geddes). +\li Fixed bug in uuid_fwd. (John Harrison) +\li Added oleidl_comtypes.h. (Gabriel Barta) +\li Restored old functionality of try_cast - will no longer throw when casting a null pointer. (Sofus Mortensen) +\li New auto-locking implementation of safearray_t::create_reference and safearray_t::create_const_reference. (Michael Geddes, Sofus Mortensen) +\li Included first drop (pre-alpha version) of cometw. (Vladimir Voinkov) + +\par Version 1 beta 21 (2002-6-21) +\li Fixed null pointer bug in com_error::what(). (Kyle Alons) +\li Fixed bug to do with the unloading of typelibraries when refcount reaches zero. (Michael Geddes) +\li Added support for MBCS to std::string and const char* conversions for bstr_t. Only active when _MBCS is defined. (Michael Geddes) +\li Fixed locking/unlocking bug. (Vladimir Voinkov, Sofus Mortensen) +\li Fixed bug in safearray_t::create_reference(variant_t&). (Michael Geddes) +\li Various fixes to datetime and currency. (Michael Geddes) +\li Added constants COMET_VARIANT_TRUE and COMET_VARIANT_FALSE in order to avoid warnings. (Michael Geddes, Sofus Mortensen) +\li registry::value has been extended with overload for method str and dword, where a default value can be supplied if the key/value does not exist. (Sofus Mortensen) +\li Various patches for BCC. (Michael Geddes) +\li Solved problem with vtables gaps when inheriting from those interfaces. (Michael Geddes) +\li Removed a few level 4 warnings. (Michael Geddes) +\li Added experimental HTML generation to tlb2h. (Sofus Mortensen) + +\par Version 1 beta 20 (2002-4-9) +\li tlb2h will fall back to using raw structs for structs with types that cannot be wrapped. (Sofus Mortensen) +\li Added application wizard for MSVC.NET. See tlb2h/src/Comet. (Sofus Mortensen) +\li Eliminated a few warnings. (Sofus Mortensen) + +\par Version 1 beta 19 (2002-3-26) +\li Added caching of IRecordInfo to sa_traits for wrapped structs and ITypeInfo to IDispatch implementations. (Sofus Mortensen) +\li Fixed problem with safearray_t iterators on MSVC7. (Sofus Mortensen) +\li Fixed bug regarding range checking for safearray_t::at being off by one. (Sofus Mortensen) +\li Added range checking assertion (debug only) to safearray_t::operator[]. (Sofus Mortensen) +\li Changed safearray_t constructor, so that lower bound of one is no longer assumed. Instead lower bound must be specified. (Sofus Mortensen) + +\par Version 1 beta 18 (2002-3-25) +\li Major revision of bstr_t. (Sofus Mortensen) +\li Added experimental support for wrapped structs to tlb2h and safearray. (Sofus Mortensen) +\li Fixed problem with having a coclass as a connection point sink. (Sofus Mortensen) +\li Revised treatment of [in, out] parameters in tlb2h. The old implementation could cause double deletion of [in. out] parameters when an exception was thrown. (Sofus Mortensen) +\li Revised all wrapper classes, in order for create_reference to create a mutable reference and create_const_reference an immutable reference. (Sofus Mortensen) +\li Revised locking in safearray_t. safearray_t::create_reference and safearray_t::create_const_reference is no longer doing automatic locking. (Sofus Mortensen) +\li tlb2h now generates #import alike smart pointer typedef. Ie. interface IFoo will be matched with a typedef com_ptr IFooPtr. (Sofus Mortensen) +\li Added support for datetime_t and currency_t to safearray_t. (Sofus Mortensen) +\li Added t_str() to bstr_t for converting to tstring. (Sofus Mortensen) + +\par Version 1 beta 17 (2002-2-18) +\li Fixed bug in atl_module. (Michael Geddes) +\li Documentation update for bstr.h. (Michael Geddes) +\li bstr_t now supports strings with embedded nulls. Thanks to Eric Friedman for reporting this. (Sofus Mortensen) +\li Removed use of _alloca in bstr.h. (Sofus Mortensen) + +\par Version 1 beta 16 (2002-2-12) +\li Fixed bug in functors bstr::less, bstr::less_equal, bstr::greater, bstr::greater_equal, bstr::equal_to and bstr::not_equal_to. (Michael Geddes) +\li tlb2h: switched ResolveAliases off per request from Michael Geddes. +\li tlb2h: Removed dummy wrapper methods (see http://groups.yahoo.com/group/tlb2h/message/476). (Sofus Mortensen) + +\par Version 1 beta 15 (2002-2-1) +\li Added lw_lock class based on Brad Wilson's LightweightLock (see http://www.quality.nu/dotnetguy/archive/fog0000000007.aspx). Many thanks to Brad for making LightweightLock open source. (Sofus Mortensen) +\li Comet now works with MSVC7. (Sofus Mortensen) +\li Removed functor.h. (Sofus Mortensen) +\li Fixed serious bug in bstr_base - causing memory corruption when concat'ing bstr's. (Michael Geddes) +\li Fixed obvious typo in locking_ptr. (Vladimir Voinkov) +\li Removed unnecessary include dependency from scope_guard.h. (Vladimir Voinkov) +\li Fixed compatibility problem with STLport for bstr comparison functors. (Michael Geddes) +\li Removed level 4 warnings from currency.h. (Michael Geddes). +\li Fixed problem with the -c option in tlb2h. (Michael Geddes). +\li Fixed bug in ATL_module.h. (Michael Geddes) +\li impl_dispatch is now lazy loading TypeInfo. Better performance for dual interfaces where client is not using IDispatch. (Sofus Mortensen) +\li Fixed various bugs in tlb2h. (Sofus Mortensen) + +\par Version 1 beta 14 (2002-1-17) + +\li Fixed problem with dispinterfaces and [in, out] enum parameters. (Sofus Mortensen) +\li Added simple system to prevent compiling out-of-date tlb2h generated headers. (Sofus Mortensen) +\li Fixed bug in impl_dispatch. (Michael Geddes, Sofus Mortensen) + +\par Version 1 beta 13 take 4 (2002-1-11) + +\li Fixed problem with dispinterfaces and enum parameters reported by Kyle Alons. (Sofus Mortensen) +\li Fixed serious bug in iterators for safearray_t reported by Steve Broeffle. The bug was caused by a MSVC compiler bug. (Sofus Mortensen) +\li Fixed bug operator in operator[] in iterators for safearray_t. (Sofus Mortensen) + +\par Version 1 beta 13 take 3 (2002-1-9) + +\li Fixed bug in uuid_t introduced in beta 13 take 2. (Sofus Mortensen) + +\par Version 1 beta 13 take 2 (2002-1-7) + +\li Beta 13 couldn't compile with _UNICODE defined. Fixed now. (Sofus Mortensen) + +\par Version 1 beta 13 (2002-1-7) + +\li Added basic support for writing exe servers in Comet. (Mikael Lindgren, Sofus Mortensen) +\li Added simple command line parser class to new header comet/cmd_line_parser.h (Mikael Lindgren) +\li Added new header comet/tstring.h. Defines tstring, tistream, tostream, etc, etc. (Sofus Mortensen) +\li Fixed various bugs in uuid_t. (Sofus Mortensen) + +\par Version 1 beta 12 (2001-12-20) + +\li Revision of embedded_object. embedded_object now takes parent type as first argument, arguments 2, 3, 4, .. denotes interfaces to implement. + embedded_object_1 has been removed. embedded_object2 has been added, extends embedded_object with functionality to + disconnect a child object from its parent. (Sofus Mortensen with help from Kyle Alons). +\li Added new file dispatch.h with specialisation of wrap_t with similar (but superior) functionality as CComDispatchDriver. +\li Added new class dynamic_dispatch to dispatch.h. Use dynamic_dispatch to dynamically implement IDispatch - adding methods and properties at runtime. (Sofus Mortensen) +\li Changed interface of sink_impl so that unadvise no longer takes an argument. Additionally the destructor will unadvise if necessary. (Sofus Mortensen) +\li Added new file uuid.h with GUID/UUID/CLSID wrapper called uuid_t. (Sofus Mortensen) +\li Changed tlb2h to support new wrapper uuid_t. (Sofus Mortensen) +\li Fixed potential thread safety problem regarding class factories. (Sofus Mortensen, Paul Hollingsworth) + +\par Version 1 beta 11 (2001-11-16) + +\li Major fix to tlb2h. tlb2h now supports properties in dispinterfaces. (Sofus Mortensen) +\li Module constants are now static. (Sofus Mortensen) +\li tlb2h now skips non-COM interfaces that do not derive (directly or transitively) from IUnknown. (Sofus Mortensen) +\li Fixed problem with error messages ending up as garbage in tlb2h. (Kyle Alons) +\li Various fixes regarding safearray_t. (Michael Geddes and Sofus Mortensen) +\li Various other minor fixes. (Sofus Mortensen) + +\par Version 1 beta 10 (2001-10-17) + +\li class coclass changed so that the 3, 4, ... template parameters specifify additional interfaces to implement. + Example: + \code + template<> coclass_implementation : public coclass + \endcode + (Sofus Mortensen) +\li Aggregating another component is now done by adding class aggregates to the type list of interfaces. First template argument of class aggregates is the coclass + to aggregating. The 2, 4, ... template arguments specify which interfaces to aggregate. If no interfaces have been specified, all interfaces will be aggregated. + Example: + \code + template<> coclass_implementation : public coclass > + \endcode + (Sofus Mortensen) +\li Added cmp method to bstr_base which a.o.t. can be configured for case insensitive comparision. (Michael Geddes) +\li Added comparison functors based on cmp to bstr_base, less, less_equal, equal_to, etc. Example of usage: + \code + std::set > mySet; + \endcode + (Sofus Mortensen) +\li Fixed bugs in assignment operators for datetime_t. (Sofus Mortensen, Mikael Lindgren) +\li In ptr.h changed COMET_ALLOW_DECLSPEC_PROPERTY to COMET_USE_RAW_WRAPPERS. (Michael Geddes) +\li In common.h added workaround for VARIANT_TRUE resulting in a level 4 warning. (Michael Geddes) +\li Changed server.h, so that a compiler error will occur if there are unimplemented coclasses. In case you deliberately want + unimplemented coclass define COMET_ALLOW_UNIMPLEMENTED_COCLASSES in std.h. (Sofus Mortensen) +\li Added various helper functions to util.h. (Sofus Mortensen) +\li Added support for aggregating the free threaded marshaler. Example: + \code + template<> coclass_implementation : public coclass + \endcode + (Sofus Mortensen) +\li Various bug fixes and changes. (Sofus Mortensen) + +\par Version 1 beta 9 (2001-9-23) + +\li Now wrapper properties and methods are only available through com_ptr::operator->. (Sofus Mortensen) +\li Added ostream<> outputting facility to both variant_t and bstr_t. (Sofus Mortensen) +\li Added std::string conversions to variant_t. (Sofus Mortensen) +\li Fixed various bugs in tlb2h regarding dispinterfaces. (Sofus Mortensen). +\li Fixed bug in com_ptr - try_cast'ing from variant_t to com_ptr did not throw an exception on error. (Sofus Mortensen) +\li Made com_ptr constructor from variant_t and assignment from variant_t private in com_ptr to prevent misuse. Use com_cast or try_cast. (Sofus Mortensen) + +\par Version 1 beta 8 (2001-9-19) + +\li Fixed bugs in tlb2h regarding datetime_t. (Sofus Mortensen) +\li Wrapper properties are now only available when accessing an interface through com_ptr::operator->. (Sofus Mortensen) +\li Classes currency_t and datetime_t are now exception safe. (Sofus Mortensen) +\li Added conversions for variant_t from/to currency_t and datetime_t. (Sofus Mortensen) +\li Added conversions for std::wstring to variant_t, solving various ambiguity problems. (Sofus Mortensen) +\li Re-arranged various header files, solving include problems. (Sofus Mortensen) + +\par Version 1 beta 7 (2001-9-7) + +\li Added support for locking to safearray_t. (Michael Geddes) +\li Improved support in tlb2h for methods taking arrays as argument. (Sofus Mortensen) +\li Fixed bug in tlb2h regarding methods that were the parameters were wrongly given a default value. (Sofus Mortensen) +\li Fixed bug in tlb2h regarding type "void *". (Sofus Mortensen) +\li Fixed various bugs in datetime.h. (Michael Geddes) +\li Added COMET_ASSERT - a replacement for _ASSERTE. (Sofus Mortensen) + +\par Version 1 beta 6 take 2 (2001-8-20) + +\li Fixed dumb, dumb _ASSERTE bug in tlb2h (Sofus Mortensen). + +\par Version 1 beta 6 (2001-8-19) + +\li Changed distribution package - now including scripts for generating docs and the source for both tlb2h and the Comet App. wizard (Sofus Mortensen). +\li Wrapped string constant in server.h with _T( ) for UNICODE compatibility (Sofus Mortensen). +\li Tlb2h.exe now generates vtable fillers to cater for interfaces with gaps in the vtable. Such are typically produced by VB (Michael Geddes and Sofus Mortensen). +\li Bug fixes to date_t (Michael Geddes). +\li Elimination of compiler warnings in safearray_t and registry.h (Michael Geddes). + +\par Version 1 beta 5 (2001-8-14) + +\li tlb2h.exe now generates corrects defaults for [optional] VARIANT. variant_t has been updated in order to support this (Sofus Mortensen). +\li Fixed problem in tlb2h.exe with using COMET_ALLOW_DECLSPEC_PROPERTY when importing msado20.tlb (Sofus Mortensen). +\li Fixed problem in tlb2h.exe with aliases being treated as records (Michael Geddes). +\li Several bug fixes to nutshell generation (Michael Geddes). +\li Changed tlb2h, so that the generated headers only #include the headers needed (Michael Geddes). + +\par Version 1 beta 4 (2001-7-25) + +\li datetime_t has been updated and support for datetime_t has been added to tlb2h.exe (Michael Geddes). +\li typelist::index_of bug fix (Michael Geddes, Sofus Mortensen, thanks to Eric Friedman for reporting this). +\li typelist::type_at bug fix (Michael Geddes). +\li create_reference added to safearray_t (Michael Geddes). +\li Experimental attach_from / attach_to added to safearray_t (Michael Geddes). +\li Bug fix in variant.h (Sofus Mortensen). + +\par Version 1 beta 3 (2001-7-14) + +\li MSVC7 beta 2 compatibility fixes (Sofus Mortensen). +\li Various bug fixes in tlb2h (Sofus Mortensen). +\li Added wizard option to tlb2h for generating skeleton implementation of coclasses (Michael Geddes). +\li Various bug fixes to safearray.h (Michael Geddes). +\li variant_t now supports converion to/from saferray_t (Michael Geddes, Sofus Mortensen) +\li com_ptr can now be used to wrap a pointer to coclass_implementation (Michael Geddes). +\li enum.h and cp.h has been updated to support the changes to com_ptr (Michael Geddes). +\li Preliminary version of datetime_t has been added (Michael Geddes). + +\par Version 1 beta 2 (2001-7-04) + +\li Major documentation update (Michael Geddes). +\li Bug fix in tlb2h.cpp (Michael Geddes). +\li Replaced operator bool in com_ptr with a more bullet proof alternative (Sofus Mortensen). +\li Updated functor.h to make use of partial specialisation for compilers that support it (Michael Geddes). + +\par Version 1 beta 1 (2001-6-29) + +\li Added currency support to variant_t (Michael Geddes). +\li Documentation update for server.h (Michael Geddes). +\li Various bug fixes to do with agg-objects (Michael Geddes). +\li Added GetClassObject implementation to atl_module (Michael Geddes). + + +\par Version 1 alpha 10 (2001-6-26): + +\li CURRENCY wrapper updated by Michael Geddes. +\li tlb2h has been updated by Michael Geddes (again!). This time with options to specify which namespace to put wrappers in, and an options to emit symbols only for faster compilation. +\li atl_module.h documentation updated by Michael Geddes. + +\par Version 1 alpha 9 (2001-6-21): + +\li CURRENCY wrapper added by Michael Geddes. +\li Nutshell wrappers didn't work in alpha 8. Now fixed. +\li tlb2h has been updated by Michael Geddes for better command line handling. It now supports multiple files including wildcards, and support for specifying an output directory. +\li Server implementation updated by Michael Geddes to support loading type libraries that has not yet been registered. +\li try_cast no longer throws on null pointers, and comet::com_ptr::operator->() now throws on null pointers. (Michael Geddes) + +\par Version 1 alpha 8 (2001-6-10): + +\li Compatibility patches for GCC/MINGW submitted by Michael Geddes. +\li Updated com_error with methods for accessing wrapped HRESULT value and IErrorInfo (source, helpfile, etc). +\li Various minor bug fixes. + +\par Version 1 alpha 7 take 3 (2001-3-31): + +\li Added converters for CURRENCY to variant_t.. +\li Updated functor.h. + +\par Version 1 alpha 7 take 2 (2001-3-28): + +\li Fixed bug concerning using com_cast and try_cast with raw interface pointers. +\li Fixed bug in bstr.h +\li Fixed dependency on comet/stl.h in comet/enum.h + + +\par Version 1 alpha 7 take 1 (2001-3-26): + +\li Support for dispinterfaces has been added by Michael Geddes and Mikael Lindgren. +\li BCC compatibility patches contributed by Michael Geddes. +\li Support for multiple connection points added by Michael Geddes. +\li Added generalised functor library that works with MSVC (Not really COM related) +\li comet::make_list\<\> has changed behaviour. Instead of writing make_list\, you have to write \link comet::make_list make_list\::result \endlink. This has been done in order to shorten error messages relating typelists. +\li Added several helper classes to comet/typelist.h for manipulation of typelists. +\li Fixed various "ambiguous conversion" errors + + +\par Version 1 alpha 6 (2001-3-7): + +\li Fixed disastrous bug in comet::com_ptr. +\li Re-organisation of header files. +\li Support for Intel C++ 5.0 added. +\li Fixed bug in regkey. +\li Various bugs fixes. + + +\par Version 1 alpha 5 take 2 (2001-1-26): + +\li Fixed bug in ptr.h + + +\par Version 1 alpha 5 (2001-1-16): + +\li Support for implementing aggregateable components. (Michael Geddes) +\li comet::com_ptr is no longer using common base class. +\li Various bug fixes. + + +\par Version 1 alpha 4.2 (2000-12-17): + +\li Fixed bug in critical_section. + + +\par Version 1 alpha 4.1 (2000-12-14): + +\li Fixed bug in variant.h +\li Added support for DATE and CURRENCY to tlb2h. (We might need wrapper classes for those). +\li Fixed missing inline in common.h. + + +\par Version 1 alpha 4 (2000-12-12): + +\li Generated wrappers, interfaces, etc are now placed in namespace corresponding to typelibrary name by tlb2h. +\li Fixed bugs in variant.h +\li The generated wrappers are no longer using .get_raw() and .get_raw_ptr(). Instead the wrapper methods .in(), .in_ptr(), .inout() and .out() are being used. +\li Support for constants placed in type library modules. (See Joav Kohn's posting on ATL discuss). +\li Support for version numbering for ProgID's. (Thanks to Mikael Lindgren). +\li Updated the wizard. + + +\par Version 1 alpha 3 (2000-11-29): + +\li Added sanity checking to safearray_t to capture type mismatches. +\li Added in() method to all wrapper classes for use when calling raw interfaces. +\li The generated header files are now using a normal include guard instead of #pragma once. +\li Various minor fixes. + + +\par Version 1 alpha 2 (2000-11-20): + +\li Nutshell generation added to tlb2h.exe. +\li Added STL compatible SAFEARRAY wrapper called comet::safearray_t. +\li Updated registry class. +\li New BSTR wrapper, comet::bstr with optional reference counting. +\li comet::bstr_t is now a typedef of comet::bstr. +\li ATL support added. + + +\par Version 1 alpha 1 (2000-10-29): + +\li First alpha release of Comet. + + +\par Version 0.9.7 (2000-10-19): + +\li typedef bug fix in tlb2h.exe +\li Bug fixes in comet::variant_t + + +\par Version 0.9.6 (2000-10-19): + +\li Documentation updates. +\li Misc. bug fixes. + + +\par Version 0.9.5 (2000-10-5): + +\li Documentation updates. +\li Paul Hollingsworth has been busy minimising include dependencies in the header files. +\li Added [out] and [in, out] adapters for dealing with raw interfaces. + + +\par Version 0.9.4 (2000-10-4): + +\li Fixed more bugs in comet::com_ptr. +\li Added documentation on comet::com_ptr. + + +\par Version 0.9.3 (2000-9-26): + +\li Fixed various bugs in comet::com_ptr. + + +\par Version 0.9.2 (2000-9-25): + +\li Updated tlb2h to use const where appropiate. +\li Added support for unions. +\li Added support for one-dimensional arrays in structs. + + +\par Version 0.9.1 (2000-9-21): + +\li Experimental support in tlb2h.exe for optional method arguments (ie. attribue optional or defaultvalue). + + +\par Version 0.9.0 (2000-9-19): + +\li Paul Hollingsworth has contributed automatic implementation of IProvideClassInfo. +\li Better support for [in, out] parameters. +\li Fixed bugs in tlb2h's generation of connection point wrapper. +\li Removed progid from template parameters, instead override function get_progid(). +\li Added version metadata to coclass and typelibrary wrappers. +\li Fixed bug in variant_t::variant_t(const comet::bstr_t&). + + +\par Version 0.8.3 (2000-9-12): + +\li Removed DLL dependency for tlb2h.exe. + + +\par Version 0.8.2 (2000-9-7): + +\li com_error / raise_exception_t has been revised. +\li Fixed bug in com_ptr::operator=(int) +\li Rearranged header inclusion introducing error_fwd.h. +\li Added misc. utility classes not necessarily related to tlb2h to tlb2h/utility.h. +\li Updated tlb2h.exe with more types. + + +\par Version 0.8.1 (2000-9-3): + +\li Type conversions to/from bstr_t has been changed/tweaked. +\li bstr_t now supports concatenation through operator+ and operator+=. + + +\par Version 0.8.0 (2000-8-31): + +\li Fixed several bugs in tlb2h.exe. +\li Added misc. utility classes not necessarily related to tlb2h to tlb2h/utility.h. + + +\par Version 0.7.10 (2000-8-25): + +\li Updated AppWizard to generate uuid for type library. +\li Added trait class to com_server for servers with no embedded type library. + + +\par Version 0.7.9 (2000-8-21): + +\li bstr_t is now capable of converting to std::string as well. +\li Rearranged util.h into list.h, common.h and util.h. + + +\par Version 0.7.8 (2000-8-18): + +\li Added simple AppWizard for creating DLL projects. +\li Removed untie. Instead embedded_object now has a release_from_owner method. +\li structs defined in type libraries now automatically use CoTaskMem when using new/delete. + + +\par Version 0.7.7 (2000-8-15): + +\li Changes to lifetime of embedded_object. Introducing tlb2h::untie, breaks tie between owner and embedded_object, so that the embedded_object can be destroyed before the owner. + + +\par Version 0.7.6 (2000-8-15): + +\li Various changes to comet::bstr_t. + + +\par Version 0.7.5 (2000-8-13): + +\li Interface inheritance problems solved. +\li Problem with [in] VARIANT arguments solved. +\li create_enum now works with embedded_objects. +\li comet::make_list now handles up to 40 elements. +\li Problem with IUnknown interfaces in coclasses solved. +\li Workaround for bug in Visual Studio editor causing VS to crash when editing certain template code. + + +\par Version 0.7.4 (2000-8-8): + +\li Conversion from comet::com_ptr to comet::variant_t improved. +\li Updated example to demonstrate now working COM enumeration implementation on STL containers. + + +\par Version 0.7.3 (2000-8-8): + +\li Nasty connection point bug fixed. +\li Added trivial VB client example program demonstrating connection point. +\li Added com_cast and try_cast for casting interface pointers. Implicit casting no longer allowed. +\li comet::com_error::what() is now working. +\li Misc. minor bug fixes/tweaks. + + +\par Version 0.7.2 (2000-8-3): + +\li Updated the example with registration custom build. +\li Misc. bug fixes. + +*/ +//! Primary namespace for comet. Includes source and libraries. +namespace comet { +//! Namespace for comet implementation details. +/*! \internal + */ +namespace impl { +} +} +/** \defgroup Misc Miscelaneous utility classes. + *@{ + */ +//@} +/** \defgroup COMType Com type wrappers. + *@{ + */ +//@} +/*!\defgroup WinUtil Windows utility classes. + *@{ + */ +//@} + + +#endif diff --git a/lib/local/CamCom/comet/common.h b/lib/local/CamCom/comet/common.h new file mode 100644 index 0000000..af06fd5 --- /dev/null +++ b/lib/local/CamCom/comet/common.h @@ -0,0 +1,316 @@ +/** \file + * Common utility classes wrappers. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_COMMON_H +#define COMET_COMMON_H + +#include +#include +#include + +namespace comet { + + class uuid_t; + templateclass com_ptr; + namespace impl { + template T* bad_alloc_check(T* x) + { + if (!x) throw std::bad_alloc(); + return x; + } + + /** Implementation struct for auto_attach. + * \internal + */ + template class auto_attach_t + { + public: + explicit auto_attach_t(const T& v) : val_(v) {}; + const T& get() const { return val_; } + private: + const T& val_; + auto_attach_t& operator=(const auto_attach_t&); + }; + + // Forward declare all these - only used if we actually WANT a + // safearray. + /** Safearray traits for the given type. + * \internal + */ + template struct sa_traits; + /** Safearray iterator for the given type. + * \internal + */ + template class sa_iterator; + /** Safearray const traits for the given type. + * \internal + */ + template struct const_traits; + /** Safearray non-const traits for the given type. + * \internal + */ + template struct nonconst_traits; + + enum sa_traits_check_type { stct_features_ok, stct_vt_ok, stct_iid_ok }; + enum sa_traits_extras_type { stet_null, stet_record, stet_iid }; + + // Interface traits are needed by all interfaces so that we can create + // safearrays of the types. + template + struct interface_sa_traits + { + enum { vt = VT }; + enum { check_type = stct_iid_ok }; + enum { extras_type = stet_iid }; + + typedef INTERFACE* raw; + typedef com_ptr value_type; + typedef com_ptr & reference; + typedef const com_ptr & const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast*>(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast*>(&x); } + typedef nonconst_traits > nct; + typedef sa_iterator, nct > iterator; + typedef sa_iterator, const_traits > > const_iterator; + + static bool are_features_ok(unsigned short f) { return (f & FEATURE_FLAG) != 0 && (f & FADF_HAVEIID) != 0; } + static const uuid_t& iid() { return uuidof(); } + }; + + /** Basic safearray traits - used by enums. + * \internal + */ + template struct basic_sa_traits + { + enum { vt = VT }; + enum { check_type = stct_vt_ok }; + enum { extras_type = stet_null }; + + typedef T raw; + typedef T value_type; + typedef T& reference; + typedef const T& const_reference; + + static reference create_reference(T& x) { return x; } + static const_reference create_const_reference(T& x) { return x; } + + typedef T* iterator; + typedef const T* const_iterator; + + static bool are_features_ok(unsigned short) { return true; } + }; + } + + /*! \addtogroup COMType + */ + //@{ + /// Used to attach a raw parameter to a wrapper. + template impl::auto_attach_t auto_attach(const T& t) { return impl::auto_attach_t(t); } + + +// template inline T up_cast(const U& u, T* = 0) { return u; } + + + /*! VARIANT_BOOL to bool [in] converter. + * This is used by the generated wrappers. + */ + inline VARIANT_BOOL bool_in(bool x) { return x ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; } + + /** \class bool_out common.h comet/common.h + * VARIANT_BOOL to bool [out] converter. + * This is used by the generated wrappers. + */ + class bool_out { + public: + operator VARIANT_BOOL*() { return &vb_; } + bool_out(bool& b) : b_(b) {} + ~bool_out() { b_ = vb_ ? true : false; } + private: + bool_out &operator=( const bool_out &); + VARIANT_BOOL vb_; + bool& b_; + }; + + namespace impl { + class bool_adapter_t { + public: + bool_adapter_t(VARIANT_BOOL* p) : pb_(p) { b_ = *pb_ ? true : false; } + ~bool_adapter_t() { *pb_ = b_ ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; } + + bool& ref() { return b_; } + private: + bool_adapter_t(const bool_adapter_t&); + bool_adapter_t& operator=(const bool_adapter_t&); + + VARIANT_BOOL* pb_; + bool b_; + }; + } + + /** \class bool_inout common.h comet/common.h + * VARIANT_BOOL to bool [in,out] converter. + * This is used by the generated wrappers. + */ + class bool_inout { + public: + operator VARIANT_BOOL*() { return &vb_; } + bool_inout(bool& b) : b_(b), vb_(b ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE) {} + ~bool_inout() { b_ = vb_ ? true : false; } + private: + bool_inout &operator=(const bool_inout &); + VARIANT_BOOL vb_; + bool& b_; + }; + + /** \class variant_bool_t common.h comet/common.h + * VARIANT_BOOL wrapper for structs. + * Stands in place of a VARIANT_BOOL in a struct, and behaves like a bool. + * This is imporant as sizeof(VARIANT_BOOL) != sizeof(bool). + */ + class variant_bool_t + { + VARIANT_BOOL vb_; + public: + /// \name Constructors. + //@{ + variant_bool_t(): vb_(COMET_VARIANT_FALSE) {} + variant_bool_t(const impl::auto_attach_t &b) : vb_(b.get()) {} + variant_bool_t(bool b) : vb_(b?COMET_VARIANT_TRUE:COMET_VARIANT_FALSE) {} + //@} + + /// \name Assignment operators. + //@{ + variant_bool_t &operator=( bool b) { vb_ = b?COMET_VARIANT_TRUE:COMET_VARIANT_FALSE; return *this;} + variant_bool_t &operator=( const impl::auto_attach_t &b) { vb_ = b.get(); return *this; } + //@} + + /// \name Boolean operators. + //@{ + operator bool() const{ return vb_!= COMET_VARIANT_FALSE; } + bool operator !() const { return vb_== COMET_VARIANT_FALSE; } + bool operator==( variant_bool_t vb) const { return vb.vb_ == vb_; } + bool operator!=( variant_bool_t vb) const { return vb.vb_ != vb_; } + //@} + + /// \name Bitwise operators + //@{ + variant_bool_t operator~() const { variant_bool_t temp(*this); temp.vb_ = (VARIANT_BOOL)~(temp.vb_); return temp; } + variant_bool_t &operator&=( const variant_bool_t &b) { vb_ &= b.vb_; return *this; } + variant_bool_t &operator|=( const variant_bool_t &b) { vb_ |= b.vb_; return *this; } + variant_bool_t &operator^=( const variant_bool_t &b) { vb_ ^= b.vb_; return *this; } + variant_bool_t operator&( const variant_bool_t &b)const { variant_bool_t temp(*this); temp.vb_ &= b.vb_; return temp; } + variant_bool_t operator|( const variant_bool_t &b)const { variant_bool_t temp(*this); temp.vb_ |= b.vb_; return temp; } + variant_bool_t operator^( const variant_bool_t &b)const { variant_bool_t temp(*this); temp.vb_ ^= b.vb_; return temp; } + //@} + /// \name bool operators + //@{ + bool operator&( bool b)const { return b & operator bool(); } + bool operator|( bool b)const { return b | operator bool(); } + bool operator^( bool b)const { return b ^ operator bool(); } + //@} + + static const variant_bool_t &create_const_reference(const VARIANT_BOOL &vb) { return reinterpret_cast(vb); } + static variant_bool_t &create_reference(VARIANT_BOOL &vb) { return reinterpret_cast(vb); } + + ///\name Raw accessors + //@{ + VARIANT_BOOL in() { return vb_; } + VARIANT_BOOL *out() { return &vb_; } + VARIANT_BOOL *inout() { return &vb_; } + //@} + + + /** Allow treating of class as a bool *. + * \sa bool_ptr() + */ + class bool_pointer_t + { + friend class variant_bool_t; + protected: + bool_pointer_t( VARIANT_BOOL &vb) : vb_(vb), b_( vb != COMET_VARIANT_FALSE) {} + public: + ~bool_pointer_t() { vb_ = b_ ? COMET_VARIANT_TRUE: COMET_VARIANT_FALSE; } + operator bool*(){ return &b_; } + operator const bool*()const{ return &b_; } + private: + bool_pointer_t &operator=(const bool_pointer_t &); + bool b_; + VARIANT_BOOL &vb_; + }; + /** Return a class that stands in for a bool *. + Should be used in place of operator & for passing in to a bool * function. + \code + variant_bool_t vb; + SomeFunc(vb.bool_ptr()); + \endcode + */ + bool_pointer_t bool_ptr() + { + return bool_pointer_t(vb_); + } + const bool_pointer_t bool_ptr() const + { + return bool_pointer_t(const_cast(vb_)); + } + + friend class bool_reference_t; + /** Allow efficient choosing between a bool& and a variant_bool&. + */ + class bool_reference_chooser_t + { + friend class variant_bool_t; + variant_bool_t &vbt_; + protected: + bool_reference_chooser_t(variant_bool_t &vbt):vbt_(vbt) {} + private: + bool_reference_chooser_t &operator=(const bool_reference_chooser_t &); + public: + inline operator variant_bool_t&() { return vbt_;} + inline operator const variant_bool_t&()const { return vbt_;} + }; + /** Allow treating of a class as a bool &. + * \sa bool_ref() + */ + class bool_reference_t : protected bool_pointer_t + { + public: + bool_reference_t( bool_reference_chooser_t &brc ) + : bool_pointer_t(*static_cast(brc).inout()) + {} + operator bool &(){ return tmp; /*return * (bool_pointer_t::operator bool*());*/ } + operator const bool &()const { return *(bool_pointer_t::operator const bool*()); } + bool tmp; + }; + + /** Return a class that stands in for a bool & or a variant_bool_t &. + */ + bool_reference_chooser_t bool_ref() + { + return bool_reference_chooser_t(*this); + } + const bool_reference_chooser_t bool_ref() const + { + return bool_reference_chooser_t(const_cast(*this)); + } + }; + //@} + +} // namespace + +#endif diff --git a/lib/local/CamCom/comet/config.h b/lib/local/CamCom/comet/config.h new file mode 100644 index 0000000..58b9dd3 --- /dev/null +++ b/lib/local/CamCom/comet/config.h @@ -0,0 +1,243 @@ +/** \file + * Included by all comet headers to provide compiler-specific + * configuration. + */ +/* + * Copyright 2000-2002 Sofus Mortensen + * Copyright (C) 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_CONFIG_H +#define COMET_CONFIG_H + +#define COMET_MAJOR_VER 2 +#define COMET_BUILDTYPE gamma +#define COMET_MINOR_VER 1 +#define COMET_BUILD 20131017 + +#ifndef COMET_BUILD_VERSION_ONLY + +#ifndef COMET_NO_DECLSPEC_PROPERTY +#define COMET_ALLOW_DECLSPEC_PROPERTY +#endif // COMET_NO_DECLSPEC_PROPERTY + +#pragma warning(disable : 4786) +#pragma warning(disable : 4042) +#pragma warning(disable : 4290) +#pragma warning(disable : 4710) + +#ifdef _lint // PC/Lint has a few problems with comet. +# if !defined(_MSC_VER) || _MSC_VER >= 1300 +#define COMET_PARTIAL_SPECIALISATION +#else + +#endif +#define COMET_NESTED_TEMPLATES +#define COMET_GOOD_RECURSIVE_STRUCT +#define COMET_CONST_MEMBER_INIT +#define COMET_GUID_BASE GUID +#define COMET_STD_ITERATOR +#define COMET_NO_POINTER_CHECKING +#define COMET_STD_SWAP_NOTHROW throw() +#define COMET_TL_TRUNC +#else +//VC 7.1 support partial specialization +#ifdef _MSC_VER +#endif + +#ifdef __ICL +# define COMET_PARTIAL_SPECIALISATION +# define COMET_NESTED_TEMPLATES +#else +# ifdef _MSC_VER +# if _MSC_VER < 1300 +// Versions less than VC7 can't handle the rethrow & catch exception trick. +# define COMET_DISABLE_EXCEPTION_RETHROW_CATCH +# else // _MSC_VER >= 1300 +# define COMET_GOOD_RECURSIVE_STRUCT +# define COMET_CONST_MEMBER_INIT +# if _MSC_VER >= 1310 +# define COMET_PARTIAL_SPECIALISATION +# define COMET_NESTED_TEMPLATES +# endif +# endif + +# endif +#if defined(_UNICODE) && !defined(UNICODE) + #define UNICODE +#endif +#endif + +#ifdef __BORLANDC__ +#pragma warning(disable: 8027) +#pragma warning(disable: 8026) +#define COMET_PARTIAL_SPECIALISATION +#define COMET_NESTED_TEMPLATES +#define COMET_BROKEN_WTYPES +#define COMET_STD_ITERATOR +#define COMET_STD_SWAP_NOTHROW + +#define COMET_GUID_BASE _GUID +#else +#define COMET_STD_SWAP_NOTHROW throw() +#define COMET_GUID_BASE GUID +#endif + +#ifdef __CYGWIN__ +#define COMET_PARTIAL_SPECIALISATION +#define COMET_NESTED_TEMPLATES +#define COMET_GCC_HEADERS +#define COMET_STD_ITERATOR +#define COMET_TL_TRUNC +#define _T(x) x + +// This is not a good idea +// Routines that use _alloca has to be rewritten for __MINGW32__ targets. +// #define _alloca malloc + +// WIN32 defines for GCC +#define NONAMELESSUNION +#define NOCOMATTRIBUTE +#endif +#endif + + +// Use COMET_STRICT_TYPENAME only where MSVC barfs on stricter typename usage +// required by GCC. +#ifdef _MSC_VER +#if _MSC_VER <= 1300 +#define COMET_STRICT_TYPENAME +#else +#define COMET_STRICT_TYPENAME typename +#endif +#else +#define COMET_STRICT_TYPENAME typename +#endif + +// PRH Feb 26 2001 +// Try and determine which version of std::iterator we have. +// The ANSI/ISO compliant one seems to require a compiler +// that supports partial specialisation, as well as an +// ANSI/ISO compliant implementation of the library. + +// Unfortunately, there is no __ANSI_STL #define. +// So we guess: +// If we have partial specialisation, and we're using STLPort, then +// its the ANSI/ISO std::iterator, otherwise it is the MSVC 6.0 +// iterator. + +// If you're using some other decent STL other than STLPort, +// then you'll need to reflect this by ensuring that COMET_STD_ITERATOR +// is defined. + +#if _MSC_VER >= 1300 || defined(_CPPLIB_VER) +#define COMET_STD_ITERATOR +#else +#include +#ifdef COMET_PARTIAL_SPECIALISATION +// this code to "detect" STLport is stolen from +//#if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES) +#ifdef __SGI_STL +#define COMET_STD_ITERATOR +#else +#ifdef __MINGW32__ +__STL_BEGIN_NAMESPACE +template struct iterator: bidirectional_iterator<_Tp,_Distance>{}; +__STL_END_NAMESPACE +#endif // __MINGW32__ +#endif +#else +#ifdef _CPPLIB_VER +#define COMET_STD_ITERATOR +#endif +#endif /* COMET_PARTIAL_SPECIALISATION */ +#endif + +#ifndef ATL_NO_VTABLE +#if _MSC_VER >= 1200 +#define ATL_NO_VTABLE __declspec(novtable) +#else +#define ATL_NO_VTABLE +#endif +#endif + +#if _MSC_VER <= 1200 +//#define COMET_DO_NOT_SPECIALISE_SWAP_IN_STD +#endif + +// Intel compiler version 500 sets _MSC_VER to 1200, +// but doesn't seem to like __forceinline +#if _MSC_VER >= 1200 && !defined(__ICL) +#define COMET_FORCEINLINE __forceinline +#else +#define COMET_FORCEINLINE inline +#endif + +#ifdef _UNICODE +#ifndef UNICODE +#define UNICODE // UNICODE is used by Windows headers +#endif +#endif + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE // _UNICODE is used by C-runtime/MFC headers +#endif +#endif + +// Remove Microsoft's C++ macros +#undef variant_t +#undef bstr_t +#undef com_cast + +// Stop subsequent includes of from #defining variant_t or bstr_t +#ifndef _USE_RAW +#define _USE_RAW +#endif + +#ifndef UUID_DEFINED +#define UUID_DEFINED +#endif + +#ifndef UUID +#define UUID GUID +#endif + +#ifdef uuid_t +#undef uuid_t +#endif + +#define COMET_DECLARE_SWAP(TYPE) template<> inline void swap(TYPE &x, TYPE &y)\ + {\ + x.swap(y);\ + } + +const unsigned short COMET_VARIANT_TRUE = (unsigned short)(0xffff); +const unsigned short COMET_VARIANT_FALSE = 0; + +#define COMET_NOTUSED(x) x +#ifndef COMET_CONST_MEMBER_INIT +# define COMET_CONST_TYPE(vartype, varname,value) enum { varname = value }; +# define COMET_CONST_GROUP enum { +# define COMET_CONST_ENTRY(vartype, varname,value) varname = value, +# define COMET_CONST_GROUP_END }; +#else +# define COMET_CONST_TYPE(vartype, varname,value) static const vartype varname = value; +# define COMET_CONST_ENTRY(vartype, varname,value) COMET_CONST_TYPE(vartype, varname, value); +# define COMET_CONST_GROUP +# define COMET_CONST_GROUP_END +#endif +#endif // COMET_BUILD_VERSION_ONLY +#endif + diff --git a/lib/local/CamCom/comet/cp.h b/lib/local/CamCom/comet/cp.h new file mode 100644 index 0000000..1c9a9e8 --- /dev/null +++ b/lib/local/CamCom/comet/cp.h @@ -0,0 +1,436 @@ +/** \file + * Connection-point implementations. + * The thought behind the current implementation was to try and maintain + * connections points accessible from the coclass through the member + * connection_point. + * + * Where multiple connection-points are defined, the member is accessed thus: + * \code + * connection_point_for::connection_point + * \endcode + * The default connection point wrapper implementations have a prefix of + * \b Fire_ before the event name. + */ +/* + * Copyright 2000 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_CP_H +#define COMET_CP_H + +#include + +#include + +#include +#include + +#pragma warning( push ) +#pragma warning( disable : 4355 ) + +/** \page cometconnectionpoints Connection Points. +\section cometconnectionpointssource Connction Point Source +Connection points provide events for comet, and rely on tlb2h (see \ref tlb2husage) to generate +the implementation for each method on the interface. + +Then comet::implement_cpc is used to provide IConnectionPointContainer +(which provides the method for finding a particular connection point. + +The default implementation of a coclass will inherit of this method by +default, however they can be explicitly referenced to provide +alternate implementations. + +The class comet::implement_cpc is templated to an interface list, which +can be constructed with comet::make_list. + +\code + class my_class : public simple_object< IFooImpl, implement_cpc< make_list::result > > +\endcode + +This causes each of the interface in the list of interfaces to be wrapped by a +comet::connection_point_for class which provides the access syntax. + +\code + connection_point_for::connection_point.Fire_FooMethod( args ); +\endcode + +Note that \b Fire_ is prepended to each method name. + +If there is only one connection point in the list, then the +connection_point_for namespace segregator is not required. + +If there is no connection point implementation for the interface, then you should make +sure that it is referenced with a [source] tag by a coclass definition +in the library you are including, and that you are generating server +implementations or forcing it by prepending '*' in a symbol file, see +the \ref wrappergensymbolformat. + +\section cometconnectionpointsink Connction Point Sink + +In order to prevent the circular references inherent in connection points, the +reference loop must be broken somehow. This is best done by using a contained +member that calls back on the parent class. + +The class sink_impl is best used in this circumstance as it contains code for calling +Advise and Unadvise. It inherits from static_object which is designed to be embedded in +a class, and does reference counting on the module and does not destruct itself. + +This class is templated to the interface implementation desired, which will +mostly be the 'Impl' class for the interface, but might be a raw COM interface. + +In this example we have a class 'MyCoclass' that is sinking the event interface IMyEventImpl which +has a single 'EventHappened' method. +\code + class coclass_MyCoclass : public coclass + { + // Private Embedded sink implementation. + struct sink_t : sink_impl + { + sink_t(coclass_MyCoclass *Parent) :m_parent(Parent) {} + inline void EventHappened( long param_Here ) { m_parent->sink_EventHappened(param_Here); } + coclass_MyCoclass *m_parent; // Non-addref reference. + } m_sink; + public: + coclass_MyCoclass() : m_sink(this) {} + + // Set the event source. + void SetEventSource( const com_ptr &unknown) + { + if (m_sink.is_advised()) + m_sink.unadvise(); + m_sink.advise( unknown ); + } + + inline void sink_EventHappened( long param_Here ) + { + // Event code goes here + } + }; +\endcode + +*/ + +namespace comet { + + template class connection_point; + + /*! \addtogroup Interfaces + */ + //@{ + /** \class simple_cpc cp.h comet/cp.h + * Implement a simple connection-point container with a single + * connection-point. + * \param Itf The single connection-point interface. + * \sa implement_cpc + */ + template class ATL_NO_VTABLE simple_cpc : public IConnectionPointContainer + { + public: + typedef IConnectionPointContainer interface_is; + + protected: + /// \name IConnectionPointContainer interface + //@{ + STDMETHOD(EnumConnectionPoints)(IEnumConnectionPoints**) + { + return E_NOTIMPL; + } + + STDMETHOD(FindConnectionPoint)(REFIID riid, IConnectionPoint** ppCP) + { + if (!ppCP) return E_POINTER; + if (riid == uuidof()) { + *ppCP = &connection_point; + (*ppCP)->AddRef(); + return S_OK; + } + return CONNECT_E_NOCONNECTION; + } + //@} + + protected: + simple_cpc() : connection_point(this) {} + + connection_point connection_point; + }; + + + /** \class connection_point_for cp.h comet/cp.h + * Provide access to implementation for a connection point. + * \relates implement_cpc + */ + template class connection_point_for + { + public: + connection_point_for(::IUnknown *self) : connection_point(self) {} + connection_point connection_point; + }; + + + namespace impl { + + /** Find a connection point implementation for a given iid. + * \internal + */ + template struct connection_point_finder + { + template COMET_FORCEINLINE static ::IConnectionPoint* find_connection_point(T* This, const IID& iid) + { + typedef find_compatibility< COMET_STRICT_TYPENAME ITF_LIST::head > compatible; + if (iid == uuidof()) + return &((static_cast *>(This))->connection_point) ; + else return connection_point_finder::find_connection_point(This, iid); + } + }; + template<> struct connection_point_finder + { + template COMET_FORCEINLINE static ::IConnectionPoint* find_connection_point(T*, const IID&) + { + return 0; + } + }; + + } + + namespace impl { + + + template struct ATL_NO_VTABLE inherit_all_ex_unknown; + +#ifdef COMET_GOOD_RECURSIVE_STRUCT + // Remove level of indirection. PC-lint cannot handle it, and MSVC7 + // should be ale to. + template struct ATL_NO_VTABLE inherit_all_ex_unknown + : public ITF_LIST::head, public inherit_all_ex_unknown + { + inherit_all_ex_unknown( ::IUnknown *initParam) + : ITF_LIST::head(initParam), inherit_all_ex_unknown< COMET_STRICT_TYPENAME ITF_LIST::tail >(initParam) + {} + }; + template<> struct inherit_all_ex_unknown { inherit_all_ex_unknown(::IUnknown *) {} }; + +#else // COMET_GOOD_RECURSIVE_STRUCT + template struct ATL_NO_VTABLE inherit_all_ex_aux_unknown + : public HEAD, public inherit_all_ex_unknown + { + inherit_all_ex_aux_unknown( ::IUnknown *initParam) + : HEAD(initParam), inherit_all_ex_unknown(initParam) + {} + }; + +// COMET_CONFIG_H is always defined! This is just a trick to get Doxygen to ignore the following declaration that +// otherwise seems to be cause an exception in Doxygen 1.2.8 +#ifdef COMET_CONFIG_H + template struct ATL_NO_VTABLE inherit_all_ex_unknown + : public inherit_all_ex_aux_unknown + { + inherit_all_ex_unknown( ::IUnknown *initParam) + :inherit_all_ex_aux_unknown< COMET_STRICT_TYPENAME ITF_LIST::head, COMET_STRICT_TYPENAME ITF_LIST::tail >(initParam) + { + } + }; + template<> struct inherit_all_ex_unknown { inherit_all_ex_unknown(::IUnknown *) {} }; +#endif // COMET_CONFIG_H +#endif // COMET_GOOD_RECURSIVE_STRUCT + + + + } + + + COMET_WRAP_EACH_DECLARE( connection_point_for) + + + /** \struct implement_cpc cp.h comet/cp.h + * Implement a connection point container that can handle multiple + * connection points. + * This should be added to the \link comet::make_list list \endlink of implemented interfaces for a coclass as it + * implements IConnectionPointContainer (which will be required for a qi). + * + * The class is used by the default coclass implementation to provide \ref cometconnectionpoints. + * + * \param ITF_LST \link comet::make_list List \endlink of connection points interfaces to implement. + */ + template< typename ITF_LST> struct ATL_NO_VTABLE implement_cpc : public IConnectionPointContainer + , public impl::inherit_all_ex_unknown< COMET_WRAP_EACH(connection_point_for, ITF_LST) > + { + typedef IConnectionPointContainer interface_is; + public: + implement_cpc() + : impl::inherit_all_ex_unknown< COMET_WRAP_EACH(comet::connection_point_for, ITF_LST) >((::IUnknown *)this) + {} + + protected: + friend struct impl::connection_point_finder; + /// \name IConnectionPointContainer interface + //@{ + STDMETHOD(EnumConnectionPoints)(IEnumConnectionPoints**) + { + return E_NOTIMPL; + } + + STDMETHOD(FindConnectionPoint)(REFIID riid, IConnectionPoint** ppCP) + { + if (!ppCP) return E_POINTER; + + const IID& iid = riid; + + *ppCP = impl::connection_point_finder::find_connection_point(this, iid); + + if ( *ppCP !=NULL) + { + (*ppCP)->AddRef(); + return S_OK; + } + return CONNECT_E_NOCONNECTION; + } + //@} + }; + + + /** \class connection_point_impl cp.h comet/cp.h + * Implements a connection point. + * \param Itf Interface of connection point. + */ + template class ATL_NO_VTABLE connection_point_impl : public embedded_object< IUnknown, IConnectionPoint > + { + public: + bool is_connected() const + { return !connections_.empty(); } + protected: + connection_point_impl(::IUnknown* pUnk) : next_cookie_(1), embedded_object< IUnknown, IConnectionPoint >(pUnk) {} + + /// \name IConnectionPoint interface + //@{ + STDMETHOD(GetConnectionInterface)(IID* pIID) + { + *pIID = uuidof(); + return S_OK; + } + + STDMETHOD(GetConnectionPointContainer)(IConnectionPointContainer** ppCPC) { + com_ptr p; + p = try_cast(com_ptr< ::IUnknown >(get_parent())); + *ppCPC = com_ptr::detach( p ); + return S_OK; + } + + STDMETHOD(Advise)(::IUnknown* pUnkSink, DWORD* pdwCookie) + { + try { + connections_[next_cookie_] = try_cast( com_ptr< ::IUnknown >(pUnkSink) ); + } + catch (...) { + return CONNECT_E_CANNOTCONNECT; + } + *pdwCookie = next_cookie_++; + return S_OK; + } + STDMETHOD(Unadvise)(DWORD dwCookie) + { + CONNECTIONS::iterator it = connections_.find(dwCookie); + if (it == connections_.end()) return CONNECT_E_NOCONNECTION; + connections_.erase(it); + return S_OK; + } + + STDMETHOD(EnumConnections)(IEnumConnections** ppEnum) + { + try { + *ppEnum = com_ptr::detach( stl_enumeration::create(connections_, get_unknown()) ); + } catch (...) { + return E_FAIL; + } + return S_OK; + } + //@} + + typedef std::map > CONNECTIONS; + CONNECTIONS connections_; + private: + UINT next_cookie_; + }; + + /** \class sink_impl cp.h comet/cp.h + * Implement a sink for a connection pointer. + * \param Itf interface to implement. + */ + template class ATL_NO_VTABLE sink_impl : public static_object + { + public: + /** Advise this object as sinking connections from \p t. + */ + void advise(const com_ptr< ::IUnknown>& t) + { + if (ptr_) throw std::runtime_error("Cannot double advise."); + com_ptr cpc( try_cast(t) ); + IConnectionPoint* cp; + cpc->FindConnectionPoint( uuidof(), &cp) | raise_exception; + + HRESULT hr = cp->Advise(static_cast< ::IUnknown* >(static_cast(this)), &cookie_); + + cp->Release(); + + hr | raise_exception; + + ptr_ = t; + } + + /** Unadvise this interface from object \p t. + */ + void unadvise() + { + if (ptr_) { + com_ptr cpc( try_cast(ptr_) ); + IConnectionPoint* cp; + cpc->FindConnectionPoint( uuidof(), &cp) | raise_exception; + + HRESULT hr = cp->Unadvise(cookie_); + cookie_ = 0; + ptr_ = 0; + + cp->Release(); + + hr | raise_exception; + } + } + + /** Get event object. + */ + com_ptr< ::IUnknown> object() + { + return ptr_; + } + + /** Return true if advised. + */ + bool is_advised() + { + return !ptr_.is_null(); + } + + protected: + sink_impl() : cookie_(0) {} + ~sink_impl() { unadvise(); } + private: + DWORD cookie_; + com_ptr< ::IUnknown> ptr_; + }; + //@} + +} + +#pragma warning( pop ) + +#endif diff --git a/lib/local/CamCom/comet/cptraits.h b/lib/local/CamCom/comet/cptraits.h new file mode 100644 index 0000000..539b4e8 --- /dev/null +++ b/lib/local/CamCom/comet/cptraits.h @@ -0,0 +1,118 @@ +/** \file + * Connection-point traits. + */ + +/* Copyright 2002 Michael Geddes + * Copyright 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef INCLUDE_COMET_CPTRAITS_H +#define INCLUDE_COMET_CPTRAITS_H + +#ifdef _SHOW_INC +#pragma message(" #Include " __FILE__) +#endif + +#include +#include // raise_exception + +#include // HRESULT + +namespace comet +{ + /*! \struct cp_throw cptraits.h comet/cptraits.h + * Default 'throw' traits for connection-points. + * \code Usage + * connection_point_for::connection_point.Fire_MyEvent( arg1, comet::cp_throw()); + * \endcode + */ + struct cp_throw + { + + /// Constructor - called before iterating over the connection-points. + cp_throw() : _hr_(S_OK) { } + + /// Destructor - called after iterating over all the connection-points. + ~cp_throw() { _hr_ | raise_exception ; } + + /*! Called when a connection point fails. + * Can also be used to remember the hresult for the destructor. + * + * \retval true Cause the on_fail method to be called. + * \retval false Ignore the failure. + */ + bool check_fail(HRESULT hr) + { + if( FAILED(hr) ) + _hr_ = hr; + return false; + } + + /*! Called when check_fail returns true. + * \param par_connects Reference to the STL container containing the connection-points. + * \param par_it The iterator of the failed connection-point. + */ + template + static bool on_fail(CONNECTIONS &par_connects, const typename CONNECTIONS::iterator & par_it) + { + COMET_NOTUSED(par_it); + COMET_NOTUSED(par_connects); + return false; + } + + protected: + HRESULT _hr_; + + }; + + /*! \struct cp_nothrow_remove cptraits.h comet/cptraits.h + * Traits for connection-points, errors cause the connection-point to auto-remove. + * \code + * connection_point_for::connection_point.Fire_MyEvent( arg1, comet::cp_nothrow_remove()); + * \endcode + * \sa cp_throw + */ + struct cp_nothrow_remove + { + //! Called when a connection point fails. + bool check_fail( HRESULT _hr_) throw() { return FAILED(_hr_); } + + //! Called when check_fail returns true. + template + static bool on_fail(CONNECTIONS &par_connects, const typename CONNECTIONS::iterator &par_it ) throw() + { + try{ par_connects.erase(par_it); }catch(...) {} + return false; + } + }; + + + /*! \struct cp_nothrow cptraits.h comet/cptraits.h + * Tratis for connection-points, errors are ignored. + * \code + * connection_point_for::connection_point.Fire_MyEvent( arg1, comet::cp_nothrow()); + * \endcode + * \sa cp_throw + */ + struct cp_nothrow + { + //! Called when a connection point fails. + bool check_fail( HRESULT _hr_) throw() { return FAILED(_hr_); } + + //! Called when check_fail returns true. + template + static bool on_fail(CONNECTIONS &par_connects, const typename CONNECTIONS::iterator &par_it ) throw() { return false; } + }; +} +#endif /* INCLUDE_COMET_CPTRAITS_H */ diff --git a/lib/local/CamCom/comet/currency.h b/lib/local/CamCom/comet/currency.h new file mode 100644 index 0000000..567f93d --- /dev/null +++ b/lib/local/CamCom/comet/currency.h @@ -0,0 +1,474 @@ +/** \file + * Currency wrapper. + */ +/* Copyright 2001 Michael Geddes, Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_CURRENCY_H +#define COMET_CURRENCY_H + +#include + +#include +#include + +#include + +#include +#include + +namespace comet +{ + + class bstr_t; + + // currency_t + /////////////// + + /*! \addtogroup COMType + */ + //@{ + + /** Wrapper for CURRENCY type. + * CURRENCY is a fixed point (to 4 decimal places) 64 bit value. + */ + + class currency_t + { + public: + /// Default Constructor + currency_t() throw() { cy_.int64 = 0; } + + /// CY constructor. + currency_t(const CY &cy): cy_(cy) { } + + /// Double Conversion constructor. + explicit currency_t(double val) + { + VarCyFromR8(val,&cy_) | raise_exception; + } + +#if 0 +// //! Construct currency from CY/CURRENCY. +// /*! +// Takes ownership of specified CY value. To prevent misuse the CY must be wrapped using auto_attach. +// +// \code +// currency_t cy( auto_attach( myCY ) ); +// \endcode +// +// \param cyVal +// Value to initialise currency_t from. +// */ +// currency_t( const impl::auto_attach_t &cyVal) throw() : cy_(cyVal.get()) +// {} +#endif //0 + + /// Long Conversion constructor. + currency_t( long val ) + { + VarCyFromI4(val,&cy_) | raise_exception; + } + + currency_t( int val ) + { + VarCyFromI4(val,&cy_) | raise_exception; + } + + void swap(currency_t& c) throw() + { + std::swap(cy_, c.cy_); + } + + static const currency_t& create_const_reference(const CY& s) throw() + { return *reinterpret_cast(&s); } + + static currency_t& create_reference(CY& s) throw() + { return *reinterpret_cast(&s); } + + //! \name Assignment Operators + //@{ + currency_t &operator=(double newVal) + { + currency_t c( newVal ); + swap(c); + return *this; + } + currency_t &operator=(long newVal) + { + currency_t c( newVal ); + swap(c); + return *this; + } + currency_t &operator=(int newVal) + { + currency_t c( newVal ); + swap(c); + return *this; + } + currency_t &operator=(const tagCY &newVal) throw() + { + cy_ = newVal; + return *this; + } + //@} + + /// \name Mathematical Operators + //@{ + currency_t &operator+=(const currency_t &cy) + { + currency_t c( *this + cy ); + swap(c); + return *this; + } + currency_t &operator-=(const currency_t &cy) + { + currency_t c( *this - cy ); + swap(c); + return *this; + } + currency_t &operator*=(const currency_t &cy) + { + currency_t c( *this * cy ); + swap(c); + return *this; + } + currency_t &operator*=(long cy) + { + currency_t c( *this * cy ); + swap(c); + return *this; + } + currency_t &operator*=(int val) + { + return operator*=((long)val); + } + currency_t &operator*=(double val) + { + cy_.int64 = (LONGLONG)(cy_.int64 * val); + return *this; + } + + currency_t &operator/=(int val) const + { + return operator/=((long)val); + } + currency_t &operator/=(long val) + { + + if(!valid()) + { + // Check for invalid number + return *this; + } + + // Check for divide by 0 + if (val == 0) + { + // Set to maximum negative value + cy_.Hi = 0x80000000; + cy_.Lo = 0x00000000; + + return *this; + } + cy_.int64/=val; + + return *this; + } + + currency_t operator+(const currency_t &cy)const + { + currency_t rv; + VarCyAdd(cy_,cy.cy_,&rv.cy_) | raise_exception ; + return rv; + } + currency_t operator-(const currency_t &cy)const + { + currency_t rv; + VarCySub(cy_,cy.cy_,&rv.cy_) | raise_exception ; + return rv; + } + currency_t operator*(const currency_t &cy)const + { + currency_t rv; + VarCyMul(cy_,cy.cy_,&rv.cy_) | raise_exception ; + return rv; + } + currency_t operator*(long cy)const + { + currency_t rv; + VarCyMulI4(cy_,cy,&rv.cy_) | raise_exception; + return rv; + } + currency_t operator*(int cy)const + { + return operator *((long)cy); + } + + currency_t operator*(double cy) const + { + currency_t val(*this); + val *=cy; + return val; + } + + + /// Calculate approximate ratio. + double operator/(const currency_t &cy)const + { + return ((double)cy_.int64 /(double)cy.cy_.int64); + } + + /// Divide by int. + currency_t operator/(int val) const + { + return operator/((long)val); + } + /// Divide by long. + currency_t operator/(long val) const + { + currency_t tmp(cy_); + tmp/=val; + return tmp; + } + + /// Divide by double + double operator/(double val) const + { + if(!valid()) + { + // Check for invalid number + throw std::invalid_argument("Invalid divide"); + } + + // Check for divide by 0 + if (val == 0) + { + throw std::overflow_error("Divide by 0"); + } + return cy_.int64/(val*10000); + } + + /// Unary negate. + currency_t operator-()const + { + currency_t cy; + VarCyNeg(cy_,&(cy.cy_)) | raise_exception; + return cy; + } + + //@} + + /** Rounds the value to specified number of decimal places. + * \param decimals Number of places to round to. + */ + currency_t &round_to(int decimals) + { + VarCyRound(cy_,decimals,&cy_) | raise_exception; + return *this; + } + + /// \name Logical Operators + //@{ + + bool operator!=(const currency_t &cy) const { return cmp(cy)!=0; } + bool operator!=(double val) const{ return cmp(val)!=0; } + bool operator==(const currency_t &cy) const { return cmp(cy)==0; } + bool operator==(double val) const{ return cmp(val)==0; } + bool operator<=(const currency_t &cy) const{ return cmp(cy)<=0; } + bool operator<=(double val) const{ return cmp(val)<=0; } + bool operator>=(const currency_t &cy) const{ return cmp(cy)>=0; } + bool operator>=(double val) const{ return cmp(val)>=0; } + bool operator<(const currency_t &cy) const{ return cmp(cy)<0; } + bool operator<(double val) const{ return cmp(val)<0; } + bool operator>(const currency_t &cy) const{ return cmp(cy)>0; } + bool operator>(double val) const{ return cmp(val)>0; } + + //@} + + /** Compares the value like strcmp. + * \param cy Number to be compared. + */ + int cmp(const currency_t &cy) const + { + return _cmpResult(VarCyCmp(cy_,cy.cy_)); + + } + + /** Compares the value like strcmp. + * \param cy Number to be compared. + */ + int cmp(double cy) const + { + return _cmpResult(VarCyCmpR8(cy_,cy)); + } + + + //! \name Access converters + //@{ + tagCY get() const { return cy_;} + tagCY in() const { return cy_;} + tagCY *in_ptr() const { return const_cast(&cy_);} + tagCY *out() { return &cy_;} + tagCY *inout() { return &cy_;} + //@} + + +#if 0 + friend std::ostream &operator <<(std::ostream &str, const currency_t &val) + { + std::string strval=val.format( 1, str.precision(), str.width() ); + return str<< strval.c_str(); + } +#endif + + + + friend + std::basic_ostream &operator<<(std::basic_ostream &str, const currency_t &val) + { + std::basic_string strval; + val.do_format(strval, 1, str.precision(), str.width() ); + return str << strval.c_str(); + } + + friend + std::basic_ostream &operator<<(std::basic_ostream &str, const currency_t &val) + { + std::basic_string strval; + val.do_format(strval, 1, str.precision(), str.width() ); + return str << strval.c_str(); + } + + //! Format the string with the given digits, precision and width. + std::basic_string format( + std::streamsize mindigits=0, std::streamsize minprecision=0, + std::streamsize width=0) const + { + std::basic_string strval; + do_format(strval, mindigits, minprecision, width); + return strval; + } + + //! Parse the string to a currency. + currency_t &parse( const bstr_t &str, LCID locale =::GetThreadLocale() ); +/* { + VarCyFromStr( str.in(), locale, 0, &cy_ ) | raise_exception; + return *this; + }*/ + + protected: + /** Return a string representation of the value. + * \param val output string (return values can't automatically detect template arguments) + * \param mindigits Minimum number before decimal point. + * \param minprecision Minimum number after decimal point. + * \todo Obey ostream formats for: fillchar(), ios_base::left, ios_base::internal, ios_base::showpos + */ + template + void do_format( + std::basic_string& val, std::streamsize mindigits, + std::streamsize minprecision, std::streamsize /*width*/) const + { + COMET_ASSERT(mindigits>=0 && minprecision >=0 ); + if(minprecision> 4) minprecision =4; + + // Add in the 4 fixed decimal points + std::streamsize pr = + ((0 <= minprecision && minprecision <=4) ? + (4-minprecision) : 0); + mindigits+=4; + + val.erase(); + val.reserve(22); + LONGLONG value=cy_.int64; + bool neg=value<0; + if(neg) + { + value=-value; + } + // Put in the digits backwards + std::streamsize digit=0; + bool output=false; + while(value !=0 || digit < mindigits) + { + CH dig=CH(value%10); + if(output || true==(output= (dig >0 || digit>=pr))) // Once 'output' is set - output everything. + { + val+=(CH('0'+dig)); + } + if(++digit == 4) + { + val+=CH('.'); + output=true; + } + value/=10; + } + if(neg) + { + val+=CH('-'); + } + + // Now reverse the digits + std::reverse(val.begin(), val.end()); + } + public: + + /// Returns true if this is a valid number + bool valid() const throw() + { return !(cy_.Hi==(long)0x80000000 && cy_.Lo==0);} + + /// Detaches the CY value. Provided for consistancy. + CY detach() throw() + { + CY val = cy_; + cy_.int64 = 0; + return val; + } + + /// Detaches the CY value. Provided for consistancy. + static CY detach(currency_t& cy) throw() + { + return cy.detach(); + } + + private: + CY cy_; + + static int _cmpResult(HRESULT hr) + { + if(SUCCEEDED(hr)) + { + switch(hr) + { + case VARCMP_LT: + return -1; + case VARCMP_EQ : + return 0; + case VARCMP_GT: + return 1; + case VARCMP_NULL: + COMET_ASSERT(!"What do we do with this?"); + } + } + else + { + hr | raise_exception; + } + return 0; // shut the compiler up + } + }; + //@} +} + +#endif // COMET_CURRENCY_H diff --git a/lib/local/CamCom/comet/date.h b/lib/local/CamCom/comet/date.h new file mode 100644 index 0000000..e577cac --- /dev/null +++ b/lib/local/CamCom/comet/date.h @@ -0,0 +1,396 @@ +/** \file + * Date wrapper (part of datetime). + */ +/* +* Copyright 2004 Michael Geddes +* +* This material is provided "as is", with absolutely no warranty +* expressed or implied. Any use is at your own risk. Permission to +* use or copy this software for any purpose is hereby granted without +* fee, provided the above notices are retained on all copies. +* Permission to modify the code and to distribute modified code is +* granted, provided the above notices are retained, and a notice that +* the code was modified is included with the above copyright notice. +* +* This header is part of Comet version 2. +* https://github.com/alamaison/comet +*/ + +#ifndef INCLUDE_COMET_DATE_H +#define INCLUDE_COMET_DATE_H + +#ifdef _SHOW_INC +#pragma message(" #Include " __FILE__) +#endif +#include + +namespace comet +{ + /*! \addtogroup Misc + */ + //@{ + + //! Wrapper for a date only class. + /**This is based on an integer version of DATE, except that it is an + * absolute offset from 1/1/0. + */ + struct dateonly_t : protected impl::datetime_base + { + + /// constructor + dateonly_t() { dt_ = 0; } + + /// Construct from a datetime_t. + explicit dateonly_t( const datetime_t &dt) + { + if (dt == dt_invalid ) + dt_ = dt_invalid_; + else if (dt == dt_null) + dt_ = dt_null_; + else + dt_ = split_oledate_as_absdate_( dt.get()); + } + + /// Attach from a long. + dateonly_t( const impl::auto_attach_t &dateval) + { + dt_ = dateval.get(); + } + + /// Get the raw 'long' value. + long get() const { return dt_; } + dateonly_t &operator=(const impl::auto_attach_t & dateval) + { + dt_ = dateval.get(); + return *this; + } + + /// Initialise as invalid. + dateonly_t( dt_invalid_t ) { dt_ = dt_invalid_; } + /// Initialise as null. + dateonly_t( dt_null_t ) { dt_ = dt_null_; } + /// Initialise as zero. + dateonly_t( dt_zero_t) { dt_ = 0; } + + + /// Construct from year/month/day. + dateonly_t( int year, int month, int day ) + { + if (!absdate_from_date_( &dt_, year, month, day)) + set_invalid_(); + } + + /// Get a 'NULL' datetime. + static dateonly_t get_null() { return dateonly_t( dt_null_ ); } + /// Get a 'zero' datetime. + static dateonly_t get_zero() { return dateonly_t( 0 ); } + + /// Return today. + static dateonly_t today() + { + return dateonly_t(datetime_t::now()); + } + /// Return today (UTC). + static dateonly_t today_utc() + { + return dateonly_t(datetime_t::now_utc()); + } + + /// Return year/month/day values. + void split(int *year, int *month, int *day) const + { + if(!good() || ! date_from_absdate_( dt_, year, month, day)) + throw datetime_exception("Invalid Date"); + } + + /** Set date part as year/month/day. + * \param year Year (from year 0 - as in 2000). + * \param month Month of year (1-based). + * \param day Day of month (1-based). + * \retval true Successfully set date. + * \retval false Conversion unsuccessful - date not set. + */ + bool set_date( int year, int month, int day) + { + return absdate_from_date_( &dt_, year, month, day); + } + + /// Convert to datetime. + operator datetime_t() const + { + if (!good()) return datetime_t((DATE)dt_); + return datetime_t(join_absdate_as_oledate_( dt_, 0)); + } + + /// \name Access date parts. + //@{ + /// Year. + int year() const + { + int year; + split(&year,NULL,NULL); + return year; + } + /// Month of year (1-based) + int month() const + { + int year,month,day; + split(&year,&month,&day); + return month; + } + /// Day of month (1-based) + int day() const + { + int year,month,day; + split(&year,&month,&day); + return day; + } + /// The day of week. + datetime_t::day_of_week dow() const + { + int wday; + if(!good() || ! dow_from_absdate_( dt_, &wday)) + throw datetime_exception("Invalid Date"); + return datetime_t::day_of_week(wday); + } + /// Day of the year (0 -based) + int year_day() const + { + if (good()) + { + int y,m,d; + date_from_absdate_(dt_, &y,&m,&d); + long firstday; + if ( absdate_from_date_(&firstday, y, 1, 1)) + return 1 + ( dt_ - firstday); + } + throw datetime_exception("Invalid Date"); + } + /// Days in the month. + int days_in_month() const + { + int year,month,day; + split(&year,&month,&day); + return days_in_month(year,month); + } + + //@} + + /** Add specified number of months. + * If the day is not valid, force to the last day in the month. + */ + dateonly_t &add_months(int inc_months) + { + int year,month,day; + split(&year,&month,&day); + long months = (month-1)+(year*12)+inc_months; + + long quot,rem; + quot = months/12; + rem = months%12; + set_date( quot, rem+1, day); + return *this; + } + + /// Add specified number of years. + dateonly_t &add_years(int inc_years) + { + int year,month,day; + split(&year,&month,&day); + set_date( year+inc_years, month, day); + return *this; + } + + ///\name Comparison operators + //@{ + bool operator==(const dateonly_t& date) const { return date.dt_ == dt_; } + bool operator!=(const dateonly_t& date) const{ return date.dt_ != dt_; } + bool operator<(const dateonly_t& date) const + { + COMET_ASSERT( good() ); + COMET_ASSERT( date.good() ); + return dt_ < date.dt_; + } + bool operator>(const dateonly_t& date) const + { + COMET_ASSERT( good() ); + COMET_ASSERT( date.good() ); + return dt_ > date.dt_; + } + bool operator<=(const dateonly_t& date) const + { + COMET_ASSERT( good() ); + COMET_ASSERT( date.good() ); + return dt_ <= date.dt_; + } + bool operator>=(const dateonly_t& date) const + { + COMET_ASSERT( good() ); + COMET_ASSERT( date.good() ); + return dt_ >= date.dt_; + } + bool operator==(dt_invalid_t) const { return invalid(); } + bool operator!=(dt_invalid_t) const { return !invalid(); } + bool operator==(dt_zero_t) const { return dt_==0; } + bool operator!=(dt_zero_t) const { return dt_!=0; } + bool operator==(dt_null_t) const { return null(); } + bool operator!=(dt_null_t) const { return !null(); } + //@} + + ///\name Arithmetic operators + //@{ + dateonly_t operator+(long dateSpan) const + { + dateonly_t dt(*this); + dt+=dateSpan; + return dt; + } + dateonly_t operator-(long dateSpan) const + { + dateonly_t dt(*this); + dt-=dateSpan; + return dt; + } + dateonly_t& operator+=(long dateSpan) + { + COMET_ASSERT( good() ); + dt_ += dateSpan; + return *this; + } + dateonly_t& operator-=(long dateSpan) + { + COMET_ASSERT( good() ); + dt_ -= dateSpan; + return *this; + } + long operator-(const dateonly_t& date) const + { + COMET_ASSERT( good() ); + COMET_ASSERT( date.good() ); + return dt_ - date.dt_; + } + dateonly_t &operator++() + { + COMET_ASSERT( good() ); + ++dt_; + return *this; + } + dateonly_t operator++(int) + { + COMET_ASSERT( good() ); + dateonly_t t(*this); + ++dt_; + return t; + } + dateonly_t &operator--() + { + COMET_ASSERT( good() ); + --dt_; + return *this; + } + dateonly_t operator--(int) + { + COMET_ASSERT( good() ); + dateonly_t t(*this); + --dt_; + return t; + } + //@} + + /// return true if the date is marked 'invalid'. + inline bool invalid() const { return dt_ == ( dt_invalid_); } + /// Return true if the date is marked 'null' + inline bool null() const { return dt_ == ( dt_null_); } + + /// return true if date is zero + inline bool zero() const { return dt_ == 0; } + + /// Return true if the date is usable. + inline bool good() const + { + switch (dt_) + { + case 0: case dt_invalid_: case dt_null_: return false; + default: return true; + } + } + + /** Format as bstr. + * \param flags Format (can be or-ed). All format_flags are valid. + * \param locale Locale ID (default to User Default. + */ + bstr_t format( datetime_t::format_flags flags = datetime_t::ff_default , LCID locale = LOCALE_USER_DEFAULT) const + { + flags = datetime_t::format_flags((flags | datetime_t::ff_date_only) & ~datetime_t::ff_time_only); + bstr_t strDate; + if (null() || invalid()) + return strDate; + + DATE dt = join_absdate_as_oledate_( dt_, 0); + VarBstrFromDate(dt, locale, flags, strDate.out()) | raise_exception; + return strDate; + } + + /** Parse bstring to a datetime_t. + * \param val String to parse. + * \param flags valid format_flags are: ff_default, ff_system_locale, ff_hijri, ff_time_only, ff_date_only + * \param locale Locale to use. Default \p locale is the user default. + */ + dateonly_t &parse( const bstr_t &val, datetime_t::format_flags flags = datetime_t::ff_default, LCID locale = LOCALE_USER_DEFAULT) + { + flags = datetime_t::format_flags((flags | datetime_t::ff_date_only) & ~datetime_t::ff_time_only); + DATE dt; + VarDateFromStr( val.in(), locale, flags, &dt) | raise_exception; + dt_ = split_oledate_as_absdate_( dt); + + return *this; + } + + /** Format as basic_string. + * \param fmt See system documentation for strftime for details. + */ + template + std::basic_string format( const std::basic_string &fmt ) const + { + return format(fmt.c_str()); + } + + /** Format as basic_string. + * \param fmt See system documentation for strftime for details. + */ + template + std::basic_string format( const CHAR *fmt ) const + { + // Just use datetime_t to handle this. + datetime_t dt(*this); + return dt.format(fmt); + } + + /// Stream operator. + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const dateonly_t &val) + { + os << val.format(); + return os; + } + + /// Stream operator. + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const dateonly_t &val) + { + os << val.format(); + return os; + } + + static inline int days_in_month(int year, int month) + { + return impl::datetime_base::days_in_month(year,month); + } + + protected: + explicit dateonly_t(long l) { dt_ = l; } + }; + //@} +}; + +#endif /* INCLUDE_COMET_DATE_H */ diff --git a/lib/local/CamCom/comet/datetime.h b/lib/local/CamCom/comet/datetime.h new file mode 100644 index 0000000..351a9d1 --- /dev/null +++ b/lib/local/CamCom/comet/datetime.h @@ -0,0 +1,1943 @@ +/** \file + * Wrappers for DATE. + */ + +/* Copyright 2001 Michael Geddes + * + * This class was originally based on ATL/MFC code, however the original + * implementations have almost entirely been replaced with more efficient code. + * The core date algorithms are from boost. + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ +#ifndef COMET_DATETIME_H +#define COMET_DATETIME_H + +#include +#include +#include + +#include +#include + +// The Platform SDK does not define VAR_FOURDIGITYEARS +#ifndef VAR_FOURDIGITYEARS +#define VAR_FOURDIGITYEARS ((DWORD)0x00000040) +#endif + +namespace comet +{ + +#define COMET_DIVMOD_( quot,rem, val1, val2) quot = (val1)/(val2); rem = (val1)%(val2); + + +/*! \addtogroup ErrorHandling + */ +//@{ +//! Exception for datetimes. +class datetime_exception : public std::exception +{ +public: + datetime_exception( const char *desc) : desc_(desc) + {} + + const char* what() const throw() + { + return desc_.c_str(); + } + +private: + std::string desc_; +}; + +//@} + +/*! \addtogroup COMType + */ +//@{ +/// Initialise date/time value as invalid. +static struct dt_invalid_t {} dt_invalid; +/// Initialise date/time value as null. +static struct dt_null_t {} dt_null; +/// Initialise date/time value as zero. +static struct dt_zero_t { + operator double() const { return 0.;} + operator long() const { return 0;} +} dt_zero; + +// timeperiod_t +///////////////// + +/** \class timeperiod_t datetime.h comet/datetime.h + * Time-period. Used with datetime_t math. + */ +class timeperiod_t +{ + enum { + dt_invalid_ = 2147483647L, + }; + /// Days. + double pd_; +public: + /// Default Constructor. + timeperiod_t() : pd_(0.){} + + /// Construct invalid + timeperiod_t( dt_invalid_t ) : pd_(dt_invalid_) {} + /// Construct zero + timeperiod_t( dt_zero_t) : pd_(0.) {} + + timeperiod_t( double period) :pd_(period){} + timeperiod_t( float period) :pd_(period){} + timeperiod_t( long period) :pd_(period){} + timeperiod_t( int period) :pd_(period){} + timeperiod_t( short period) :pd_(period){} + timeperiod_t( unsigned long period) :pd_(period){} + timeperiod_t( unsigned int period) :pd_(period){} + timeperiod_t( unsigned short period) :pd_(period){} + + timeperiod_t( long days, long hours) + : pd_(days + hours/24){} + timeperiod_t( long days, long hours, long minutes) + : pd_(days + (hours*60+minutes)/(24.*60.)){} + timeperiod_t( long days, long hours, long minutes, long seconds, long milliseconds=0 ) + : pd_(days + ((hours*3600000L) + (minutes*60000L)+ (seconds*1000L)+ milliseconds)/86400000.){} + + /// \name Assignment operators + //@{ + timeperiod_t &operator =( const double &period){pd_=period; return *this;} + timeperiod_t &operator =( float period){pd_=period; return *this;} + timeperiod_t &operator =( long period){pd_=period; return *this;} + timeperiod_t &operator =( int period){pd_=period; return *this;} + timeperiod_t &operator =( short period){pd_=period; return *this;} + //@} + + /// Return time-period as a double (days). + operator double() const{return pd_;} + + /// \name Comparison operators. + //@{ + bool operator ==(const timeperiod_t &prd) const { return pd_ == prd.pd_; } + bool operator !=(const timeperiod_t &prd) const { return pd_ != prd.pd_; } + bool operator < (const timeperiod_t &prd) const { return pd_ < prd.pd_; } + bool operator > (const timeperiod_t &prd) const { return pd_ > prd.pd_; } + bool operator <=(const timeperiod_t &prd) const { return pd_ <= prd.pd_; } + bool operator >=(const timeperiod_t &prd) const { return pd_ >= prd.pd_; } + bool operator ==(dt_invalid_t) const { return pd_ == dt_invalid_; } + bool operator !=(dt_invalid_t) const { return pd_ != dt_invalid_; } + + // These shouldn't be needed. + template bool operator < (T prd) const { return pd_ < double(prd); } + template bool operator <= (T prd) const { return pd_ <= double(prd); } + template bool operator > (T prd) const { return pd_ > double(prd); } + template bool operator >= (T prd) const { return pd_ >= double(prd); } + template bool operator == (T prd) const { return pd_ == double(prd); } + template bool operator != (T prd) const { return pd_ != double(prd); } + + //@} + /// \name Simple math operators. + //@{ + timeperiod_t operator+(const timeperiod_t &prd) const { return pd_ + prd.pd_; } + timeperiod_t operator-(const timeperiod_t &prd) const { return pd_ - prd.pd_; } + timeperiod_t &operator+=(const timeperiod_t &prd) { pd_ += prd.pd_; return *this; } + timeperiod_t &operator-=(const timeperiod_t &prd) { pd_ -= prd.pd_; return *this; } + timeperiod_t operator-() const { return -pd_; } + //@} + + /// \name Conversion functions + //@{ + double as_days() { return pd_; } + void as_days(double prd) { pd_=prd; } + double as_hours() { return pd_*24; } + void as_hours(double prd) { pd_= prd/24; } + double as_minutes() { return pd_*24*60; } + void as_minutes(double prd) { pd_= prd/(24*60); } + double as_seconds() { return pd_*24*60*60; } + void as_seconds(double prd) { pd_= prd/(24*60*60); } + //@} + + /// Split up the time period into days/hours/minutes/seconds. + /** Backwards compatible. + * \deprecated + */ + void split( long& days, long& hours, long& minutes, long& seconds ) + { + split(&days,&hours,&minutes,&seconds); + } + /// Split up the time period into days/hours/minutes/seconds. + void split( long *days, long *hours, long *minutes, long *seconds, long *milliseconds = 0) + { + // Split into days and milliseconds. + double int_part; + long mspart = long(modf(pd_, &int_part) * 86400000); + *days = long(int_part); + // Optimise for integer. + if (mspart == 0 ) + { + *days = *hours = *minutes = *seconds = 0; + if (milliseconds!=NULL) *milliseconds =0; + return; + } + // Split up parts. + long ms, quot, quot2; + COMET_DIVMOD_(quot, ms, mspart, 1000); + COMET_DIVMOD_(quot2, *seconds, quot, 60); + COMET_DIVMOD_( *hours, *minutes, quot2, 60); + if( milliseconds != NULL) + *milliseconds = ms; + } + + /// Set as days/hours/minutes/seconds. + void set_period( long days, long hours, long minutes, long seconds, long milliseconds=0 ) + { + pd_ = days + ((hours*3600000L) + (minutes*60000L)+ (seconds*1000L)+ milliseconds)/86400000.; + } + + /// Return true if the period is invalid. + bool invalid() const + { + return pd_ == (double)(dt_invalid_); + } + /// Return true if the period is not invalid. + bool good() const + { + return !invalid(); + } + /** return true if the period is valid. + * \deprecated + */ + bool valid() const { return !invalid(); } + + /// Return an invalid period. + static timeperiod_t invalid_period() { return timeperiod_t( (double)(dt_invalid_)); } + +}; + + +/// A wrapper for choosing strftime/wcsftime based on char type. +template< typename CHAR > +inline size_t str_formattime( CHAR *strDest, size_t maxsize, const CHAR *format, const struct tm *timeptr ) +{ + return -1; +} +/// @if Internal +template<> +inline size_t str_formattime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr ) +{ + return strftime( strDest, maxsize, format, timeptr ); +} + +template<> +inline size_t str_formattime( wchar_t *strDest, size_t maxsize, const wchar_t *format, const struct tm *timeptr ) +{ + return wcsftime( strDest, maxsize, format, timeptr ); +} + +namespace impl { +// Internally used to group div/mod so optimiser is likely to pick it up. + + const double half_millisecond = 1.0/172800000.0; + + template + struct datetime_base + { + T dt_; + + enum convert_mode { + cmBoth, + cmOnlyTime, + cmOnlyDate + }; + + + /*! Convert absolute date to date-parts. + */ + static bool date_from_absdate_( long daysAbsolute, int *tm_year, int *tm_mon, int *tm_mday ); + + /*! Convert absolute date to day-of-week. + */ + static bool dow_from_absdate_( long daysAbsolute, int *tm_wday) + { + // Calculate the day of week (sun=0, mon=1...) + // -1 because 1/1/0 is Sat. + *tm_wday = (int)((daysAbsolute + 1) % 7L); + return true; + } + + /*! Convert date parts to absolute date. + */ + static bool absdate_from_date_( long *daysAbsolute, int tm_year, int tm_mon, int tm_mday); + + /*! Convert time in milliseconds to time of day parts. + */ + static bool time_from_milliseconds_( long milliseconds, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms); + /*! Convert time-of-day parts to milliseconds. + */ + static bool milliseconds_from_time_( long *milliseconds, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms); + + /*! Convert ole date to datetime-parts. + */ + static bool datetime_from_oledate_( DATE date, int *tm_year, int *tm_mon, int *tm_mday, int *tm_dow, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms, convert_mode mode); + + /*! Get date part of oledate. + */ + static inline long split_oledate_as_absdate_( DATE date ) + { + double val = to_double(date)+ (693959 + 1721060) + half_millisecond; // Add days from 1/1/0 to 12/30/1899 + return long(floor(val)); + } + /*! Split oledate into date/milliseconds. + */ + static inline long split_oledate_as_absdate_( DATE date, long *ms_part,bool need_ms_part ) + { + double val = to_double(date)+ (693959 + 1721060) + half_millisecond; // Add days from 1/1/0 to 12/30/1899 + if (!need_ms_part) return long(floor(val)); + *ms_part = long(modf(val, &val) * 86400000); + return long(val); + } + + /*! Join oledate. + */ + static inline DATE join_absdate_as_oledate_( long absDate, long ms_part) + { + return to_date( (double(absDate) + (ms_part / 86400000.)) - 693959 - 1721060 ); + } + + + /*! Convert datetime-parts to ole date. + */ + static bool oledate_from_datetime_( DATE *date, unsigned short tm_year, unsigned short tm_mon, unsigned short tm_mday, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms, convert_mode mode); + + /*! Convert TM to OLE date. + * Sets the date to invalid if unsuccessful. + * \retval true Successful conversion. + */ + static bool from_tm_( const struct tm &src, DATE *dt, convert_mode mode); + + /*! Convert OLE date to TM. + * \retval true Successful conversion. + */ + static bool to_tm_( DATE dt, struct tm *dest, int *ms); + + void set_invalid_() { dt_ = ((T) dt_invalid_); } + void set_null_() { dt_ = ((T) dt_null_); } + + /// Convert offset from 0 to DATE type. + static DATE to_date( double dbl) + { + if(dbl>0) return dbl; + double t=floor(dbl); + return t+(t-dbl); + } + /// Convert DATE type to offset from 0. + static double to_double( DATE dt) + { + if(dt>=0) return dt; + double t = ceil(dt); + return t-(dt-t); + } + + /// Set to value \a dt and check the range. + bool set_check_range_( T dt) + { + bool result = (dt <= dt_max && dt >= dt_min); + if (result) + dt_ = dt; + return result; + } + /// Set the value to \a dt and set 'invalid' if out of range. + void set_invalid_check_range_(T dt) + { + if (!set_check_range_(dt) ) + set_invalid_(); + } + + /// Return true if \a year is a leap-year. + static bool is_leap_year( long year) + { + if ((year & 0x3) != 0) return false; + // && ((year % 100) != 0 || (year % 400) == 0); + long quot,rem; + COMET_DIVMOD_(quot,rem, year, 100); + if (rem != 0) return true; + return ((quot & 0x3) == 0); + } + + enum { + dt_max = 2958465L, // about year 9999 + dt_null_ = 2147483648L, + dt_invalid_ = 2147483647L, + dt_min = (-657434L) // about year 100 + }; + + + static int days_in_month(int year, int month) + { + switch (month) + { + case 2: return (is_leap_year(year)?29:28); + case 4: case 6: case 9: case 11: + return 30; + default:return 31; + }; + } + + }; + //! @endif + + + // Convert TM to OLE date + template + bool + datetime_base::from_tm_( const struct tm &src, DATE *dt, convert_mode mode) + { + return oledate_from_datetime_( dt, unsigned short(src.tm_year + 1900),unsigned short( src.tm_mon+1),unsigned short( src.tm_mday),unsigned short( src.tm_hour),unsigned short( src.tm_min),unsigned short( src.tm_sec), 0U, mode); + } + + // Convert OLE date to TM. \retval true Successful conversion. + template + bool + datetime_base::to_tm_( DATE dt, struct tm *dest, int *ms) + { + int y,m,d; + if ( !datetime_from_oledate_( dt, &y, &m, &d, &dest->tm_wday, &dest->tm_hour, &dest->tm_min, &dest->tm_sec, NULL, cmBoth) ) + return false; + dest->tm_year = y; + dest->tm_mon = m; + dest->tm_mday = d; + + + if (dest->tm_year != 0) + { + long firstday, thisday; + absdate_from_date_( &thisday, y,m,d); + absdate_from_date_(&firstday, y, 1, 1); + dest->tm_yday = 1+ ( thisday - firstday); + // Convert afx internal tm to format expected by runtimes (_tcsftime, etc) + dest->tm_year -= 1900; // year is based on 1900 + dest->tm_mon -= 1; // month of year is 0-based + dest->tm_isdst = -1; // Don't know DST status. + } + else + dest->tm_yday = 0; + return true; + } + + // Convert OLE date to date-parts. + template + bool + datetime_base::date_from_absdate_(long daysAbsolute , int *tm_year, int *tm_mon, int *tm_mday) + { + // These algorithms are taken from the gregorian_calendar + // calculations in boost. + typedef long date_int_type; + typedef int year_type; + date_int_type dayNumber = daysAbsolute; + date_int_type a = dayNumber + 32044 ; + date_int_type b = (4*a + 3)/146097; + date_int_type c = a-((146097*b)/4); + date_int_type d = (4*c + 3)/1461; + date_int_type e = c - (1461*d)/4; + date_int_type m = (5*e + 2)/153; + *tm_mday = static_cast(e - ((153*m + 2)/5) + 1); + *tm_mon = static_cast(m + 3 - 12 * (m/10)); + *tm_year = static_cast(100*b + d - 4800 + (m/10)); + return true; + } + + // Convert date parts to absolute date. + template + bool + datetime_base::absdate_from_date_( long *daysAbsolute, int tm_year, int tm_month, int tm_mday) + { + // These algorithms are taken from the gregorian_calendar + // calculations in boost. + unsigned short a = static_cast((14-tm_month)/12); + unsigned short y = static_cast(tm_year + 4800 - a); + unsigned short m = static_cast(tm_month + 12*a - 3); + unsigned long d = tm_mday + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045; + + *daysAbsolute = d; + + return true; + } + + // Convert OLE time to time of day parts. + template + bool + datetime_base::time_from_milliseconds_( long milliseconds, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms) + { + if (milliseconds == 0 ) + { + *tm_hour = *tm_min = *tm_sec = 0; + if (tm_ms!=NULL) *tm_ms =0; + return true; + } + long ms, quot, quot2; + COMET_DIVMOD_(quot, ms, milliseconds, 1000); + COMET_DIVMOD_(quot2, *tm_sec, quot, 60); + COMET_DIVMOD_( *tm_hour, *tm_min, quot2, 60); + if( tm_ms != NULL) + *tm_ms = ms; + return true; + } + + // Convert time-of-day parts to milliseconds. + template + bool + datetime_base::milliseconds_from_time_( long *milliseconds, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms) + { + if ( tm_hour > 23 || tm_min > 59 || tm_sec> 59) return false; + + *milliseconds = (tm_hour* 3600000L) + (tm_min*60000L)+ (tm_sec*1000)+ tm_ms; + return true; + } + + // + template + bool + datetime_base::datetime_from_oledate_( DATE date, int *tm_year, int *tm_mon, int *tm_mday, int *tm_wday, int *tm_hour, int *tm_min, int *tm_sec, int *tm_ms, convert_mode mode) + { + long datePart, msPart; + datePart = split_oledate_as_absdate_(date, &msPart, mode != cmOnlyDate); + if ( mode != cmOnlyDate && !time_from_milliseconds_( msPart, tm_hour, tm_min, tm_sec, tm_ms)) + return false; + return (mode == cmOnlyTime) || (date_from_absdate_( datePart, tm_year, tm_mon, tm_mday)) && ( (tm_wday==NULL) || dow_from_absdate_(datePart, tm_wday)); + } + + // Convert datetime-parts to ole date. + template + bool + datetime_base::oledate_from_datetime_( DATE *date, unsigned short tm_year, unsigned short tm_mon, unsigned short tm_mday, unsigned short tm_hour, unsigned short tm_min, unsigned short tm_sec, unsigned short tm_ms, convert_mode mode) + { + long datePart = 0, timePart = 0; + if (mode != cmOnlyDate && !milliseconds_from_time_( &timePart, tm_hour, tm_min, tm_sec, tm_ms)) + return false; + if (mode != cmOnlyTime && !absdate_from_date_( &datePart, tm_year, tm_mon, tm_mday)) + return false; + *date = join_absdate_as_oledate_(datePart, timePart); + return true; + } +} + + +/** \class datetime_t datetime.h comet\datetime.h + * Wrapper for DATE. + * DATE/TIME Represented as days + fraction of days. + */ +class datetime_t : private impl::datetime_base +{ +public: + + /// UTC/Local conversion mode. + struct utc_convert_mode + { + enum type + { + none, ///< No conversion. + local_to_utc, ///< Convert from local to utc. + utc_to_local ///< Convert from utc to local. + }; + }; + + /// Describe how to get the timezone bias. + struct timezone_bias_mode + { + enum type + { + standard, ///< Standard timezone offset + daylight_saving ///< Summer timezone offset + }; + }; + + /// Root which a time uses as an offset. + struct locality + { + enum type + { + utc, ///< A local timezone date/time. + local ///< A UTC date/time. + }; + }; + + /** \name Constructors. + * Attach to various system date/time types. + */ + //@{ + /// Constructor + datetime_t() { dt_ = 0.;} + + /// Constructor from raw DATE type. + explicit datetime_t(DATE date) + { + dt_ = date; + } + + //! Construct from date/time components. + /** If conversion fails, an valid() will return false. + */ + explicit datetime_t(int year, int month, int day, int hours=-1, int minutes=0, int seconds=0, int milliseconds=0) + { + if (!oledate_from_datetime_( &dt_, (unsigned short)year, (unsigned short)month, + (unsigned short)day, (unsigned short)hours, (unsigned short)minutes, (unsigned short)seconds, (unsigned short) milliseconds, + (hours < 0)?cmOnlyDate:cmBoth )) + set_invalid_(); + } + + /// Initialise as invalid. + datetime_t( dt_invalid_t) { dt_ = dt_invalid_; } + /// Initialise as null. + datetime_t( dt_null_t) { dt_ = dt_null_; } + /// Initialise as zero. + datetime_t( dt_zero_t) { dt_ = 0.; } + + /// Get a 'NULL' datetime. + static datetime_t get_null() { return datetime_t( DATE(dt_null_) ); } + /// Get a 'zero' datetime. + static datetime_t get_zero() { return datetime_t( DATE(0) ); } + + + //! Construct from a SYSTEMTIME. + /** Defaults to no conversion! + * \sa from_systemtime to_systemtime + */ + explicit datetime_t(const SYSTEMTIME& systimeSrc) + { + if (!from_systemtime(systimeSrc)) + set_invalid_(); + } + + /** + * Construct from a @e SYSTEMTIME. + * + * @param source + * @e SYSTEMTIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + */ + explicit datetime_t( + const SYSTEMTIME& source, utc_convert_mode::type utc_mode, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + if (!from_systemtime(source, utc_mode, conversion_time, utc_or_local)) + set_invalid_(); + } + + /** + * Construct from a @e SYSTEMTIME. + * + * @param source + * @e SYSTEMTIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param bias_mode + * Specify whether the local time is daylight/standard time. + */ + explicit datetime_t( + const SYSTEMTIME& source, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) + { + if (!from_systemtime(source, utc_mode, bias_mode)) + set_invalid_(); + } + + /** + * Construct from a @e FILETIME. + * + * Defaults to no timezone conversion. FILETIME values are a tricky beast. + * FILETIMEs on FAT are local, as are ZIP files (mostly). On shares and + * NTFS, they are UTC. + * + * @param source + * @e FILETIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + * + * @sa from_filetime to_filetime + */ + explicit datetime_t( + const FILETIME& source, + utc_convert_mode::type utc_mode=utc_convert_mode::none, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + if (!from_filetime(source, utc_mode, conversion_time, utc_or_local)) + set_invalid_(); + } + + /** + * Construct from a @e FILETIME. + * + * Defaults to no timezone conversion. FILETIME values are a tricky beast. + * FILETIMEs on FAT are local, as are ZIP files (mostly). On shares and + * NTFS, they are UTC. + * + * @param source + * @e FILETIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param bias_mode + * Specify whether the local time is daylight/standard time. + * + * @sa from_filetime to_filetime + */ + explicit datetime_t( + const FILETIME& source, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) + { + if (!from_filetime(source, utc_mode, bias_mode)) + set_invalid_(); + } + + /** + * Construct from a Unix time. + * + * Defaults to conversion from utc to local time as time_t is in UTC. + * + * @param source + * Unix time being converted. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + * + * @sa from_unixtime to_unixtime + */ + explicit datetime_t( + time_t source, + utc_convert_mode::type utc_mode=utc_convert_mode::utc_to_local, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + if (!from_unixtime(source, utc_mode, conversion_time, utc_or_local)) + set_invalid_(); + } + + /** + * Construct from a Unix time. + * + * Defaults to conversion from utc to local time as time_t is in UTC. + * + * @param source + * Unix time being converted. + * @param utc_mode + * Timezone conversion mode. + * @param bias_mode + * Specify whether the local time is daylight/standard time. + * + * @sa from_unixtime to_unixtime + */ + explicit datetime_t( + time_t source, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) + { + if (!from_unixtime(source, utc_mode, bias_mode)) + set_invalid_(); + } + + //! Copy constructor. + datetime_t(const datetime_t& date) + { + dt_ = date.dt_; + } + + //@} + + /// Create a const reference. + static const datetime_t& create_const_reference(const DATE& s) throw() + { return *reinterpret_cast(&s); } + /// Create a non-const reference. + static datetime_t& create_reference(DATE& s) throw() + { return *reinterpret_cast(&s); } + + /// Day-of-week enumeration. + enum day_of_week { + dow_sun=0, dow_mon, dow_tue, dow_wed, dow_thu, dow_fri, dow_sat + }; + + /// Return the current time. + static datetime_t now() + { + SYSTEMTIME lt; + ::GetLocalTime(<); + return datetime_t(lt); + } + /// Return the current utc time. + static datetime_t now_utc() + { + SYSTEMTIME lt; + ::GetSystemTime(<); + return datetime_t(lt); + } + + /** Add specified number of months. + * If the day is not valid (ie 1 month from 31 December) + * an exception will be thrown. + * \todo Add an enum to be more smart about this. + */ + datetime_t &add_months(int inc_months) + { + int year,month,day; + + split_date(&year,&month,&day); + long months = (month-1)+(year*12)+inc_months; + + long quot,rem; + COMET_DIVMOD_(quot, rem, months, 12); + if(!set_date( quot, rem+1, day)) + throw datetime_exception("Invalid Date"); + + return *this; + } + + /// Add specified number of years. + datetime_t &add_years(int inc_years) + { + int year,month,day; + split_date(&year,&month,&day); + if(!set_date( year+inc_years, month, day)) + throw datetime_exception("Invalid Date"); + return *this; + } + + /// Return year/month/day values. + void split_date(int *year, int *month, int *day) const + { + if (good()) + { + long datePart = split_oledate_as_absdate_(dt_); + if (date_from_absdate_( datePart, year, month, day) ) + return; + } + throw datetime_exception("Invalid Date"); + } + + /// Return hours/minutes/second values. + void split_time( int *hours, int *minutes, int *seconds, int *milliseconds=NULL) const + { + if(!good() || !datetime_from_oledate_(dt_, NULL, NULL, NULL, NULL, hours, minutes, seconds, milliseconds, cmOnlyTime)) + throw datetime_exception("Invalid DateTime"); + } + /// Return date/time split up. + void split(int *year, int *month, int *day, int *hours, int *minutes, int *seconds, int *milliseconds=NULL) + { + if(!good() || !datetime_from_oledate_(dt_, year, month, day, NULL, hours, minutes, seconds, milliseconds, cmBoth)) + throw datetime_exception("Invalid DateTime"); + } + + + /// \name Access date/time parts. + //@{ + /// Year. + int year() const + { + int year,month,day; + split_date(&year,&month,&day); + return year; + } + /// Month of year (1-based) + int month() const + { + int year,month,day; + split_date(&year,&month,&day); + return month; + } + /// Day of month (1-based) + int day() const + { + int year,month,day; + split_date(&year,&month,&day); + return day; + } + /// Hour part of time (0-based) ??? + int hour() const + { + int hours,minutes,seconds; + split_time(&hours,&minutes,&seconds); + return hours; + } + /// Minute part of time (0-based) + int minute() const + { + int hours,minutes,seconds; + split_time(&hours,&minutes,&seconds); + return minutes; + } + /// Second + int second() const + { + int hours,minutes,seconds; + split_time(&hours,&minutes,&seconds); + return seconds; + } + /// Milliseconds + int millisecond() const + { + int hours,minutes,seconds,ms; + split_time(&hours,&minutes,&seconds,&ms); + return ms; + } + + /// The day of week. + day_of_week dow() const + { + long datePart; + datePart = split_oledate_as_absdate_(dt_); + int wday; + if(!good() || !dow_from_absdate_(datePart, &wday)) + throw datetime_exception("Invalid Date"); + return day_of_week(wday); + } + /// Day of the year (0 -based) + int year_day() const + { + if (good()) + { + long datepart = split_oledate_as_absdate_(dt_); + int y,m,d; + date_from_absdate_(datepart, &y,&m,&d); + long firstday; + if ( absdate_from_date_(&firstday, y, 1, 1)) + return 1+ ( datepart - firstday); + } + throw datetime_exception("Invalid Date"); + } + /// Days in the month; + int days_in_month() + { + int year,month,day; + split_date(&year,&month,&day); + return impl::datetime_base::days_in_month(year,month); + } + //@} + static inline int days_in_month(int year, int month) + { + return impl::datetime_base::days_in_month(year,month); + } + + /// \name Assignment operators + //@{ + + datetime_t &operator=( const datetime_t& date) + { + dt_ = date.dt_; + return *this; + } + + datetime_t &operator=( DATE date ) + { + set_invalid_check_range_(date); + return *this; + } + //@} + + ///\name Comparison operators + //@{ + bool operator==(const datetime_t& date) const{ return date.dt_==dt_; } + bool operator!=(const datetime_t& date) const{ return date.dt_!=dt_; } + bool operator<(const datetime_t& date) const { return to_double(dt_)(const datetime_t& date) const{ return to_double(dt_)>to_double(date.dt_); } + bool operator<=(const datetime_t& date) const{ return to_double(dt_)<=to_double(date.dt_); } + bool operator>=(const datetime_t& date) const{ return to_double(dt_)>=to_double(date.dt_); } + bool operator==(dt_invalid_t) const { return invalid(); } + bool operator!=(dt_invalid_t) const { return !invalid(); } + bool operator==(dt_zero_t) const { return dt_==0.; } + bool operator!=(dt_zero_t) const { return dt_!=0.; } + bool operator==(dt_null_t) const { return null(); } + bool operator!=(dt_null_t) const { return !null(); } + //@} + + ///\name Arithmetic operators + //@{ + datetime_t operator+(const timeperiod_t& dateSpan) const + { + datetime_t dt(*this); + dt+=dateSpan; + return dt; + } + datetime_t operator-(const timeperiod_t& dateSpan) const + { + datetime_t dt(*this); + dt-=dateSpan; + return dt; + } + datetime_t& operator+=(const timeperiod_t &dateSpan) + { + COMET_ASSERT( good() ); + if(!good()) + set_invalid_(); + else + set_invalid_check_range_(to_date( to_double(dt_) + (double)dateSpan )); + + return *this; + } + datetime_t& operator-=(const timeperiod_t &dateSpan) + { + COMET_ASSERT( good() ); + if(!good()) + set_invalid_(); + else + set_invalid_check_range_(to_date( to_double(dt_) - (double)dateSpan )); + return *this; + } + timeperiod_t operator-(const datetime_t& date) const + { + COMET_ASSERT( good() && date.good() ); + if( !good() || ! date.good()) + return timeperiod_t::invalid_period(); + return to_double(dt_) - to_double(date.dt_); + } + datetime_t &operator++() + { + (*this)+=1; + return *this; + } + datetime_t operator++(int) + { + datetime_t t(*this); (*this)+=1; return t; + } + datetime_t &operator--() + { + (*this)-=1; return *this; + } + + datetime_t operator--(int) + { + datetime_t t(*this); (*this)-=1; return t; + } + //@} + + /// return true if the date is marked 'invalid'. + inline bool invalid() const { return dt_ == ((double) dt_invalid_); } + /// return true if the date is marked 'null' + inline bool null() const { return dt_ == ((double) dt_null_); } + + /// return true if date is zero + inline bool zero() const { return dt_ == 0; } + + /** return true if the date is not marked 'invalid'. + * \deprecated + */ + inline bool valid() const { return !invalid(); } + + /// Return true if the date is usable. + inline bool good() const + { + switch ((long)dt_) + { + case dt_invalid_: case dt_null_: return false; + default: return true; + } + } + + ///\name Accessor methods + //@{ + DATE get() const { if(invalid()) throw("Invalid Date"); return null()?0:dt_;} + DATE in() const { return get(); } + DATE *in_ptr() const { return const_cast(&dt_);} + DATE *out() { return &dt_;} + DATE *inout() { return &dt_;} + //@} + /** Set date part as year/month/day. + * \param year Year (from year 0 - as in 2000). + * \param month Month of year (1-based). + * \param day Day of month (1-based). + * \retval true Successfully set date. + * \retval false Conversion unsuccessful - date not set. + */ + bool set_date( int year, int month, int day) + { + long datePart, timePart; + datePart = split_oledate_as_absdate_(dt_, &timePart, true); + if (!absdate_from_date_(&datePart, year,month, day)) + return false; + dt_ = join_absdate_as_oledate_( datePart, timePart); + return true; + } + + /** Set time part as hours/minutes/seconds. + * \param hours As in a 24-hour clock. + * \param minutes Minutes past the hour. + * \param seconds Seconds past the minute. + * \param milliseconds Milliseconds past the second. + * \retval true Successfully set time. + * \retval false Conversion unsuccessful - time not set. + */ + bool set_time( int hours, int minutes, int seconds, int milliseconds =0) + { + long datePart, timePart; + datePart = split_oledate_as_absdate_(dt_, &timePart, true); + if (!milliseconds_from_time_(&timePart, (unsigned short)hours, (unsigned short)minutes, (unsigned short)seconds, (unsigned short)milliseconds)) + return false; + dt_ = join_absdate_as_oledate_( datePart, timePart); + return true; + } + /** Set both date and time. + * \param year Year (from year 0 - as in 2000). + * \param month Month of year (1-based). + * \param day Day of month (1-based). + * \param hours As in a 24-hour clock. + * \param minutes Minutes past the hour. + * \param seconds Seconds past the minute. + * \param milliseconds Milliseconds past the second. + * \retval true Successfully set date/time. + * \retval false Conversion unsuccessful - date/time not set. + */ + bool set_date_time(int year, int month, int day, int hours, int minutes, int seconds, int milliseconds = 0 ) + { + return oledate_from_datetime_(&dt_, (unsigned short)year, (unsigned short)month, (unsigned short)day, (unsigned short)hours, (unsigned short)minutes, (unsigned short)seconds, (unsigned short)milliseconds, cmBoth); + } + + /// Flags for formatting. + enum format_flags{ + ff_default = 0, ///< Default formatting. + ff_system_locale = LOCALE_NOUSEROVERRIDE, ///< Use system locale + ff_hijri = VAR_CALENDAR_HIJRI, ///< Use HIJRI calendar. + ff_thai = 0x10, /* VAR_CALENDAR_THAI, */ ///< Use thai calendar. + ff_gregorian = 0x20, /*VAR_CALENDAR_GREGORIAN*/ ///< Use gregorian calendar. + ff_four_digits = VAR_FOURDIGITYEARS, ///< Four digits for years + ff_time_only = VAR_TIMEVALUEONLY, ///< Only output time. + ff_date_only = VAR_DATEVALUEONLY ///< Only output date. + }; + /** Parse bstring to a datetime_t. + * \param val String to parse. + * \param flags valid format_flags are: ff_default, ff_system_locale, ff_hijri, ff_time_only, ff_date_only + * \param locale Locale to use. Default \p locale is the user default. + */ + datetime_t &parse( const bstr_t &val, format_flags flags = ff_default, LCID locale = LOCALE_USER_DEFAULT) + { + VarDateFromStr( val.in(), locale, flags, &dt_) | raise_exception; + return *this; + } + + /** Return a double that is sortable / can be subtracted. + * Dates before 12/30/1899 will not sort propperly. + */ + double as_sortable_double() const { COMET_ASSERT( good() ); return to_double(dt_); } + +public: + + /** + * Convert a local time to UTC. + * + * Takes a local time (like that inside a ZIP file, or on a FAT file + * system) and converts it to UTC, using the timezone rules in effect as + * of the date specified. Typically the "as of" date is specified as the + * modification or creation date of the ZIP file, or left missing to + * default to the given local date. It is also possible to specify if the + * "as of" date is in UTC or not. If missing, it defaults to false. + */ + + /** + * Create UTC version of this local time. + * + * Assuming this datetime is a local time (like that inside a ZIP file or + * on a FAT file system) this creates a new version of it as a UTC datetime. + * By default, the adjustment is made based on the timezone rules that + * would have been in effect at the UTC date this object represents. + * However, the time can also be converted as though it were on another + * date by passing another date as an argument. + * + * Typically the "as of" date is specified as the current time or possibly + * the modification or creation date of an enclosing ZIP file. + * + * @param as_of_date + * Optional alternative date on which to base the timezone conversion. + * @param utc_or_local + * Whether `as_of_date` is a local or UTC date. Defaults to UTC. + */ + datetime_t local_to_utc( + datetime_t as_of_date=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) const + { + // if they didn't specify an AS OF date, use the current date which + // will be local + if (as_of_date.invalid()) + { + utc_or_local = locality::local; // no break + as_of_date = *this; + } + + double timezone_bias = + local_timezone_bias(as_of_date, utc_or_local) / (24.*60.); + double local_date_continuous = to_double(dt_); + DATE utc_date = to_date(local_date_continuous + timezone_bias); + + return datetime_t(utc_date); + } + + /** + * Create a UTC version of this local time, explicitly using standard + * time or daylight savings. + * + * Assuming this datetime is a local time (like that inside a ZIP file or + * on a FAT file system) this creates a new version of it as a UTC datetime. + * Depending on the argument passed, the adjustment is made as though + * daylight savings were in operation in the local timezone or not. + * + * @param bias_mode + * Whether to assume daylight savings is in effect. + * + * - standard: create local time as though it were not + * daylight savings time + * - daylight_savings: create local time as though it were daylight + * savings time + */ + datetime_t local_to_utc(timezone_bias_mode::type bias_mode) const + { + double timezone_bias = local_timezone_bias(bias_mode) / (24.*60.); + double local_date_continuous = to_double(dt_); + DATE utc_date = to_date(local_date_continuous + timezone_bias); + + return datetime_t(utc_date); + } + + /** + * Create local time version of this UTC time. + * + * Assuming this datetime is a UTC time (like that on an NTFS file system) + * this creates a new version of it in the local timezone. By default, + * the adjustment is made based on the timezone rules that would have been + * in effect at the UTC date this object represents. However, the time can + * also be converted as though it were on another date by passing another + * date as an argument. + * + * Typically the "as of" date is specified as the current time or possibly + * the modification or creation date of an enclosing ZIP file. + * + * @param as_of_date + * Optional alternative date on which to base the timezone conversion. + * @param utc_or_local + * Whether `as_of_date` is a local or UTC date. Defaults to UTC. + */ + datetime_t utc_to_local( + datetime_t as_of_date=datetime_t(dt_invalid), + locality::type utc_or_local=locality::utc) const + { + // if they didn't specify an AS OF date, use the current date which + // will be UTC + if (as_of_date.invalid()) + { + as_of_date = *this; + utc_or_local = locality::utc; + } + + long timezone_bias = local_timezone_bias(as_of_date, utc_or_local); + double timezone_bias_days = timezone_bias / (24.*60.); + double utc_date_continuous = to_double(dt_); + DATE local_date = to_date(utc_date_continuous - timezone_bias_days); + + return datetime_t(local_date); + } + + /** + * Create local time version of this UTC time, explicitly using standard + * time or daylight savings. + * + * Assuming this datetime is a UTC time (like that on an NTFS file system) + * this creates a new version of it in the local timezone. Depending on + * the argument passed, the adjustment is made as though daylight savings + * were in operation in the timezone or not. + * + * @param bias_mode + * Whether to assume daylight savings. + * + * - standard: create local time as though it were not + * daylight savings time + * - daylight_savings: create local time as though it were daylight + * savings time + */ + datetime_t utc_to_local(timezone_bias_mode::type bias_mode) const + { + long timezone_bias = local_timezone_bias(bias_mode); + double timezone_bias_days = timezone_bias / (24.*60.); + double utc_date_continuous = to_double(dt_); + DATE local_date = to_date(utc_date_continuous - timezone_bias_days); + + return datetime_t(local_date); + } + + /** Convert to SYSTEMTIME struct. + */ + bool to_systemtime( SYSTEMTIME *sysTime) const + { + int year,month,day,dow,hour,minute,second,ms; + if (!datetime_from_oledate_( dt_, &year, &month, &day, &dow, &hour, &minute, &second, &ms, cmBoth)) + return false; + sysTime->wYear = (short)year; + sysTime->wMonth = (short)month; + sysTime->wDay = (short)day; + sysTime->wDayOfWeek = (short)dow; // Sunday=0 + sysTime->wHour = (short)hour; + sysTime->wMinute = (short)minute; + sysTime->wSecond = (short)second; + sysTime->wMilliseconds = (short)ms; + return true; + } + + /** Convert from a \e SYSTEMTIME struct. + */ + bool from_systemtime(const SYSTEMTIME& src) + { + return oledate_from_datetime_( &dt_, src.wYear, src.wMonth, src.wDay, src.wHour, src.wMinute, src.wSecond, src.wMilliseconds, cmBoth); + } + + /** + * Convert from a @e SYSTEMTIME struct. + * + * @param source + * @e SYSTEMTIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + */ + bool from_systemtime( + const SYSTEMTIME& source, utc_convert_mode::type utc_mode, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + if (!from_systemtime(source)) + return false; + + switch(utc_mode) + { + case utc_convert_mode::none: + break; + case utc_convert_mode::local_to_utc: + *this = local_to_utc(conversion_time, utc_or_local); + break; + case utc_convert_mode::utc_to_local: + *this = utc_to_local(conversion_time, utc_or_local); + break; + } + return true; + } + + /** + * Convert from a @e SYSTEMTIME struct. + * + * @param source + * @e SYSTEMTIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param bias_mode + * Specify whether the local time is daylight/standard time. + */ + bool from_systemtime( + const SYSTEMTIME& source, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) + { + if (!from_systemtime(source)) + return false; + + switch(utc_mode) + { + case utc_convert_mode::none: + break; + case utc_convert_mode::local_to_utc: + *this = local_to_utc(bias_mode); + break; + case utc_convert_mode::utc_to_local: + *this = utc_to_local(bias_mode); + break; + } + return true; + } + + /** Convert from a \e FILETIME struct. + */ + bool from_filetime(const FILETIME& src) + { + double ftd = (((__int64(src.dwHighDateTime) << 32 | src.dwLowDateTime)/(36000000000.)) - 2620920.)/24; + return set_check_range_( to_date(ftd)); + } + + /** + * Convert from a @e FILETIME struct. + * + * @param source + * @e FILETIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + */ + bool from_filetime( + const FILETIME& source, utc_convert_mode::type utc_mode, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + if (!from_filetime(source)) + return false; + + switch(utc_mode) + { + case utc_convert_mode::none: + break; + case utc_convert_mode::local_to_utc: + *this = local_to_utc(conversion_time, utc_or_local); + break; + case utc_convert_mode::utc_to_local: + *this = utc_to_local(conversion_time, utc_or_local); + break; + } + return true; + } + + /** + * Convert from a @e FILETIME struct. + * + * @param source + * @e FILETIME being converted. + * @param utc_mode + * Timezone conversion mode. + * @param bias_mode + * Specify whether the local time is daylight/standard time. + */ + bool from_filetime( + const FILETIME& source, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) + { + if (!from_filetime(source)) + return false; + + switch(utc_mode) + { + case utc_convert_mode::none: + break; + case utc_convert_mode::local_to_utc: + *this = local_to_utc(bias_mode); + break; + case utc_convert_mode::utc_to_local: + *this = utc_to_local(bias_mode); + break; + } + return true; + } + + /** Convert to a \e FILETIME struct. + */ + bool to_filetime( FILETIME *filetime) const + { + double val = ((to_double(dt_) * 24.) + 2620920.)*(36000000000.) ; + + __int64 llval = __int64(val); + filetime->dwHighDateTime = long (llval >> 32); + filetime->dwLowDateTime = long (llval); + return val > 0; + } + + /** Convert from a \e tm struct. + */ + bool from_tm(const struct tm &tm_time) + { + return from_tm_( tm_time, &dt_, cmBoth); + } + + /** + * Convert from a @e tm struct. + * @param tm_time + * @e tm struct being converted. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * Only used if the information cannot be derived from the @e tm struct. + * @param utc_or_local + * Whether the optional conversion date is UTC or local. + */ + bool from_tm( + const struct tm &tm_time, utc_convert_mode::type utc_mode, + datetime_t conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + if(!from_tm(tm_time)) + return false; + + switch(utc_mode) + { + case utc_convert_mode::none: + break; + case utc_convert_mode::local_to_utc: + // Take advantage of tm_isdst to work out dst mode! + // + // XXX: This doesn't use the conversion_time at all. No, I don't + // know why we have this behaviour + if (tm_time.tm_isdst == 0) + { + *this = local_to_utc(timezone_bias_mode::standard); + } + else if (tm_time.tm_isdst > 0) + { + *this = local_to_utc(timezone_bias_mode::daylight_saving); + } + else + { + *this = local_to_utc(conversion_time, utc_or_local); + } + break; + case utc_convert_mode::utc_to_local: + *this = utc_to_local(conversion_time, utc_or_local); + break; + } + + return true; + } + + /** + * Convert from a @e tm struct. + * + * @param tm_time + * @e 'tm' struct being converted. + * @param utc_mode + * Timezone conversion mode. + * @param daylight_hint + * Strategy to use for daylight savings time if it cannot be derived + * from the @e tm struct. + */ + bool from_tm( + const struct tm &tm_time, utc_convert_mode::type utc_mode, + timezone_bias_mode::type daylight_hint) + { + if(!from_tm(tm_time)) + return false; + + switch(utc_mode) + { + case utc_convert_mode::none: + break; + case utc_convert_mode::local_to_utc: + // Take advantage of tm_isdst to work out dst mode! + // + // XXX: This overrides the specified conversion. No, I don't + // know why we have this behaviour + if (tm_time.tm_isdst == 0) + { + *this = local_to_utc(timezone_bias_mode::standard); + } + else if (tm_time.tm_isdst > 0) + { + *this = local_to_utc(timezone_bias_mode::daylight_saving); + } + else + { + *this = local_to_utc(daylight_hint); + } + break; + case utc_convert_mode::utc_to_local: + *this = utc_to_local(daylight_hint); + break; + } + + return true; + } + + + /** + * Convert from a @e time_t value. + * + * @param source + * Unix time to convert. + * @param utc_mode + * Timezone conversion mode. By default converts a UTC time_t into + * a local datetime. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + */ + bool from_unixtime( + time_t source, + utc_convert_mode::type utc_mode=utc_convert_mode::utc_to_local, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) + { + FILETIME ft; + __int64 ll = (__int64(source) * 10000000L) + 116444736000000000L; + ft.dwLowDateTime = (DWORD) ll; + ft.dwHighDateTime = (DWORD)(ll >>32); + return from_filetime(ft, utc_mode, conversion_time, utc_or_local); + } + + /** + * Convert from a @e time_t value. + * + * @param source + * Unix time being converted. + * @param utc_mode + * Timezone conversion mode. + * @param bias_mode + * Specify whether the local time is daylight/standard time. + */ + bool from_unixtime( + time_t source, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) + { + FILETIME ft; + __int64 ll = (__int64(source) * 10000000L) + 116444736000000000L; + ft.dwLowDateTime = (DWORD) ll; + ft.dwHighDateTime = (DWORD)(ll >>32); + return from_filetime(ft, utc_mode, bias_mode); + } + + /** + * Convert to a @e time_t value. + * + * @param unix_time_out + * Destination of conversion result. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + */ + bool to_unixtime( + time_t* unix_time_out, + utc_convert_mode::type utc_mode=utc_convert_mode::local_to_utc, + const datetime_t& conversion_time=datetime_t(dt_invalid), + locality::type utc_or_local=locality::local) const + { + datetime_t dtval; + + switch(utc_mode) + { + case utc_convert_mode::none: + dtval = *this; + break; + case utc_convert_mode::local_to_utc: + dtval = local_to_utc(conversion_time, utc_or_local); + break; + case utc_convert_mode::utc_to_local: + dtval = utc_to_local(conversion_time, utc_or_local); + break; + } + + FILETIME ft; + if (!dtval.to_filetime(&ft)) + return false; + + *unix_time_out = + time_t(((__int64(ft.dwHighDateTime) << 32 | ft.dwLowDateTime) - + 116444736000000000L)/10000000L); + return true; + } + + /** + * Convert to a @e time_t value. + * + * @param unix_time_out + * Destination of conversion result. + * @param utc_mode + * Timezone conversion mode. + * @param conversion_time + * Optional override date to use for calculating daylight/standard time. + * @param utc_or_local + * Specify whether the override time is a UTC or local date. + */ + bool to_unixtime( + time_t* unix_time_out, utc_convert_mode::type utc_mode, + timezone_bias_mode::type bias_mode) const + { + datetime_t dtval; + + switch(utc_mode) + { + case utc_convert_mode::none: + dtval = *this; + break; + case utc_convert_mode::local_to_utc: + dtval = local_to_utc(bias_mode); + break; + case utc_convert_mode::utc_to_local: + dtval = utc_to_local(bias_mode); + break; + } + + FILETIME ft; + if (!dtval.to_filetime(&ft)) + return false; + + *unix_time_out = + time_t(((__int64(ft.dwHighDateTime) << 32 | ft.dwLowDateTime) - + 116444736000000000L)/10000000L); + return true; + } + + /** + * Calculate the local timezone's offset from UTC on the given date, in + * minutes. + * + * This offset is called the bias and is the number of minutes to subtract + * from a UTC time to make a local one. + * + * @param dt + * The date and time for which to calculate the bias. + * @param is_utc + * Whether to interpret the date as UTC or local. + * + * @todo A better way might be to make UTCness a fundamental property of + * times at construction so they know whether they are URL or local + * themselves. + */ + static long local_timezone_bias(datetime_t dt, locality::type utc_or_local) + { + TIME_ZONE_INFORMATION tzi; + ::GetTimeZoneInformation(&tzi); + + long baseBias = tzi.Bias; + + // if we've even got both time zones set, we have to choose which is + // active... + if ((tzi.DaylightDate.wMonth != 0) && (tzi.StandardDate.wMonth != 0)) + { + // all local standard time/daylight savings time rules are based on + // local-time, so add the base bias FIRST + if (utc_or_local == locality::utc) + dt -= (baseBias / (24.*60.)); + + SYSTEMTIME sysTime; + if (!dt.to_systemtime(&sysTime)) + throw datetime_exception("Invalid Date"); + + bool DSTbeforeLST = + tzi.DaylightDate.wMonth < tzi.StandardDate.wMonth; + + bool afterDaylightStarts = + tz_on_or_after_in_year(sysTime, tzi.DaylightDate); + bool afterStandardStarts = + tz_on_or_after_in_year(sysTime, tzi.StandardDate); + + if (((afterDaylightStarts== afterStandardStarts)!= DSTbeforeLST)) + return baseBias + tzi.DaylightBias; + } + + return baseBias + tzi.StandardBias; + } + + /** + * Calculate the local timezone's offset from UTC in minutes. + * + * The value depends on the argument to the function which specifies + * whether to assume daylight savings is in operation in the local timezone. * occuring outside of daylight savings time. + */ + static long local_timezone_bias(timezone_bias_mode::type dst_state) + { + TIME_ZONE_INFORMATION tzi; + ::GetTimeZoneInformation(&tzi); + + switch (dst_state) + { + case timezone_bias_mode::standard: + return tzi.Bias + tzi.StandardBias; + case timezone_bias_mode::daylight_saving: + return tzi.Bias + tzi.DaylightBias; + default: + COMET_ASSERT(!"Invalid timezone daylight savings state"); + } + } + +protected: + + /** Compares two SYSTEMTIME values to decide if the second is after (or on) the + * first. + * If the year is supplied, the two dates are assumed static, otherwise it + * computes the proper day-of-week instance (like last Sunday in October) for + * the specified test year. See the encoding rules documented with + * TIME_ZONE_INFORMATION + */ + static bool tz_on_or_after_in_year(SYSTEMTIME testST, SYSTEMTIME tziST) + { + // assume month check first... + long cmp = testST.wMonth - tziST.wMonth; + if (cmp!=0) + return cmp > 0; + + SYSTEMTIME absST; + + // if year is given, then the specified date is already exact... + if (tziST.wYear != 0) + { + // first test the year... + cmp = testST.wYear - tziST.wYear; + if (cmp !=0) + return cmp > 0; + // carry on with the exact day known + absST = tziST; + } + else + { + // compute the appropriate day from the specified instance of the set day-of-week + // use the testST's year for the year in the calculation + tz_convert_relative_dow_to_absolute(testST, tziST, &absST); + } + + // month same... check day/hour/minute/second/millisecond + if ((cmp = testST.wDay - absST.wDay)==0) + if ((cmp = testST.wHour - absST.wHour)==0) + if ((cmp = testST.wMinute - absST.wMinute)==0) + if ((cmp = testST.wSecond - absST.wSecond)==0) + cmp = testST.wMilliseconds - absST.wMilliseconds; + return cmp >= 0; + } + + // Computes the proper day-of-week instance (like last Sunday in October) for the + // specified test year. See the encoding rules documented with TIME_ZONE_INFORMATION. + // This ASSUMES that testST.wMonth == tziST.wMonth + static void tz_convert_relative_dow_to_absolute(const SYSTEMTIME &testST , const SYSTEMTIME &tziST, SYSTEMTIME *absST) + { + COMET_ASSERT(testST.wMonth == tziST.wMonth); + + // Set up the absolute date except for wDay, which we must find + absST->wYear = testST.wYear; // year is only valid in the testST + int month = absST->wMonth = tziST.wMonth; + absST->wDayOfWeek = tziST.wDayOfWeek; + + absST->wHour = tziST.wHour; + absST->wMinute = tziST.wMinute; + absST->wSecond = tziST.wSecond; + absST->wMilliseconds = tziST.wMilliseconds; + + // Find a day of the month that falls on the same day of the week as + // the transition. + + // If test day is the 29th of the month (testST.wDay = 29) and today + // is a Tuesday (testST.wDayOfWeek = 2) and the transition occurs on + // Sunday (testST.wDayOfWeek = 0) we compute absDay = 29 + 0 + 7 - + // 2, giving the 34th + + // then adjust that to a day of month adjustment + long absDay = ((testST.wDay + tziST.wDayOfWeek + (7-1) - testST.wDayOfWeek) % 7) +1; + + // now multiply this time the "which DOW" setting from the TZI + // (1 = first, 5 = last) + // add the requisite number of weeks to the base point + absDay += (7 * (tziST.wDay - 1)); + + // and if we exceeded the number of days in the month, back up by a + // week (this handles the 5=last situation) + + int daysInMonth = days_in_month( absST->wYear, month); + + if (absDay > daysInMonth) + absDay -= 7; + + absST->wDay = (unsigned short)absDay; + } + +public: + + /** Format datetime_t as bstr. + * \param flags Format (can be or-ed). All format_flags are valid. + * \param locale Locale ID (default to User Default. + */ + bstr_t format( format_flags flags = ff_default , LCID locale = LOCALE_USER_DEFAULT) const + { + bstr_t strDate; + if (!good()) + { + return strDate; + } + VarBstrFromDate(dt_, locale, flags, strDate.out()) | raise_exception; + return strDate; + } + + /** Format datetime_t as basic_string. + * \param fmt See system documentation for strftime for details. + */ + template + std::basic_string format( const std::basic_string &fmt ) const + { + return format(fmt.c_str()); + } + + /** Format datetime_t as basic_string. + * \param fmt See system documentation for strftime for details. + */ + template + std::basic_string format( const CHAR *fmt ) const + { + if (!good()) + { + return std::basic_string(); + } + struct tm src; + if(!to_tm_( dt_, &src, NULL)) + throw datetime_exception("Invalid Date"); + + typename auto_buffer_t::size_type capacity = 50; + auto_buffer_t buf(capacity); + size_t ret; + while( (ret = str_formattime( buf.get() , capacity, fmt, &src ))==0 && capacity < 1024) + { + capacity += 50; + buf.resize(capacity); + } + if(ret == 0) + buf.at(0)='\0'; + + return std::basic_string(buf.get(), ret); + } + + /// Detach the raw date from the class. + DATE detach() + { + DATE val = dt_; + dt_ = 0.; + return val; + } + + /// Detach the raw date from the class. + static DATE detach( datetime_t &dt) + { + return dt.detach(); + } + + /// Stream operator. + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const datetime_t &val) + { + os << val.format(); + return os; + } + + /// Stream operator. + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const datetime_t &val) + { + os << val.format(); + return os; + } + +private: +}; +#undef COMET_DIVMOD_ +//@} + +} +#endif diff --git a/lib/local/CamCom/comet/dispatch.h b/lib/local/CamCom/comet/dispatch.h new file mode 100644 index 0000000..c631a71 --- /dev/null +++ b/lib/local/CamCom/comet/dispatch.h @@ -0,0 +1,675 @@ +/** \file + * Provides dispatch driver via wrap_t< ::IDispatch> + * Provides dynamic implementation of IDispatch via dynamic_dispatch. + */ +/* + * Copyright 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_DISPATCH_H +#define COMET_DISPATCH_H + +#include + +#include + +namespace comet { + /*! \addtogroup Interfaces + */ + //@{ + + /** Specialisation of wrap_t for IDispatch. + * Implements wrappers for the call-by name and call-by dispid for IDispatch methods + * and properties. The wrapper supports properties with up to 3 arguments and methods + * with up to 4 arguments. + * \code + com_ptr disp( my_dual_interface); + variant_t val = disp->get(L"Name"); + * \endcode + * See \ref cometcomptrsmartwrapper for details on wrap_t. + */ + template<> struct wrap_t< ::IDispatch> + { + /** Get property by dispid. + */ + variant_t get(DISPID id) + { + VARIANT result; + VARIANT* vars = 0; + DISPPARAMS disp = { vars, 0, 0, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + /** Get property by name. + */ + variant_t get(const wchar_t* name) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return get(id); + } + + /** Get property by dispid with 1 argument. + */ + variant_t get(DISPID id, const variant_t& a0) + { + VARIANT result; + VARIANT vars[1]; vars[0] = a0.in(); + DISPPARAMS disp = { vars, 0, 1, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + /** Get property by name with 1 argument. + */ + variant_t get(const wchar_t* name, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return get(id, a0); + } + + /** Get property by dispid with 2 arguments. + */ + variant_t get(DISPID id, const variant_t& a1, const variant_t& a0) + { + VARIANT result; + VARIANT vars[2]; vars[0] = a0.in(); vars[1] = a1.in(); + DISPPARAMS disp = { vars, 0, 2, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + /** Get property by name with 2 arguments. + */ + variant_t get(const wchar_t* name, const variant_t& a1, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return get(id, a1, a0); + } + + /** Get property by dispid with 3 arguments. + */ + variant_t get(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + VARIANT result; + VARIANT vars[3]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); + DISPPARAMS disp = { vars, 0, 3, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + /** Get property by name with 3 arguments. + */ + variant_t get(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return get(id, a2, a1, a0); + } + + /** Put property by dispid. + */ + void put(DISPID id, const variant_t& val) + { + VARIANT vars[1]; vars[0] = val.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 1, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + /** Put property by name. + */ + void put(const wchar_t* name, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + put(id, val); + } + + /** Put property with 1 argument by dispid. + */ + void put(DISPID id, const variant_t& a1, const variant_t& val) + { + VARIANT vars[2]; vars[0] = val.in(); vars[1] = a1.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 2, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + /** Put property with 1 argument by name. + */ + void put(const wchar_t* name, const variant_t& a1, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + put(id, a1, val); + } + + + /** Put property with 2 arguments by dispid. + */ + void put(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + VARIANT vars[3]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 3, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + /** Put property with 2 arguments by name. + */ + void put(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + put(id, a2, a1, val); + } + + /** Put property with 3 arguments by dispid. + */ + void put(DISPID id, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + VARIANT vars[4]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 4, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + /** Put property with 3 arguments by name. + */ + void put(const wchar_t* name, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + put(id, a3, a2, a1, val); + } + + /** Put property by reference by dispid. + */ + void putref(DISPID id, const variant_t& val) + { + VARIANT vars[1]; vars[0] = val.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 1, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + /** Put property by reference by name. + */ + void putref(const wchar_t* name, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + putref(id, val); + } + + void putref(DISPID id, const variant_t& a1, const variant_t& val) + { + VARIANT vars[2]; vars[0] = val.in(); vars[1] = a1.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 2, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + void putref(const wchar_t* name, const variant_t& a1, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + putref(id, a1, val); + } + + void putref(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + VARIANT vars[3]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 3, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + void putref(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + putref(id, a2, a1, val); + } + + void putref(DISPID id, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + VARIANT vars[4]; vars[0] = val.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); + DISPID did = DISPID_PROPERTYPUT; + DISPPARAMS disp = { vars, &did, 4, 1 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, &disp, 0, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + } + + void putref(const wchar_t* name, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& val) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + putref(id, a3, a2, a1, val); + } + + /** Call method by dispid. + */ + variant_t call(DISPID id) + { + VARIANT result; + VARIANT* vars = 0; + DISPPARAMS disp = { vars, 0, 0, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + /** Call method by name. + */ + variant_t call(const wchar_t* name) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return call(id); + } + + variant_t call(DISPID id, const variant_t& a0) + { + VARIANT result; + VARIANT vars[1]; vars[0] = a0.in(); + DISPPARAMS disp = { vars, 0, 1, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + variant_t call(const wchar_t* name, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return call(id, a0); + } + + variant_t call(DISPID id, const variant_t& a1, const variant_t& a0) + { + VARIANT result; + VARIANT vars[2]; vars[0] = a0.in(); vars[1] = a1.in(); + DISPPARAMS disp = { vars, 0, 2, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + variant_t call(const wchar_t* name, const variant_t& a1, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return call(id, a1, a0); + } + + variant_t call(DISPID id, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + VARIANT result; + VARIANT vars[3]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); + DISPPARAMS disp = { vars, 0, 3, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + variant_t call(const wchar_t* name, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return call(id, a2, a1, a0); + } + + variant_t call(DISPID id, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + VARIANT result; + VARIANT vars[4]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); + DISPPARAMS disp = { vars, 0, 4, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + + variant_t call(const wchar_t* name, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return call(id, a3, a2, a1, a0); + } + variant_t call(DISPID id, const variant_t& a4, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + VARIANT result; + VARIANT vars[5]; vars[0] = a0.in(); vars[1] = a1.in(); vars[2] = a2.in(); vars[3] = a3.in(); vars[4] = a4.in(); + DISPPARAMS disp = { vars, 0, 5, 0 }; + HRESULT hr = raw(this)->Invoke(id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &result, 0, 0); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return auto_attach(result); + } + variant_t call(const wchar_t* name, const variant_t& a4, const variant_t& a3, const variant_t& a2, const variant_t& a1, const variant_t& a0) + { + DISPID id; + HRESULT hr = raw(this)->GetIDsOfNames(IID_NULL, const_cast(&name), 1, LOCALE_USER_DEFAULT, &id); + if (FAILED(hr)) throw_com_error(raw(this), hr); + return call(id, a4, a3, a2, a1, a0); + } + }; + /** \class dynamic_dispatch dispatch.h comet/dispatch.h + * Implementation of a dynamic IDispatch, allowing methods to be added to + * an IDispatch implementation. + * The class needs to be inherited from to be able to add methods. + * Each method can have up to 4 parameters. + */ + +template class ATL_NO_VTABLE dynamic_dispatch : public ::IDispatch { + + struct method_ptr { + bool has_retval; + union { + void (BASE::*pm00)(); + void (BASE::*pm01)(const variant_t&); + void (BASE::*pm02)(const variant_t&, const variant_t&); + void (BASE::*pm03)(const variant_t&, const variant_t&, const variant_t&); + void (BASE::*pm04)(const variant_t&, const variant_t&, const variant_t&, const variant_t&); + + variant_t (BASE::*pm10)(); + variant_t (BASE::*pm11)(const variant_t&); + variant_t (BASE::*pm12)(const variant_t&, const variant_t&); + variant_t (BASE::*pm13)(const variant_t&, const variant_t&, const variant_t&); + variant_t (BASE::*pm14)(const variant_t&, const variant_t&, const variant_t&, const variant_t&); + }; + }; + + typedef std::map NAMEMAP; + NAMEMAP name_map_; + + // Workaround VC internal compiler error + struct wrap_map_t { + std::map m; + }; + typedef std::map MAP; + MAP map_; + + void add_method(const wchar_t* name, method_ptr p, DISPID id, int type) + { + if (id == flag_value) + { + NAMEMAP::const_iterator it = name_map_.find(name); + if (it == name_map_.end()) + { + id = 100000 + map_.size(); + while (map_.find(id) != map_.end()) ++id; + } + else + { + id = it->second; + } + } + + name_map_[name] = id; + map_[id].m[type] = p; + } + enum { flag_value = MINLONG }; + public: + typedef ::IDispatch interface_is; + + protected: + + void remove(const wchar_t* name) + { + NAMEMAP::iterator it = name_map_.find(name); + if (it != name_map_.end()) { + DISPID id = it->second; + name_map_.erase(it); + + map_.erase(id); + } + } + + void add_method(const wchar_t* name, void (BASE::*pm)(), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm00 = pm; add_method( name, p, id, 0 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm01 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm02 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm03 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm04 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, variant_t (BASE::*pm)(), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm10 = pm; add_method( name, p, id, 0 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm11 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm12 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm13 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_METHOD ); } + + void add_method(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm14 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_METHOD ); } + + void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm01 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_PROPERTYPUT ); } + + void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm02 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_PROPERTYPUT ); } + + void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm03 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_PROPERTYPUT ); } + + void add_put_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm04 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_PROPERTYPUT ); } + + void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm01 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_PROPERTYPUTREF ); } + + void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm02 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_PROPERTYPUTREF ); } + + void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm03 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_PROPERTYPUTREF ); } + + void add_putref_property(const wchar_t* name, void (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = false; p.pm04 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_PROPERTYPUTREF ); } + + void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm10 = pm; add_method( name, p, id, 0 << 16 | DISPATCH_PROPERTYGET ); } + + void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm11 = pm; add_method( name, p, id, 1 << 16 | DISPATCH_PROPERTYGET ); } + + void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm12 = pm; add_method( name, p, id, 2 << 16 | DISPATCH_PROPERTYGET ); } + + void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm13 = pm; add_method( name, p, id, 3 << 16 | DISPATCH_PROPERTYGET ); } + + void add_get_property(const wchar_t* name, variant_t (BASE::*pm)(const variant_t&, const variant_t&, const variant_t&, const variant_t&), DISPID id = flag_value) + { method_ptr p; p.has_retval = true; p.pm14 = pm; add_method( name, p, id, 4 << 16 | DISPATCH_PROPERTYGET ); } + + private: + STDMETHOD(Invoke)(DISPID id, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pd, VARIANT* pVarResult, EXCEPINFO* pe, UINT* pu) + { + unsigned type = pd->cArgs << 16 | (wFlags & 15); + typename MAP::const_iterator it2 = map_.find(id); + if (it2 == map_.end()) return DISP_E_MEMBERNOTFOUND; + + typename std::map::const_iterator it = it2->second.m.find(type); + if (it == it2->second.m.end()) return DISP_E_BADPARAMCOUNT; + + try { + + if (pd->cNamedArgs > 1) return DISP_E_NONAMEDARGS; + + if (pd->cNamedArgs == 1) { + + if ((wFlags & 15) != DISPATCH_PROPERTYPUT && (wFlags & 15) != DISPATCH_PROPERTYPUTREF) return DISP_E_NONAMEDARGS; + if (pd->rgdispidNamedArgs[0] != DISPID_PROPERTYPUT) return DISP_E_NONAMEDARGS; + + switch (pd->cArgs) + { + case 1: + (static_cast(this)->*it->second.pm01)(variant_t::create_reference(pd->rgvarg[0])); + break; + case 2: + (static_cast(this)->*it->second.pm02)(variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + case 3: + (static_cast(this)->*it->second.pm03)(variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + case 4: + (static_cast(this)->*it->second.pm04)(variant_t::create_reference(pd->rgvarg[3]), variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + default: + return DISP_E_MEMBERNOTFOUND; + } + + } + else + { + + variant_t rv; + if (it->second.has_retval) + { + switch (pd->cArgs) + { + case 0: + rv = (static_cast(this)->*it->second.pm10)(); + break; + case 1: + rv = (static_cast(this)->*it->second.pm11)(variant_t::create_reference(pd->rgvarg[0])); + break; + case 2: + rv = (static_cast(this)->*it->second.pm12)(variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + case 3: + rv = (static_cast(this)->*it->second.pm13)(variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[1])); + break; + case 4: + rv = (static_cast(this)->*it->second.pm14)(variant_t::create_reference(pd->rgvarg[3]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[0])); + break; + default: + return DISP_E_MEMBERNOTFOUND; + } + } + else + { + switch (pd->cArgs) + { + case 0: + (static_cast(this)->*it->second.pm00)(); + break; + case 1: + (static_cast(this)->*it->second.pm01)(variant_t::create_reference(pd->rgvarg[0])); + break; + case 2: + (static_cast(this)->*it->second.pm02)(variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + case 3: + (static_cast(this)->*it->second.pm03)(variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + case 4: + (static_cast(this)->*it->second.pm04)(variant_t::create_reference(pd->rgvarg[3]), variant_t::create_reference(pd->rgvarg[2]), variant_t::create_reference(pd->rgvarg[1]), variant_t::create_reference(pd->rgvarg[0])); + break; + default: + return DISP_E_MEMBERNOTFOUND; + } + } + if (pVarResult) *pVarResult = rv.detach(); + } + + + } catch (com_error& err) { + return impl::return_com_error(err); + } catch (const std::exception& err) { + return impl::return_com_error(err); + } catch (HRESULT hr) { + return hr; + } catch (...) { + return E_FAIL; + } + + return S_OK; + + } + + STDMETHOD(GetIDsOfNames)(REFIID, WCHAR** names, unsigned int c, LCID, DISPID* dispid) + { + bool failed = false; + for (size_t i=0; isecond; + } + } + return failed ? DISP_E_UNKNOWNNAME : S_OK; + } + + STDMETHOD(GetTypeInfo)(UINT, LCID, ITypeInfo**) + { return E_NOTIMPL; } + + STDMETHOD(GetTypeInfoCount)(UINT *it) + { *it = 0; return S_OK; } + + }; +//@} +} + +#endif diff --git a/lib/local/CamCom/comet/enum.h b/lib/local/CamCom/comet/enum.h new file mode 100644 index 0000000..9d3c6d8 --- /dev/null +++ b/lib/local/CamCom/comet/enum.h @@ -0,0 +1,29 @@ +/** \file + * Legacy header for enum-related implementations and iterators. + * + * This exists for backward compatibility only. Include specific headers + * instead. + */ +/* + * Copyright 2000 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_ENUM_H +#define COMET_ENUM_H + +#include +#include +#include + +#endif diff --git a/lib/local/CamCom/comet/enum_common.h b/lib/local/CamCom/comet/enum_common.h new file mode 100644 index 0000000..b1d1bcd --- /dev/null +++ b/lib/local/CamCom/comet/enum_common.h @@ -0,0 +1,187 @@ +/** \file + * Code common to enumerator implementations. + */ +/* + * Copyright 2000 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_ENUM_IMPL_H +#define COMET_ENUM_IMPL_H + +#include + +#include +#include +#include + +namespace comet { + + namespace impl { + + template struct type_policy; + + template<> struct type_policy + { + template + static void init(VARIANT& t, const S& s) + { ::VariantInit(&t); t = variant_t::detach( variant_t(s) ); } + + static void clear(VARIANT& t) { ::VariantClear(&t); } + }; + + template<> struct type_policy + { + template + static void init(CONNECTDATA& t, const S& s) + { + t.dwCookie = s.first; + t.pUnk = + com_ptr::detach(com_ptr(s.second)); + } + + static void clear(CONNECTDATA& t) { t.pUnk->Release(); } + }; + + template< + typename Itf, typename T, typename CONVERTER, typename Source> + class enumeration : public simple_object + { + typedef type_policy policy; + public: + /// \name Interface \p Itf + //@{ + STDMETHOD(Next)(ULONG celt, T *rgelt, ULONG* pceltFetched) + { + if (pceltFetched) + *pceltFetched = 0; + if (!rgelt) + return E_POINTER; + + UINT i = 0; + typename Source::const_iterator backup_it_ = source_.current(); + try + { + while (i < celt && source_.current() != source_.end()) + { + policy::init(rgelt[i], converter_(*source_.current())); + ++i; + ++source_.current(); + } + if (pceltFetched) + *pceltFetched = i; + } + catch (...) + { + source_.current() = backup_it_; + for (size_t j = 0; j <= i; ++j) + policy::clear(rgelt[j]); + return E_FAIL; + } + + return i == celt ? S_OK : S_FALSE; + } + + STDMETHOD(Reset)() + { + try + { + source_.current() = source_.begin(); + } + catch (...) { return E_FAIL; } + return S_OK; + } + + STDMETHOD(Skip)(ULONG celt) + { + try + { + while (celt--) source_.current()++; + } + catch (...) { return E_FAIL; } + return S_OK; + } + + STDMETHOD(Clone)(Itf** ppenum) + { + try + { + enumeration* new_enum = + new enumeration(source_, converter_); + new_enum->AddRef(); + *ppenum = new_enum; + } + catch (...) { return E_FAIL; } + return S_OK; + } + //@} + + enumeration( + typename Source source, const CONVERTER& converter) + : source_(source), converter_(converter) {} + + Source source_; + CONVERTER converter_; + + private: + enumeration(const enumeration&); + enumeration& operator=(const enumeration&); + }; + + } + + /** \struct enumerated_type_of enum.h comet/enum.h + * Traits wrapper mapping COM Enumeration interface to element. + */ + template struct enumerated_type_of; + + template<> struct enumerated_type_of + { typedef VARIANT is; }; + + template<> struct enumerated_type_of + { typedef IConnectionPoint* is; }; + + template<> struct enumerated_type_of + { typedef CONNECTDATA is; }; + + /** \struct ptr_converter enum.h comet/enum.h + * IUnknown Converter for containers containing Comet objects. + * \relates stl_enumeration + */ + template struct ptr_converter : std::unary_function< com_ptr, T> + { + com_ptr operator()(const T& x) { return impl::cast_to_unknown(x); } + }; + + /** \struct ptr_converter_select1st enum.h comet/enum.h + * IUnknown Converter for containers containing Comet objects as the first + * elment of a pair. + * \relates stl_enumeration + */ + template struct ptr_converter_select1st : std::unary_function< com_ptr, T> + { + com_ptr operator()(const T& x) { return impl::cast_to_unknown(x.first); } + }; + + /** \struct ptr_converter_select2nd enum.h comet/enum.h + * IUnknown Converter for containers containing Comet objects as the second + * elment of a pair. + * \relates stl_enumeration + */ + template struct ptr_converter_select2nd : std::unary_function< com_ptr, T> + { + com_ptr operator()(const T& x) { return impl::cast_to_unknown(x.second); } + }; +} + +#endif diff --git a/lib/local/CamCom/comet/enum_iterator.h b/lib/local/CamCom/comet/enum_iterator.h new file mode 100644 index 0000000..c95a018 --- /dev/null +++ b/lib/local/CamCom/comet/enum_iterator.h @@ -0,0 +1,179 @@ +/** \file + * Standard C++ iterators wrapping any COM enumerator + */ +/* + * Copyright 2000 Sofus Mortensen + * Copyright 2011 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_ENUM_ITERATOR_H +#define COMET_ENUM_ITERATOR_H + +#include + +#include +#include + +#include + +namespace comet { + + /** + * STL style iterator for COM enumerator interfaces + */ + template::is> + class enum_iterator : public std::iterator + { + typedef E enumerator_type; + typedef typename enumerated_type_of::is element_type; + typedef impl::type_policy policy; + + com_ptr enum_; + + static value_type policy_init(const element_type& element) + { + value_type out; + policy::init(out, element); + return out; + } + + static value_type copy_value_from_other(const enum_iterator& other) + { + if (other.is_value_set_) + { + value_type v; + policy::init(v, other.value_); + return v; + } + else + { + return value_type(); + } + } + + value_type value_; + + /** + * Flag that ensures the value only gets cleared if it's been set. + * + * Clearing an uninitialised value could be disastrous as it could + * contain any random bits which the clearing code could interpret as + * pointers. + * + * This could happen in the situation where the enumerator has no + * items so the value never gets set. + */ + bool is_value_set_; + + public: + enum_iterator(const com_ptr& e) : + enum_(e), is_value_set_(false) + { + next(); + } + + enum_iterator() : is_value_set_(false) {} + + enum_iterator(const enum_iterator& other) : + enum_(other.enum_), value_(copy_value_from_other(other)), + is_value_set_(other.is_value_set_) {} + + enum_iterator& operator=(const enum_iterator& other) + { + enum_iterator copy(other); + swap(copy); + return *this; + } + + void swap(enum_iterator& other) + { + enum_.swap(other.enum_); + std::swap(value_, other.value_); + } + + /** Move to next element. */ + enum_iterator& operator++() + { + next(); + return *this; + } + + /** Move to next element (post increment). */ + enum_iterator operator++(int) + { + enum_iterator t(*this); + operator++(); + return t; + } + + /** + * Compare against end. + * Comparisons against a non-end iterator throw an exception. + * \todo Look into doing element comparisons. + */ + bool operator!=(const enum_iterator& other) + { + if (enum_ && other.enum_) + throw std::logic_error( + "enum_iterator comparison does not work"); + + return enum_ || other.enum_; + } + + /** Current element. */ + value_type& operator*() + { + return value_; + } + + value_type* operator->() + { + return &value_; + } + + private: + + void next() + { + if (enum_) + { + unsigned long fetched = 0; + element_type pod; + + enum_->Next(1, &pod, &fetched) | raise_exception; + if (fetched == 0) + { + enum_ = NULL; + return; + } + + try + { + if (is_value_set_) + policy::clear(value_); + value_ = policy_init(pod); + is_value_set_ = true; + } + catch (...) + { + policy::clear(pod); + throw; + } + policy::clear(pod); + } + } + }; +} + +#endif diff --git a/lib/local/CamCom/comet/error.h b/lib/local/CamCom/comet/error.h new file mode 100644 index 0000000..b0c86f7 --- /dev/null +++ b/lib/local/CamCom/comet/error.h @@ -0,0 +1,429 @@ +/** \file + * Provide COM Error support. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_ERROR_H +#define COMET_ERROR_H + +#include + +#include +#include + +#include +#include +#include +#include + +#pragma warning(push) +#pragma warning(disable : 4290) + +namespace comet { + + namespace impl { + + inline com_ptr GetErrorInfo() throw() + { + IErrorInfo* ei = 0; + ::GetErrorInfo(0, &ei); + return com_ptr(auto_attach(ei)); + } + + inline com_ptr CreateErrorInfo() throw() + { + ICreateErrorInfo* cei = 0; + ::CreateErrorInfo(&cei); + return com_ptr(auto_attach(cei)); + } + + template inline bool supports_ErrorInfo(Itf* p) + { + com_ptr q = com_cast(com_ptr(p)); + if (q == 0) return false; + return S_OK == q->InterfaceSupportsErrorInfo(uuidof()); + } + + } + + + /** \class com_error error.h comet/error.h + * COM error. + */ + class com_error : public std::runtime_error + { + public: + //! Construct com_error from HRESULT. + /*! + \param hr + HRESULT value of error. + */ + explicit com_error(HRESULT hr) : hr_(hr), std::runtime_error("") + {} + + //! Construct com_error from HRESULT and textual description. + /*! + \param msg + Description of error. + \param hr + HRESULT value of error. + */ + explicit com_error(const bstr_t& msg, HRESULT hr = E_FAIL) : hr_(hr), std::runtime_error("") + { + com_ptr cei(impl::CreateErrorInfo()); + if ( !cei.is_null() ) { + try { + cei->SetDescription(msg.in()); + ei_ = com_ptr( com_cast(cei)) ; + } catch (std::bad_alloc&) + {} + } + } + //! Construct com_error from HRESULT, textual description, source, iid, help. + /*! + \param msg Description of error. + \param hr HRESULT value of error. + \param src Description of source line + \param iid Interface the error was on + \param helpFile Name of help file + \param helpContext Name of help Context + */ + explicit com_error(const bstr_t &msg, HRESULT hr, const bstr_t &src, const uuid_t &iid = uuid_t(), + const bstr_t &helpFile=bstr_t(), DWORD helpContext = -1) + : hr_(hr), std::runtime_error("") + { + com_ptr cei(impl::CreateErrorInfo()); + if ( ! cei.is_null() ) + { + try { + cei->SetDescription(msg.in()); + if (!src.is_null() ) + cei->SetSource( src.in() ); + if (iid != uuid_t()) + cei->SetGUID( iid ); + if (!helpFile.is_null()) + { + cei->SetHelpFile( helpFile.in() ); + cei->SetHelpContext( helpContext ); + } + ei_ = com_ptr( com_cast(cei)) ; + } catch (std::bad_alloc&) + {} + } + } + + /// Construct with an error-info and hresult. + explicit com_error(HRESULT hr, const com_ptr& ei) + : hr_(hr), ei_(ei), std::runtime_error("") + {} + + public: + //! Return a string with a description of the error + /*! + what() uses Description from IErrorInfo if such is present, otherwise FormatMessage is used + to create a description of the HRESULT error value. + + \retval + A const char* string with a textual description of the error. + */ + const char* what() const throw() + { + try { + if (what_.empty()) { + what_ = s_str(); + } + } catch (std::bad_alloc&) { + return 0; + } + + return what_.c_str(); + } + /// Returns a std::string with a description of the error. + std::string s_str() const + { + std::string ret; + get_str(ret); + return ret; + } + /// Returns a std::wstring with a description of the error. + std::wstring w_str() const + { + std::wstring ret; + get_str(ret); + return ret; + } + /// Returns a tstring with a description of the error. + tstring t_str() const + { + tstring ret; + get_str(ret); + return ret; + } + + private: + void get_str(std::string& ret) const + { + if (ei_.is_null() == false) + { + bstr_t bs; + if (SUCCEEDED(ei_->GetDescription(bs.out())) && !bs.is_empty()) + { + ret= bs.s_str(); + return; + } + } + + char* lpMsgBuf; + if (FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hr_, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + reinterpret_cast(&lpMsgBuf), 0, NULL)) + { + char* lpEnd = lpMsgBuf; + while (*lpEnd != '\0') + lpEnd++; + + while (lpEnd > lpMsgBuf && // Trim trailing newlines + (*(lpEnd - 1) == '\n' || *(lpEnd - 1) == '\r')) + lpEnd--; + + ret.assign(lpMsgBuf, lpEnd - lpMsgBuf); + LocalFree(lpMsgBuf); + } + } + + void get_str(std::wstring& ret) const + { + if (ei_.is_null() == false) + { + bstr_t bs; + if (SUCCEEDED(ei_->GetDescription(bs.out())) && !bs.is_empty()) + { + ret = bs.w_str(); + return; + } + } + + wchar_t* lpMsgBuf; + if (FormatMessageW( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hr_, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + reinterpret_cast(&lpMsgBuf), 0, NULL)) + { + wchar_t* lpEnd = lpMsgBuf; + while (*lpEnd != L'\0') + lpEnd++; + + while (lpEnd > lpMsgBuf && // Trim trailing newlines + (*(lpEnd - 1) == L'\n' || *(lpEnd - 1) == L'\r')) + lpEnd--; + + ret.assign(lpMsgBuf, lpEnd - lpMsgBuf); + LocalFree(lpMsgBuf); + } + } + + public: + + /** Return the HRESULT for the error. + */ + HRESULT hr() const throw() + { + return hr_; + } + + /// \name wrappers for IErrorInfo + //@{ + + /// Description of the error. + bstr_t description() const + { + bstr_t rv; + if (!ei_.is_null()) ei_->GetDescription( rv.out() ) | raise_exception; + return rv; + } + + /// The error source description. + bstr_t source() const + { + bstr_t rv; + if (!ei_.is_null()) ei_->GetSource( rv.out() ) | raise_exception; + return rv; + } + + /// Interface IID. + GUID guid() const + { + GUID rv; + if (!ei_.is_null()) ei_->GetGUID( &rv ) | raise_exception; + else ZeroMemory(&rv, sizeof(rv)); + return rv; + } + + /// Helpfile name. + bstr_t help_file() const + { + bstr_t rv; + if (!ei_.is_null()) ei_->GetHelpFile( rv.out() ) | raise_exception; + return rv; + } + + + /// Help conext. + DWORD help_context() const + { + DWORD rv = 0; + if (!ei_.is_null()) ei_->GetHelpContext( &rv ) | raise_exception; + return rv; + } + //@} + + /// Return the error-info object. + com_ptr get_ei() const + { + return ei_; + } + + private: + mutable std::string what_; + com_ptr ei_; + HRESULT hr_; + }; + + + namespace impl { + + inline HRESULT return_com_error(HRESULT hr, const bstr_t &desc, const bstr_t &src = auto_attach(BSTR(NULL)), + const uuid_t &iid=CLSID_NULL, const bstr_t &helpFile=bstr_t(), DWORD helpContext = -1) + { + com_ptr cei(impl::CreateErrorInfo()); + if (cei.is_null() == false) { + try { + cei->SetDescription(desc.in()); + if (!src.is_null() ) + cei->SetSource( src.in() ); + if (iid != uuid_t()) + cei->SetGUID( iid ); + if (!helpFile.is_null()) + { + cei->SetHelpFile( helpFile.in() ); + cei->SetHelpContext( helpContext ); + } + com_ptr ei = com_cast(cei); + ::SetErrorInfo(0, ei.in()); + } catch (std::bad_alloc&) + {} + } + return hr; + } + inline HRESULT return_com_error(const std::exception& err, const bstr_t &src = auto_attach(BSTR(NULL)), + const uuid_t &iid=CLSID_NULL, const bstr_t &helpFile=bstr_t(), DWORD helpContext = -1) + { + return return_com_error( E_FAIL, bstr_t(err.what()),src,iid,helpFile, helpContext ); + } + inline HRESULT return_com_error(const com_error& err, const bstr_t &src = bstr_t(), const uuid_t &iid = CLSID_NULL) throw() + { + const bstr_t &cursrc =err.source(); + const uuid_t &curiid =err.guid(); + // Return error info with more info. + return return_com_error( err.hr(), err.description(), cursrc.is_null()?src:cursrc, + curiid.is_null()?iid:curiid, err.help_file(), err.help_context()); + } + + + inline void throw_com_error_(HRESULT hr, const com_ptr& ei) + { + throw_error_handler::throw_error(hr, ei); + } + + // Raising an HRESULT with a message + inline void raise_exception_t::operator()(const bstr_t& msg, HRESULT hr/* = E_FAIL*/) const + { + throw com_error(msg, hr); + } + + // Raising an HRESULT + inline void raise_exception_t::operator()(HRESULT hr) const + { + throw com_error(hr); + } + + } // namespace impl + + /*! \addtogroup ErrorHandling + */ + //@{ + + /** Throw COM error using com_error, using HRESULT and IErrorInfo. + */ + template inline void throw_com_error(Itf* p, HRESULT hr) + { + if (impl::supports_ErrorInfo(p)) + { + com_ptr ei = impl::GetErrorInfo(); + if (ei.is_null() == false) impl::throw_com_error_(hr, ei); + } + throw com_error(hr); + } + + template + inline void throw_error_handler::throw_error(HRESULT hr, const com_ptr &ei) + { + throw com_error(hr, ei); + } + + /** + * Construct exception for a method called on a raw COM interface. + * + * This method aims to imbue the com_error with as much information about + * the failure as possible: + * - If the interface supports IErrorInfo, the information is taken from + * the last ErrorInfo set on the current thread. + * - If not, the HRESULT alone determines the message. + * + * Use this constructor immediately after an interface returns a + * failure code before any other code can call SetErrorInfo and + * overwrite the error. + * + * \param failure_source Interface operator method returned a failure code. + * \param hr HRESULT value of error. + * + * \todo Can we add an optional user-defined message to this? + */ + template + com_error com_error_from_interface(Itf* failure_source, HRESULT hr) + { + if (impl::supports_ErrorInfo(failure_source)) + return com_error(hr, impl::GetErrorInfo()); + else + return com_error(hr); + } + + template + com_error com_error_from_interface( + com_ptr failure_source, HRESULT hr) + { + return com_error_from_interface(failure_source.get(), hr); + } + + //@} +} + +#pragma warning(pop) + +#endif diff --git a/lib/local/CamCom/comet/error_fwd.h b/lib/local/CamCom/comet/error_fwd.h new file mode 100644 index 0000000..9a71c8c --- /dev/null +++ b/lib/local/CamCom/comet/error_fwd.h @@ -0,0 +1,119 @@ +/** \file + * Error forwarding - using operator|. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_ERROR_FWD_H +#define COMET_ERROR_FWD_H + +#include + +#include +#include + +#include + +#pragma warning(push) +#pragma warning(disable : 4290) + +namespace comet { + template class com_ptr; + class bstr_t; + + class com_error; + /*! \addtogroup ErrorHandling + */ + //@{ + namespace impl { + class raise_exception_t + { + public: + // Raising a std::exception + // inline void operator()(const std::exception& err) const; + + // Raising an HRESULT with a message + inline void operator()(const bstr_t& msg, HRESULT hr = E_FAIL) const; + + // Raising an HRESULT + inline void operator()(HRESULT hr) const; + }; + + } + + //! Raise exception "function" + /*! + raise_exception can by used in two different ways: + + First example. The 'do or die' paradigm using overloaded operator|. + Here try() is a function that returns an HRESULT. If try fails an exception will be raised. + \code + try() | raise_exception; + \endcode + + Second example. Using raise_exception as an exception throwing function. + \code + raise_exception(E_POINTER); + raise_exception(L"Ran out of toilet paper!", E_FAIL); + \endcode + + */ + static impl::raise_exception_t raise_exception; + + //! Overload for the 'do or die' useage of raise_exception. + /*! + \code + try() | raise_exception; + \endcode + */ + + namespace impl{ + inline HRESULT operator|(HRESULT hr, const impl::raise_exception_t&) + {if (FAILED(hr)) raise_exception(hr); return hr; } + } + using impl::operator|; + + /**! \struct throw_error_handler error_fwd.h comet\error_fwd.h + * Overridable error info handling. + * To override the error handling, use code like this, making sure + * that you define the handler before including comet/error.h. + \code + #include + template<> struct throw_error_handler + { + static inline void throw_error(HRESULT hr, const com_ptr &ei); + }; + #include + // #include + template<> + inline void throw_error_handler::throw_error(HRESULT hr, const com_ptr &ei) + { + .... Override here .... + } + \endcode + */ + + template + struct throw_error_handler + { + /// Called to throw the error. + static inline void throw_error(HRESULT hr, const com_ptr &ei); + }; + //@} +} + +#pragma warning(pop) + +#endif diff --git a/lib/local/CamCom/comet/exe_server.h b/lib/local/CamCom/comet/exe_server.h new file mode 100644 index 0000000..5d53fae --- /dev/null +++ b/lib/local/CamCom/comet/exe_server.h @@ -0,0 +1,292 @@ +/** \file + * exe-server classes. + */ +/* + * Copyright 2001, 2002 Mikael Lindgren, Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_EXE_SERVER_H +#define COMET_EXE_SERVER_H + +#include +#include + +namespace comet { + + namespace impl { + template struct register_class_entry + { + typedef COMET_STRICT_TYPENAME CLS_LIST::head CLASS; + typedef COMET_STRICT_TYPENAME CLS_LIST::tail NEXT; + + template struct register_info + { + DWORD id; + }; + + static register_info& get_register_info() + { + static register_info info; + return info; + } + COMET_FORCEINLINE static HRESULT register_class_object(DWORD context, DWORD flags) + { + const IID& clsid = comtype::uuid(); + ::IUnknown* p = impl::coclass_table_entry::factory::get(clsid); + if (p) + { + HRESULT hr = ::CoRegisterClassObject(clsid, p, context, flags, &get_register_info().id); + p->Release(); + if (hr != S_OK) + return hr; + } + return register_class_entry::register_class_object(context, flags); + } + + COMET_FORCEINLINE static void revoke_class_object() + { + ::CoRevokeClassObject(get_register_info().id); + register_class_entry::revoke_class_object(); + } + }; + + template <> struct register_class_entry + { + COMET_FORCEINLINE static HRESULT register_class_object(DWORD context, DWORD flags) + { + COMET_NOTUSED(context); + COMET_NOTUSED(flags); + return S_OK; + } + + COMET_FORCEINLINE static void revoke_class_object() + { + } + }; + }; + + /*! \addtogroup Server + */ + //@{ + + //! Define an EXE server + template > class exe_server : private thread + { +#if !(_WIN32_WINNT >= 0x0400 ) && !defined(_WIN32_DCOM) + // Implementing a free threaded exe server requires NT 4.0 or better. + COMET_STATIC_ASSERT(FREE_THREADED == false); +#endif + + typedef coclass_table COCLASS_TABLE; + + enum { terminate_pause = 1000, idle_shutdown_time = 5000 }; + + public: + exe_server(HINSTANCE instance); + exe_server(HINSTANCE instance, const GUID& appid, const tstring& appid_descr); + ~exe_server(); + + HRESULT run(); + + HRESULT register_server(); + HRESULT unregister_server(); + HRESULT register_class_objects(DWORD context, DWORD flags); + void revoke_class_objects(); + + private: + event shutdown_event_; + DWORD main_thread_id_; + const GUID* appid_; + tstring appid_descr_; + + virtual DWORD thread_main(); + }; + //@} + + template + exe_server::exe_server(HINSTANCE instance): + main_thread_id_(::GetCurrentThreadId()), + appid_(0) + { + module_t& m = module(); + + m.instance(instance); + m.set_shutdown_event(shutdown_event_); + + // initialize static variables in factory::get to avoid potential thread safety problem. + ::IUnknown* cf = COCLASS_TABLE::find(IID_NULL); + } + + template + exe_server::exe_server(HINSTANCE instance, const GUID& appid, const tstring& appid_descr): + main_thread_id_(::GetCurrentThreadId()), + appid_(&appid), appid_descr_(appid_descr) + { + module_t& m = module(); + + m.instance(instance); + m.set_shutdown_event(shutdown_event_); + + // initialize static variables in factory::get to avoid potential thread safety problem. + ::IUnknown* cf = COCLASS_TABLE::find(IID_NULL); + } + + template + exe_server::~exe_server() + { + module().clear_shutdown_event(); + } + + template + HRESULT exe_server::run() + { + thread::start(); + + HRESULT hr; +#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM + if (FREE_THREADED) + { + hr = register_class_objects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE|REGCLS_SUSPENDED); + if (SUCCEEDED(hr)) + hr = ::CoResumeClassObjects(); + } + else +#endif + hr = register_class_objects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE); + + if (SUCCEEDED(hr)) + { + MSG msg; + while (::GetMessage(&msg, 0, 0, 0)) + ::DispatchMessage(&msg); + } + else if (thread::running()) + { + shutdown_event_.set(); + thread::wait(0); + } + + revoke_class_objects(); + Sleep(terminate_pause); //wait for any threads to finish + + module().shutdown(); + + return hr; + } + + template + HRESULT exe_server::register_server() + { + TCHAR filename[MAX_PATH]; + + GetModuleFileName(module().instance(), filename, MAX_PATH); + + { + HRESULT hr = impl::typelibrary_registration::perform(filename, false); + if(FAILED(hr)) return SELFREG_E_TYPELIB; + } + + try { + if (appid_) + { + tstring key(_T("AppID\\{") + uuid_t(*appid_).str() + _T("}")); + + regkey rkey(HKEY_CLASSES_ROOT); + rkey.create(key)[_T("")] = appid_descr_; + } + COCLASS_TABLE::registration(filename, false, false, appid_); + } + catch (const com_error &e) + { + unregister_server(); + return impl::return_com_error(e); + } + catch (const std::exception &e) + { + unregister_server(); + ::OutputDebugStringA(e.what()); + return E_FAIL; + } + + return S_OK; + } + + template + HRESULT exe_server::unregister_server() + { + TCHAR filename[MAX_PATH]; + GetModuleFileName(module().instance(), filename, MAX_PATH); + + impl::typelibrary_registration::perform(filename, true); + + if (appid_) + { + tstring key(_T("AppID\\{") + uuid_t(*appid_).str() + _T("}")); + + regkey rkey(HKEY_CLASSES_ROOT); + rkey.delete_subkey_nothrow(key); + } + COCLASS_TABLE::registration(filename, true, false, appid_); + return S_OK; + } + + template + HRESULT exe_server::register_class_objects(DWORD context, DWORD flags) + { + return impl::register_class_entry::register_class_object(context, flags); + } + + template + void exe_server::revoke_class_objects() + { + impl::register_class_entry::revoke_class_object(); + } + + template + DWORD exe_server::thread_main() + { + module_t& m = module(); + + while (1) + { + shutdown_event_.wait(); + do + { + m.reset_activity_flag(); + } while (shutdown_event_.wait(idle_shutdown_time)); + // timed out + + if (!m.has_activity()) // if no activity let's really bail + { +#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM + if (FREE_THREADED) + { + ::CoSuspendClassObjects(); + if (!m.has_activity()) + break; + } + else + break; +#else + break; +#endif + } + } + ::PostThreadMessage(main_thread_id_, WM_QUIT, 0, 0); + return 0; + } +}; + + +#endif diff --git a/lib/local/CamCom/comet/functor.h b/lib/local/CamCom/comet/functor.h new file mode 100644 index 0000000..56a36f3 --- /dev/null +++ b/lib/local/CamCom/comet/functor.h @@ -0,0 +1,1341 @@ +/** \file + * Functor implementation. + * + * functor.h is based on the functor library presented in Chapter 5 of + *
"Modern C++ Design" by Andrei Alexandrescu. + * + */ + +/* + * Copyright 2001 Sofus Mortensen, Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_FUNCTOR_H +#define COMET_FUNCTOR_H + +#include +#include +#include +#include + +namespace comet { + /*! \addtogroup Misc + */ + //@{ + +#ifdef COMET_PARTIAL_SPECIALISATION + +namespace detail { + + template struct parameter_type_aux + { + typedef const T& result; + }; + + template struct parameter_type_aux + { + typedef T result; + }; + +}; + +/** \struct parameter_type functor.h comet/functor.h + * Gives us a reference to a type. If the type is already a reference, then + * just returns the type. + */ +template struct parameter_type +{ + enum { is_ref = type_traits::is_reference::value }; + /// A reference to \p T or \p T if it is already a reference. + typedef typename detail::parameter_type_aux< (is_ref!=0) ,T >::result result; +}; +#else // COMET_PARTIAL_SPECIALISATION +namespace detail { + + template struct parameter_type_aux + { + template struct X + { + typedef const T& result; + }; + }; + + template<> struct parameter_type_aux + { + template struct X + { + typedef T result; + }; + }; + +}; + +template struct parameter_type +{ + enum { is_ref = type_traits::is_reference::value }; + typedef detail::parameter_type_aux< (is_ref!=0) >::X::result result; +}; +#endif // COMET_PARTIAL_SPECIALISATION + +#ifndef COMET_PARTIAL_SPECIALISATION + +#define COMET_PARTIAL_NAME( name ) X +#define COMET_PARTIAL_NS_1(A) >::X +#define COMET_PARTIAL_NS_2(A,B) >::X +#define COMET_PARTIAL_NS_3(A,B,C) >::X + +#define COMET_DEFINE_PARTIAL( X1, X2 , name) \ +template < X1 > struct name\ +{ \ + template < X2 > class X + +#define COMET_SPECIALISE_PARTIAL( SX1, X2 , name) \ +template <> struct name\ +{ \ + template < X2 > class X + +#define COMET_DEFINE_PARTIAL2( X1, X2, X3 , name) \ +template < X1 > struct name\ +{ \ + template < X2, X3 > class X + +#define COMET_SPECIALISE_PARTIAL2( SX1, X2, X3 , name) \ +template <> struct name\ +{ \ + template < X2, X3 > class X + +#define COMET_DEFINE_PARTIAL3( X1, X2, X3, X4 , name) \ +template < X1 > struct name\ +{ \ + template < X2, X3, X4 > class X + +#define COMET_SPECIALISE_PARTIAL3( SX1, X2, X3, X4 , name) \ +template <> struct name\ +{ \ + template < X2, X3, X4 > class X + + +#define COMET_CLOSE_PARTIAL() }; + +#else + +#define COMET_PARTIAL_NAME( name ) name +#define COMET_PARTIAL_NS_1(A) ,A> +#define COMET_PARTIAL_NS_2(A,B) ,A,B> +#define COMET_PARTIAL_NS_3(A,B,C) ,A,B,C> + +#define COMET_CLOSE_PARTIAL() + +#define COMET_PARTIAL_CONSTRUCTOR( name ) name + +#define COMET_DEFINE_PARTIAL(TN1, X1, TN2, X2 , name) \ +template class name + +#define COMET_SPECIALISE_PARTIAL( SX1, TN2,X2 , name) \ +template < TN2 X2 > class name + +#define COMET_DEFINE_PARTIAL2( TN1,X1,TN2,X2,TN3,X3 , name) \ +template class name + +#define COMET_SPECIALISE_PARTIAL2( SX1, TN2,X2, TN3,X3 , name) \ +template < TN2 X2, TN3 X3 > class name + +#define COMET_DEFINE_PARTIAL3(TN1,X1, TN2,X2, TN3,X3, TN4,X4 , name) \ +template < TN1 X1, TN2 X2, TN3 X3,TN4 X4 > class name + +#define COMET_SPECIALISE_PARTIAL3( SX1, TN2,X2, TN3,X3, TN4,X4 , name) \ +template < TN2 X2, TN3 X3, TN4 X4 > class name + +#endif + +/** \struct parameter_types functor.h comet/functor.h + * Gives the parameter type of parameters 1 thru 16. + * This gaurantees the arguments pass by reference, without breaking if it is already a + * reference. + * \sa parameter_type + */ +template struct parameter_types +{ + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_1; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_2; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_3; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_4; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_5; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_6; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_7; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_8; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_9; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_10; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_11; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_12; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_13; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_14; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_15; + typedef typename parameter_type< typename typelist::type_at::result >::result PARM_16; +}; + +template class functor_impl; + + +/** \struct functor_impl_aux functor.h comet/functor.h + * Virtual interface for functor implementation. + * Provide partial specialisation of functor_impl to parameter type. + * \param L number of arguments. + * \param R Return type. + * \param LIST Argument list. + */ +COMET_DEFINE_PARTIAL2( int,L,typename,R,typename,LIST,functor_impl_aux) : public parameter_types +{ + /** Virtual override to call the function. + * \param arguments Whatever arguments provided by \a LIST + * \return Return type is \a R + */ + virtual R operator()( nil arguments ) = 0; + + /** Clone the functor. (easiest way of managing memory - should only be + * a light implementation anyway). + */ + virtual functor_impl* clone() const = 0; + /** Provide virtual destruction. + */ + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + + +COMET_SPECIALISE_PARTIAL2( 0, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(1, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(2, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(3, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(4, typename,R, typename,LIST,functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(5,typename,R, typename,LIST,functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(6, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(7, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(8, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(9, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(10, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(11, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(12, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(13, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(14, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13, PARM_14 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(15, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13, PARM_14, PARM_15 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2(16, typename,R, typename,LIST, functor_impl_aux) : public parameter_types +{ +public: + virtual R operator()( PARM_1, PARM_2, PARM_3, PARM_4, PARM_5, PARM_6, PARM_7, PARM_8, PARM_9, PARM_10, PARM_11, PARM_12, PARM_13, PARM_14, PARM_15, PARM_16 ) = 0; + virtual functor_impl* clone() const = 0; + virtual ~COMET_PARTIAL_NAME(functor_impl_aux)() {} +}; +COMET_CLOSE_PARTIAL() + + +/** \struct functor_handler functor.h comet/functor.h + * Provide implementation of functor_impl virtual type for functions. + * The implementation is effectively 'partially specialised' to return type. + */ +COMET_DEFINE_PARTIAL2(typename,RT, typename,PF, typename,FUN, functor_handler) + : public functor_impl< typename PF::result_type, typename PF::parm_list > +{ +public: + typedef typename PF::result_type result_type; + + COMET_PARTIAL_NAME(functor_handler)(const FUN& fun) : fun_(fun) {} + functor_impl< typename PF::result_type, typename PF::parm_list >* clone() const + { return new COMET_PARTIAL_NAME(functor_handler)(*this); } + + result_type operator()( ) + { return fun_( ); } + + result_type operator()( typename PF::PARM_1 p1 ) + { return fun_( p1 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) + { return fun_( p1, p2 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) + { return fun_( p1, p2, p3 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) + { return fun_( p1, p2, p3, p4 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) + { return fun_( p1, p2, p3, p4, p5 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) + { return fun_( p1, p2, p3, p4, p5, p6 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) + { return fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } + +private: + FUN fun_; + +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL2( void, typename,PF, typename,FUN , functor_handler) + : public functor_impl< typename PF::result_type, typename PF::parm_list > +{ +public: + typedef typename PF::result_type result_type; + + COMET_PARTIAL_NAME(functor_handler)(const FUN& fun) : fun_(fun) {} + + functor_impl< typename PF::result_type, typename PF::parm_list >* clone() const + { return new COMET_PARTIAL_NAME(functor_handler)(*this); } + result_type operator()( ) + { fun_( ); } + + result_type operator()( typename PF::PARM_1 p1 ) + { fun_( p1 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) + { fun_( p1, p2 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) + { fun_( p1, p2, p3 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) + { fun_( p1, p2, p3, p4 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) + { fun_( p1, p2, p3, p4, p5 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) + { fun_( p1, p2, p3, p4, p5, p6 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) + { fun_( p1, p2, p3, p4, p5, p6, p7 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) + { fun_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } + + +private: + FUN fun_; + +}; +COMET_CLOSE_PARTIAL() + +/** \struct memfun_handler functor.h comet/functor.h + * Provide implementation of functor_impl virtual type for calling a member on + * an object. + * The implementation is effectively 'partially specialised' to return type. + * \param RT Return type + * \param PF Parameter types + * \param OBJ_PTR Object pointer type + * \param MEMFN_PTR Function pointer type + */ +COMET_DEFINE_PARTIAL3(typename,RT,typename,PF, typename,OBJ_PTR, typename,MEMFN_PTR , memfun_handler) + : public functor_impl +{ +private: + OBJ_PTR obj_; + MEMFN_PTR memfn_; + +public: + typedef typename PF::result_type result_type; + + COMET_PARTIAL_NAME(memfun_handler)(const OBJ_PTR& obj, MEMFN_PTR memfn) : obj_(obj), memfn_(memfn) {} + + functor_impl* clone() const + { return new COMET_PARTIAL_NAME(memfun_handler)(*this); } + + result_type operator()( ) + { return ((*obj_).*memfn_)( ); } + + result_type operator()( typename PF::PARM_1 p1 ) + { return ((*obj_).*memfn_)( p1 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) + { return ((*obj_).*memfn_)( p1, p2 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) + { return ((*obj_).*memfn_)( p1, p2, p3 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) + { return ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } + +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL3( void, typename,PF, typename,OBJ_PTR, typename,MEMFN_PTR , memfun_handler) + : public functor_impl +{ +public: + typedef typename PF::result_type result_type; + + COMET_PARTIAL_NAME(memfun_handler)(const OBJ_PTR& obj, MEMFN_PTR memfn) : obj_(obj), memfn_(memfn) {} + + functor_impl* clone() const + { return new COMET_PARTIAL_NAME(memfun_handler)(*this); } + + result_type operator()( ) + { ((*obj_).*memfn_)( ); } + + result_type operator()( typename PF::PARM_1 p1 ) + { ((*obj_).*memfn_)( p1 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2 ) + { ((*obj_).*memfn_)( p1, p2 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3 ) + { ((*obj_).*memfn_)( p1, p2, p3 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } + + result_type operator()( typename PF::PARM_1 p1, typename PF::PARM_2 p2, typename PF::PARM_3 p3, typename PF::PARM_4 p4, typename PF::PARM_5 p5, typename PF::PARM_6 p6, typename PF::PARM_7 p7, typename PF::PARM_8 p8, typename PF::PARM_9 p9, typename PF::PARM_10 p10, typename PF::PARM_11 p11, typename PF::PARM_12 p12, typename PF::PARM_13 p13, typename PF::PARM_14 p14, typename PF::PARM_15 p15, typename PF::PARM_16 p16 ) + { ((*obj_).*memfn_)( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } + +private: + OBJ_PTR obj_; + MEMFN_PTR memfn_; +}; +COMET_CLOSE_PARTIAL() + +/** \class functor_impl functor.h comet/functor.h + * Implementation of a functor. + * \param R Return type. + * \param LIST List of argument types. + */ +template +class ATL_NO_VTABLE functor_impl : public functor_impl_aux< typelist::length::value COMET_PARTIAL_NS_2(R,LIST) +{}; + +template class functor; + +/** Provide various operator() versions to call the virtual functor. + * This is Effectively paritally specialised to return type (for void + * implementation). + * \param R Return type. + * \param LIST argument list. + */ +COMET_DEFINE_PARTIAL( typename,R,typename,LIST, functor_operators ) : public parameter_types +{ + typedef functor BASE; +public: + R operator()( ) + { return (*(static_cast(this)->impl()))( ); } + + R operator()( PARM_1 p1 ) + { return (*(static_cast(this)->impl()))( p1 ); } + + R operator()( PARM_1 p1, PARM_2 p2 ) + { return (*(static_cast(this)->impl()))( p1, p2 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } + + R operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15, PARM_16 p16 ) + { return (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } + +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL( void,typename,LIST , functor_operators) + : public parameter_types +{ + typedef functor BASE; +public: + + void operator()( ) + { (*(static_cast(this)->impl()))( ); } + + void operator()( PARM_1 p1 ) + { (*(static_cast(this)->impl()))( p1 ); } + + void operator()( PARM_1 p1, PARM_2 p2 ) + { (*(static_cast(this)->impl()))( p1, p2 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3 ) + { (*(static_cast(this)->impl()))( p1, p2, p3 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); } + + void operator()( PARM_1 p1, PARM_2 p2, PARM_3 p3, PARM_4 p4, PARM_5 p5, PARM_6 p6, PARM_7 p7, PARM_8 p8, PARM_9 p9, PARM_10 p10, PARM_11 p11, PARM_12 p12, PARM_13 p13, PARM_14 p14, PARM_15 p15, PARM_16 p16 ) + { (*(static_cast(this)->impl()))( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); } + +}; +COMET_CLOSE_PARTIAL() + +/** \class functor functor.h comet/functor.h + * Functor pointer class and implementation factory. This provides the interface to the functor library. + * \param R Return type + * \param LIST List of types using \link make_list comet::make_list \endlink + */ +template class functor : public functor_operators IMPL; + + typedef R result_type; + typedef LIST parm_list; + + functor() {}; + functor(const functor& f) : impl_((f.impl_.get()== NULL) ? NULL: f.impl_->clone()) {} + explicit functor(std::auto_ptr< IMPL > impl) : impl_(impl) {} + + template explicit functor(int, FUN fun) : impl_(new functor_handler), FUN)(fun)) + {} + + template functor(int, const OBJ_PTR& obj, MEMFN_PTR memfn) + : impl_(new memfun_handlerCOMET_PARTIAL_NS, OBJ_PTR, MEMFN_PTR>(obj, memfn)) + {} + + functor& operator=(const functor& rhs) + { + std::auto_ptr tmp((rhs.impl_.get() == NULL)? NULL: rhs.impl_->clone()); + impl_ = tmp; + return *this; + } + + std::auto_ptr &impl(){return impl_;} + + bool is_null() const { return impl_.get() == NULL; } +protected: + std::auto_ptr impl_; +}; + +/** \class chainer functor.h comet/functor.h + * Implements a functor that chains one functor to another functor. + * \param R Return type + * \param LIST Typelist of arguments + * \sa chain + */ +COMET_DEFINE_PARTIAL(typename,R, typename,LIST, chainer) : public functor_impl +{ +private: +typedef functor FUN; + +FUN fun1_; +FUN fun2_; + + +public: +COMET_PARTIAL_NAME(chainer)(const FUN& fun1, const FUN& fun2) : fun1_(fun1), fun2_(fun2) +{} + +COMET_PARTIAL_NAME(chainer)(const COMET_PARTIAL_NAME(chainer)& x) : fun1_(x.fun1_), fun2_(x.fun2_) +{} + +functor_impl* clone() const +{ return new COMET_PARTIAL_NAME(chainer)(*this); } + + R operator()( ) + { + fun1_( ); + return fun2_( ); + } + + R operator()( typename FUN::PARM_1 p1 ) + { + fun1_( p1 ); + return fun2_( p1 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2 ) + { + fun1_( p1, p2 ); + return fun2_( p1, p2 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3 ) + { + fun1_( p1, p2, p3 ); + return fun2_( p1, p2, p3 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4 ) + { + fun1_( p1, p2, p3, p4 ); + return fun2_( p1, p2, p3, p4 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5 ) + { + fun1_( p1, p2, p3, p4, p5 ); + return fun2_( p1, p2, p3, p4, p5 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6 ) + { + fun1_( p1, p2, p3, p4, p5, p6 ); + return fun2_( p1, p2, p3, p4, p5, p6 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); + } + + R operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15, typename FUN::PARM_16 p16 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); + return fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); + } + + +}; +COMET_CLOSE_PARTIAL() + +/** Specialisation for void. + */ +COMET_SPECIALISE_PARTIAL( void, typename,LIST , chainer ) + : public functor_impl +{ +private: + typedef functor FUN; + + FUN fun1_; + FUN fun2_; + + +public: + COMET_PARTIAL_NAME(chainer)(const FUN& fun1, const FUN& fun2) : fun1_(fun1), fun2_(fun2) + {} + + COMET_PARTIAL_NAME(chainer)(const COMET_PARTIAL_NAME(chainer)& x) : fun1_(x.fun1_), fun2_(x.fun2_) + {} + + functor_impl* clone() const + { return new COMET_PARTIAL_NAME(chainer)(*this); } + + void operator()( ) + { + fun1_( ); + fun2_( ); + } + + void operator()( typename FUN::PARM_1 p1 ) + { + fun1_( p1 ); + fun2_( p1 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2 ) + { + fun1_( p1, p2 ); + fun2_( p1, p2 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3 ) + { + fun1_( p1, p2, p3 ); + fun2_( p1, p2, p3 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4 ) + { + fun1_( p1, p2, p3, p4 ); + fun2_( p1, p2, p3, p4 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5 ) + { + fun1_( p1, p2, p3, p4, p5 ); + fun2_( p1, p2, p3, p4, p5 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6 ) + { + fun1_( p1, p2, p3, p4, p5, p6 ); + fun2_( p1, p2, p3, p4, p5, p6 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7 ); + fun2_( p1, p2, p3, p4, p5, p6, p7 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ); + } + + void operator()( typename FUN::PARM_1 p1, typename FUN::PARM_2 p2, typename FUN::PARM_3 p3, typename FUN::PARM_4 p4, typename FUN::PARM_5 p5, typename FUN::PARM_6 p6, typename FUN::PARM_7 p7, typename FUN::PARM_8 p8, typename FUN::PARM_9 p9, typename FUN::PARM_10 p10, typename FUN::PARM_11 p11, typename FUN::PARM_12 p12, typename FUN::PARM_13 p13, typename FUN::PARM_14 p14, typename FUN::PARM_15 p15, typename FUN::PARM_16 p16 ) + { + fun1_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); + fun2_( p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16 ); + } + +}; +COMET_CLOSE_PARTIAL() + +/** \class binder_first functor.h comet/functor.h + * Implements a functor that calls the first parameter bound to a specified + * type. The functor type implemented is effectively functor. + * \sa bind_first + */ +COMET_DEFINE_PARTIAL( typename,R, typename,LIST, binder_first) + : public functor_impl +{ + public: + typedef functor outgoing_type; + typedef typename functor::PARM_1 bound_type; + typedef R result_type; + + private: + functor fun_; + bound_type bound_; + public: + COMET_PARTIAL_NAME(binder_first)(const functor& fun, bound_type bound) : bound_(bound) + { + fun_ = fun; + } + + COMET_PARTIAL_NAME(binder_first)(const COMET_PARTIAL_NAME(binder_first)& x) : bound_(x.bound_) + { + fun_ = x.fun_; + } + + functor_impl* clone() const + { return new COMET_PARTIAL_NAME(binder_first)(*this); } + + result_type operator()() + { + return fun_(bound_ ); + } + + result_type operator()( typename outgoing_type::PARM_1 p1) + { + return fun_(bound_, p1); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2) + { + return fun_(bound_, p1, p2); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3) + { + return fun_(bound_, p1, p2, p3); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4) + { + return fun_(bound_, p1, p2, p3, p4); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5) + { + return fun_(bound_, p1, p2, p3, p4, p5); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); + } + + result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15, typename outgoing_type::PARM_16 p16) + { + return fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); + } + + +}; +COMET_CLOSE_PARTIAL() + +COMET_SPECIALISE_PARTIAL( void, typename,LIST , binder_first) + : public functor_impl +{ +public: +typedef functor outgoing_type; +typedef typename functor::PARM_1 bound_type; +typedef void result_type; + +private: +functor fun_; +bound_type bound_; +public: +COMET_PARTIAL_NAME(binder_first)(const functor& fun, bound_type bound) : bound_(bound) +{ + fun_ = fun; +} + +COMET_PARTIAL_NAME(binder_first)(const COMET_PARTIAL_NAME(binder_first)& x) : bound_(x.bound_) +{ + fun_ = x.fun_; +} + +functor_impl* clone() const +{ return new COMET_PARTIAL_NAME(binder_first)(*this); } + +result_type operator()() +{ + fun_(bound_ ); +} + +result_type operator()( typename outgoing_type::PARM_1 p1) +{ + fun_(bound_, p1); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2) +{ + fun_(bound_, p1, p2); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3) +{ + fun_(bound_, p1, p2, p3); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4) +{ + fun_(bound_, p1, p2, p3, p4); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5) +{ + fun_(bound_, p1, p2, p3, p4, p5); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15); +} + +result_type operator()( typename outgoing_type::PARM_1 p1, typename outgoing_type::PARM_2 p2, typename outgoing_type::PARM_3 p3, typename outgoing_type::PARM_4 p4, typename outgoing_type::PARM_5 p5, typename outgoing_type::PARM_6 p6, typename outgoing_type::PARM_7 p7, typename outgoing_type::PARM_8 p8, typename outgoing_type::PARM_9 p9, typename outgoing_type::PARM_10 p10, typename outgoing_type::PARM_11 p11, typename outgoing_type::PARM_12 p12, typename outgoing_type::PARM_13 p13, typename outgoing_type::PARM_14 p14, typename outgoing_type::PARM_15 p15, typename outgoing_type::PARM_16 p16) +{ + fun_(bound_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16); +} + +}; +COMET_CLOSE_PARTIAL() + +/** Constructs a functor that calls a function with an extra parameter (at the + * beginning) of type \p T. This gets called with the value \p bound. + * \relates binder + */ +template +functor bind_first( const functor& fun, const T& bound) +{ + return functor(std::auto_ptr< functor::IMPL >(new binder_firstCOMET_PARTIAL_NS(fun, bound))); +} + +/** Chains \p fun1 to \p fun2. + * \return functor chaining \p fun1 to \p fun2 + * \relates chainer + */ +template +functor chain( const functor& fun1, const functor& fun2) +{ + return functor(std::auto_ptr< functor::IMPL >(new chainer + +#include + +namespace comet { + /*! \addtogroup COMType + */ + //@{ + + class GIT; + + /// Type-safe GIT Cookie. + template class GIT_cookie + { + friend class GIT; + public: + GIT_cookie(const GIT_cookie& c) : cookie_(c.cookie_) {} + explicit GIT_cookie(DWORD c) : cookie_(c) {} + GIT_cookie() : cookie_(0) {} + + DWORD get_cookie() const { return cookie_; } + private: + DWORD cookie_; + }; + + /// Global Interface Table wrapper. + class GIT { + public: + GIT() : git_(CLSID_StdGlobalInterfaceTable) + {} + + /** Register Interface in the GIT. + * \param ptr Interface to register. + * \return Type-safe cookie. + */ + template + GIT_cookie register_interface(com_ptr const & ptr) + { + DWORD cookie; + git_->RegisterInterfaceInGlobal(ptr.get(), uuidof(), &cookie) | raise_exception; + return GIT_cookie(cookie); + } + + /** Retrieve Interface in the GIT. + * \param c Cookie + * \return Marshalled interface. + */ + template + com_ptr get_interface(GIT_cookie const& c) + { + Itf* itf; + git_->GetInterfaceFromGlobal(c.get_cookie(), uuidof(), reinterpret_cast(&itf)) | raise_exception; + return auto_attach(itf); + } + + /** Revoke the cookie from the GIT. + * \param c Cookie. + */ + template + void revoke_interface(GIT_cookie const& c) + { + HRESULT hr = git_->RevokeInterfaceFromGlobal(c.get_cookie()); + hr; + assert(SUCCEEDED(hr)); + } + + private: + com_ptr< ::IGlobalInterfaceTable> git_; + }; + //@} + +} // namespace comet + +#endif diff --git a/lib/local/CamCom/comet/handle.h b/lib/local/CamCom/comet/handle.h new file mode 100644 index 0000000..085bb19 --- /dev/null +++ b/lib/local/CamCom/comet/handle.h @@ -0,0 +1,363 @@ +/** \file +* Wrapper for Win32 API HANDLE. +*/ +/* +* Copyright 2001,2004 Sofus Mortensen, Michael Geddes +* +* This material is provided "as is", with absolutely no warranty +* expressed or implied. Any use is at your own risk. Permission to +* use or copy this software for any purpose is hereby granted without +* fee, provided the above notices are retained on all copies. +* Permission to modify the code and to distribute modified code is +* granted, provided the above notices are retained, and a notice that +* the code was modified is included with the above copyright notice. +* +* This header is part of Comet version 2. +* https://github.com/alamaison/comet +*/ + +#ifndef COMET_HANDLE_H +#define COMET_HANDLE_H + +#include +#include +#include +#include +#include + +#include + +namespace comet { + + /*! \addtogroup COMType + */ + //@{ + + /** Base and policy class for auto_handle_wrap_t type. + * This provides the destroy/detach operations for auto_handle_wrap_t as well as + * providing a base class to contain the handle and to add functions to + * that are specific to the handle type. + * \relates auto_handle_wrap_t + * \sa auto_handle_wrap_t + */ + template< typename H, long INVALID_HANDLE_ > + class handle_policy_base_t + { + public: + /// Default constructor. + handle_policy_base_t() : handle_(reinterpret_cast(INVALID_HANDLE_)) {} + + explicit handle_policy_base_t( H handle) : handle_(handle) {} + + typedef H value_type; + + //! Implicit conversion to HANDLE + operator H() const throw() + { + // This function seemed not to work with returning a namespaced + // type. + return handle_; + } + static inline H invalid_handle() { return reinterpret_cast(INVALID_HANDLE_) ;} + + /// Is the handle valid? + bool valid() const + { + return handle_ != invalid_handle(); + } + + /// Detach a raw handle + H detach_handle() + { + return swap_handle(invalid_handle()); + } + + //! Detaches currently held handle without closing it. + static inline value_type detach( handle_policy_base_t &handle )throw() + { + return handle.detach_handle(); + } + + protected: + /// Destructor to prevent one of these from being created by itself. + ~handle_policy_base_t() + { } + + /// Detach the contained handle to the passed in. + void detach_to(handle_policy_base_t &rhs) throw() + { + value_type handle(handle_); + handle_= invalid_handle(); + rhs.handle_ = handle; + } + + H get_handle() const { return handle_; } + H *get_handle_ptr() { return &handle_;} + + H swap_handle(H new_handle) + { + H old = handle_; + handle_ = new_handle; + return old; + } + + private: + H handle_; + }; + + /** \class handle_nothrow_error_policy_t handle.h comet/handle.h + * Nothrow Error policy. + * \relates auto_handle_wrap_t + */ + struct handle_nothrow_error_policy_t + { + static void on_error() + { } + }; + + /** \class handle_throw_error_policy_t handle.h comet/handle.h + * Throwing Error policy. + * \relates auto_handle_wrap_t + */ + struct handle_throw_error_policy_t + { + static void on_error() + { + DWORD err = GetLastError(); + raise_exception(HRESULT_FROM_WIN32(err)); + } + }; + + /** \class auto_handle_wrap_t handle.h comet/handle.h + * Wrapper for a Win32 API/GDI HANDLE. + * Behaves similarly to an auto_ptr in that it implements single-reference, + * reference counting, with reference-transferring assignment and + * copy-construction. + */ + + template + class auto_handle_wrap_t : public handle_policy_base_t + { + typedef typename handle_policy_base_t::value_type value_type; + protected: + + /// Call destroy_handle + static inline bool destroy_( value_type h) + { + return C_::destroy_handle(h); + } + + /// Destroy the handle passed in. + /** Must be implemented by the parent class. + */ + static bool destroy_handle(value_type h); + + typedef handle_policy_base_t policy_base ; + + void set_handle( value_type h ) throw() + { + destroy_(this->swap_handle( h)); + } + + static bool expect_nonzero( BOOL value) + { + bool is_ok = (value != FALSE); + if (!is_ok) + ERROR_POLICY::on_error(); + return is_ok; + } + public: + + /// default constructor. + auto_handle_wrap_t() throw() + {} + + /// A reference to a handle. + typedef const C_ &ref; + + /** Assign by auto_attach. + */ + auto_handle_wrap_t( const impl::auto_attach_t &handle ) throw() + : policy_base(handle.get()) + {} + + /** Non-const copy constructor - takes control of the reference. + * \param rhs Handle to detach from. + */ + auto_handle_wrap_t( auto_handle_wrap_t &rhs) throw() + { + rhs.detach_to(*this); + } + + /** Non-const copy constructor - takes control of the reference. + * \param rhs Handle to detach from. + */ + auto_handle_wrap_t( policy_base &rhs) throw() + { + rhs.detach_to(*this); + } + + /** Destructor - closes the handle. + */ + ~auto_handle_wrap_t() throw() + { + destroy_(get()); + } + + + //! Assignment from similar handles. + /** Typically, there might be a different error policy. + */ + template + auto_handle_wrap_t & operator=(auto_handle_wrap_t& rhs) throw() + { + close_handle(); + rhs.detach_to(*this); + return *this; + } + + //! Assign by auto_attach + C_ &operator=(const impl::auto_attach_t &handle ) + { + close_handle(); + set_handle(handle.get()); + return *static_cast(this); + } + + //! Closes the currently held handle (if any). + bool close() throw() + { + return destroy_(policy_base::detach(*this)); + } + + //! \name Accessor methods + //@{ + + //! Fitter method. + /*! + Used when calling a function that take a HANDLE* argument. + + \code + auto_handle read_pipe, write_pipe; + + CreatePipe(read_pipe.out(), write_pipe.out(), 0, 0)); + \endcode + */ + typename policy_base::value_type* out() throw() + { + close_handle(); + return this->get_handle_ptr(); + } + + typename policy_base::value_type get() const throw() + { return this->get_handle(); } + typename policy_base::value_type in() const throw() + { return this->get_handle(); } + typename policy_base::value_type *inout() throw() + { return this->get_handle_ptr(); } + //@} + + static inline const C_ &create_const_reference(const value_type &val) + { return *reinterpret_cast(&val); } + + static inline C_ &create_reference(value_type &val) + { return *reinterpret_cast(&val); } + + /// Destroy a reference. + static bool destroy_reference(value_type h) + { + return true; + } + + private: + + //! Closes the currently held handle (if any). + inline void close_handle() + { + if (!close()) + ERROR_POLICY::on_error(); + } + }; + + namespace impl + { + /** \internal + */ + class THIS_IS_NOT_ALLOWED + { + ~THIS_IS_NOT_ALLOWED() {} + }; + } + + /// Disallow closing of a const handle. + template< typename H, long INVALID_HANDLE_ > + inline impl::THIS_IS_NOT_ALLOWED CloseHandle(const handle_policy_base_t&); + + /// Make sure closing of an auto_handle_wrap_t detaches first. + /** \return true if CloseHandle was successful. + */ + template< typename H, long INVALID_HANDLE_ > + bool CloseHandle(handle_policy_base_t &rhs) + { + return rhs.close(); + } + + /// Wrapper for HANDLE type + template< typename ERROR_POLICY = handle_nothrow_error_policy_t > + struct auto_handle_t : auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY > + { + typedef auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY > handle_base; + + /// Default constructor. + auto_handle_t() {} + /// Copy constructor. + auto_handle_t( auto_handle_t &rhs) + : auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY >(rhs) + {} + + /// Auto_attach constructor. + auto_handle_t( const impl::auto_attach_t< HANDLE > &rhs ) + : auto_handle_wrap_t< auto_handle_t, HANDLE, 0, ERROR_POLICY >(rhs) + { } + /// Default assignment. + auto_handle_t &operator=(auto_handle_t &rhs) + { + handle_base::operator=(rhs); + return *this; + } + auto_handle_t &operator=( const impl::auto_attach_t &rhs) + { + handle_base::operator=(rhs); + return *this; + } + + /// Destroy a handle + static bool destroy_handle( HANDLE h) + { + return ::CloseHandle(h) != FALSE; + } + + }; + + /// Auto handle - wrapper for HANLDE. + typedef auto_handle_t<> auto_handle; + /// Auto handle - throwing wrapper for HANDLE. + typedef auto_handle_t< handle_throw_error_policy_t > auto_handle_throw; + + /// Create a reference object to a handle that doesn't destroy it's contents. + template + struct auto_reference_t : T + { + auto_reference_t( const comet::impl::auto_attach_t &rhs ) : T(rhs) + {} + ~auto_reference_t() + { + destroy_reference(this->detach_handle()); + } + }; + //@} +} + +using comet::CloseHandle; + +#endif diff --git a/lib/local/CamCom/comet/handle_except.h b/lib/local/CamCom/comet/handle_except.h new file mode 100644 index 0000000..f5bf6b1 --- /dev/null +++ b/lib/local/CamCom/comet/handle_except.h @@ -0,0 +1,363 @@ +/** \file + * Handle Comet exceptions. + */ +/* + * Copyright 2003 Atex Media Command. All rights reserved. + * Copyright (C) 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ +#ifndef COMET_HANDLE_EXCEPT_H +#define COMET_HANDLE_EXCEPT_H + +#ifdef _SHOW_INC +#pragma message(" #Include " __FILE__) +#endif + +#include + +/** \page comethandleexception Custom Exception Handling + This allows the user to define how exception handling happens for a particular library. + + Unfortunately due to a compiler bug in MSVC 6 (fixed in 7), some of the + functionality won't be available for that compiler (this has also limited + the customisability originally designed for). + + To override the default behavior, specialise the struct + comet::comet_exception_handler and implement the functions defined + in the default implementation comet::comet_exception_handler. + \code + comet { + template<> + struct comet_exception_handler : comet_exception_handler + { + static inline HRESULT catcher_all( const source_info_t &info) + { + throw; + } + }; + } + \endcode + + With a suitable compiler, the method comet::comet_exception_handler::rethrow can be + overridden to provide support for custom exceptions. + + Don't try putting a try catch round a throw in \p catcher_all as the resulting destruct-twice + of the exception when using MSV6 will cause very hard to trace bugs. + */ + +#ifdef COMET_DISABLE_EXCEPTION_RETHROW_CATCH +#define COMET_CATCH_CLASS_EX(funcName,iid) \ + catch ( const com_error &err) { \ + return comet_exception_handler::catcher_com_error(err, impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ + } catch ( const std::exception &err) { \ + return comet_exception_handler::catcher_exception(err, impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ + } catch ( HRESULT hr ) { \ + return comet_exception_handler::catcher_hr(hr, impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ + } catch (...) { \ + return comet_exception_handler::catcher_all( impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ + } + +#define COMET_CATCH_UNKNOWN(funcName, iid, clsname) \ + catch ( const com_error &err) { \ + comet_exception_handler::catcher_com_error(err, source_info_t(funcName, iid, clsname)); \ + } catch ( const std::exception &err) { \ + comet_exception_handler::catcher_exception(err, source_info_t(funcName, iid, clsname)); \ + } catch ( HRESULT hr ) { \ + comet_exception_handler::catcher_hr(hr, source_info_t(funcName, iid, clsname)); \ + } catch (...) { \ + comet_exception_handler::catcher_all( source_info_t(funcName, iid, clsname)); \ + } + + +#else // COMET_DISABLE_EXCEPTION_RETHROW_CATCH + +#define COMET_CATCH_CLASS_EX( funcName, iid) \ + catch ( ... ) { \ + return comet_exception_handler::rethrow( impl::do_get_source_info_t<_B>::exec( static_cast<_B*>(this), source_info_t(funcName, iid))); \ + } + +#define COMET_CATCH_UNKNOWN(funcName, iid, clsname) \ + catch ( ... ) { \ + comet_exception_handler::rethrow( source_info_t(funcName, iid, clsname)); \ + } + +#endif + +/** Macro used in implementation wrappers to hide a bug with catching rethrown + * classes. + */ + +#define COMET_CATCH_CLASS(funcName) COMET_CATCH_CLASS_EX(funcName, comtype::uuid()) + +// We define these new catch macros because the ones above don't seem to work. +// They use a mystery _B to get the class name. It may have been part of the +// old code-generation mechanism which we don't support any more. +#define COMET_CATCH_INTERFACE_BOUNDARY(funcName) \ + catch ( ... ) { \ + return ::comet::comet_exception_handler::rethrow( \ + ::comet::source_info_t( \ + funcName, ::comet::comtype::uuid())); \ + } + +#define COMET_CATCH_CLASS_INTERFACE_BOUNDARY(funcName, clsName) \ + catch ( ... ) { \ + return ::comet::comet_exception_handler::rethrow( \ + ::comet::source_info_t( \ + funcName, ::comet::comtype::uuid(), clsName)); \ + } + +namespace comet { + + /*! \addtogroup ErrorHandling + */ + //@{ + /// Specifies the source of an exception. + struct source_info_t + { + /// Default Constructor + source_info_t() {} + /// Constructor to fill in a few elements. + source_info_t(const bstr_t &par_function, const uuid_t &par_interface_uuid = uuid_t(), const bstr_t &par_coclass_name = bstr_t() ) + : function_name(par_function), interface_uuid(par_interface_uuid), coclass_name(par_coclass_name) {} + + bstr_t function_name; ///< Name of the function being called. + bstr_t coclass_name; ///< Coclass the method belongs to. + uuid_t coclass_uuid; ///< CLSID of the coclass. + uuid_t interface_uuid; ///< IID of the interface + + bstr_t source_override; ///< Used to override the source description. + + /** Returns the 'source' description, either 'source_overrride' or the + * concatenation of the coclass and function_name. + */ + bstr_t source() const + { + if ( !source_override.is_empty()) + { + return source_override; + } + if (coclass_name.is_empty()) + { + return function_name; + } + if (function_name.is_empty()) + { + return coclass_name; + } + return coclass_name + L"." + function_name; + } + + }; + + namespace impl + { + /** Redirect logging to calllog if enabled. + * Used so that if call-logging is loaded, the default action is to + * redirect the logging to the call-logger. + * \internal + */ + template + struct call_logger_redirect_ + { + template + struct exe + { + static inline void log_exception( + const tstring& /*type*/, const tstring& /*desc*/, + const source_info_t& /*errorSource*/, + const source_info_t& /*callSource*/) + { } + static inline bool can_log_exception() + { return false; } + }; + }; + } + + /** \struct error_logger_ handle_except.h comet/handle_except.h + * Default to NULL logger - and description of 'error logger' concept. + * Specialise to \b true to override. + */ + template + struct error_logger_ + { + /** Should the error be logged? + * \return Return true to allow error to be logged. + */ + static inline bool can_log_exception() + { + return impl::call_logger_redirect_::template exe::can_log_exception(); + } + + /// Called by exception handlers to provide logging for errors. + static inline void log_exception(const tstring &type, const tstring &desc, const source_info_t &errorSource ,const source_info_t &callSource ) + { + impl::call_logger_redirect_::template exe::log_exception(type,desc,errorSource, callSource); + } + + }; + + /** Common exception handler for comet. + * Specialize to \c true to overide the behaviour. It is usually convenient + * to inherit the comet_exception_handler from + * comet_exception_handler. + */ + template< bool OVERRIDE> + struct comet_exception_handler + { +#ifndef COMET_DISABLE_EXCEPTION_RETHROW_CATCH + /** Override to modify which exceptions are caught. + * Note that due to a severe bug in MSVC 6, this will not be called in that + * case. + */ + static inline HRESULT rethrow(const source_info_t &info) + { + try { + throw; + } catch ( const com_error &err) + { + return catcher_com_error( err, info); + } + catch ( const std::exception &err) + { + return catcher_exception( err, info); + } + catch ( HRESULT hr ) + { + return catcher_hr( hr, info ); + } + catch (...) + { + return catcher_all(info); + } + + } +#endif // COMET_DISABLE_EXCEPTION_RETHROW_CATCH + + /// Override to modify handling of com_error + static inline HRESULT catcher_com_error( const com_error &err,const source_info_t &info) + { + if ( error_logger_::can_log_exception() ) + { + source_info_t errorInfo; + errorInfo.interface_uuid = err.guid(); + errorInfo.source_override = err.source(); + error_logger_::log_exception( _T("comet::com_error"), err.t_str(), errorInfo, info); + } + return impl::return_com_error(err, info.source(), info.interface_uuid); + } + /// Override to modify handling of std::exception + static inline HRESULT catcher_exception(const std::exception& err,const source_info_t &info) + { + if ( error_logger_::can_log_exception() ) + { + error_logger_::log_exception( _T("std::exception"), + bstr_t(err.what()).t_str(), + source_info_t(), info); + } + return impl::return_com_error(err, info.source(), info.interface_uuid); + } + /// Override to modify handling of HRESULT + static inline HRESULT catcher_hr( HRESULT hr,const source_info_t &info) + { + return impl::return_com_error(hr, bstr_t(), info.source(), info.interface_uuid); + } + /// This can be overridden to provide handling of other exceptions. + static inline HRESULT catcher_all( const source_info_t &info) + { + COMET_NOTUSED(info); + throw; + } + }; + + + namespace impl + { + /** Marker for using the coclass information. + * \relates handle_exception_default + */ + struct handle_exception_default_marker {}; + + /** Call the coclasses exception handler if it is marked. + * \relates handle_exception_default + */ + template + struct do_get_source_info_t + { + /** Call the classes exception handler. + * \relates handle_exception_default + */ + template + struct execute_handle + { + inline static void get_source_info(O * pThis, source_info_t &info) + { + pThis->get_source_info_( info ); + } + }; + /** Call the default global exception handler. + * \relates handle_exception_default + */ + template <> + struct execute_handle + { + inline static void get_source_info(O *pThis, const source_info_t &info ) + { + COMET_NOTUSED(pThis); + COMET_NOTUSED(info); + // return impl::do_handle_exception(src); + } + }; + + /** Called by the interface wrappers to call the exception handlers. + * \relates handle_exception_default + */ + inline static source_info_t exec( O *pThis, source_info_t info) + { + // Either call the coclass exception handler, or the project default. + execute_handle::exists>::get_source_info( pThis, info); + /* ERRORS: If the conversion is ambiguous here, then there are probably two ways of + * getting to handle_exception_default_marker, usually via handle_exception_default, + * which is already provided by by IProvideClassInfoImpl. + */ + return info; + } + }; + } + + /** \struct handle_exception_default server.h comet/server.h + * Used by the exception handler to provide source information for the specified CoClass. + * Inherit from this class or IProvideClassInfoImpl to make sure that the + * coclass name is known about for custom coclasses. + */ + template + struct handle_exception_default + : impl::handle_exception_default_marker // Required to mark the class as being able to handle exceptions with coclass information + { + void get_source_info_( source_info_t &info) + { + info.coclass_name = COCLASS::name(); + info.coclass_uuid = comtype::uuid(); + } + }; + // Handles the case where there is no coclass, and therefore no coclass name. + template<> + struct handle_exception_default : impl::handle_exception_default_marker + { + void get_source_info_( source_info_t &info) + { + COMET_NOTUSED(info); + } + }; + //@} +} +#endif /* COMET_HANDLE_EXCEPT_H */ diff --git a/lib/local/CamCom/comet/impqi.h b/lib/local/CamCom/comet/impqi.h new file mode 100644 index 0000000..67e1f07 --- /dev/null +++ b/lib/local/CamCom/comet/impqi.h @@ -0,0 +1,546 @@ +/** \file + * Implementation of QueryInterface. + */ +/* + * Copyright 2000-2002 Sofus Mortensen, Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_IMPQI_H +#define COMET_IMPQI_H + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace comet { + /*! \addtogroup Interfaces + */ + //@{ + + + + namespace impl { + + /** Base class for recognising qi hook. + * \internal + */ + class qi_hook_itf_tag {}; + + } + + class qi_hook {}; + + template class qi_hook_itf : public impl::qi_hook_itf_tag{ + public: + typedef Itf exposes; + virtual com_ptr get_interface_ptr(const com_ptr< ::IUnknown>&) throw() = 0; + }; + + namespace impl { + + template COMET_FORCEINLINE bool is_interface_compatible(const uuid_t& iid, Itf*) + { + if (iid == uuidof()) return true; + else return is_interface_compatible::base>(iid, 0); + } + + template<> COMET_FORCEINLINE bool is_interface_compatible< ::IUnknown >(const uuid_t&, ::IUnknown*) + { + return false; + } + + template<> COMET_FORCEINLINE bool is_interface_compatible(const uuid_t&, nil*) + { + return false; + } + enum use_cast_t {uc_false=0, uc_static, uc_static_op, uc_qi_hook_itf, uc_qi_hook }; + + + // remove enum for VC2005B2 + template + struct find_compatibility_aux + { + template + struct with + { + enum { is = false }; + + template inline static bool qi(P *, const uuid_t& , com_ptr< ::IUnknown>& ) + { + return false; + } + }; + }; + + template<> + struct find_compatibility_aux + { + template struct with { + template static bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) + { + if (is_interface_compatible(iid, 0)) + { + unk = static_cast< ::IUnknown* >(static_cast(This)); + return true; + } + return false; + } + }; + }; + + template<> + struct find_compatibility_aux + { + template struct with { + template static bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) + { + if (is_interface_compatible(iid,0)) { + unk = static_cast*>(This)->get_interface_ptr( cast_to_unknown(This) ); + return true; + } + return false; + } + }; + }; + + template<> + struct find_compatibility_aux + { + template struct with { + template static bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) + { + if ( static_cast(This)->qi(This, iid, unk) ) + return true; + else + return false; + } + }; + }; + +/* template<> + struct find_compatibility_aux + { + template + struct with + { + static bool is( const uuid_t &iid){ return is_interface_compatible(iid,0);} + template + static com_ptr< ::IUnknown> cast_from(T *This) + { +#ifndef NDEBUG + try { +#endif + return static_cast*>(This)->get_interface_ptr( cast_to_unknown(This) ); +#ifndef NDEBUG + } catch (...) { + // get_interface_ptr is not allowed to throw. Return null pointer on failure + COMET_ASSERT(0); + return 0; + } +#endif + } + }; + }; + + template<> + struct find_compatibility_aux + { + template + struct with + { + static bool is( const uuid_t &iid){ return true; } + + template + static com_ptr< ::IUnknown> cast_from(T *This) + { + Itf:: + } + }; + };*/ + + template< typename Itf> + struct use_cast_aux + { + enum { is_static = (type_traits::conversion::exists) }; + enum { is_static_op =(type_traits::is_cast_operator_compatible::is)}; + enum { is_qi_hook_itf = (type_traits::conversion::exists) }; + enum { is_qi_hook = (type_traits::conversion::exists) }; + // GCC Doesn't handle evaluation of ?: opeators in templates yet. +// enum { is = (int)( is_static ? uc_static: ( is_static_op ? uc_static_op : uc_false)) + enum { is = is_static * uc_static + + is_qi_hook_itf * uc_qi_hook_itf + + is_qi_hook * uc_qi_hook + + is_static_op * uc_static_op }; + }; + + template + struct find_compatibility + { + enum { needs_cast_ = use_cast_aux::is }; + typedef find_compatibility_aux< (use_cast_t)needs_cast_ > compatible; + + COMET_FORCEINLINE static bool with(const uuid_t &iid) + { return compatible::template with::is(iid); }; + template + COMET_FORCEINLINE static com_ptr< ::IUnknown> cast_from( T *This) + { return compatible::template with::cast_from(This); } + }; + + template struct interface_finder + { + template COMET_FORCEINLINE static bool find_interface(T* This, const uuid_t& iid, com_ptr< ::IUnknown>& rv) + { + typedef typename find_compatibility_aux< (use_cast_t)use_cast_aux< COMET_STRICT_TYPENAME ITF_LIST::head >::is >::template with fc; + if ( fc::qi(This, iid, rv) ) + return true; + else + return interface_finder< COMET_STRICT_TYPENAME ITF_LIST::tail>::find_interface(This, iid, rv); + } + + COMET_FORCEINLINE static bool find_interface_2(const uuid_t& iid) + { + if (is_interface_compatible(iid, 0)) return true; + return interface_finder< COMET_STRICT_TYPENAME ITF_LIST::tail>::find_interface_2(iid); + } + }; + + template<> struct interface_finder + { + template COMET_FORCEINLINE static bool find_interface(T*, const uuid_t&, com_ptr< ::IUnknown>&) + { return false; } + + COMET_FORCEINLINE static bool find_interface_2(const uuid_t&) + { + return false; + } + }; + +/* template<> struct interface_finder > + { + template COMET_FORCEINLINE static ::IUnknown* find_interface(T*, const uuid_t&) + { + return 0; + } + };*/ + + } + + /** \struct typelibrary_loader impqi.h comet/impqi.h + * Type Library Loader. + * Allow provision for different means of loading a type-library. + * \param TL A \e Comet type-library. + */ + template + struct typelibrary_loader + { + //! Load the type-library. + /** Create a different template instantiation of this to load + * type-libraries from a different source (example - from a second + * resource in the dll). + */ + static inline HRESULT load( ITypeLib **pTypeLib) + { return LoadRegTypeLib(uuidof(), TL::major_version, TL::minor_version, LANG_NEUTRAL, pTypeLib); } + }; + + /** \struct implement_qi impqi.h comet/impqi.h + * Implementation of QueryInterface. Inherits from all the types defined + * in \p ITF_LIST. + * \param ITF_LIST interface implementation list. + */ + template class ATL_NO_VTABLE implement_qi : public typelist::inherit_all + { + private: + // Hide qi + void qi(); + public: + /** Get at the unknown for this class. Is here for compatibility when using + * implement_internal_qi via aggregateable_coclass for getting at a + * pointer from which to QueryInterface from. + */ + ::IUnknown* get_unknown()const + { return static_cast< typename ITF_LIST::head * >(const_cast *>(this)); } + + STDMETHOD(QueryInterface)(REFIID riid, void** ppv) + { + const uuid_t& iid = uuid_t::create_const_reference(riid); + com_ptr< ::IUnknown> p; + + impl::interface_finder::find_interface(this, iid, p); + + if (!p) { + if (riid != IID_IUnknown) { + *ppv = 0; + return E_NOINTERFACE; + } + p = get_unknown(); +// p = static_cast< ::IUnknown* >(static_cast< typename ITF_LIST::head * >(this)); + } + + *ppv = reinterpret_cast(p.detach()); + + return S_OK; + } + }; + + /** \struct implement_internal_qi impqi.h comet/impqi.h + * Implementation of QueryInterfaceInternal. Inherits from all the types defined + * in \p ITF_LIST. This implementation is used in aggregation. + * \param ITF_LIST interface implementation list. + */ + template class ATL_NO_VTABLE implement_internal_qi : public typelist::inherit_all + { + private: + void qi(); + public: + /** Get at the unknown for this class. Is especially useful using + * aggregateable_coclass in getting at a pointer from which to + * QueryInterface from. + */ + ::IUnknown* get_unknown()const + { return static_cast< typename ITF_LIST::head * >( const_cast *>(this)); } + + HRESULT QueryInterfaceInternal(REFIID riid, void** ppv) + { + const IID& iid = riid; + com_ptr< ::IUnknown> p; + + impl::interface_finder::find_interface(this, iid, p); + + if (!p) { + if (riid != IID_IUnknown) { + *ppv = 0; + return E_NOINTERFACE; + } +// p = cast_to_unknown(this); + p = static_cast< ::IUnknown* >(static_cast(this)); + } + + *ppv = reinterpret_cast(p.detach()); + + return S_OK; + } + }; + + namespace impl { + template ::IUnknown* cast_to_unknown(implement_qi* iq) + { return static_cast< typename ITF_LIST::head*>(iq); } + } + + /** \class impl_dispatch impqi.h comet/impqi.h + * Implement IDispatch via type-library. + */ + template class ATL_NO_VTABLE impl_dispatch : public BASE + { + protected: + /// \name IDispatch Interface + //@{ + STDMETHOD(GetTypeInfo)(UINT, LCID, ITypeInfo** ti) + { + *ti = get_ti(); + if (*ti) + { + (*ti)->AddRef(); + return S_OK; + } + return E_NOTIMPL; + } + + STDMETHOD(GetTypeInfoCount)(UINT *it) + { *it = 1; return S_OK; } + + STDMETHOD(GetIDsOfNames)(REFIID, OLECHAR** pNames, UINT cNames, LCID, DISPID* pdispids) + { + ITypeInfo* ti = get_ti(); + if (ti) + return ti->GetIDsOfNames(pNames, cNames, pdispids); + else + return E_NOTIMPL; + } + + STDMETHOD(Invoke)(DISPID id, REFIID, LCID, WORD wFlags, DISPPARAMS *pd, VARIANT* pVarResult, EXCEPINFO* pe, UINT* pu) + { + ITypeInfo* ti = get_ti(); + if (ti) + { + void* pThis = static_cast(this); + return ti->Invoke(pThis, id, wFlags, pd, pVarResult, pe, pu); + } + else + return E_NOTIMPL; + } + //@} + private: + ITypeInfo* get_ti() + { + static ITypeInfo* ti_; + if (ti_ == 0) + { + auto_cs lock(module().cs()); + if (ti_ == 0) + { + com_ptr ptl; + + typelibrary_loader::load(ptl.out()); + if (ptl) ptl->GetTypeInfoOfGuid(uuidof(), &ti_); + + if (ti_ != 0) module().add_object_to_dispose( impl::create_itf_releaser(ti_) ); + } + } + return ti_; + } + +// static ITypeInfo* ti_; + }; + + template class com_ptr; + +#if 0 + /** \class aggregates_interface impqi.h comet/impqi.h + * Used as an implementation for an interface to Aggregate the required + * interface. + */ + template< typename Itf > + class aggregates_interface + { + public: + /** Set the inner-unknown returned from the call to CoCreateInstance. + */ + void set_aggregate(const com_ptr< ::IUnknown>& aggobj) { ag_object_ = com_cast(aggobj); } + /** Used by QueryInteface algorithms to work out the interface + * exposed by this class. + */ + typedef Itf exposes; + + operator Itf*() throw() + { + com_ptr< ::IUnknown> test = ag_object_; + return ag_object_.in(); +// return com_ptr( com_cast(ag_object_) ); + } + protected: + com_ptr ag_object_; + + }; +#endif + + + + + + +/* class FTM : public qi_hook_itf + { + private: + com_ptr get_interface_ptr(const com_ptr< ::IUnknown>& This) throw() + { + ::IUnknown* ftm = 0; + CoCreateFreeThreadedMarshaler(This.in(), &ftm); + return com_cast(ftm); + } + };*/ + + /** \struct FTM impqi.h comet/impqi.h + * Aggregate the Free Threaded Marshaller. + * \code + class coclass_implementation + : public coclass + { + ... + }; + \endcode + */ + struct FTM : public qi_hook + { + template + bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) + { + if (iid != uuidof()) return false; + ::IUnknown* ftm = 0; + CoCreateFreeThreadedMarshaler(impl::cast_to_unknown(This), &ftm); + unk = com_ptr< ::IMarshal>( com_cast(ftm) ); + return unk != 0; + } + }; + + /** \struct aggregates impqi.h comet/impqi.h + * Aggregate an interface. + * \code + class coclass_implementation + : public coclass > + { + coclass_implementation() + { + aggregatescreate_aggregate::create_aggregate(this, CLSCTX_ALL); + } + }; + \endcode + + \sa coclass + */ + template class aggregates : public qi_hook + { + com_ptr< ::IUnknown> inner_; + public: + template bool qi(T *This, const uuid_t& iid, com_ptr< ::IUnknown>& unk) + { + typedef typename make_list::result TL; + if (typelist::length::value > 0) { + if (impl::interface_finder::find_interface_2(iid) == false) return false; + } + if (inner_ == 0) return false; + ::IUnknown* p; + if (SUCCEEDED(inner_.raw()->QueryInterface(iid, reinterpret_cast(&p)))) + { + unk = auto_attach(p); + return true; + } + return false; + } + protected: + template void create_aggregate(T *This, DWORD dwClsContext = CLSCTX_ALL) + { ::IUnknown* unk_this = impl::cast_to_unknown(This); inner_ = com_ptr< ::IUnknown>(uuidof(), com_ptr< ::IUnknown>::create_reference(unk_this), dwClsContext); } + }; + +/* template class aggregates_interface : public qi_hook_itf + { + private: + com_ptr< ::IUnknown> inner_; + com_ptr get_interface_ptr(const com_ptr< ::IUnknown>&) + { return com_cast(inner_); } + protected: + template void create_aggregate(const CLSID& clsid, implement_qi* This, DWORD dwClsContext = CLSCTX_ALL) + { + ::IUnknown* unk_this = static_cast< typename ITF_LIST::head*>(This); + inner_ = com_ptr< ::IUnknown>(clsid, com_ptr< ::IUnknown>::create_reference(unk_this), dwClsContext); + } + + template void create_aggregate(const wchar_t* progid, implement_qi* This, DWORD dwClsContext = CLSCTX_ALL) + { + ::IUnknown* unk_this = static_cast< typename ITF_LIST::head*>(This); + inner_ = com_ptr< ::IUnknown>(progid, com_ptr< ::IUnknown>::create_reference(unk_this), dwClsContext); + } + };*/ + + //@} +} + +#endif diff --git a/lib/local/CamCom/comet/interface.h b/lib/local/CamCom/comet/interface.h new file mode 100644 index 0000000..cfaefb4 --- /dev/null +++ b/lib/local/CamCom/comet/interface.h @@ -0,0 +1,256 @@ +/** \file + * Provide comtype which supplies information about UUIDs & inheritance, + * potentially from Interfaces not defined using a COMET type-library. Also + * defines specialisations for some such standard interfaces. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_INTERFACE_H +#define COMET_INTERFACE_H + +#include + +#include +#include +#include + +#include +#include +#include + +#pragma warning(push, 4) +// NB: coclass_implementation _must_ have no data members. +// The comet framework uses the test +// sizeof coclass_implementation == sizeof coclass_implementation +// in order to determine whether the user has specialized based on T or not. +// The logic here is that any real implementation will have a size that is at least +// sizeof IUnknown, because any real coclass_implementation must at least derive +// off IUnknown and have a "vtable" pointer. +/** \class coclass_implementation interface.h comet/interface.h + * Utility class to make the implementation of a coclass accessible from the + * servers. Implementations of coclasses defined in the type library should + * all be specialisations of this class if they are to be exposed by the + * comet server. + */ +template class coclass_implementation {}; + +#pragma warning(pop) + +namespace comet { + + /** Provide a means for defining new comtype definitions. + */ + template struct uuid_comtype + { + static const uuid_t& uuid() { return uuid_t::create_const_reference(*ItfID); } + typedef BASE base; + }; + + + /** Provide access to uuid and base type of objects. + * Specializations allow access to information relevant to non-comet + * defined interfaces. + */ + template struct comtype { + static const IID& uuid() throw() { return comtype::uuid(); } + typedef typename comtype::base base; + }; + + template<> struct comtype { +// static const IID& uuid() throw() { throw std::logic_error("interface.h:35"); return IID_NULL; } + typedef nil base; + }; + + template<> struct comtype< ::IUnknown > + { + static const IID& uuid() { return IID_IUnknown; } + typedef nil base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_IConnectionPoint; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_IConnectionPointContainer; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_IEnumConnections; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_IDispatch; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_IEnumVARIANT; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_ISupportErrorInfo; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() { return IID_IErrorInfo; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IProvideClassInfo; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IPersist; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IPersistFile; } + typedef ::IPersist base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IPersistStream; } + typedef ::IPersist base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IPersistStreamInit; } + typedef ::IPersist base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IMessageFilter; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IProvideClassInfo2; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IMarshal; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IFontDisp; } + typedef ::IDispatch base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IPictureDisp; } + typedef ::IDispatch base; + }; + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IGlobalInterfaceTable; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IClassFactory; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IStream; } + typedef ::IUnknown base; + }; + + template<> struct comtype + { + static const IID& uuid() throw() { return IID_ISequentialStream; } + typedef ::IUnknown base; + }; + + + + //! C++ replacement of VC's __uuidof() + /*! + Use this function to an IID to an interface or coclass. + */ + template inline const uuid_t& uuidof(Itf * = 0) throw() + { return uuid_t::create_const_reference(comtype::uuid()); } + + namespace impl { + + template struct interface_lookup + { + static bool supports(const uuid_t& iid) + { + if (iid == uuidof()) + return true; + else + return interface_lookup< typename comtype::base >::supports(); + } + + template static Itf* cast(T* t) + { + return static_cast(t); + } + }; + + template<> struct interface_lookup + { + static bool supports(const uuid_t&) + { + return false; + } + + }; + +/* template<> struct interface_lookup > + { + static bool supports(const uuid_t&) + { + return false; + } + + };*/ + } + +} // namespace + +#endif diff --git a/lib/local/CamCom/comet/invariant_lock.h b/lib/local/CamCom/comet/invariant_lock.h new file mode 100644 index 0000000..25215c7 --- /dev/null +++ b/lib/local/CamCom/comet/invariant_lock.h @@ -0,0 +1,126 @@ +/** \file + * Implementation of invariant_lock asserts. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen, Paul Hollingsworth + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_UTIL_H +#define COMET_UTIL_H + +#include + +#include + +#include + +namespace comet { + /*! \addtogroup Misc + */ + //@{ + + /** Contains implementation of invariant_lock asserts. + */ + namespace invariant_lock_impl { + + /** Provides base class for invariant_locks. + * \sa create_invariant_lock enforcer simple_enforcer + */ + class invariant_lock + { + protected: + invariant_lock() {} + invariant_lock(const invariant_lock& /*rhs*/) {} + }; + + /** A version of invariant_lock able to call any void member of a class. + * The member should provide an assertable condition that gets asserted + * on creation and destruction of the lock. + * \sa create_invariant_lock + */ + template struct enforcer : public invariant_lock + { + void (CLASS::*m_passert) () const; + const CLASS *m_pobj; + + enforcer(const CLASS *pobj, void (CLASS::*passert) () const + ) : m_pobj(pobj), m_passert(passert) + { + (m_pobj->*m_passert)(); + } + ~enforcer() + { + (m_pobj->*m_passert)(); + } + }; + + /** A version of invariant_lock that calls public method \b assert_valid on + * construction and destruction of the lock. + * \sa create_invariant_lock + */ + template struct simple_enforcer : public invariant_lock + { + const CLASS *m_pobj; + simple_enforcer(const CLASS *pobj) : m_pobj(pobj) + { + m_pobj->assert_valid(); + } + + ~simple_enforcer() + { + m_pobj->assert_valid(); + } + }; + } // namespace invariant_lock_impl + + /*! Create an invariant_lock. + * \param pobj The class with the invariant assert + * \param assert_member The void member to call on construct & destruct + * \author Paul Hollingsworth (Paul@PaulHollingsworth.com) + * \relates invariant_lock_impl::invariant_lock + * \sa enforcer + */ + template + invariant_lock_impl::enforcer create_invariant_lock(const CLASS *pobj, void (CLASS::*assert_member) () const) + { + return invariant_lock_impl::enforcer(pobj, assert_member); + } + + /*! Create a simple invariant lock. + * This lock will expect assert_valid to be publicly defined on the object + * provided. + * \param pobj The class with the invariant assert. + * \relates invariant_lock_impl::invariant_lock + * \sa simple_enforcer + * \author Paul Hollingsworth (Paul@PaulHollingsworth.com) + */ + template + invariant_lock_impl::simple_enforcer create_invariant_lock(const CLASS *pobj) + { + return pobj; + } + + /*! Pointer class to an invariant_lock. + * Assigning a temporary to a const reference will cause the object to be + * kept for the scope of the const reference. + * \relates invariant_lock_impl::invariant_lock + * \sa create_invariant_lock + * \author Paul Hollingsworth (Paul@PaulHollingsworth.com) + */ + typedef invariant_lock_impl::invariant_lock &invariant_lock; + //@} + +} // namespace + +#endif diff --git a/lib/local/CamCom/comet/lw_lock.h b/lib/local/CamCom/comet/lw_lock.h new file mode 100644 index 0000000..c5752f1 --- /dev/null +++ b/lib/local/CamCom/comet/lw_lock.h @@ -0,0 +1,228 @@ +/** \file + * Lightweight Multiple Reader Single Writer lock. + * + * See \ref cometlwlock. + * + * The lw_lock class is heavily based on class LightweightLock written by Brad Wilson. + * see http://www.quality.nu/dotnetguy/archive/fog0000000007.aspx + * \author Brad Wilson + * \author Sofus Mortensen + */ + +// Copyright (C) 1995-2002 Brad Wilson +// +// This material is provided "as is", with absolutely no warranty +// expressed or implied. Any use is at your own risk. Permission to +// use or copy this software for any purpose is hereby granted without +// fee, provided the above notices are retained on all copies. +// Permission to modify the code and to distribute modified code is +// granted, provided the above notices are retained, and a notice that +// the code was modified is included with the above copyright notice. +// +//////////////////////////////////////////////////////////////////////// + +/** \page cometlwlock Lightweight Lock + This lightweight lock class was adapted from samples and ideas that + were put across the ATL mailing list. It is a non-starving, kernel- + free lock that does not order writer requests. It is optimized for + use with resources that can take multiple simultaneous reads, + particularly when writing is only an occasional task. + + Multiple readers may acquire the lock without any interference with + one another. As soon as a writer requests the lock, additional + readers will spin. When the pre-writer readers have all given up + control of the lock, the writer will obtain it. After the writer + has rescinded control, the additional readers will gain access + to the locked resource. + + This class is very lightweight. It does not use any kernel objects. + It is designed for rapid access to resources without requiring + code to undergo process and ring changes. Because the "spin" + method for this lock is "Sleep(0)", it is a good idea to keep + the lock only long enough for short operations; otherwise, CPU + will be wasted spinning for the lock. You can change the spin + mechanism by #define'ing COMET_LW_LOCK_SPIN before including this + header file. + + VERY VERY IMPORTANT: If you have a lock open with read access and + attempt to get write access as well, you will deadlock! Always + rescind your read access before requesting write access (and, + of course, don't rely on any read information across this). + + This lock works in a single process only. It cannot be used, as is, + for cross-process synchronization. To do that, you should convert + this lock to using a semaphore and mutex, or use shared memory to + avoid kernel objects. + */ + +/* + * Copyright 2002 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#include +#include + +#include + +namespace comet { + +#ifndef COMET_LW_LOCK_SPIN +#define COMET_LW_LOCK_SPIN Sleep(0) +#endif + /*! \addtogroup Misc + */ + //@{ + + /** Provide a lightweight lock imlementation. + * See \ref cometlwlock for more information and warnings. + * \sa auto_reader_lock auto_writer_lock + */ + class lw_lock + { + // Interface + + public: + /// Constructor + lw_lock() + { + reader_count_ = 0; + writer_count_ = 0; + } + + /// Destructor + ~lw_lock() + { + COMET_ASSERT( reader_count_ == 0 ); + COMET_ASSERT( writer_count_ == 0 ); + } + + /// Reader lock acquisition + void enter_reader() const + { + for (;;) + { + // If there's a writer already, spin without unnecessarily + // interlocking the CPUs + + if( writer_count_ != 0 ) + { + COMET_LW_LOCK_SPIN; + continue; + } + + // Add to the readers list + + InterlockedIncrement((long *)&reader_count_ ); + + // Check for writers again (we may have been pre-empted). If + // there are no writers writing or waiting, then we're done. + + if( writer_count_ == 0 ) + break; + + // Remove from the readers list, spin, try again + + InterlockedDecrement((long *)&reader_count_ ); + COMET_LW_LOCK_SPIN; + } + } + + /// Reader lock release + void leave_reader() const + { + InterlockedDecrement((long *)&reader_count_ ); + } + + /// Writer lock acquisition + void enter_writer() + { + // See if we can become the writer (expensive, because it inter- + // locks the CPUs, so writing should be an infrequent process) + + while( InterlockedExchange((long *)&writer_count_, 1 ) == 1 ) + { + COMET_LW_LOCK_SPIN; + } + + // Now we're the writer, but there may be outstanding readers. + // Spin until there aren't any more; new readers will wait now + // that we're the writer. + + while( reader_count_ != 0 ) + { + COMET_LW_LOCK_SPIN; + } + } + + /// Writer lock release + void leave_writer() + { + writer_count_ = 0; + } + + // Implementation + + private: + mutable long volatile reader_count_; + mutable long volatile writer_count_; + + // Declare class non-copyable + lw_lock(const lw_lock&); + lw_lock& operator=(const lw_lock&); + }; + + /** \class auto_reader_lock lw_lock.h comet/lw_lock.h + * Auto-release locking class for lw_lock Read acces. + * \sa lw_lock auto_writer_lock + */ + class auto_reader_lock { + public: + explicit auto_reader_lock(const lw_lock& cs) : cs_(cs) { + cs_.enter_reader(); + } + + ~auto_reader_lock() { + cs_.leave_reader(); + } + + private: + auto_reader_lock& operator=(const auto_reader_lock&); + auto_reader_lock(const auto_reader_lock&); + + const lw_lock& cs_; + }; + + /** \class auto_writer_lock lw_lock.h comet/lw_lock.h + * Auto-release locking class for lw_lock write acces. + * \sa lw_lock auto_reader_lock + */ + class auto_writer_lock { + public: + explicit auto_writer_lock(lw_lock& cs) : cs_(cs) { + cs_.enter_writer(); + } + + ~auto_writer_lock() { + cs_.leave_writer(); + } + + private: + auto_writer_lock& operator=(const auto_writer_lock&); + auto_writer_lock(const auto_writer_lock&); + + lw_lock& cs_; + }; + //@} + +} diff --git a/lib/local/CamCom/comet/module.h b/lib/local/CamCom/comet/module.h new file mode 100644 index 0000000..2bfb8c6 --- /dev/null +++ b/lib/local/CamCom/comet/module.h @@ -0,0 +1,274 @@ +/** \file + * Main functionality for providing a COM module. + */ +/* + * Copyright 2000-2002 Sofus Mortensen, Paul Hollingsworth, Michael Geddes, Mikael Lindgren + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_MODULE_H +#define COMET_MODULE_H + +#include +#include +#include +#include + +namespace comet { + + /*!\addtogroup Server + */ + //@{ + namespace impl { + /** \internal + * 'Command' base class. + */ + struct cmd_t + { + virtual void cmd() = 0; + cmd_t() {} + private: + cmd_t(const cmd_t&); + cmd_t& operator=(const cmd_t&); + }; + + /** \internal + * 'Command' to delete a pointer. + * + */ + template + struct itf_releaser_t : public cmd_t + { + void cmd() { IUnknown *p = p_; p_=NULL; p->Release(); } + itf_releaser_t(T *&p) :p_(p) { } + private: + T *&p_; + itf_releaser_t(const itf_releaser_t&); + itf_releaser_t& operator=(const itf_releaser_t&); + }; + + template + cmd_t *create_itf_releaser( T *&p) + { + return new itf_releaser_t(p); + } + + /** 'Command' to Call object_dispose on an object. + * \internal + */ + template + struct pointer_deleter_t : public cmd_t + { + void cmd() { T *p = p_; p_=NULL; delete p;} + pointer_deleter_t(T *&p) :p_(p) { } + private: + T *&p_; + pointer_deleter_t(const pointer_deleter_t&); + pointer_deleter_t& operator=(const pointer_deleter_t&); + }; + + /** 'Command' to Call object_dispose on an object. + * \internal + */ + template + struct object_disposer_t : public cmd_t + { + void cmd() { p_->object_dispose(); } + object_disposer_t( T*p) : p_(p) {} + private: + T *p_; + object_disposer_t(const object_disposer_t &); + object_disposer_t &operator=(const object_disposer_t &); + }; + } + //! Create a pointer deleter command. + /** A command to delete pointers, commonly used for shutdown. + * \code + module().add_object_to_dispose(create_pointer_deleter(new my_class_t())); + * \endcode + * \sa module_t::add_object_to_dispose + */ + template + impl::cmd_t *create_pointer_deleter( T *&p) + { + return new impl::pointer_deleter_t(p); + } + //! Create an interface releaser command. + /** A command to release COM objects, commonly used for shutdown. + * Used for singletons. + * \code + module().add_object_to_dispose(create_interface_releaser(new my_coclass())); + * \endcode + * \sa module_t::add_object_to_dispose + */ + template + impl::cmd_t *create_interface_releaser( T *&p) + { + return new impl::itf_releaser_t(p); + } + + //! Create a more generic object 'disposer'. + /** Creates a Command that calls a static object_dispose(p) method. + * \code + class my_class_t + { + object_dispose( my_class_t *val) + { + val->destroy_myself(); + } + }; + module().add_object_to_dispose(create_object_disposer(new my_class_t())); + * \endcode + * \sa module_t::add_object_to_dispose + */ + template + impl::cmd_t *create_object_disposer( T *p ) + { + return new impl::object_disposer_t(p); + } + + /// COM module. + struct module_t + { + //! \name Attributes + //@{ + /// Return current reference count. + long rc() + { + return rc_; + } + /// Retun the HINSTANCE of the module. + HINSTANCE instance() const + { + return instance_; + } + + /// Set the hinstance of the module. + void instance(HINSTANCE h) + { + instance_ = h; + } + + /// Return the module's critical_section. + /** \code + auto_cs lock( module().cs() ); + \endcode + */ + const critical_section& cs() const + { + return cs_; + } + + //@} + + //! \name Operations + //@{ + + /// Add to the module locks. + void lock() + { + if (InterlockedIncrement(&rc_) == 1 && shutdown_event_ != 0) + { + auto_cs lock(cs_); + if ( shutdown_event_->is_set()) + shutdown_event_->reset(); + } + } + + /// Decrement the module lock. + void unlock() + { + if(InterlockedDecrement(&rc_)==0) + { + activity_ = true; + if (shutdown_event_ != 0) + { + auto_cs lock(cs_); + shutdown_event_->set(); + } + } + } + + /// Shutdown the server. + void shutdown() + { + for (std::vector::iterator it = objects_to_dispose_.begin(); it != objects_to_dispose_.end(); ++it) + { + (*it)->cmd(); + delete *it; + } + objects_to_dispose_.clear(); + } + + /// Set an event for shutdown. + void set_shutdown_event(event& shutdown_event) + { + shutdown_event_ = &shutdown_event; + } + + /// Remove the event for on shutdown. + void clear_shutdown_event() + { + shutdown_event_ = 0; + } + + /// Returns if there has been activity on the module since last reset. + bool has_activity() const + { + return rc_ != 0 || activity_; + } + + /// Reset the activity marker. + void reset_activity_flag() + { + activity_ = false; + } + + /// Add an objet to be disposed on shutdown. + void add_object_to_dispose(impl::cmd_t* p) + { + auto_cs lock(cs_); + objects_to_dispose_.push_back(p); + } + //@} + + private: + long rc_; + bool activity_; + event* shutdown_event_; + HINSTANCE instance_; + critical_section cs_; + + module_t() : rc_(0), activity_(false), + shutdown_event_(0), instance_(0) + {} + + std::vector objects_to_dispose_; + + friend module_t& module(); + + // declare non-copyable + module_t(const module_t&); + module_t& operator=(const module_t&); + }; + + //! global module object + inline module_t& module() + { + static module_t m; + return m; + } + //@} +} + +#endif diff --git a/lib/local/CamCom/comet/oleidl_comtypes.h b/lib/local/CamCom/comet/oleidl_comtypes.h new file mode 100644 index 0000000..79eec24 --- /dev/null +++ b/lib/local/CamCom/comet/oleidl_comtypes.h @@ -0,0 +1,72 @@ +/** \file + * comtype<> definitions for interfaces in the COM header file OLEIDL.H. + * \author Gabriel Barta + */ +/* + * Copyright 2002 Gabriel Barta + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_OLEIDL_COMTYPES_H +#define COMET_OLEIDL_COMTYPES_H + +#include + +namespace comet { + template<> struct comtype< ::IOleAdviseHolder> + : public uuid_comtype< ::IOleAdviseHolder,&IID_IOleAdviseHolder, ::IUnknown> {} ; + template<> struct comtype< ::IOleCache> + : public uuid_comtype< ::IOleCache,&IID_IOleCache, ::IUnknown> {} ; + template<> struct comtype< ::IOleCache2> + : public uuid_comtype< ::IOleCache2,&IID_IOleCache2, ::IOleCache> {} ; + template<> struct comtype< ::IOleCacheControl> + : public uuid_comtype< ::IOleCacheControl,&IID_IOleCacheControl, ::IUnknown> {} ; + template<> struct comtype< ::IParseDisplayName> + : public uuid_comtype< ::IParseDisplayName,&IID_IParseDisplayName, ::IUnknown> {} ; + template<> struct comtype< ::IOleContainer> + : public uuid_comtype< ::IOleContainer,&IID_IOleContainer, ::IParseDisplayName> {} ; + template<> struct comtype< ::IOleClientSite> + : public uuid_comtype< ::IOleClientSite,&IID_IOleClientSite, ::IUnknown> {} ; + template<> struct comtype< ::IOleObject> + : public uuid_comtype< ::IOleObject,&IID_IOleObject, ::IUnknown> {} ; + template<> struct comtype< ::IOleWindow> + : public uuid_comtype< ::IOleWindow,&IID_IOleWindow, ::IUnknown> {} ; + template<> struct comtype< ::IOleLink> + : public uuid_comtype< ::IOleLink,&IID_IOleLink, ::IUnknown> {} ; + template<> struct comtype< ::IOleItemContainer> + : public uuid_comtype< ::IOleItemContainer,&IID_IOleItemContainer, ::IOleContainer> {} ; + template<> struct comtype< ::IOleInPlaceUIWindow> + : public uuid_comtype< ::IOleInPlaceUIWindow,&IID_IOleInPlaceUIWindow, ::IOleWindow> {} ; + template<> struct comtype< ::IOleInPlaceActiveObject> + : public uuid_comtype< ::IOleInPlaceActiveObject,&IID_IOleInPlaceActiveObject, ::IOleWindow> {} ; + template<> struct comtype< ::IOleInPlaceFrame> + : public uuid_comtype< ::IOleInPlaceFrame,&IID_IOleInPlaceFrame, ::IOleInPlaceUIWindow> {} ; + template<> struct comtype< ::IOleInPlaceObject> + : public uuid_comtype< ::IOleInPlaceObject,&IID_IOleInPlaceObject, ::IOleWindow> {} ; + template<> struct comtype< ::IOleInPlaceSite> + : public uuid_comtype< ::IOleInPlaceSite,&IID_IOleInPlaceSite, ::IOleWindow> {} ; + template<> struct comtype< ::IContinue> + : public uuid_comtype< ::IContinue,&IID_IContinue, ::IUnknown> {} ; + template<> struct comtype< ::IViewObject> + : public uuid_comtype< ::IViewObject,&IID_IViewObject, ::IUnknown> {} ; + template<> struct comtype< ::IViewObject2> + : public uuid_comtype< ::IViewObject2,&IID_IViewObject2, ::IViewObject> {} ; + template<> struct comtype< ::IDropSource> + : public uuid_comtype< ::IDropSource,&IID_IDropSource, ::IUnknown> {} ; + template<> struct comtype< ::IDropTarget> + : public uuid_comtype< ::IDropTarget,&IID_IDropTarget, ::IUnknown> {} ; + template<> struct comtype< ::IEnumOLEVERB> + : public uuid_comtype< ::IEnumOLEVERB,&IID_IEnumOLEVERB, ::IUnknown> {} ; +}; + +#endif //COMET_OLEIDL_COMTYPES_H diff --git a/lib/local/CamCom/comet/ptr.h b/lib/local/CamCom/comet/ptr.h new file mode 100644 index 0000000..3e101a6 --- /dev/null +++ b/lib/local/CamCom/comet/ptr.h @@ -0,0 +1,1261 @@ +/** \file + * Provides the com_ptr type. + */ +/* + * Copyright 2000-2002 Sofus Mortensen, Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ +/*! \addtogroup COMType + */ +//@{ + +/** \page cometcomptr Comet com_ptr + * \section cometcomptroverview Overview + * The \link comet::com_ptr com_ptr \endlink type is essentially a reference + * counting wrapper for objects that support AddRef / Release in a way that + * is STL container compatible. + * + * It also provides a mechanism for doing casting (QueryInterface) assignments + * as well as for doing assignment-compatible assignments and for providing + * smart wrappers for the interfaces. + * + * \section cometcomptrwrapping What Can Be Wrapped? + * + * The com_ptr has been designed to allow most classes to be wrapped, specifically + * it allows for wrapping ::IUnknown based interfaces, and also coclass implementations. + * + * It should be noted that some coclasses can have two implementations of + * ::IUnknown (aggregateable coclasses being a prime example). These classes + * support \link comet::implement_qi::get_unknown get_unknown() \endlink which allows + * the com_ptr to get a the unknown responsible for the lifetime management of + * the object. + * + * \section cometcomptrassign Assigning Pointers + * + * There are three ways of assigning and constructing com_ptr objects, depending on your + * objective; direct assignment and the two cast operators com_cast and try_cast. + * + * \subsection cometcomptrassigndirect Direct Assignment + + * The first way is trivial, but quite important and is the simple + * assignment of one com_ptr to another. This is done in such a way as to make + * it possible to assign assignment compatible interfaces (eg an ::IUnknown pointer can be + * assigned from an ::IDispatch pointer). A compile-time error will occur if + * the pointers are not compatible. + * + * Unfortunately there are certain circumstances that MSVC6 compiler does not + * provide a complete enough template instantiation backtrace in order to be + * able to directly work out an offending assignment. Our appologies, but a + * decent compiler would be more accomodating! + * + * \subsection cometcomptrassignquery Casting Assignment + * + * To cause a COM cast or ::QueryInterface to happen, you need to use the + * wrapper functions com_cast and try_cast. The cause a QueryInterface on + * both assignment and construction, allowing you the choice between having + * an exception thrown on failure (try_cast) or to silently fail leaving the + * object NULL (com_cast). + * + * \code + + com_ptr viewobj = com_cast( obj ); // <-- non-throwing query-interface + if (viewobj.is_null()) + { + com_ptr viewobj2 = try_cast( obj ); // <-- throwing query-interface + viewobj = viewobj2; // <-- Assignment between assignment compatible types. + } + * \endcode + + * This shows the three different ways of assigning. The first uses com_cast + * that causes the assignment to do a QueryInterface, but does not throw an + * error. The second uses try_cast that again causes the assignment to + * do a QueryInterface, but causes errors to be thrown. The third assignment is + * for assignment compatible objects only, and will cause a compiler-error + * unless (in this case) IViewObject2 inherits off IViewObject (which it does).

+ * + * \subsection cometcomptrassignvariant Assignment From a variant_t + * + * Assignment to a com_ptr from a variant_t must be done by either com_cast or + * try_cast, as any assignment from a variant is effectively a cast. + * + * \section cometcomptrsmartwrapper Smart Wrappers + * + * The com_ptr \link comet::com_ptr::operator-> operator-> \endlink provides wrapped + * access to the methods on the interface. For interfaces that have been + * generated by tlb2h, the interface returned is a wrapper that allows access + * only to the wrapped methods, otherwise, access to the raw interface is + * default. + * + * The design of the wrappers allows for system interfaces to be wrapped as + * well. There is an \link comet::com_ptr< ::IDispatch> IDispatch wrapper \endlink + * defined in comet/dispatch.h that provides methods to call functions and + * property accessors by name or by dispatch id. + * + * There is also a wrapper for the API TypeLibrary information interfaces + * defined in comet/tlbinfo.h. In addition to providing some simple wrappers + * to hide the raw COM types, it also provides accessor wrappers to the structs + * that are allocated/deallocated by the interfaces. + * + * \subsection cometcomptrsmartwrapperdetail Implementation + * It is not necessary to know how the wrappers are implemented in order + * to use them, however the technique is quite interesting. + * + * They key to the wrappers is template specialisation. The operator-> + * returns the 'this' pointer with a reinterpret_cast to a wrap_t + * struct instantiated to the interface contained by the com_ptr. The default + * wrap_t template definition is to inherit from the interface, thus giving + * direct access to methods. + * + * The tlb2h generated headers (as well as comet/tlbinfo.h and + * a0omet/dispatch.h) provide alternate specialisations for wrap_t that wrap the + * arguments and call the real methods (which would be Invoke if it is an dispinterface) + * by using reinterpret_cast to cast back to the original interface. + * + * \section cometcomptraccess Raw COM Access + * Whether calling raw COM interfaces, or trying to understand how the wrappers + * work, you will come across the \ref cometrawcomaccess methods. These are standard + * across the types (see \ref cometrawcomaccess), however com_ptr classes also + * have a raw() method that is equivalent to get() and proivdes access to the + * raw COM methods. + */ + //@} + +#ifndef COMET_PTR_H +#define COMET_PTR_H + +#include + +#include + +#include +#include +#include +#include +#include + +// Primary namespace for comet +namespace comet { + class uuid_t; + + template struct wrap_t : public Itf {}; + + template<> struct wrap_t< ::IUnknown> {}; + + template Itf* raw( wrap_t* p ) { return reinterpret_cast(p); } + +// template struct prop_wrapper : public Itf {}; + + // Forward declaration + class variant_t; + template class com_ptr; + class identity_ptr; + namespace thread_model{ + enum thread_model_t; + } + template struct coclass; + template struct aggregate_inner_unknown ; + + // comet implementation details + namespace impl { + + template class com_cast_t { + public: + explicit com_cast_t(Itf* p) : ptr_(p) {}; + Itf* get() const { return ptr_; } + private: + Itf* ptr_; + com_cast_t& operator=(const com_cast_t&); + }; + + template<> class com_cast_t { + public: + explicit com_cast_t(const variant_t& v) : val_(v) {}; + const variant_t& get() const { return val_; } + private: + const variant_t& val_; + com_cast_t& operator=(const com_cast_t&); + }; + + /** Allow calling specific, known ambiguous IUnknown implementations. + * \param B \b true Call via get_unknown. \b false Call directly + */ + template + struct IUnknown_caller + { + template< typename T > static inline long AddRef( T *y) + { return y->AddRef(); } + template static inline long Release( T *y) + { return y->Release(); } + template static inline HRESULT QueryInterface( T *y, REFIID iid, void **NewIface) + { return y->QueryInterface(iid, (void **)NewIface); } + }; + + template <> + struct IUnknown_caller + { + template static inline long AddRef( T *y) + { return y->get_unknown()->AddRef(); } + template< typename T> static inline long Release( T *y) + { return y->get_unknown()->Release(); } + template static inline HRESULT QueryInterface( T *y, REFIID iid, void **NewIface) + { return y->get_unknown()->QueryInterface(iid, NewIface); } + }; +// template struct implement_internal_qi; + + /** Namespace for dummy functions for allowing IUnknown choice to be + * deferred to the get_unknown() function. + */ + namespace unknown_choice + { +// template long dummy_( coclass *); +// template long dummy_(implement_internal_qi *); + template long dummy_(aggregate_inner_unknown *); + char dummy_( ... ); + } + + /** \internal + */ + template + struct iunknown_chooser + { + + enum { matches = (sizeof( unknown_choice::dummy_( static_cast< C *>(0) ))==sizeof(long)) }; + }; + + } + /*! \addtogroup COMType + */ + //@{ + + //! Cast com_ptr. + /*! Allows QueryInterface when casting to different com_ptr type. + \code + com_ptr foo; + com_ptr bar; + bar = com_cast(foo); + if (!bar.is_null()) { + // Cast is ok. + bar->DoTheThing(); + } + \endcode + * \param t com_ptr to cast + * \relates com_ptr + */ + template inline impl::com_cast_t com_cast(const com_ptr& t) { return impl::com_cast_t(t.get()); } + template inline impl::com_cast_t com_cast(Itf* t) { return impl::com_cast_t(t); } + inline impl::com_cast_t com_cast(const variant_t& v) { return impl::com_cast_t(v); } + + namespace impl { + template class try_cast_t { + public: + explicit try_cast_t(Itf* p) : ptr_(p) {}; + Itf* get() const { return ptr_; } + private: + Itf* ptr_; + try_cast_t& operator=(const try_cast_t&); + }; + + template<> class try_cast_t { + public: + explicit try_cast_t(const variant_t& v) : val_(v) {}; + const variant_t& get() const { return val_; } + private: + const variant_t& val_; + try_cast_t& operator=(const try_cast_t&); + }; + } + + + namespace impl { + + //! IUnknown wrapper. + /** Hides the members of IUnknown. + * \relates com_ptr + */ + template class safe_interface : public Itf { + private: + HRESULT __stdcall QueryInterface(REFIID, void**); + ULONG __stdcall AddRef(); + ULONG __stdcall Release(); + }; + + } + + //! Represents the identity Unknown of an object. + /** Is the only really efficient and safe way of representing an object for + * comparisons. + */ + class identity_ptr + { + public: + //! Default constructor. + /** Initialises the pointer to Null. + */ + identity_ptr() throw() : ptr_(NULL){} + //! Destructor. + /** Releases the pointer. + */ + ~identity_ptr() throw() { release();} + + //! Copy constructor. + /*! Simple pointer copy. They are both already identity unknowns. + */ + identity_ptr( const identity_ptr &rhs) : ptr_(rhs.ptr_) {addref();} + + //! Constructor from Try Cast. + /*! Used for construction from any Interface pointer. Always QIs to + * guarantee this is the identity. + */ + template + explicit identity_ptr( const impl::try_cast_t &x ) throw(com_error) + : ptr_(NULL) + { + IUnknown *p=static_cast(x.get()); + if (p != NULL) + p->QueryInterface(uuidof< ::IUnknown >(), reinterpret_cast(&ptr_)) | raise_exception; + } + + //! Constructor from variant_t Try Cast. + /*! Used for construction from a variant. Always QIs to + * guarantee this is the identity. + */ + inline explicit identity_ptr(const impl::try_cast_t& v) throw(com_error); + + //! Constructor from Com Cast. + /*! Used for construction from any Interface pointer. Always QIs to + * guarantee this is the identity. + */ + template + explicit identity_ptr( const impl::com_cast_t &x ) throw(com_error) + : ptr_(NULL) + { + IUnknown *p=static_cast(x.get()); + if (p != NULL) + p->QueryInterface(uuidof< ::IUnknown >(), reinterpret_cast(&ptr_)); + } + //! Constructor from variant_t com_cast. + /*! Used for construction from a variant. Always QIs to + * guarantee this is the identity. + */ + inline explicit identity_ptr(const impl::com_cast_t& v) throw(com_error); + + //! Constructions of null pointer + /*! + \param null + Only 0 is valid. Any other value will cause E_POINTER to be thrown. + + \exception com_error + Throws E_POINTER if a non-zero value is specified. + */ + explicit identity_ptr(int null) throw(com_error) + : ptr_(NULL) + { if(null != 0) raise_exception(E_POINTER); } + + //! Copy assignment. + /*! Don't QI as this is definitely identity already. + */ + identity_ptr &operator =( const identity_ptr &rhs) throw() + { + identity_ptr tmp(rhs); + swap(tmp); + return *this; + } + + //! Other assignment. + /*! Always QIs. Handles other assignments that have + * available constructors. + */ + template + identity_ptr &operator =(const T &rhs) throw(com_error) + { + identity_ptr tmp(rhs); + swap(tmp); + return *this; + } + //! Null assignment + /*! + Only null is allowed as argument. Attempting to assign a non-zero value will result in E_POINTER (wrapped in com_error) being thrown. + + \exception com_error + Throw E_POINTER if a non-zero value is specified. + */ + identity_ptr& operator=(int null) throw(com_error) + { if(null != 0) raise_exception(E_POINTER); release(); return *this; } + + /// Get at the raw pointer. + IUnknown *get() const throw() { return ptr_; } + /// Pass to an [in] parameter. + IUnknown *in() const throw() { return ptr_; } + /// Get at raw interface. + IUnknown *raw() const throw() { return ptr_; } + + //! Returns true if the wrapped pointer is null. + bool is_null() const throw() + { return (ptr_ ==NULL); } + + //! Null comparison + /*! + Only comparison with a value of zero is allowed. Non-zero values will result + in E_POINTER (wrapped in com_error) being thrown. + + \exception com_error + */ + bool operator==(int null) const + { if (null != 0) raise_exception(E_POINTER); return is_null(); } + //! Null comparison + /*! + Only comparison with a value of zero is allowed. Non-zero values will result + in E_POINTER (wrapped in com_error) being thrown. + + \exception com_error + */ + bool operator!=(int null) const + { if (null != 0) raise_exception(E_POINTER); return !is_null(); } + + /**! \name Pointer Comparison + */ + //@{ + bool operator<(const identity_ptr& x) const throw() + { return ptr_ < x.ptr_; } + + bool operator>(const identity_ptr& x) const throw() + { return ptr_ > x.ptr_; } + + + bool operator<=(const identity_ptr& x) const throw() + { return ptr_ <= x.ptr_; } + + bool operator>=(const identity_ptr& x) const throw() + { return ptr_ >= x.ptr_; } + + bool operator==(const identity_ptr& x) const throw() + { return (ptr_ == x.ptr_); } + + bool operator!=(const identity_ptr& x) const throw() + { return ptr_ != x.ptr_; } + //@} + + protected: + IUnknown *ptr_; + + void swap(identity_ptr& x) throw() + { std::swap(ptr_, x.ptr_); } + + void addref() const throw() + { if (ptr_ != NULL) ptr_->AddRef(); } + + void release() throw() + { if (ptr_ != NULL) { ptr_->Release(); ptr_ = NULL; } } + + private: + // Can't use an identity_ptr for out, inout, use com_ptr + IUnknown **inout(); + IUnknown *out(); + + }; + + //! Interface smart pointer + /*! \note All members are exception safe. + * \sa cometcomptr + */ + template class com_ptr + { + public: + const uuid_t& iid() const throw() + { return uuidof(); } + + private: + enum{ chooser_matches_= impl::iunknown_chooser::matches }; + typedef typename impl::IUnknown_caller< chooser_matches_ > Unknown_caller_; + + void addref() const throw() + { if (ptr_) Unknown_caller_::AddRef(ptr_); } + + void release() throw() + { if (ptr_) { Unknown_caller_::Release(ptr_); ptr_ = 0; } } + + public: + //! Type of pointer to wrapped interface + typedef Itf* interface_pointer; + + //! Safe interface pointer. + /*! + Interface pointer where the methods from IUnknown have been hidden. + */ +#ifndef COMET_USE_RAW_WRAPPERS + typedef wrap_t* safe_interface_pointer; +#else + typedef impl::safe_interface< Itf >* safe_interface_pointer; +#endif + + private: + interface_pointer ptr_; + + public: + //! Default constructor + /*! + Initialises the wrapped pointer to null. + */ + com_ptr() throw() : ptr_(NULL) {} + + //! Destructor + /*! + Calls Release() on pointer if necessary. + */ + ~com_ptr() throw() + { release(); } + + //! Upcasting constructor + /*! + Used for upcasting interface pointer without invocation of QueryInterface. + + This contructor only allows com_ptr upcasts. + + \param x + com_ptr to cast. + */ + + // If you are getting: + // error C2440: '=' : cannot convert from 'struct ... + // + // Use either try_cast or com_cast to cast from one interface to another + // example: + // + // com_ptr p = try_cast( q ); + // + // or + // + // com_ptr p = com_cast( q ); + template com_ptr(const com_ptr& x) throw() + { ptr_ = (Itf2*)x.get(); addref(); } + + //! QueryInterface construction + /*! + Uses QueryInterface to query for interface of type Itf. If the pointer is incompatible, the pointer will be initialised to null. + + \code + com_ptr foo; + com_ptr bar( com_cast(foo) ); + \endcode + + \param x + com_ptr to cast + */ + template com_ptr(const impl::com_cast_t& x) throw() + { ptr_ = NULL; Itf2* p = x.get(); if (p != NULL) Unknown_caller_::QueryInterface(p, iid(), reinterpret_cast(&ptr_)); } + // ^ Note: no error checking!!! + + //! QueryInterface construction + /*! + Uses QueryInterface to query for interface of type Itf. Should the pointer be incompatible, com_error will be thrown. + + \code + com_ptr foo = Foo::create(); + com_ptr bar( try_cast(foo) ); + \endcode + + \param x + com_ptr to cast + + \exception com_error + Throws E_NOINTERFACE if cast fails. + Throws E_POINTER if pointer is zero. + */ + template com_ptr(const impl::try_cast_t& x) throw(com_error) + : ptr_(NULL) + { + Itf2* p = x.get(); if (p == NULL) return; + Unknown_caller_::QueryInterface(p, iid(), reinterpret_cast(&ptr_)) | raise_exception; + if (ptr_ == NULL) raise_exception(E_NOINTERFACE); + } + + //! Copy constructor + /*! + \param x com_ptr to copy. + */ + com_ptr(const com_ptr& x) throw() + : ptr_(x.ptr_) + { addref(); } + + //! Copy from identity_unknown class. + /** Itf must be IUnknown for this to work. Otherwise use try_cast or + * com_cast. + */ + com_ptr( const identity_ptr &x) throw() + : ptr_(x.ptr_) + { addref(); } + + private: + // If you are getting: + // error C2248: '=' : cannot access private member ... + // + // Use either try_cast or com_cast to convert a variant_t to a com_ptr. + // example: + // + // com_ptr p = try_cast( v ); + // + // or + // + // com_ptr p = com_cast( v ); + com_ptr(const variant_t&); + com_ptr& operator=(const variant_t&); + + public: + + //! Construction from variant_t + /*! + This constructor does not throw. The wrapped pointer is initialised to null if the variant is incompatible. + + \param v + Wrapped com_variant to construct com_ptr from + */ + com_ptr(const impl::com_cast_t& v) throw() + { create_nothrow(v.get()); } + + //! Construction from variant_t + /*! + Throws com_error should the variant be incompatible. + + \param v + Wrapped com_variant to construct com_ptr from + + \exception com_error + Throws E_NOINTERFACE if cast fails. + */ + com_ptr(const impl::try_cast_t& v) throw(com_error) + { create(v.get()); } + + //! Construction from a raw interface pointer + /*! + Calls AddRef, and thus does \em not take ownership of the pointer. + + \param p + Interface pointer to construct com_ptr from. + */ + com_ptr(interface_pointer p) throw() + : ptr_(p) + { addref(); } + + //! Attach construction of raw interface pointer + /*! + An attachment construction does not AddRef on the interface, and is said + to take ownership of the interface pointer. + + \param p + auto_attach wrapped pointer to construct com_ptr from. + */ + com_ptr(const impl::auto_attach_t& p) throw() + : ptr_( p.get() ) + {} + + //! Construction from CLSID + /*! + \param clsid + Class ID of coclass. + \param dwClsContext + Class context to create object in. + + \exception com_error + */ + explicit com_ptr(const uuid_t& clsid, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) + { create(clsid, NULL, dwClsContext); } + + //! Construction of aggregated object from CLSID + /*! + \param clsid + Class ID of coclass. + \param outer + Pointer to outer object. + \param dwClsContext + Class context to create object in. + + \exception com_error + */ + /*template*/ com_ptr(const uuid_t& clsid, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) + { create(clsid, outer, dwClsContext); } + + //! Constructions of null pointer + /*! + \param null + Only 0 is valid. Any other value will cause E_POINTER to be thrown. + + \exception com_error + Throws E_POINTER if a non-zero value is specified. + */ + explicit com_ptr(int null) throw(com_error) + : ptr_(NULL) + { if(null != 0) raise_exception(E_POINTER); } + + //! Construction from ProgID + /*! + \param progid + ProgID of class. + \param dwClsContext + Class context to create object in. + + \exception com_error + */ + explicit com_ptr(const wchar_t* progid, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) + { create(progid, 0, dwClsContext); } + + //! Construction from ProgID + /*! + \param progid + ProgID of class. + \param outer + Pointer to outer object. + \param dwClsContext + Class context to create object in. + + \exception com_error + */ + /*template */com_ptr(const wchar_t* progid, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) + { create(progid, outer, dwClsContext); } + + //! Construction using CoGetObject + explicit com_ptr(const wchar_t* name, BIND_OPTS& bind_opts) + { create(name, bind_opts); } + + //! Arrow operator + /*! + Used to access methods and properties of the wrapped interface. + + \note The methods of IUnknown are deliberately hidden. + */ + safe_interface_pointer operator->() const throw(com_error) + { if( ptr_ == NULL) raise_exception(E_POINTER); return get_safe_ptr(); } + + //! Assignment of raw interface pointer + com_ptr& operator=(interface_pointer x) throw() + { com_ptr t(x); swap(t); return *this; } + + //! QueryInterface assignment + /*! + In order to cast unrelated interfaces you must use either com_cast or try_cast. + + A com_cast that fails results in a null pointer assignment. + + \code + com_ptr foo; + com_ptr bar; + bar = com_cast(foo); + if (!bar.is_null()) { + // Cast is ok. + bar->DoTheThing(); + } + \endcode + */ + template com_ptr& operator=(const impl::com_cast_t& x) throw() + { com_ptr t(x); swap(t); return *this; } + + //! QueryInterface assignment + /*! + In order to cast unrelated interfaces you must use either com_cast or try_cast. + + A try_cast that fails will throw E_NOINTERFACE wrapped in com_error. + + \code + com_ptr foo; + com_ptr bar; + try { + bar = try_cast(foo); + bar->DoTheThing(); + } catch (com_error&) { + // Cast didn't work. + } + \endcode + + \exception com_error + Throws E_NOINTERFACE if cast fails. + */ + template com_ptr& operator=(const impl::try_cast_t& x) throw(com_error) + { com_ptr t(x); swap(t); return *this; } + + template + com_ptr& operator=(const com_ptr& x) throw() + { com_ptr t(x); swap(t); return *this; } + + //! Default assigment operator. + com_ptr& operator=(const com_ptr& x) throw() + { com_ptr t(x); swap(t); return *this; } + + //! Null assignment + /*! + Only null is allowed as argument. Attempting to assign a non-zero value will result in E_POINTER (wrapped in com_error) being thrown. + + \exception com_error + Throw E_POINTER if a non-zero value is specified. + */ + com_ptr& operator=(int null) throw(com_error) + { if(null != 0) raise_exception(E_POINTER); release(); return *this; } + + //! Attaching assignment + /*! + Attaches a raw interface pointer to the com_ptr. + + \code + com_ptr foo; + foo = auto_attach( raw_foo_pointer ); + \endcode + */ + com_ptr& operator=(const impl::auto_attach_t& p) throw() + { release(); ptr_ = p.get(); return *this; } + + private: + template + int compare_unknown(const com_ptr& x) const throw(com_error) + { + if ( (void *)ptr_ == (void *)x.get()) return 0; + ::IUnknown* p1 = 0; + ::IUnknown* p2 = 0; + + if (ptr_ != NULL) { + Unknown_caller_::QueryInterface(ptr_,uuidof< ::IUnknown >(), reinterpret_cast(&p1)) | raise_exception; + p1->Release(); + } + + if (x.get()) { + Unknown_caller_::QueryInterface(x.get(), uuidof< ::IUnknown >(), reinterpret_cast(&p2)) | raise_exception; + p2->Release(); + } + + return p1 - p2; + } + int compare_unknown(const identity_ptr& x) const throw(com_error) + { + if (ptr_ == x.get()) return 0; + ::IUnknown* p1 = 0; + ::IUnknown* p2 = 0; + + if (ptr_ != NULL) { + Unknown_caller_::QueryInterface(x.get(), uuidof< ::IUnknown >(), reinterpret_cast(&p2)) | raise_exception; + p2->Release(); + } + + return p1 - p2; + } + public: + /**! \name Pointer Comparison + */ + //@{ + template bool operator<(const T& x) const throw(com_error) + { return compare_unknown(x) < 0; } + + template bool operator>(const T& x) const throw(com_error) + { return compare_unknown(x) > 0; } + + template bool operator<=(const T& x) const throw(com_error) + { return compare_unknown(x) <= 0; } + + template bool operator>=(const T& x) const throw(com_error) + { return compare_unknown(x) >= 0; } + + /** Object equality. + */ + template bool operator==(const com_ptr& x) const throw(com_error) + { return compare_unknown(x) == 0; } + + template bool operator!=(const com_ptr& x) const throw(com_error) + { return compare_unknown(x) != 0; } + + //@} + + //! Returns true if the wrapped pointer is null. + bool is_null() const throw() + { return (ptr_ ==NULL); } + + //! Returns true if the wrapped pointer is null. + bool operator!() const throw() + { return is_null(); } + + //! Null comparison + /*! + Only comparison with a value of zero is allowed. Non-zero values will result + in E_POINTER (wrapped in com_error) being thrown. + + \exception com_error + */ + bool operator==(int null) const + { if (null != 0) raise_exception(E_POINTER); return is_null(); } + + //! Null comparison + /*! + Only comparison with a value of zero is allowed. Non-zero values will result + in E_POINTER (wrapped in com_error) being thrown. + + \exception com_error + */ + bool operator!=(int null) const + { if (null != 0) raise_exception(E_POINTER); return !is_null(); } + + //! Pointer comparison + /*! + Returns true if the two pointers are the same. + */ + template inline bool same_pointer( const com_ptr &x) const throw(com_error) + { return (IUnknown *) ptr_ == (IUnknown *)x.ptr_; } + + //! Swap operation + /*! + This method is very fast, since it does not call AddRef or Release. + */ + void swap(com_ptr& x) throw() + { std::swap(ptr_, x.ptr_); } + + //! Detaches ownership. + /*! + Detaches the pointer from the wrapper and returns it as raw pointer. + + This method is primarily for use by the interface wrapper code. You should very seldomly find use for it. + */ + interface_pointer detach() throw() + { interface_pointer t = ptr_; ptr_ = 0; return t; } + + //! Detaches ownership + /*! + */ + static interface_pointer detach(com_ptr& x) throw() + { return x.detach(); } + + /**! Create a const reference to a pointer without invoking reference-counting. + * Since neither constructor or destructor get called. + */ + static const com_ptr& create_const_reference(const interface_pointer& x) + { return *reinterpret_cast(&x); } + + /**! Create a reference to a pointer without invoking reference-counting. + * Since neither constructor or destructor get called. + */ + static com_ptr& create_reference(interface_pointer& x) + { return *reinterpret_cast(&x); } + + //! \name Adapter methods. + //@{ + + //! [in] adapter + /*! + Used when calling raw interfaces that require an [in] IXXX * argument. + + \code + com_ptr foo; + HRESULT hr = pRawInterface->raw_Method(foo.in()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + interface_pointer in() const throw() + { return ptr_; } + + interface_pointer raw() const throw() + { return ptr_; } + + interface_pointer get() const throw() + { return ptr_; } + + //! [out] adapter. + /*! + Used when calling raw interfaces that require an [out] IXXX ** argument. + + \code + com_ptr foo; + HRESULT hr = pRawInterface->raw_MethodThatReturnsPtr(foo.out()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + interface_pointer* out() throw() + { release(); return &ptr_; } + + //! [in, out] adapter. + /*! + Used when calling raw interfaces that require an [in, out] IXXX ** argument. + + \code + com_ptr foo; + HRESULT hr = pRawInterface->raw_MethodThatChangesPtr(foo.inout()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + interface_pointer* inout() throw() + { return &ptr_; } + + //@} + + private: + class bool_tester + { void operator delete(void*); }; + + public: + operator bool_tester*() const throw() + { if (is_null()) return 0; static bool_tester test; return &test; } + + private: + safe_interface_pointer get_safe_ptr() const throw() + { return reinterpret_cast(ptr_); } + + inline void create_nothrow(const variant_t& v) throw(); + + inline void create(const variant_t& v) throw(com_error); + + void create(const uuid_t& clsid, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) + { CoCreateInstance(clsid, outer.in(), dwClsContext, iid(), reinterpret_cast(&ptr_)) | raise_exception; } + + void create(const wchar_t* clsidString, const com_ptr< ::IUnknown>& outer, DWORD dwClsContext = CLSCTX_ALL) throw(com_error) + { + if (clsidString == NULL) raise_exception(E_INVALIDARG); + + CLSID clsid; + + if (clsidString[0] == '{') + CLSIDFromString(const_cast(clsidString), &clsid) | raise_exception; + else + CLSIDFromProgID(clsidString, &clsid) | raise_exception; + + create(clsid, outer, dwClsContext);; + } + + void create(const wchar_t* name, BIND_OPTS& bind_opts) throw(com_error) + { CoGetObject(name, &bind_opts, iid(), reinterpret_cast(&ptr_)) | raise_exception; } + }; // class + + //! Comparison with null + /*! + Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. + + \relates com_ptr + \exception com_error + Throws E_POINTER if a non-zero value is specified. + */ + template inline bool operator==(int null, const com_ptr& x) throw(com_error) + { if(null != 0) raise_exception(E_POINTER); return x.is_null(); } + + //! Comparison with null + /*! + Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. + + \relates identity_ptr + \exception com_error + Throws E_POINTER if a non-zero value is specified. + */ + static inline bool operator==(int null, const identity_ptr& x) throw(com_error) + { if(null != 0) raise_exception(E_POINTER); return x.is_null(); } + + //! Comparison with null + /*! + Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. + + \relates com_ptr + \exception com_error + Throws E_POINTER if a non-zero value is specified. + */ + template inline bool operator!=(int null, const com_ptr& x) throw(com_error) + { return x != null; } + + //! Comparison with null + /*! + Only comparison with a value of zero is allowed. Non-zero values will result in E_POINTER (wrapped in com_error) being thrown. + + \relates com_ptr + \exception com_error + Throws E_POINTER if a non-zero value is specified. + */ + inline static bool operator!=(int null, const identity_ptr& x) throw(com_error) + { if(null != 0) raise_exception(E_POINTER); return !x.is_null(); } + + namespace impl { + template + class try_caster_t + { + com_ptr ptr_; + public: + template + try_caster_t( const com_ptr &ptr2) + : ptr_(try_cast(ptr2)) + {} + + const com_ptr &get() const { return ptr_; } + + }; + } + /*! Version of try_cast more to the style of \b dynamic_cast. + This is aimed at being used for casts that get used once in an environment with many interfaces. + \code + com_ptr session; + com_ptr = try_cast( try_cast_ptr(session)->User() ); + \endcode + The impl::try_caster_t is implementation only - let the compiler do the + cast from com_ptr to impl::try_caster_t. Note that try_cast would still + be the preferred method for most casts. + \sa try_cast + \relates com_ptr + */ + template inline com_ptr try_cast_ptr( const impl::try_caster_t &caster) + { return (com_ptr)caster.get(); } + + //! Cast com_ptr. + /*! + Allows QueryInterface when casting to different com_ptr type. + + \code + com_ptr foo; + com_ptr bar; + try { + bar = try_cast(foo); + bar->DoTheThing(); + } catch (com_error&) { + // Cast didn't work. + } + \endcode + + */ + template inline impl::try_cast_t try_cast(const com_ptr& t) { return impl::try_cast_t(t.get()); } + static inline impl::try_cast_t< ::IUnknown> try_cast(const identity_ptr& t) { return impl::try_cast_t< ::IUnknown>(t.get()); } + template inline impl::try_cast_t try_cast(Itf* t) { return impl::try_cast_t(t); } + inline impl::try_cast_t try_cast(const variant_t& v) { return impl::try_cast_t(v); } + //@} + +} // namespace + +#include +#include + +namespace comet { + template + inline void com_ptr::create_nothrow(const variant_t& v) throw() + { + ptr_ = 0; + ::IUnknown *pUnk; + switch (v.get_vt()) { + case VT_DISPATCH: + pUnk = V_DISPATCH(&v.get()); + break; + case VT_UNKNOWN: + pUnk = V_UNKNOWN(&v.get()); + break; + case VT_DISPATCH|VT_BYREF: + pUnk = *V_DISPATCHREF(&v.get()); + break; + case VT_UNKNOWN|VT_BYREF: + pUnk = *V_UNKNOWNREF(&v.get()); + break; + default: + // don't try anything fancy. + return; + } + if( pUnk ==NULL) return; + Unknown_caller_::QueryInterface(pUnk,iid(), reinterpret_cast(&ptr_)); + } + template + inline void com_ptr::create(const variant_t& v) throw(com_error) + { + ptr_ = 0; + ::IUnknown *pUnk; + switch (v.get_vt()) { + case VT_DISPATCH: + pUnk = V_DISPATCH(&v.get()); + break; + case VT_UNKNOWN: + pUnk = V_UNKNOWN(&v.get()); + break; + case VT_DISPATCH|VT_BYREF: + pUnk = *V_DISPATCHREF(&v.get()); + break; + case VT_UNKNOWN|VT_BYREF: + pUnk = *V_UNKNOWNREF(&v.get()); + break; + case VT_EMPTY: + case VT_NULL: + pUnk = NULL; + break; + default: + // don't try anything fancy. + raise_exception( E_INVALIDARG ); + } + if( pUnk ==NULL) return; + Unknown_caller_::QueryInterface(pUnk,iid(), reinterpret_cast(&ptr_)) | raise_exception; + } + + inline identity_ptr::identity_ptr(const impl::try_cast_t& v) throw(com_error) + : ptr_(NULL) + { + VARIANT vv = v.get().get(); + ::IUnknown *pUnk; + switch (V_VT(&vv)) { + case VT_DISPATCH: + pUnk = V_DISPATCH(&vv); + break; + case VT_UNKNOWN: + pUnk = V_UNKNOWN(&vv); + break; + case VT_DISPATCH|VT_BYREF: + pUnk = *V_DISPATCHREF(&vv); + break; + case VT_UNKNOWN|VT_BYREF: + pUnk = *V_UNKNOWNREF(&vv); + break; + case VT_EMPTY: + case VT_NULL: + pUnk = NULL; + break; + default: + // don't try anything fancy. + raise_exception( E_INVALIDARG ); + } + if( pUnk ==NULL) return; + pUnk->QueryInterface( IID_IUnknown, reinterpret_cast(&ptr_)) | raise_exception; + } + + inline identity_ptr::identity_ptr(const impl::com_cast_t& v) throw(com_error) + : ptr_(NULL) + { + VARIANT vv = v.get().get(); + ::IUnknown *pUnk; + switch (V_VT(&vv)) { + case VT_DISPATCH: + pUnk = V_DISPATCH(&vv); + break; + case VT_UNKNOWN: + pUnk = V_UNKNOWN(&vv); + break; + case VT_DISPATCH|VT_BYREF: + pUnk = *V_DISPATCHREF(&vv); + break; + case VT_UNKNOWN|VT_BYREF: + pUnk = *V_UNKNOWNREF(&vv); + break; + default: + // don't try anything fancy. + return; + } + if( pUnk ==NULL) return; + pUnk->QueryInterface( IID_IUnknown, reinterpret_cast(&ptr_)); + } +} + +namespace boost { + template inline Itf* get_pointer(const comet::com_ptr& sp) + { + return sp.raw(); + } + static inline IUnknown* get_pointer(const comet::identity_ptr &sp) + { + return sp.raw(); + } +} + +//! Macro that specialises std::swap for com_ptr. +#define COMET_SPECIALISE_STD_SWAP_ITF(Itf) namespace std { inline void swap(comet::com_ptr& x, comet::com_ptr& y) {x.swap(y); } } + +#endif + diff --git a/lib/local/CamCom/comet/reference_count.h b/lib/local/CamCom/comet/reference_count.h new file mode 100644 index 0000000..020ad36 --- /dev/null +++ b/lib/local/CamCom/comet/reference_count.h @@ -0,0 +1,100 @@ +/** \file + * Implements a class that maintains a reference count. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen, Paul Hollingsworth + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_REFERENCE_COUNT_H +#define COMET_REFERENCE_COUNT_H + +#include +#include + +namespace comet { + /*! \addtogroup Misc + */ + //@{ + /// Simple reference counter. + class reference_count + { + public: + reference_count() : rc_(0) {}; + explicit reference_count(size_t x) : rc_(reinterpret_cast(x)) {}; + + reference_count(const reference_count& x) : rc_(x.rc_) {}; + + enum { FLAGVALUE = 1 }; + bool is_flag() const { + return reinterpret_cast(rc_) == 1; + } + + // is_null + /** Implies that the there are currently no outstanding references + * to this object. + */ + bool is_null() const { + return rc_ == 0; + } + + /// Increment count. + size_t operator++() { + if (!rc_) { + rc_ = new size_t(1); + } + return ++*rc_; + } + + /// Decrement count. + size_t operator--() { + if (rc_) { + if (--*rc_ == 0) { + delete rc_; + rc_ = 0; + return 0; + } + return *rc_; + } + return 0; + } + + void clear() { + rc_ = 0; + } + + void swap(reference_count &rhs) throw() { + std::swap(rc_, rhs.rc_); + } + + reference_count& operator=(reference_count& x) + { + rc_ = x.rc_; + return *this; + } + + private: + size_t* rc_; + }; // class reference_count + //@} +} // namespace comet + +namespace std { + //! Specialisation of std::swap for reference_count. + template<> inline void swap(comet::reference_count &lhs, comet::reference_count &rhs) COMET_STD_SWAP_NOTHROW + { + lhs.swap(rhs); + } +} + +#endif diff --git a/lib/local/CamCom/comet/registry.h b/lib/local/CamCom/comet/registry.h new file mode 100644 index 0000000..3c2d787 --- /dev/null +++ b/lib/local/CamCom/comet/registry.h @@ -0,0 +1,1302 @@ +/** \file + * Windows Registry iteration and manipulation functions. + */ +/* + * Copyright 2000, 2001 Paul Hollingsworth + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_REGISTRY_H +#define COMET_REGISTRY_H + +#include + +#include +#include +#include + +#ifdef __BORLANDC__ + #define COMET_ITERATOR_VOID(tag) std::iterator +#else + #ifndef __SGI_STL + #ifdef __MINGW32__ + #define COMET_ITERATOR_VOID(tag) std::forward_iterator + #else + #ifdef _CPPLIB_VER + #define COMET_ITERATOR_VOID(tag) std::iterator + #else + #define COMET_ITERATOR_VOID(tag) std::iterator + #endif + #endif + #else + #define COMET_ITERATOR_VOID(tag) std::iterator + #endif +#endif + +namespace comet { + /** Contains implementation of registry classes. + */ + namespace registry { + /// Unicode compatible string class used in registry operations. +// typedef std::basic_string tstring; + + namespace impl { + // Only when an iterator is dereferenced + // do we want to go about reading the value + // from the registry. This requires us to create + // a temporary object. But in order to overload + // operator->, our temporary object must overload + // operator-> - and often it doesn't. + // Proxy is here to effectively overload operator-> for the temporary + // object. + template + class proxy + { + T t_; + public: + proxy(const T &t) : t_(t) {} + T *operator->() + { + return &t_; + } + + const T *operator->() const + { + return &t_; + } + }; + + class key_base + { + HKEY key_; + mutable reference_count rc_; + + static bool valid_key_(HKEY key) { + return key != 0; + } + + void close_() { + if(valid_key_(key_) && (--rc_ == 0)) { + LONG errcode = ::RegCloseKey(key_); + COMET_ASSERT(ERROR_SUCCESS == errcode); + /* C4189 */ errcode; + } + key_ = 0; // invalidate key handle + } + public: + key_base(const key_base &rhs) + : key_(rhs.key_) { + if(valid_key_(key_)) + ++rhs.rc_; + rc_ = rhs.rc_; + } + + key_base(HKEY key = 0) : key_(key) { + } + + ~key_base() throw() { + close_(); + } + + key_base &operator=(const key_base &rhs) + { + key_base tmp(rhs); + swap(tmp); + return *this; + } + + void swap(key_base &rhs) throw() { + std::swap(key_, rhs.key_); + std::swap(rc_, rhs.rc_); + } + + LONG open(const tstring &subkey, + REGSAM sam_desired, + HKEY *childkey) const { + *childkey = 0; + return ::RegOpenKeyEx(key_, + subkey.c_str(), + 0, + sam_desired, + childkey); + } + + HKEY open_nothrow(const tstring &subkey, + REGSAM sam_desired, + LONG *errcode) const { + HKEY childkey_ = 0; + LONG errcode_ = open(subkey, + sam_desired, + &childkey_); + if(errcode) *errcode = errcode_; + return childkey_; + } + + LONG create(const tstring &subkey, + DWORD options, + REGSAM sam_desired, + LPSECURITY_ATTRIBUTES security_attributes, + LPDWORD disposition, + HKEY *childkey) const { + return ::RegCreateKeyEx(key_, + subkey.c_str(), + 0, + REG_NONE, + options, + sam_desired, + security_attributes, + childkey, + disposition); + } + + HKEY create_nothrow(const tstring &subkey, + DWORD options, + REGSAM sam_desired, + LPSECURITY_ATTRIBUTES security_attributes, + LPDWORD disposition, + LONG *errcode) const { + HKEY childkey = 0; + LONG errcode_ = create(subkey, + options, + sam_desired, + security_attributes, + disposition, + &childkey); + if(errcode) *errcode = errcode_; + return childkey; + } + + LONG flush_nothrow() const { + return ::RegFlushKey(key_); + } + + LONG delete_subkey_nothrow(const tstring &subkey) const { + return ::RegDeleteKey(key_, subkey.c_str()); + } + + LONG delete_value_nothrow(const tstring &value_name) const { + return ::RegDeleteValue(key_, value_name.c_str()); + } + + void close() { + close_(); + } + + HKEY get() const { + return key_; + } + + bool is_valid() const throw() + { + return key_ ? true : false; + } + + operator const void *() const throw() + { + return is_valid() ? this : 0; + } + }; // class key_base + + // Enumerating through keys or values is + // very similar. These two class encapsulate + // all that is different between the two algorithms. + struct next_value + { + static LONG perform(HKEY key, + DWORD dwIndex, + LPTSTR lpName, + LPDWORD lpcName) + { + return ::RegEnumValue(key, dwIndex, lpName, lpcName, 0, 0, 0, 0); + } + }; + + struct next_key + { + static LONG perform(HKEY key, + DWORD dwIndex, + LPTSTR lpName, + LPDWORD lpcName) + { + return ::RegEnumKeyEx(key, dwIndex, lpName, lpcName, 0, 0, 0, 0); + } + }; + } // namespace impl + + + /** \struct name_iterator registry.h comet/registry.h + * Iterates through a list of names. The names might be either key + * names or value names, depending on get_next. + */ + template + struct name_iterator : public COMET_ITERATOR_VOID(std::forward_iterator_tag) + { + // key_ is the only assignment that can fail. So + // we make it the first member, so that + // default assignment is exception safe. + impl::key_base key_; + DWORD index_; + DWORD buf_size_; + DWORD num_values_; + + static void check_exception_(LONG errcode) + { + if(ERROR_SUCCESS != errcode) + error_policy::on_error(errcode); + } + + // Is this iterator an end iterator? + bool is_end() const + { + return key_ ? false : true; + } + + // Make this iterator an end + // iterator + void make_end() + { + key_.close(); + } + + public: + typedef tstring value_type; + name_iterator(const impl::key_base &key, + DWORD num_values, + DWORD buf_size) + : key_(key), + num_values_(num_values), + buf_size_(buf_size), + index_(0) + { + if(0 == num_values) + make_end(); + } + + void swap(name_iterator &rhs) + { + key_.swap(rhs.key_); + std::swap(index_, rhs.index_); + std::swap(buf_size_, rhs.buf_size_); + std::swap(num_values_, rhs.num_values_); + } + + name_iterator &operator=(const name_iterator &rhs) + { + key_ = rhs.key_; + index_ = rhs.index_; + buf_size_ = rhs.buf_size_; + num_values_ = rhs.num_values_; + return *this; + } + + impl::key_base key() const + { + return key_; + } + + name_iterator() + { + make_end(); + } + + value_type operator*() const + { + tstring::value_type *buf = static_cast(_alloca(buf_size_)); + DWORD dummy = buf_size_; + check_exception_(get_next::perform(key_.get(), + index_, + buf, + &dummy)); + return buf; + } + + impl::proxy operator->() const + { + return **this; + } + + name_iterator &operator++() + { + ++index_; + if(index_ == num_values_) + make_end(); + return *this; + } + + name_iterator operator++(int) const + { + name_iterator retval = *this; + ++(*this); + return retval; + } + + bool operator==(const name_iterator &rhs) const + { + if(is_end()) return rhs.is_end(); + if(rhs.is_end()) return is_end(); + return index_ == rhs.index_; + } + + bool operator!=(const name_iterator &rhs) const + { + return !(*this == rhs); + } + }; + + /** \class value registry.h comet/registry.h + * A pseudo-reference to a value in the registry. + * Assign to instances of this object to make changes to the corresponding registry value + * Read from this object to read values from the registry. + */ + template + class value + { + impl::key_base key_; + tstring value_name_; + static void check_exception_(LONG errcode) + { + if(ERROR_SUCCESS != errcode) + error_policy::on_error(errcode); + } + static void type_mismatch() + { + error_policy::on_typemismatch(); + } + + LONG get_value_(DWORD *type, + BYTE *buffer, + DWORD *number_bytes) const + { + return ::RegQueryValueEx(key_.get(), + value_name_.c_str(), + 0, + type, + buffer, + number_bytes); + } + + void get_value(DWORD *type, + BYTE *buffer, + DWORD *number_bytes) const { + check_exception_( + get_value_(type, + buffer, + number_bytes) + ); + } + + LONG set_value_(DWORD type, + const BYTE *data, + DWORD number_bytes) + { + return ::RegSetValueEx(key_.get(), + value_name_.c_str(), + 0, + type, + data, + number_bytes); + } + + void set_value(DWORD type, + const BYTE *data, + DWORD number_bytes) + { + check_exception_( + set_value_(type, + data, + number_bytes)); + } + + tstring name() const + { + return value_name_; + } + public: + + //! This can be used to query if a value exists. + /*! + For example: + \code + string get_thread_model(const regkey &clsid_key) + { + regkey::value_type t = clsid_key.open("InprocServer32", KEY_READ)["ThreadingModel"]; + if(t.exists()) + return t.str(); + else + return "Single"; + } + \endcode + */ + bool exists() const + { + return ERROR_SUCCESS == get_value_(0, 0, 0); + } + + value(const impl::key_base &key, + const tstring &value_name) + : key_(key), + value_name_(value_name) + { + } + + //! Non throwing swap + /*! This is for efficiency only. + operator= is overloaded to have a different + meaning (copying one part of the + registry to another part of the registry). + */ + void swap(value &rhs) + { + key_.swap(rhs.key_); + value_name_.swap(rhs.value_name_); + } + + + //! Get a value of any type. The arguments are passed directly to RegQueryValueEx + /*! + \param type Pointer to the type - can be 0 + \param buffer Pointer to a buffer - can be 0 + \param number_bytes Indicates size of the buffer - can be 0 if buffer is 0 + */ + void get(DWORD *type, + BYTE *buffer, + DWORD *number_bytes) const + { + get_value(type, + buffer, + number_bytes); + } + + //! Get a value - return errcode + /*! + \param type Pointer to the type - can be 0 + \param buffer Pointer to a buffer - can be 0 + \param number_bytes Indicates size of the buffer - can be 0 if buffer is 0 + */ + LONG get_nothrow(DWORD *type, + BYTE *buffer, + DWORD *number_bytes) const + { + return get_value_(type, buffer, number_bytes); + } + + //! Set a value arbitrarily. The arguments are passed directly to RegSetValueEx + /*! + \param type Type to set it to (e.g. REG_SZ) + \param buffer Pointer to a buffer + \param number_bytes Indicates size of the buffer + */ + void set(DWORD type, + const BYTE *buffer, + DWORD number_bytes) + { + set_value(type, + buffer, + number_bytes); + } + + //! Set a value - return errcode + /*! + \param type Type to set it to (e.g. REG_SZ) + \param buffer Pointer to a buffer + \param number_bytes Indicates size of the buffer + */ + LONG set_nothrow(DWORD type, + const BYTE *buffer, + DWORD number_bytes) + { + return set_value_(type, buffer, number_bytes); + } + + //! Interpret value as a string + /*! + \exception com_error If the type is not REG_SZ or REG_EXPAND_SZ (using standard error_policy) + */ + tstring str() const + { + DWORD number_bytes = 0; + DWORD type; + get_value(&type, + 0, + &number_bytes); + if( (REG_SZ != type) && (REG_EXPAND_SZ != type)) + type_mismatch(); + BYTE *buffer = static_cast(_alloca(number_bytes)); + get_value(0, + buffer, + &number_bytes); + return tstring(reinterpret_cast(buffer), + (number_bytes/sizeof(tstring::value_type)) - 1); + } + + tstring str(const tstring& default_val) const + { + DWORD number_bytes = 0; + DWORD type; + if (get_value_(&type, + 0, + &number_bytes) != ERROR_SUCCESS) return default_val; + if( (REG_SZ != type) && (REG_EXPAND_SZ != type)) + type_mismatch(); + BYTE *buffer = static_cast(_alloca(number_bytes)); + get_value(0, + buffer, + &number_bytes); + return tstring(reinterpret_cast(buffer), + (number_bytes/sizeof(tstring::value_type)) - 1); + } + + //! Implicit conversion to string. + operator tstring() const + { + return str(); + } + + //! Implicit conversion to unsigned int + operator DWORD() const + { + return dword(); + } + + //! Interpret value as a DWORD + /*! + \exception com_error If the type is not REG_DWORD or REG_DWORD_LITTLE_ENDIAN (using standard error_policy) + */ + DWORD dword() const + { + DWORD number_bytes = sizeof( DWORD ); + DWORD type; + DWORD retval; + get_value(&type, + reinterpret_cast(&retval), + &number_bytes); + if( (REG_DWORD != type) && (REG_DWORD_LITTLE_ENDIAN != type) ) + type_mismatch(); + return retval; + } + + DWORD dword(DWORD default_val) const + { + DWORD number_bytes = sizeof( DWORD ); + DWORD type; + DWORD retval; + if (get_value_(&type, + reinterpret_cast(&retval), + &number_bytes) != ERROR_SUCCESS) return default_val; + if( (REG_DWORD != type) && (REG_DWORD_LITTLE_ENDIAN != type) ) + type_mismatch(); + return retval; + } + + // These two operators are currently useless + // because VC++ 6.0 appears to have a bug - + // it claims that no conversion to pair + // exists even though it clearly does here. + // However, it's possible these would be + // useful on other compilers (or future compilers). + operator std::pair() const + { + return std::make_pair(name(), str()); + } + + operator std::pair() const + { + return std::make_pair(name(), dword()); + } + + //! Assign a string value and set the type to REG_SZ + value &operator=(const tstring &rhs) + { + set_value(REG_SZ, + reinterpret_cast(rhs.c_str()), + (rhs.length() + 1) * sizeof ( tstring::value_type)); + return *this; + } + + //! Assign a DWORD value and set the type to REG_DWORD + value &operator=(const DWORD &rhs) + { + set_value(REG_DWORD, + reinterpret_cast(&rhs), + sizeof (DWORD) ); + return *this; + } + + //! Assign an integer value - sets type to REG_DWORD + value &operator=(int rhs) + { + return *this = DWORD(rhs); + } + + //! Assign value from another registry value + /*! + Because value objects always refer to a part of the registry, + this effectively copies a registry value + from somewhere else in the registry. + */ + value &operator=(const value &rhs) + { + DWORD type; + DWORD size; + rhs.get_value(&type, + 0, + &size); + BYTE *buffer = static_cast(_alloca(size)); + rhs.get_value_(0, + buffer, + &size); + set_value(type, + buffer, + size); + return *this; + } + }; // class value + + /** \class const_value_iterator registry.h comet/registry.h + * Forward const iterator over registry values. + */ + template + class const_value_iterator : public COMET_ITERATOR_VOID(std::forward_iterator_tag) + { + typedef const value second_type; + typedef std::pair value_type_; + + value_type_ get_value() const + { + tstring name = *index_; + return std::make_pair(name, second_type(index_.key(), name) ); + } + protected: + name_iterator index_; + public: + typedef value_type_ value_type; + + const_value_iterator(const impl::key_base &key, + DWORD num_values, + DWORD buf_size) + : index_(key, num_values, buf_size) + { + } + + const_value_iterator() {} + + void swap(const_value_iterator &rhs) + { + index_.swap(rhs.index_); + } + + value_type operator*() const + { + return get_value(); + } + + const_value_iterator &operator++() + { + ++index_; + return *this; + } + + const_value_iterator operator++(int) + { + const_value_iterator retval(*this); + ++(*this); + return retval; + } + + impl::proxy operator->() + { + return **this; + } + + bool operator==(const const_value_iterator &rhs) const + { + return index_ == rhs.index_; + } + + bool operator!=(const const_value_iterator &rhs) const + { + return index_ != rhs.index_; + } + }; + + /** \class value_iterator registry.h comet/registry.h + * Forward iterator over registry values. + */ + template + class value_iterator : public const_value_iterator + { + typedef value second_type; + typedef std::pair value_type_; + typedef const_value_iterator base; + value_type_ get_value() const + { + tstring name = *this->index_; + return std::make_pair(name, second_type(this->index_.key(), name) ); + } + + public: + typedef value_type_ value_type; + value_iterator(const impl::key_base &key, + DWORD num_values, + DWORD buf_size) + : base(key, num_values, buf_size) {} + + value_iterator() {} + + value_type operator*() const + { + return get_value(); + } + + value_iterator &operator++() + { + base::operator++(); + return *this; + } + + value_iterator operator++(int) + { + value_iterator retval(*this); + ++(*this); + return retval; + } + + impl::proxy operator->() + { + return get_value(); + } + + bool operator==(const value_iterator &rhs) const + { + return this->index_ == rhs.index_; + } + + bool operator!=(const value_iterator &rhs) const + { + return this->index_ != rhs.index_; + } + }; + + /** \struct collection registry.h comet/registry.h + * STL style container class for various types of registry based + * aggregations. + */ + template + struct collection + { + impl::key_base key_; + DWORD num_values_; + DWORD buf_size_; + + public: + collection(const impl::key_base &key, + DWORD num_values, + DWORD buf_size) + : key_(key), + num_values_(num_values), + buf_size_(buf_size) + { + } + + typedef iterator_ iterator; + typedef const_iterator_ const_iterator; + typedef typename iterator_::value_type value_type; + typedef size_t size_type; + + //! Number of elements in the collection + size_type size() const { return num_values_; } + + //! Exception safe swap + void swap(collection &rhs) + { + key_.swap(rhs.key_); + std::swap(num_values_, rhs.num_values_); + std::swap(buf_size_, rhs.buf_size_); + } + + //! Get the first iterator + iterator begin() + { + return iterator(key_, num_values_, buf_size_); + } + + //! Signature iterator marking the end of the sequence + iterator end() + { + return iterator(); + } + + const_iterator begin() const + { + return const_iterator(key_, num_values_, buf_size_); + } + + const_iterator end() const + { + return const_iterator(); + } + }; + + /** \class info registry.h comet/registry.h + * Structure returned by regkey.enumerate() + */ + template + class info + { + // Make key_ the first member - this + // ensures exception safe assignment. + impl::key_base key_; + + // Number of values + DWORD num_values_; + + // Maximum length of a value name + DWORD value_name_tchars_; + + // Number of sub keys + DWORD num_subkeys_; + + // Maximum length of a sub key name + DWORD subkey_name_tchars_; + + static void check_exception_(LONG errcode) + { + if(ERROR_SUCCESS != errcode) + error_policy::on_error(errcode); + } + + static DWORD bytes(DWORD tchars) + { + return (tchars + 1) * sizeof( tstring::value_type); + } + public: + info(const impl::key_base &key) + : key_(key) + { + check_exception_(::RegQueryInfoKey(key_.get(), + 0, // lpClass - reserved + 0, // lpcClass - reserved + 0, // lpReserved + &num_subkeys_, + &subkey_name_tchars_, + 0, // lpcMaxClassLen - I think this is also reserved + &num_values_, + &value_name_tchars_, + 0, // lpcMaxValueLen - not necessary for us + 0, // lpcbSecurityDescriptor + 0)); // lpftLastWriteTime + } + + //! Exception safe swap + void swap(info &rhs) + { + key_.swap(rhs.key_); + std::swap(num_subkeys_, rhs.num_subkeys_); + std::swap(subkey_name_tchars_, rhs.subkey_name_tchars_); + std::swap(value_name_tchars_, rhs.value_name_tchars_); + std::swap(num_values_, rhs.num_values_); + } + + //! Type returned by values() + typedef collection, const_value_iterator > values_type; + + //! Type returned by value_names() + typedef collection > value_names_type; + + //! Type returned by subkeys() + typedef collection > subkeys_type; + + //! Number of values under this key (excluding the default value) + size_t num_values() const + { + return num_values_; + } + + //! Number of subkeys under this key + size_t num_subkeys() const + { + return num_subkeys_; + } + + //! Length of the longest value_name under this key (in TCHARs) + size_t max_value_name() const + { + return value_name_tchars_; + } + + //! Length of the longest subkey name under this key (in TCHARs) + size_t max_subkey_name() const + { + return subkey_name_tchars_; + } + + //! Return the collection of values + /*! + The value_type of the collection is std::pair, regkey::mapped_type> + regkey::mapped_type has implicit conversions to unsigned int and std::basic_string however. + Example - copy all value-name/value pairs into a map + \code + typedef std::basic_string tstring; + regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); + map values_map; + copy(info.values().begin(), info.values().end(), inserter(values_map, values_map.end())); + \endcode + Example - copy all value-name/value pairs into a string map - exception will + be thrown if a non string value is encountered. + \code + typedef std::basic_string tstring; + regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); + map values_map; + copy(info.values().begin(), info.values().end(), inserter(values_map, values_map.end())); + \endcode + Example - copy all value-name/value pairs into a string/int map - exception will + be thrown if a non string value is encountered. + \code + typedef std::basic_string tstring; + regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); + map values_map; + copy(info.values().begin(), info.values().end(), inserter(values_map, values_map.end())); + \endcode + */ + values_type values() const + { + return values_type(key_, num_values_, bytes(value_name_tchars_)); + } + + //! Returns the collection of value names + /*! The value_type of the collection is std::basic_string. + Example - copy all value names of HKEY_LOCAL_MACHINE into a list + \code + regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); + vector value_names; + copy(info.value_names().begin(), info.value_names().end(), back_inserter(value_names)); + \endcode + */ + value_names_type value_names() const + { + return value_names_type(key_, num_values_, bytes(value_name_tchars_)); + } + + //! Returns the collection of subkey names + /*! The value_type of the collection is std::basic_string. + Example - copy all subkeys of HKEY_LOCAL_MACHINE into a list + \code + regkey::info_type info(regkey(HKEY_LOCAL_MACHINE).enumerate()); + vector subkey_names; + copy(info.subkeys().begin(), info.subkeys().end(), back_inserter(subkey_names)); + \endcode + */ + subkeys_type subkeys() const + { + return subkeys_type(key_, num_subkeys_, bytes(subkey_name_tchars_)); + } + }; + +#ifdef __BORLANDC__ + using impl::key_base; +#endif + + /** \class key registry.h comet/registry.h + * Registry key wrapper. + Because an HKEY cannot be duplicated in a platform independent way, + reference counting is used to enable copying of key objects. + + Methods with the _nothrow suffix do not throw exceptions other than + std::bad_alloc. + + Key instances can be used as output iterators for std::pair + assignments. The second argument of each pair must be assignable to + an instance of regkey::mapped_type. Currently, this means that the + second member of each pair must be convertable to either an int, + unsigned int, or std::basic_string. + Example: + \code + regkey the_key = regkey(HKEY_LOCAL_MACHINE).open("Software\\Comet"); + map names; + names["one"] = "one"; + names["two"] = "two"; + copy(names.begin(), names.end(), the_key); + map values; + values["three"] = 3; + values["four"] = 4; + copy(values.begin(), values.end(), the_key); + \endcode + */ + template + class key : private impl::key_base { + private: + static void check_exception_(LONG errcode) + { + if(ERROR_SUCCESS != errcode) + error_policy::on_error(errcode); + } + public: + key(HKEY key_handle = 0) : key_base(key_handle) {} + + //! Copy a key. + /*! In reality this + only increments a reference count. + We have to use reference counting + because ::DuplicateHandle does not + work for registry keys on windows 95/98. + */ + + key(const key &rhs) + : key_base(rhs) { + } + //! Copy a key. + /*! This is useful for attaching to keys from a name iterator. + */ + key( const impl::key_base &rhs) + : key_base(rhs) { + } + + void swap(key &rhs) + { + key_base::swap(rhs); + } + + //! Operator overload to allow you to put key instances in a conditional. + /*! This operator allows you to write code like this: + \code + if(subkey = key(HKEY_LOCAL_MACHINE).open_nothrow(_T("Software"))) + { + ... + }; + \endcode + const void * is used instead of the more obvious "bool" to disable + implicit conversions to int and the like. + Example: + \code + int success = key(HKEY_LOCAL_MACHINE).open_nothrow(_T("Software")); // Won't compile fortunately!! + \endcode + */ + operator const void *() const throw() + { + return is_valid() ? this : 0; + } + + + //! Open a subkey + key open(const tstring &subkey, + REGSAM sam_desired = KEY_ALL_ACCESS) const { + HKEY childkey_ = 0; + check_exception_( + key_base::open(subkey, + sam_desired, + &childkey_) + ); + return childkey_; + } + + //! Open a subkey, no exceptions + key open_nothrow(const tstring &subkey, + REGSAM sam_desired = KEY_ALL_ACCESS, + LONG *errcode = 0) const { + return key_base::open_nothrow(subkey, + sam_desired, errcode); + } + + //! Create a subkey + key create(const tstring &subkey, + DWORD options = REG_OPTION_NON_VOLATILE, + REGSAM sam_desired = KEY_ALL_ACCESS, + LPSECURITY_ATTRIBUTES security_attributes = 0, + LPDWORD disposition = 0) const { + HKEY childkey_ = 0; + check_exception_( + key_base::create(subkey, + options, + sam_desired, + security_attributes, + disposition, + &childkey_) + ); + return childkey_; + } + + //! Create a subkey - no exceptions + key create_nothrow(const tstring &subkey, + DWORD options = REG_OPTION_NON_VOLATILE, + REGSAM sam_desired = KEY_ALL_ACCESS, + LPSECURITY_ATTRIBUTES security_attributes = 0, + LPDWORD disposition = 0, + LONG *errcode = 0) const { + return key_base::create_nothrow(subkey, + options, + sam_desired, + security_attributes, + disposition, + errcode); + } + + //! Call RegFlushKey with the contained key + void flush() const { + check_exception_( + flush_nothrow() + ); + } + + //! Call RegFlushKey with the contained key - no exceptions + LONG flush_nothrow() const { + return key_base::flush_nothrow(); + } + + //! Delete the subkey + /*! Warning - the behaviour is different + between WinNT and Win95/98 if + sub keys are present. + See documentation for ::RegDeleteKey for + more information. + */ + void delete_subkey(const tstring &subkey) const { + check_exception_( + delete_subkey_nothrow(subkey.c_str()) + ); + } + + //! Delete the subkey + /*! Warning - the behaviour is different + between WinNT and Win95/98 if + sub keys are present. + See documentation for ::RegDeleteKey for + more information. + */ + LONG delete_subkey_nothrow(const tstring &subkey) const { + return key_base::delete_subkey_nothrow(subkey); + } + + //! delete a value + void delete_value(const tstring &value_name) const { + check_exception_( + delete_value_nothrow(value_name) + ); + } + + //! delete a value - no exceptions + LONG delete_value_nothrow(const tstring &value_name) const { + return key_base::delete_value_nothrow(value_name); + } + + //! Release reference to the key. + /*! Note that this will only call ::RegCloseKey + if this was the last reference to the outstanding key. + This method is implicitly called by the destructor. + */ + void close() { + key_base::close(); + } + + //! Get access to the raw key without releasing ownership + HKEY get() const { + return key_base::get(); + } + + typedef value mapped_type; + + // All of these methods are const because I figured + // it was more useful. It allows you to create + // temporary regkey objects for the purposes of + // updating. + + //! Get a reference to a value in the registry. + /*! The returned value can be used on both sides of an assignment. Example: + \code + key.get_value("Name") = "Paul"; + string name = key.get_value("Name"); + cout << key.get_value("Name").str() << endl; + \endcode + */ + mapped_type get_value(const tstring &value_name = _T("")) const + { + return mapped_type(*this, value_name); + } + + //! Subscript operator overload - syntactic sugar for get_value(). + /*! Example: + \code + key["Name"] = "Paul"; + string name = key["Name"]; + cout << key["Name"].str() << endl; + \endcode + */ + mapped_type operator[](const tstring &value_name) const + { + return get_value(value_name); + } + + //! Type returned by enumerate() + typedef info info_type; + //! Type returned by enumerate().subkeys() + typedef typename info_type::subkeys_type subkeys_type; + //! Type returned by enumerate().values() + typedef typename info_type::values_type values_type; + //! Type returned by enumerate().value_names() + typedef typename info_type::value_names_type value_names_type; + + //! Enumerate the subkeys, values or value_names, or obtain other information about the key. See also info. + /*! + The enumerate() method effectively calls RegQueryInfoKey, so you should + minimize the number of calls to enumerate() if efficiency is + a concern. e.g. + The following + \code + regkey::info_type info = key.enumerate(); + copy(info.values().begin(), info.values().end(), inserter(value_map, value_map.end())); + \endcode + is more efficient than + \code + copy(key.enumerate().values().begin(), key.enumerate().values().end(), inserter(value_map, value_map.end())); + \endcode + The second version will end up calling RegQueryInfoKey twice. + */ + info_type enumerate() const + { + return info_type(*this); + } + + //! Part of making key into an output iterator + key &operator*() + { + return *this; + } + + //! Assignment. This is designed to work with 'std::pair's - the value type of map classes + template + key &operator=(const T &val) + { + get_value(val.first) = val.second; + return *this; + } + + //! Exception safe assignment operator. + //! Can still throw std::bad_alloc due + //! to reference counting. + //template<> + key &operator=(const key &rhs) + { + key_base::operator=(rhs); + return *this; + } + + //! Noop increment + key &operator++() { return *this; } + //! Noop decrement + key &operator++(int) { return *this; } + }; // class key + } // namespace registry +} // namespace comet + +#endif // COMET_REGISTRY_H diff --git a/lib/local/CamCom/comet/regkey.h b/lib/local/CamCom/comet/regkey.h new file mode 100644 index 0000000..882dcd2 --- /dev/null +++ b/lib/local/CamCom/comet/regkey.h @@ -0,0 +1,65 @@ +/** \file + * Base regkey type and error-policy definition. + */ +/* + * Copyright 2000, 2001 Paul Hollingsworth + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_REGKEY_H +#define COMET_REGKEY_H + +#include + +#include +#include + +namespace comet +{ + /** \struct reg_error regkey.h comet/regkey.h + * Standard error policy, mainly for use by registry functions. + */ + struct reg_error + { + static void on_error(LONG errcode) + { + throw com_error(HRESULT_FROM_WIN32(errcode)); + } + + static void on_typemismatch() + { + throw com_error(HRESULT_FROM_WIN32(ERROR_INVALID_DATATYPE)); + } + }; + + /** Standard type for use when dealing with registry keys. + */ + typedef registry::key regkey; + +} + +namespace std { + + COMET_DECLARE_SWAP(comet::regkey) + COMET_DECLARE_SWAP(comet::regkey::info_type) + COMET_DECLARE_SWAP(comet::regkey::mapped_type) + COMET_DECLARE_SWAP(comet::regkey::values_type) + COMET_DECLARE_SWAP(comet::regkey::subkeys_type) + COMET_DECLARE_SWAP(comet::regkey::value_names_type) + COMET_DECLARE_SWAP(comet::regkey::values_type::iterator) + COMET_DECLARE_SWAP(comet::regkey::values_type::const_iterator) + COMET_DECLARE_SWAP(comet::regkey::subkeys_type::iterator) + COMET_DECLARE_SWAP(comet::regkey::value_names_type::iterator) +} + +#endif diff --git a/lib/local/CamCom/comet/safearray.h b/lib/local/CamCom/comet/safearray.h new file mode 100644 index 0000000..6851e9b --- /dev/null +++ b/lib/local/CamCom/comet/safearray.h @@ -0,0 +1,1498 @@ +/** \file + * SafeArray wrapper implementation. + */ +/* + * Copyright 2000, 2001, 2002 Sofus Mortensen, Michael Geddes + * Copyright 2012 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_SAFEARRAY_H +#define COMET_SAFEARRAY_H + +#include +#include +#include +#include +#include +//#include +#include +#include +#include + +#include +#include +#include + +#ifndef NDEBUG +#define COMET_ITERATOR_DEBUG +#endif + +namespace comet { + + + namespace impl { + + template + struct access_operator + { + // Has operator -> + template + struct base + { + T *operator->() + { + return &(static_cast(this)->operator*()); + } + }; + }; + // Doesn't have operator-> + template<> + struct access_operator + { + template + struct base + { + }; + }; + + template struct sa_traits; //Moved to common.h + + template class sa_iterator; + + template struct const_traits { + typedef T value_type; + typedef typename sa_traits::const_reference reference; + typedef const T* pointer; + }; + + template struct nonconst_traits { + typedef T value_type; + typedef typename sa_traits::reference reference; + typedef T* pointer; + }; + + + template<> struct sa_traits : public basic_sa_traits {}; + template<> struct sa_traits : public basic_sa_traits {}; + + template<> struct sa_traits : public basic_sa_traits {}; + template<> struct sa_traits : public basic_sa_traits {}; + + template<> struct sa_traits : public basic_sa_traits {}; + template<> struct sa_traits : public basic_sa_traits {}; + template<> struct sa_traits : public basic_sa_traits {}; + + template<> struct sa_traits : public basic_sa_traits {}; + template<> struct sa_traits : public basic_sa_traits {}; + + template<> struct sa_traits + { + typedef VARIANT raw; + + enum { vt = VT_VARIANT }; + enum { check_type = impl::stct_features_ok }; + enum { extras_type = stet_null }; + + typedef variant_t value_type; + typedef variant_t& reference; + typedef const variant_t& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } + + typedef sa_iterator > iterator; + typedef sa_iterator > const_iterator; + + static bool are_features_ok(unsigned short f) { return (f & FADF_VARIANT) != 0; } + static com_ptr get_record_info() { return 0; } + }; + + template<> struct sa_traits + { + enum { vt = VT_BSTR }; + enum { check_type = impl::stct_vt_ok }; + enum { extras_type = stet_null }; + + typedef BSTR raw; + typedef bstr_t value_type; + typedef bstr_t& reference; + typedef const bstr_t& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } + + typedef sa_iterator > iterator; + typedef sa_iterator > const_iterator; + + static bool are_features_ok(unsigned short f) { return (f & FADF_BSTR) != 0; } + static com_ptr get_record_info() { return 0; } + }; + + template<> struct sa_traits + { + enum { vt = VT_CY }; + enum { check_type = impl::stct_vt_ok }; + enum { extras_type = impl::stet_null }; + + typedef CY raw; + typedef currency_t value_type; + typedef currency_t& reference; + typedef const currency_t& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } + + typedef sa_iterator > iterator; + typedef sa_iterator > const_iterator; + + static bool are_features_ok(unsigned short) { return true; } + static com_ptr get_record_info() { return 0; } + }; + + template<> struct sa_traits + { + enum { vt = VT_DATE }; + enum { check_type = impl::stct_vt_ok }; + enum { extras_type = impl::stet_null }; + + typedef DATE raw; + typedef datetime_t value_type; + typedef datetime_t& reference; + typedef const datetime_t& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } + + typedef sa_iterator > iterator; + typedef sa_iterator > const_iterator; + + static bool are_features_ok(unsigned short) { return true; } + static com_ptr get_record_info() { return 0; } + }; + + template<> struct sa_traits + { + enum { vt = VT_BOOL }; + enum { check_type = impl::stct_vt_ok }; + enum { extras_type = impl::stet_null }; + + typedef VARIANT_BOOL raw; + typedef variant_bool_t value_type; + typedef variant_bool_t& reference; + typedef const variant_bool_t& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast(&x); } + + typedef sa_iterator > iterator; + typedef sa_iterator > const_iterator; + + static bool are_features_ok(unsigned short) { return true; } + static com_ptr get_record_info() { return 0; } + }; + + template<> struct sa_traits: sa_traits + { + }; + + template<> struct sa_traits< com_ptr< ::IUnknown> > + { + enum { vt = VT_UNKNOWN }; + enum { check_type = impl::stct_vt_ok }; + enum { extras_type = impl::stet_iid }; + + typedef IUnknown* raw; + typedef com_ptr< ::IUnknown> value_type; + typedef com_ptr< ::IUnknown>& reference; + typedef const com_ptr< ::IUnknown>& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast*>(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast*>(&x); } + + typedef sa_iterator, nonconst_traits > > iterator; + typedef sa_iterator, const_traits > > const_iterator; + + static bool are_features_ok(unsigned short f) { return (f & (FADF_UNKNOWN|FADF_DISPATCH)) != 0; } + static com_ptr get_record_info() { return 0; } + static const uuid_t& iid() { return uuid_t::create_const_reference(IID_IUnknown); } + }; + + template<> struct sa_traits< com_ptr< ::IDispatch> > + { + enum { vt = VT_DISPATCH }; + enum { check_type = impl::stct_vt_ok }; + enum { extras_type = impl::stet_iid }; + + typedef IDispatch* raw; + typedef com_ptr< ::IDispatch> value_type; + typedef com_ptr< ::IDispatch>& reference; + typedef const com_ptr< ::IDispatch>& const_reference; + + static reference create_reference(raw& x) { return *reinterpret_cast*>(&x); } + static const_reference create_const_reference(raw& x) { return *reinterpret_cast*>(&x); } + + typedef sa_iterator, nonconst_traits > > iterator; + typedef sa_iterator, const_traits > > const_iterator; + + static bool are_features_ok(unsigned short f) { return (f & FADF_DISPATCH) != 0; } + static com_ptr get_record_info() { return 0; } + + static const uuid_t& iid() { return uuid_t::create_const_reference(IID_IDispatch); } + }; + +#ifdef COMET_ITERATOR_DEBUG +#define COMET_SAIT_THIS ,this +#define COMET_SAIT_ITER(CONT_, IT_, TRAITS_) impl::sa_debug_iterator + + template + struct sa_debug_traits + { + typedef TRAITS traits; + typedef typename TRAITS::value_type value_type; + typedef typename TRAITS::raw raw; + typedef typename TRAITS::reference reference; + typedef typename TRAITS::iterator nonconst_iterator; + typedef typename TRAITS::iterator iterator; + typedef typename TRAITS::const_iterator const_iterator; + }; + template + struct sa_const_debug_traits + { + typedef TRAITS traits; + typedef typename TRAITS::value_type value_type; + typedef typename TRAITS::raw raw; + typedef typename TRAITS::const_reference reference; + typedef typename TRAITS::iterator nonconst_iterator; + typedef typename TRAITS::const_iterator iterator; + typedef typename TRAITS::const_iterator const_iterator; + }; + + template< typename CONT, typename TRAITS> + class sa_debug_iterator : public std::iterator, + public access_operator::result>::template base > + { + public: + const CONT *cont_; + typename TRAITS::iterator iter_; + + template + sa_debug_iterator(IT ptr, const CONT *cont) : iter_(ptr), cont_(cont) {} + + sa_debug_iterator( const sa_debug_iterator > &nc_it ) : iter_(nc_it.iter_), cont_(nc_it.cont_) {} + + sa_debug_iterator(): cont_(NULL) {} + + typename TRAITS::iterator get_raw()const { return iter_; } + typename TRAITS::const_iterator get_const_raw()const { return iter_; } + + + sa_debug_iterator operator++(int) { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( get_const_raw() < cont_->end().get_raw() ); + sa_debug_iterator t(*this); + ++iter_; + return t; + } + + sa_debug_iterator& operator++() { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( get_const_raw() < cont_->end().get_raw() ); + ++iter_; + return *this; + } + + sa_debug_iterator operator--(int) { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( get_const_raw() > cont_->begin().get_raw() ); + sa_debug_iterator t(*this); + --iter_; + return t; + } + + sa_debug_iterator& operator--() { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( get_const_raw() > cont_->begin().get_raw() ); + --iter_; + return *this; + } + + typename TRAITS::reference operator[](size_t n) { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( (get_const_raw()+ n) >= cont_->begin().get_raw()); + COMET_ASSERT( (get_const_raw()+n) < cont_->end().get_raw() ); + return iter_[n]; + } + + sa_debug_iterator& operator+=(size_t n) { + COMET_ASSERT(cont_!=NULL); + COMET_ASSERT((get_const_raw()+ n) >= cont_->begin().get_raw()); + COMET_ASSERT((get_const_raw()+n) <= cont_->end().get_raw() ); + iter_ += n; + return *this; + } + + sa_debug_iterator& operator-=(size_t n) { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( (get_const_raw()- n) >= cont_->begin().get_raw()); + COMET_ASSERT( (get_const_raw()- n) <= cont_->end().get_raw() ); + iter_ -= n; + return *this; + } + + ptrdiff_t operator-(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ - it.iter_; + } + + bool operator<(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ < it.iter_; + } + + bool operator>(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ > it.iter_; + } + + bool operator<=(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ <= it.iter_; + } + + bool operator>=(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ >= it.iter_; + } + + bool operator==(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ == it.iter_; + } + + bool operator!=(const sa_debug_iterator& it) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( cont_ == it.cont_); + return iter_ != it.iter_; + } + + sa_debug_iterator operator+(size_t n) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( (get_const_raw() + n) >= cont_->begin().get_raw()); + COMET_ASSERT( (get_const_raw() + n) <= cont_->end().get_raw() ); + return sa_debug_iterator( iter_+n, cont_); + } + + sa_debug_iterator operator-(size_t n) const { + COMET_ASSERT( cont_!=NULL); + COMET_ASSERT( (get_const_raw() - n) >= cont_->begin().get_raw()); + COMET_ASSERT( (get_const_raw() - n) <= cont_->end().get_raw() ); + return sa_debug_iterator( iter_-n, cont_); + } + + typename TRAITS::reference operator*() { + COMET_ASSERT( cont_ != NULL); + COMET_ASSERT( (get_const_raw()) >= cont_->begin().get_raw()); + COMET_ASSERT( (get_const_raw()) < cont_->end().get_raw() ); + return *iter_; + } + }; + + +#else // COMET_ITERATOR_DEBUG +#define COMET_IT_DBG__(x) +#define COMET_SAIT_THIS +#define COMET_SAIT_ITER(CONT_, IT_, TRAITS_) IT_ +#endif // COMET_ITERATOR_DEBUG + + + /** \internal + */ + template class sa_iterator : public std::iterator, + public access_operator::result>::template base< T, sa_iterator > + + { + typedef sa_iterator > nonconst_self; + public: + typedef sa_traits traits; + typename traits::raw* ptr_; + + typedef typename TR::pointer pointer; + typedef typename TR::reference reference; + typedef ptrdiff_t difference_type; + + sa_iterator(const nonconst_self& it ) + : ptr_(it.get_raw()) + {} + + explicit sa_iterator(typename traits::raw* ptr) : ptr_(ptr) {} + + sa_iterator() {} + + typename traits::raw* get_raw() const + { + return ptr_; + } + + sa_iterator operator++(int) { + sa_iterator t(*this); + ++ptr_; + return t; + } + + sa_iterator& operator++() { + ++ptr_; + return *this; + } + + sa_iterator operator--(int) { + sa_iterator t(*this); + --ptr_; + return t; + } + + sa_iterator& operator--() { + --ptr_; + return *this; + } + + reference operator[](size_t n) { + return traits::create_reference(ptr_[n]); + } + + sa_iterator& operator+=(size_t n) { + ptr_ += n; + return *this; + } + + sa_iterator& operator-=(size_t n) { + ptr_ -= n; + return *this; + } + + difference_type operator-(const sa_iterator& it) const { + return ptr_ - it.ptr_; + } + + bool operator<(const sa_iterator& it) const { + return ptr_ < it.ptr_; + } + + bool operator>(const sa_iterator& it) const { + return ptr_ > it.ptr_; + } + + bool operator<=(const sa_iterator& it) const { + return ptr_ <= it.ptr_; + } + + bool operator>=(const sa_iterator& it) const { + return ptr_ >= it.ptr_; + } + + bool operator==(const sa_iterator& it) const { + return ptr_ == it.ptr_; + } + + bool operator!=(const sa_iterator& it) const { + return ptr_ != it.ptr_; + } + + sa_iterator operator+(size_t n) const { + return sa_iterator(ptr_ + n); + } + + sa_iterator operator-(size_t n) const { + return sa_iterator(ptr_ - n); + } + + template friend sa_iterator operator+(size_t n, const sa_iterator& it); + // friend sa_iterator operator+(size_t n, const sa_iterator&); + + reference operator*() { return traits::create_reference(*ptr_); } + }; + + } + + namespace impl + { + template + class safearray_auto_ref_t; + + template + class safearray_auto_const_ref_t; + }; + + /*! \addtogroup COMType + */ + //@{ + /**STL container compatible wrapper for a safearray. + * Provides forwards and reverse iterators. + */ +#ifdef COMET_PARTIAL_SPECIALISATION + + template + struct get_extras + { + static void *extras(){ return 0; } + }; + template + struct get_extras + { + static void *extras(){ return impl::sa_traits::get_record_info().in(); } + }; + template + struct get_extras + { + static void *extras(){ return impl::sa_traits::iid().in_ptr(); } + }; + + template + struct traits_sanity_check + { static inline void check( const SAFEARRAY *psa) { } }; + template + struct traits_sanity_check + { + static void check(SAFEARRAY *psa) { + if ((psa->fFeatures & FADF_HAVEVARTYPE)!=0) + { + VARTYPE vt; + ::SafeArrayGetVartype(psa, &vt) | raise_exception ; + if(vt != impl::sa_traits::vt) + throw std::runtime_error("safearray_t: VarType mismatch"); + } + } + }; + template + struct traits_sanity_check { + static void check(SAFEARRAY *psa) + { + uuid_t iid; + ::SafeArrayGetIID(psa, &iid) | raise_exception; + if( iid != impl::sa_traits::iid() ) + throw std::runtime_error("safearray_t: IID mismatch"); + } + }; +#endif + template class safearray_t + { + public: + typedef impl::sa_traits traits; + typedef size_t size_type; ///< type for sizes (bounds etc). + typedef long index_type; ///< Type for indexing into the array + typedef ptrdiff_t difference_type; ///< Type for pointer differences + typedef typename traits::value_type value_type; ///< The type of the contained value . + typedef typename traits::reference reference; ///< Safearray reference type + typedef typename traits::const_reference const_reference; ///< Safearray const reference type + + typedef typename COMET_SAIT_ITER( safearray_t, traits::iterator, impl::sa_debug_traits ) + iterator; ///< Iterator type + typedef typename COMET_SAIT_ITER( safearray_t, traits::const_iterator, impl::sa_const_debug_traits) + const_iterator; ///< Const iterator type + +#if defined(COMET_STD_ITERATOR) + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#else + // workaround for broken reverse_iterator implementations due to no partial specialisation + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; +#endif + + //! \name Iterator functions + //@{ + iterator begin() { + return iterator(get_array() COMET_SAIT_THIS ); + } + + iterator end() { + return iterator(get_array() + size() COMET_SAIT_THIS ); + } + + const_iterator begin() const { + return const_iterator(get_array() COMET_SAIT_THIS) ; + } + + const_iterator end() const { + return const_iterator(get_array() + size() COMET_SAIT_THIS ); + } + + reverse_iterator rbegin() { + return reverse_iterator(end()); + } + + reverse_iterator rend() { + return reverse_iterator(begin()); + } + + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + //@} + + /// The number of elements in the array. + size_type size() const { + return psa_ ? psa_->rgsabound[0].cElements : 0; + } + + /// Returns whether the array is empty. + bool is_empty() const { + return size() == 0; + } + + /// Returns element n relative to lower_bound() + reference operator[](index_type n) { + COMET_ASSERT( (size_type)(n - lower_bound()) < size() ); + return traits::create_reference(get_element(n)); + } + + /// Returns const element n relative to lower_bound() + const_reference operator[](index_type n) const { + COMET_ASSERT( (size_type)(n - lower_bound()) < size() ); + return traits::create_reference(get_element(n)); + } + + //! Returns element n relative to lower_bound(). + /*! \throw out_of_range The index is out of range. + */ + reference at(index_type n) { + range_check(n); + return traits::create_reference(get_element(n)); + } + + //! Returns const element n relative to lower_bound(). + /*! \throw out_of_range The index is out of range. + */ + const_reference at(index_type n) const { + range_check(n); + return traits::create_reference(get_element(n)); + } + + //! The front element. + reference front() { return *begin(); } + //! The front element - const. + const_reference front() const { return *begin(); } + //! The back element. + reference back() { return *(end() - 1); } + //! The back element - const. + const_reference back() const { return *(end() - 1); } + + private: +#ifndef COMET_PARTIAL_SPECIALISATION + template + struct get_extras + { + static void *extras(){ return 0; } + }; + template<> + struct get_extras + { + static void *extras(){ return impl::sa_traits::get_record_info().in(); } + }; + template<> + struct get_extras + { + static void *extras(){ return impl::sa_traits::iid().in_ptr(); } + }; +#endif + public: + + /// \name Constructors + //@{ + /// Construct a null array. + safearray_t() : psa_(0) + {} + + /*! Attach to (and take ownership of) an existing array. + \code + SAFEARRAY *psa = SafeArrayCreateVectorEx(VT_BSTR, 0, 5, NULL); + safearray_t sa(auto_attach(psa)); + \endcode + */ + safearray_t(const impl::auto_attach_t& psa) : psa_(psa.get()) + { + sanity_check(psa_); + + if (psa_) try { + ::SafeArrayLock(psa_) | raise_exception; + } catch (...) + { + ::SafeArrayDestroy(psa_); + throw; + } + } + + /// Copy from a variant, making converting if necessary. + safearray_t(const variant_t& var) + { + if(var.get_vt() == (VT_ARRAY|traits::vt)) + { + SafeArrayCopy(var.in().parray, &psa_) | raise_exception; + } else { + variant_t v2(var, VT_ARRAY|traits::vt); + SafeArrayCopy(v2.in().parray, &psa_) | raise_exception; + } + + if (psa_) try { + ::SafeArrayLock(psa_) | raise_exception; + } catch (...) + { + ::SafeArrayDestroy(psa_); + throw; + } + + } + + /// Copy construction + safearray_t(const safearray_t& sa) + { + ::SafeArrayCopy(sa.psa_, &psa_) | raise_exception; + + if (psa_) try { + ::SafeArrayLock(psa_) | raise_exception; + } catch (...) + { + ::SafeArrayDestroy(psa_); + throw; + } + } + + /// Construct a new safearray vector. + /*! \param sz Size of the vector. + * \param lb Lower bound for the vector. + */ + explicit safearray_t(size_type sz, index_type lb) + { + if (sz > (std::numeric_limits::max)() || + sz < (std::numeric_limits::min)()) + throw std::overflow_error( + "Cannot create array of requested size"); + +#ifndef COMET_PARTIAL_SPECIALISATION + psa_ = ::SafeArrayCreateVectorEx( + traits::vt, lb, static_cast(sz), + get_extras::extras()); +#else + psa_ = ::SafeArrayCreateVectorEx( + traits::vt, lb, static_cast(sz), + get_extras::extras()); +#endif + if (psa_ == 0) throw std::bad_alloc(); + + try { + ::SafeArrayLock(psa_) | raise_exception; + } catch (...) + { + ::SafeArrayDestroy(psa_); + throw; + } + } + + /// Construct a new safearray vector. + /*! \param sz Size of the vector. + * \param lb Lower bound for the vector. + * \param val Initial value for the elements. + */ + safearray_t(size_type sz, index_type lb, const T& val) + { +#ifndef COMET_PARTIAL_SPECIALISATION + psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz, get_extras::extras()); +#else + psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz, get_extras::extras()); +#endif // COMET_PARTIAL_SPECIALISATION + if (psa_ == 0) throw std::bad_alloc(); + + try { + ::SafeArrayLock(psa_) | raise_exception; + + for (iterator it = begin(); it != end(); ++it) *it = val; + } catch (...) { + ::SafeArrayUnlock(psa_); + ::SafeArrayDestroy(psa_); + throw; + } + } + + /// Construct a safearray from an iterator, specifying the lower bound. + /** \param first First element of the container. + * \param last Beyond the last element of the container. + * \param lb Lower bound of the new safearray_t. + */ + template safearray_t(InputIterator first, InputIterator last, index_type lb) + { + initialise_aux(first, last, lb, type_traits::int_holder< type_traits::is_integer::result >()); + } + //@} + +private: + template void initialise_aux(InputIterator first, InputIterator last, index_type lb, type_traits::int_holder) + { + size_type sz = std::distance(first, last); +#ifndef COMET_PARTIAL_SPECIALISATION + psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); +#else + psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); +#endif //COMET_PARTIAL_SPECIALISATION + + if (psa_ == 0) throw std::bad_alloc(); + + try { + ::SafeArrayLock(psa_) | raise_exception; + + for (iterator it = begin(); first != last; ++first, ++it) { + *it = *first; + } + } catch (...) { + ::SafeArrayUnlock(psa_); + ::SafeArrayDestroy(psa_); + throw; + } + } + + template void initialise_aux(Integer sz, Integer lb, index_type dummy, type_traits::int_holder) + { +#ifndef COMET_PARTIAL_SPECIALISATION + psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); +#else + psa_ = ::SafeArrayCreateVectorEx(traits::vt, lb, sz,get_extras::extras()); +#endif // COMET_PARTIAL_SPECIALISATION + + if (psa_ == 0) throw std::bad_alloc(); + + ::SafeArrayLock(psa_) | raise_exception; + } + +public: + /// Resize the array, preserving lower_bound + /** If the array is null, uses 0. + */ + void resize(size_type n) + { + resize_bound(n, (psa_==NULL)?0:lower_bound()); + } + /// Resize the array, specifying the lower_bound + // This has been renamed to prevent ambiguous functions when T = size_type + void resize_bound(size_type n, size_type lb) + { + safearray_t t(n, lb); + + iterator i1 = begin(); + iterator i2 = t.begin(); + + for (;i1 != end() && i2 != t.end(); ++i1, ++i2) { + std::swap(*i1, *i2); + } + + swap(t); + } + + /** Resize the array, preserving lower_bound and specifying an initial + * value for uninitialised values. + */ + void resize( size_type n, const T& val) { + resize_bound(n,(psa_==NULL)?0:lower_bound(),val); + } + /** Resize the array, specifying lower_bound and specifying an initial + * value for uninitialised values. + */ + void resize_bound(size_type n, size_type lb, const T& val) { + safearray_t t(n, lb); + + iterator i1 = begin(); + iterator i2 = t.begin(); + + for (;i1 != end() && i2 != t.end(); ++i1, ++i2) { + std::swap(*i1, *i2); + } + + for (;i2 != t.end(); ++i2) *i2 = val; + + swap(t); + } + + /// Assign the safearray to be \p v elements of \p val. + void assign(size_type n, const T& val) { + safearray_t t(n, lower_bound(), val); + swap(t); + } + + /// Assign the safearray from a f \p first and \p last iterators. + template void assign(InputIterator first, InputIterator last) { + assign_aux(first, last, type_traits::int_holder< type_traits::is_integer::result >()); + } + + /** Return the IRecordInfo struct for the array for VT_RECORD. + */ + com_ptr get_record_info() + { + com_ptr rec_info; + ::SafeArrayGetRecordInfo(psa_, rec_info.out()) | raise_exception; + return rec_info; + } + /** Get the Variant Type of the members of the array. + */ + VARTYPE get_vt() + { + // Something appears broken in SafeArrayGetVartype - returning VT_UNKNOWN when it has FADF_DISPATCH set. + if (psa_->fFeatures & FADF_DISPATCH) return VT_DISPATCH; + if (psa_->fFeatures & FADF_UNKNOWN) return VT_UNKNOWN; + VARTYPE retval; + ::SafeArrayGetVartype(psa_, &retval) | raise_exception; + return retval; + } + + /** Return interface-id of the members of the array. + */ + uuid_t get_iid() + { + uuid_t iid; + ::SafeArrayGetIID(psa_, &iid) | raise_exception; + return iid; + } + +private: + template void assign_aux(InputIterator first, InputIterator last, type_traits::int_holder) + { + safearray_t t( first, last, lower_bound() ); + swap(t); + } + + template void assign_aux(Integer sz, const T& val, type_traits::int_holder) + { + safearray_t t(sz, lower_bound(), val); + swap(t); + } +public: + + /// Insert \p n elements of \p val at position \p pos. + void insert(iterator pos, size_type n, const T& val) { + safearray_t t(n+size(), lower_bound()); + iterator i1 = t.begin(); + iterator i2 = begin(); + + for (;i2 != pos; ++i1, ++i2) *i1 = *i2; + for (;n>0;--n, ++i1) *i1 = val; + for (;i2 != end(); ++i1, ++i2) *i1 = *i2; + + swap(t); + } + + + /// Insert elements coppied from iterator \p first to \p last at position pos. + template void insert(iterator pos, InputIterator first, InputIterator last) { + insert_aux(pos, first, last, type_traits::int_holder::result >()); + } + + /// Push an element to the back of the list (ensure lower-bound); + void push_back( const T& val, index_type lb ) + { + safearray_t t(size()+1, lb); + + iterator i1 = begin(), i2 = t.begin(); + + for (;i1 != end() ; ++i1, ++i2) + std::swap(*i1, *i2); + + *i2 = val; + + swap(t); + } + + /// Push an element to the back of the list. + inline void push_back( const T& val) + { + push_back(val, lower_bound()); + } + + /// Pop an element from the back of the list. + inline void pop_back() + { + size_type lastone = size(); + if (lastone > 0) + erase(begin()+(lastone-1)); + } + + /// Push an element to the front of the list (ensure lower-bound). + void push_front( const T &val, index_type lb) + { + safearray_t t(size()+1, lb); + + iterator i1 = begin(), i2 = t.begin(); + + *i2 = val; + + for (++i2; i1 != end(); ++i1, ++i2) + std::swap(*i1, *i2); + + swap(t); + } + /// Push an element to the front of the list. + inline void push_front( const T &val) + { + push_front(val, lower_bound()); + } + /// Pop an element from the front of the list. + inline void pop_front() + { + erase(begin()); + } + + /// Erase a specified item. + /** \param it Item to erase + * \return Item beyond erased item. + */ + iterator erase(iterator it) + { + if (it == end()) + return end(); + size_type where= it-begin(); + + safearray_t t(size()-1, lower_bound()); + iterator ret = t.end(); + iterator i1 = begin(), i2 = t.begin(); + // Copy up to iterator + for (; i1 != end() && i1 != it; ++i1, ++i2) + std::swap(*i1,*i2); + ++i1;// Skip this one + for (; i1 != end(); ++i1, ++i2) + std::swap(*i1,*i2); + + swap(t); + return begin()+where; + } + + /// Erase a range of items. + /** \param first Item to erase from + * \param second Item after range to be erased. + * \return Item beyond erased range. + */ + iterator erase(iterator first, iterator second) + { + safearray_t t(size()-(second-first), lower_bound()); + size_type where= first-begin(); + iterator i1 = begin(), i2 = t.begin(); + // Copy up to first. + for (; i1 != end() && i1 != first; ++i1, ++i2) + std::swap(*i1,*i2); + // Skip up to second + for( ; i1 != second; ++i1) + ; + // skip to end. + for (; i1 != end(); ++i1, ++i2) + std::swap(*i1,*i2); + + swap(t); + return begin()+where; + } + + + private: + template void insert_aux(iterator pos, InputIterator first, InputIterator last, type_traits::int_holder) { + size_type n = std::distance(first, last); + + safearray_t t(n+size(), lower_bound()); + iterator i1 = t.begin(); + iterator i2 = begin(); + + for (;i2 != pos; ++i1, ++i2) *i1 = *i2; + for (;first != last; ++i1, ++first) *i1 = *first; + for (;i2 != end(); ++i1, ++i2) *i1 = *i2; + + swap(t); + } + + template void insert_aux(iterator pos, Integer n, const T& val, type_traits::int_holder) { + safearray_t t(n+size(), lower_bound()); + iterator i1 = t.begin(); + iterator i2 = begin(); + + for (;i2 != pos; ++i1, ++i2) *i1 = *i2; + for (;n>0;--n, ++i1) *i1 = val; + for (;i2 != end(); ++i1, ++i2) *i1 = *i2; + + swap(t); + } + public: + + //! \name Assignment Operators + //@{ + safearray_t& operator=(const safearray_t& sa) + { + safearray_t t(sa); + swap(t); + return *this; + } + + safearray_t& operator=(const variant_t& v) + { + safearray_t t(v); + swap(t); + return *this; + } + + safearray_t& operator=(const impl::auto_attach_t& sa) + { + safearray_t t(sa); + swap(t); + return *this; + } + //@} + + private: + void destroy() { + if (psa_ != 0) { + COMET_ASSERT(psa_->cLocks == 1); + ::SafeArrayUnlock(psa_); + ::SafeArrayDestroy(psa_); + psa_ = 0; + } + } + + public: + + ~safearray_t() { + destroy(); + } + + /// Unlock and detach a raw SAFEARRAY. + SAFEARRAY* detach() { + if (psa_) { + ::SafeArrayUnlock(psa_); + } + SAFEARRAY* rv = psa_; + psa_ = 0; + return rv; + } + + /*! Detach the safearray to the variant \p var. + The safearray becomes invalid after this point. + \code + safe_array_t ints(2,0); + variant_t var; + ints.detach_to(var); + \endcode + */ + void detach_to( variant_t &var) + { + COMET_ASSERT(psa_->cLocks == 1); + if (psa_) ::SafeArrayUnlock(psa_) | raise_exception; + var = auto_attach( psa_ ); + psa_= 0; + } + + /*! Detach a safearray from the variant \p var. + An attempt is made to cast the type of the variant before attaching. + */ + void detach_from( variant_t &var) + { + if(var.get_vt()!=(VT_ARRAY|traits::vt)) + { + var.change_type(VT_ARRAY|traits::vt); + } + safearray_t t(auto_attach(var.detach().parray)); + swap(t); + } + + /// The lower bound of the array. + /** \sa get_at + */ + index_type lower_bound() const { + return psa_ ? psa_->rgsabound[0].lLbound : 0; + } + + /// Change the lower_bound of the array. + void lower_bound(index_type lb) { + psa_->rgsabound[0].lLbound = lb; + } + + private: + class sa_auto_lock_t + { + SAFEARRAY** ppsa_; + + // These are not available + sa_auto_lock_t(); + sa_auto_lock_t(const sa_auto_lock_t&); + sa_auto_lock_t& operator=(const sa_auto_lock_t&); + public: + operator SAFEARRAY**() throw() { return ppsa_; } + + sa_auto_lock_t(SAFEARRAY** ppsa) : ppsa_(ppsa) {} + + ~sa_auto_lock_t() + { + if (*ppsa_) { + HRESULT hr = ::SafeArrayLock(*ppsa_); + COMET_ASSERT( SUCCEEDED(hr) ); + hr; + } + } + }; + + public: + //! \name Access converters + //@{ + SAFEARRAY* in() const throw() { + return const_cast(psa_); + } + SAFEARRAY** in_ptr() const throw() { + return const_cast(&psa_); + } + sa_auto_lock_t inout() throw() { + if (psa_) { + ::SafeArrayUnlock(psa_); + } + return &psa_; + } + sa_auto_lock_t out() throw() { + destroy(); + return &psa_; + } + //@} + /*! Detach a raw SAFEARRAY pointer from a safearray_t. + */ + static SAFEARRAY* detach(safearray_t& sa) + { + return sa.detach(); + } + + /** Create a reference to a safearray from a raw SAFEARRAY pointer. + * Mainly used by the implementation wrappers. + */ + static const impl::safearray_auto_const_ref_t create_const_reference(SAFEARRAY* const & sa); + static impl::safearray_auto_ref_t create_reference(SAFEARRAY* & sa); + + /** Create a reference to a safearray from a variant. + \code + function( const variant_t &var) + { + const safe_array &stringarray = safe_array::create_reference( var ); + } + \endcode + */ + static const impl::safearray_auto_const_ref_t create_const_reference(const variant_t &var); + /** Create c const reference to a safearray from a variant. + */ + static impl::safearray_auto_ref_t create_reference(variant_t &var); + + void swap(safearray_t& sa) throw() + { + std::swap(psa_, sa.psa_); + } + + private: + + void range_check(index_type n) const { + size_type m = (size_type)(n - lower_bound()); + if (/*m < 0 || */ m >= size()) throw std::out_of_range("safearray_t"); + } + + typename traits::raw* get_array() const { + if (psa_) { + COMET_ASSERT(psa_->cLocks != 0); + return static_cast(psa_->pvData); + } + return NULL; + } + + typename traits::raw& get_element(size_type n) const { + return get_array()[n - lower_bound()]; + } + + protected: + SAFEARRAY* psa_; + +#ifndef COMET_PARTIAL_SPECIALISATION + + template< enum impl::sa_traits_check_type STCT > + struct traits_sanity_check + { static inline void check( const SAFEARRAY *psa) { } }; + template<> + struct traits_sanity_check + { + static void check(SAFEARRAY *psa) { + if ((psa->fFeatures & FADF_HAVEVARTYPE)!=0) + { + VARTYPE vt; + ::SafeArrayGetVartype(psa, &vt) | raise_exception ; + if(vt != impl::sa_traits::vt) + throw std::runtime_error("safearray_t: VarType mismatch"); + } + } + }; + template<> + struct traits_sanity_check { + static void check(SAFEARRAY *psa) + { + uuid_t iid; + ::SafeArrayGetIID(psa, &iid) | raise_exception; + if( iid != impl::sa_traits::iid() ) + throw std::runtime_error("safearray_t: IID mismatch"); + } + }; +#endif + /// Make sure the passed in safearray agrees with the type of the safearray_t + static void sanity_check(SAFEARRAY* psa) { + if (psa == 0) return; + if (psa->cDims != 1) throw std::runtime_error("safearray_t: Invalid dimension"); + if (!traits::are_features_ok( psa->fFeatures )) throw std::runtime_error("safearray_t: fFeatures is invalid"); +#ifndef COMET_PARTIAL_SPECIALISATION + traits_sanity_check< impl::sa_traits_check_type(traits::check_type)>::check(psa); +#else + traits_sanity_check::check(psa); +#endif + if (sizeof(T) != psa->cbElements) throw std::runtime_error("safearray_t: cbElements mismatch"); + } + + }; + //@} + + namespace impl { + + template< typename T> + class safearray_auto_ref_t : public safearray_t + { + // Don't allow any of these. + safearray_auto_ref_t(); + safearray_auto_ref_t &operator=(const safearray_auto_ref_t &); + safearray_auto_ref_t &operator=(const safearray_t &); + safearray_t& operator=(const impl::auto_attach_t &); + void swap(safearray_t& sa); + + // Remember where we got the original for a non-const reference + SAFEARRAY *& psa_; + + public: + safearray_auto_ref_t(const safearray_auto_ref_t &sa) + : safearray_t(auto_attach(sa.psa_)), psa_(sa.psa_) + { + COMET_STATIC_ASSERT(false); + } + + explicit safearray_auto_ref_t(SAFEARRAY *& psa) + : safearray_t(auto_attach(psa)), psa_(psa) + { + } + + ~safearray_auto_ref_t() + { + psa_ = this->detach(); + } + }; + + template< typename T> + class safearray_auto_const_ref_t : public safearray_t + { + // Don't allow any of these. + safearray_auto_const_ref_t(); + safearray_auto_const_ref_t &operator=(const safearray_auto_const_ref_t &); + safearray_auto_const_ref_t &operator=(const safearray_t &); + safearray_t& operator=(const impl::auto_attach_t &); + void swap(safearray_t& sa); + + public: + safearray_auto_const_ref_t(const safearray_auto_const_ref_t &sa) + : safearray_t(auto_attach(sa.psa_)) + { + COMET_STATIC_ASSERT(false); + } + + explicit safearray_auto_const_ref_t(SAFEARRAY *psa) + : safearray_t(auto_attach(psa)) + { + } + + ~safearray_auto_const_ref_t() + { + this->detach(); + } + }; + + } + + template + const impl::safearray_auto_const_ref_t safearray_t::create_const_reference(SAFEARRAY* const & sa) + { + return impl::safearray_auto_const_ref_t(sa); + } + template + impl::safearray_auto_ref_t safearray_t::create_reference(SAFEARRAY* & sa) + { + return impl::safearray_auto_ref_t(sa); + } + template + const impl::safearray_auto_const_ref_t safearray_t::create_const_reference(const variant_t &var) + { + if(var.get_vt()!=(VT_ARRAY|traits::vt)) + throw std::exception("unexepected array type"); + + SAFEARRAY *sa = var.get().parray; + return impl::safearray_auto_const_ref_t(sa); + } + template + impl::safearray_auto_ref_t safearray_t::create_reference(variant_t &var) + { + if(var.get_vt()!=(VT_ARRAY|traits::vt)) + throw std::exception("unexepected array type"); + + SAFEARRAY *sa = var.get().parray; + return impl::safearray_auto_ref_t(sa); + } + + + + template inline comet::impl::sa_iterator operator+(size_t n, const comet::impl::sa_iterator& it) { + return it + n; + } + +} // namespace comet + +namespace { + COMET_STATIC_ASSERT( sizeof(SAFEARRAY*) == sizeof(comet::safearray_t) ); +} + +namespace std { + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW; + template<> inline void swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW; +} + +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t& x, comet::safearray_t& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } +template<> inline void std::swap( comet::safearray_t >& x, comet::safearray_t >& y) COMET_STD_SWAP_NOTHROW { x.swap(y); } + +#endif diff --git a/lib/local/CamCom/comet/scope_guard.h b/lib/local/CamCom/comet/scope_guard.h new file mode 100644 index 0000000..cdb1387 --- /dev/null +++ b/lib/local/CamCom/comet/scope_guard.h @@ -0,0 +1,363 @@ +/** \file + * Scope-guards can be used to proivde transactional integrity. + * + * scope_guard and friends are adopted from source by Andrei Alexandrescu and Petru Marginean. + * + * See the
article. + */ +/* + * Copyright 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + + +#ifndef COMET_SCOPE_GUARD_H +#define COMET_SCOPE_GUARD_H + +#include + +namespace comet { + + /*! \addtogroup Misc + */ + //@{ + namespace impl { + + /** Base class providing dismission and safe execution primitives. + */ + class scope_guard_impl_base + { + scope_guard_impl_base& operator =(const scope_guard_impl_base&); + protected: + ~scope_guard_impl_base() + { + } + scope_guard_impl_base(const scope_guard_impl_base& other) throw() + : dismissed_(other.dismissed_) + { + other.dismiss(); + } + template static void safe_execute(J& j) throw() + { + if (!j.dismissed_) + try + { + j.execute(); + } + catch(...) + { + } + } + + mutable bool dismissed_; + public: + scope_guard_impl_base() throw() : dismissed_(false) + { + } + void dismiss() const throw() + { + dismissed_ = true; + } + }; + + /** 0 parameter scope guard. + * \internal + */ + template class scope_guard_impl_0 : public scope_guard_impl_base + { + public: + ~scope_guard_impl_0() throw() + { + safe_execute(*this); + } + + void execute() + { + fun_(); + } + + scope_guard_impl_0(F fun) : fun_(fun) + {} + + private: + F fun_; + }; + + /** 1 parameter scope guard. + * \internal + */ + template class scope_guard_impl_1 : public scope_guard_impl_base + { + public: + ~scope_guard_impl_1() throw() + { + safe_execute(*this); + } + + void execute() + { + fun_(p1_); + } + + scope_guard_impl_1(F fun, P1 p1) : fun_(fun), p1_(p1) + {} + + private: + F fun_; + const P1 p1_; + }; + + /** 2 parameter scope guard. + * \internal + */ + template class scope_guard_impl_2: public scope_guard_impl_base + { + public: + ~scope_guard_impl_2() throw() + { + safe_execute(*this); + } + + void execute() + { + fun_(p1_, p2_); + } + + scope_guard_impl_2(F fun, P1 p1, P2 p2) : fun_(fun), p1_(p1), p2_(p2) + {} + + private: + F fun_; + const P1 p1_; + const P2 p2_; + }; + + /** 3 parameter scope guard. + * \internal + */ + template class scope_guard_impl_3 : public scope_guard_impl_base + { + public: + ~scope_guard_impl_3() throw() + { + safe_execute(*this); + } + + void execute() + { + fun_(p1_, p2_, p3_); + } + + scope_guard_impl_3(F fun, P1 p1, P2 p2, P3 p3) : fun_(fun), p1_(p1), p2_(p2), p3_(p3) + {} + + private: + F fun_; + const P1 p1_; + const P2 p2_; + const P3 p3_; + }; + + /** 0 parameter object scope guard. + * \internal + */ + template class obj_scope_guard_impl_0 : public scope_guard_impl_base + { + public: + ~obj_scope_guard_impl_0() throw() + { + safe_execute(*this); + } + + void execute() + { + (obj_.*memFun_)(); + } + + obj_scope_guard_impl_0(Obj& obj, MemFun memFun) + : obj_(obj), memFun_(memFun) {} + + private: + Obj& obj_; + MemFun memFun_; + }; + + /** 1 parameter object scope guard. + * \internal + */ + template class obj_scope_guard_impl_1 : public scope_guard_impl_base + { + public: + ~obj_scope_guard_impl_1() throw() + { + safe_execute(*this); + } + + void execute() + { + (obj_.*memFun_)(p1_); + } + + obj_scope_guard_impl_1(Obj& obj, MemFun memFun, P1 p1) + : obj_(obj), memFun_(memFun), p1_(p1) {} + + private: + Obj& obj_; + MemFun memFun_; + const P1 p1_; + }; + + /** 2 parameter object scope guard. + * \internal + */ + template class obj_scope_guard_impl_2 : public scope_guard_impl_base + { + public: + ~obj_scope_guard_impl_2() throw() + { + safe_execute(*this); + } + + void execute() + { + (obj_.*memFun_)(p1_, p2_); + } + + obj_scope_guard_impl_2(Obj& obj, MemFun memFun, P1 p1, P2 p2) + : obj_(obj), memFun_(memFun), p1_(p1), p2_(p2) {} + + private: + Obj& obj_; + MemFun memFun_; + const P1 p1_; + const P2 p2_; + }; + + /** Implementation to allow argument to be passed by reference. + * \internal + * \sa make_guard + */ + template class ref_holder + { + T& ref_; + public: + ref_holder(T& ref) : ref_(ref) {} + operator T& () const + { + return ref_; + } + private: + // Disable assignment - not implemented + ref_holder& operator=(const ref_holder&); + }; + + } + + /** Allow an argument to be passed by reference. + * \code + * scope_guard guard = make_guard( fun, by_ref(long) ); + * \endcode + * \relates comet::scope_guard + * \internal + */ + template inline impl::ref_holder by_ref(T& t) + { + return impl::ref_holder(t); + } + + /** Implements a scope guard with 0 parameters. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + * \internal + */ + template inline impl::scope_guard_impl_0 make_guard(F fun) + { + return impl::scope_guard_impl_0(fun); + } + + /** Implements a scope guard with 1 parameter. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + * \sa by_ref + * \internal + */ + template inline impl::scope_guard_impl_1 make_guard(F fun, P1 p1) + { + return impl::scope_guard_impl_1(fun, p1); + } + + /** Implements a scope guard with 2 parameters. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + * \sa by_ref + * \internal + */ + template inline impl::scope_guard_impl_2 make_guard(F fun, P1 p1, P2 p2) + { + return impl::scope_guard_impl_2(fun, p1, p2); + } + + /** Implements a scope guard with 3 parameters. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + * \sa by_ref + * \internal + */ + template inline impl::scope_guard_impl_3 make_guard(F fun, P1 p1, P2 p2, P3 p3) + { + return impl::scope_guard_impl_3(fun, p1, p2, p3); + } + + /** Implements a scope guard with 0 parameters, calling a memeber function on an object. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + */ + template inline impl::obj_scope_guard_impl_0 make_obj_guard(Obj& obj, MemFun memFun) + { + return impl::obj_scope_guard_impl_0(obj, memFun); + } + + /** Implements a scope guard with 1 parameter, calling a memeber function on an object. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + * \sa by_ref + * \internal + */ + template inline impl::obj_scope_guard_impl_1 make_obj_guard(Obj& obj, MemFun memFun, P1 p1) + { + return impl::obj_scope_guard_impl_1(obj, memFun, p1); + } + + /** Implements a scope guard with 2 parameters, calling a memeber function on an object. + * \param fun Function or \link functor comet::functor \endlink + * \relates comet::scope_guard + * \sa by_ref + * \internal + */ + template inline impl::obj_scope_guard_impl_2 make_obj_guard(Obj& obj, MemFun memFun, P1 p1, P2 p2) + { + return impl::obj_scope_guard_impl_2(obj, memFun, p1, p2); + } + + /** Pointer to a scope guard. + * Relies on const references holding on to an assigned stack object for + * the scope of the reference. + * \sa scope_guard_impl_0 obj_scope_guard_impl_0 scope_guard_impl_1 obj_scope_guard_impl_1 scope_guard_impl_2 obj_scope_guard_impl_2 + */ + typedef const impl::scope_guard_impl_base& scope_guard; + + //@} + +} // namespace + +#endif diff --git a/lib/local/CamCom/comet/server.h b/lib/local/CamCom/comet/server.h new file mode 100644 index 0000000..3d87786 --- /dev/null +++ b/lib/local/CamCom/comet/server.h @@ -0,0 +1,1588 @@ +/** \file + * Main functionality for providing a COM server dll. + */ +/* + * Copyright 2000-2002 Sofus Mortensen, Paul Hollingsworth, Michael Geddes, Mikael Lindgren + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_SERVER_H +#define COMET_SERVER_H + +#include +#ifdef COMET_GCC_HEADERS +#include +#else // COMET_GCC_HEADERS +#include +#endif // COMET_GCC_HEADERS + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +/** \page cometclassfactory Comet Class Factories + * Comet currently has support for \ref cometclassfactorystandard (non-aggregating), \ref cometclassfactoryaggregating and + * \ref cometclassfactorysingleton class factories. As there has been no demand for custom + * class factories yet, there is currently no support for them. + * + * The different class-factories are enabled by specialising the + * coclass_implementation to inherit off different classes. + * + * \section cometclassfactorystandard Standard + * + * The trigger classes for standard class-factory are either comet::coclass, or + * comet::simple_object. + * + * There is nothing much more noteworthy about this form except that it will + * return CLASS_E_NOAGGREGATION if aggregation is specified. + * + * \section cometclassfactoryaggregating Aggregating + * + * The trigger classes for the aggregating class-factory are comet::aggregateable_coclass or + * comet::aggregateable_object. + * + * The implementation of aggregation in comet is similar to the + * poly-aggregateable implementations found in ATL; there is no + * aggregation-only coclass implementation. + * + * The aggregating class factory will hook up aggegation if an IUnknown is + * supplied. + * + * \section cometclassfactorysingleton Singleton + * + * The trigger classes for the singleton class-factory are + * comet::singleton_coclass or comet::singleton_object. + * + * The singleton class-factory will cause all CreateObject calls for this class to + * return the same object. The life-time of the object is from first call till + * just before the dll/exe is unloaded. + * + * More complex requirements are anticipated, however they have not been + * implemented. + */ + /*! \defgroup Server Server implementation details. + */ + //@{ + +/** Template class for specifying your own custom registration. + + The default template does nothing - define a specialization of ::custom_registration + for each Coclass that you wish to have custom registration. + + on_register is called \em after the standard registration. + on_unregister is called \em before the standard unregistration. + + Common initialization and cleanup code for both registration and unregistration + can be put in the constructor and destructor. + + All exceptions thrown by on_unregister are caught and discarded. + + Example usage: + \code + class custom_registration + { + comet::regkey key_; + public: + custom_registration() + { + key_ = comet::regkey(HKEY_LOCAL_MACHINE).open(_T("Software\\AcmeCorp\\AcmePayroll")); + }; + void on_register(const TCHAR *filename) + { + key_.create(_T("Bill Bloggs")); + } + void on_unregister(const TCHAR *filename) + { + key_.delete_subkey(_T("Bill Bloggs")); + } + }; + \endcode +*/ +template +class custom_registration +{ +public: + void on_register(const TCHAR *) {} + void on_unregister(const TCHAR *) {} +}; +//@} + +namespace comet { + + + namespace impl { + + enum factory_type_t { ft_standard, ft_aggregateable, ft_singleton }; + + inline void create_record_info( const IID& lib_guid, const IID& rec_guid, unsigned short major_version, unsigned short minor_version, IRecordInfo*& ri ) + { + auto_cs lock( module().cs() ); + + if (!ri) { + com_ptr tl; + LoadRegTypeLib(lib_guid, + major_version, + minor_version, + GetUserDefaultLCID(), + tl.out()) | raise_exception; + com_ptr ti; + tl->GetTypeInfoOfGuid(rec_guid, ti.out()) | raise_exception; + GetRecordInfoFromTypeInfo(ti.in(), &ri) | raise_exception; + module().add_object_to_dispose( impl::create_itf_releaser( ri ) ); + } + } + + template struct interface_wrapper : public T + { + typedef T interface_is; + }; + + template class ATL_NO_VTABLE simple_object_aux : + public implement_qi< typelist::append< T, + make_list >::result > > + { + public: +// enum { factory_type = ft_standard }; + + STDMETHOD_(ULONG, AddRef)() + { + LONG rc = InterlockedIncrement(&rc_); + if (rc_ == 1) module().lock(); + return rc; + } + + STDMETHOD_(ULONG, Release)() + { + LONG rc = InterlockedDecrement(&rc_); + if (rc == 0) { + try { + delete this; + } COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); + module().unlock(); + } + return rc; + } + + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) + { + return S_OK; + } + + void so_internal_addref() { ++rc_; } + void so_internal_release() { --rc_; } + + protected: + simple_object_aux() : rc_(0) {} + virtual ~simple_object_aux() {} + private: + long rc_; + + // non-copyable + simple_object_aux(const simple_object_aux&); + simple_object_aux& operator=(const simple_object_aux&); + }; + + } + /*!\defgroup Objects Classes used as bases for COM objects. + */ + //@{ + /** Provide an inner unknown for aggregation. + * This is the unknown that handles lifetime of an aggregateable object. + */ + template + struct aggregate_inner_unknown : IUnknown + { + aggregate_inner_unknown() : rc_(0) {} + + STDMETHOD_(ULONG, AddRef)() + { + if (rc_ == 0) module().lock(); + return InterlockedIncrement(&rc_); + } + + STDMETHOD_(ULONG, Release)() + { + size_t rc = InterlockedDecrement(&rc_); + if (rc == 0) { + try { + delete static_cast(this); + } + COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); + module().unlock(); + } + return rc; + } + + STDMETHOD(QueryInterface)(REFIID riid, void **pv) + { + if(riid == IID_IUnknown) + { + *pv=get_inner(); + AddRef(); + return S_OK; + } + return static_cast(this)->QueryInterfaceInternal(riid, pv); + } + + IUnknown *get_inner() { return static_cast(this); } + + private: + long rc_; + }; + + /** Provides the outer-unknown for aggregation. + * This unkonwn points to the agregating unknown if aggregation occured, or + * to the aggregate_inner_unknown class if it didn't. + * This also implements the interfaces and QueryInterface. + */ + template + class aggregate_outer_unknown : public implement_internal_qi< + typelist::append >::result > + > + { + public: + aggregate_outer_unknown(): outer_(NULL) {} + + STDMETHOD_(ULONG, AddRef)() + { + //assert(outer_!=NULL); + return outer_->AddRef(); + } + + STDMETHOD_(ULONG, Release)() + { + //assert(outer_!=NULL); + return outer_->Release(); + } + STDMETHOD(QueryInterface)(REFIID riid, void** ppv) + { + //assert(outer_!=NULL); + return outer_->QueryInterface(riid, ppv); + } + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) + { + return S_OK; + } + void set_outer_(IUnknown *outer){ outer_ = outer;} + + + private: + IUnknown *outer_; + }; + //@} + + namespace impl { + + template class ATL_NO_VTABLE aggregateable_object_aux : public aggregate_outer_unknown, public aggregate_inner_unknown > + { + public: + aggregateable_object_aux() + { + set_outer_(static_cast(static_cast< aggregate_inner_unknown > *>(this))); + } + + protected: + virtual ~aggregateable_object_aux() {} + friend struct aggregate_inner_unknown >; + private: + // non-copyable + aggregateable_object_aux(const aggregateable_object_aux&); + aggregateable_object_aux& operator=(const aggregateable_object_aux&); + }; + + } + + /*!\addtogroup Objects + */ + //@{ + /*! \class aggregateable_object server.h comet/server.h + Implement a user aggregateable object. + \code + class my_class : public aggregateable_object< IFooImpl, IBarImpl > + { + ... + }; + \endcode + \sa handle_exception_default IProvideClassInfoImpl simple_object + */ + template class ATL_NO_VTABLE aggregateable_object : public impl::aggregateable_object_aux< typename make_list::result > + { + public: + enum { factory_type = impl::ft_aggregateable }; + }; + + /*! \class simple_object server.h comet/server.h + A simple reference counted COM object. + \code + class my_class : public simple_object< IFooImpl, IBarImpl > + { + ... + }; + \endcode + \sa handle_exception_default IProvideClassInfoImpl aggregateable_object + */ + template class ATL_NO_VTABLE simple_object : public impl::simple_object_aux< typename make_list::result > + { + public: + enum { factory_type = impl::ft_standard }; + }; + //@} + + namespace impl { + + + + template class ATL_NO_VTABLE static_object_aux : + public implement_qi< typelist::append< T, make_list >::result > > + { + public: + STDMETHOD_(ULONG, AddRef)() + { + module().lock(); + return 2; + } + + STDMETHOD_(ULONG, Release)() + { + module().unlock(); + return 1; + } + + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) + { + return S_OK; + } + protected: + static_object_aux() {} + virtual ~static_object_aux() {} + }; + + } + + /*!\addtogroup Objects + */ + //@{ + /*! \class static_object server.h comet/server.h + A simple static allocated COM object. + \code + class my_class : public static_object< IFooImpl, IBarImpl > + { + ... + }; + \endcode + * \sa handle_exception_default IProvideClassInfoImpl + */ + template class ATL_NO_VTABLE static_object : public impl::static_object_aux< typename make_list::result > + { + }; + + /*! \class singleton_object server.h comet/server.h + A simple singleton allocated COM object. + \code + class my_class : public singleton_object< IFooImpl, IBarImpl > + { + ... + }; + \endcode + * \sa handle_exception_default IProvideClassInfoImpl + */ + template class ATL_NO_VTABLE singleton_object : public impl::static_object_aux< typename make_list::result > + { + public: + enum { factory_type = impl::ft_singleton }; + void set_dispose_command_( impl::cmd_t *) { } + }; + + + /*! \class embedded_object server.h comet/server.h + * + * \sa handle_exception_default IProvideClassInfoImpl + * \todo documentation + */ + template class ATL_NO_VTABLE embedded_object : + public implement_qi< typelist::append< typename make_list::result, typename make_list >::result > > + { + public: + STDMETHOD_(ULONG, AddRef)() + { + return parent_->AddRef(); + } + + STDMETHOD_(ULONG, Release)() + { + return parent_->Release(); + } + + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) + { + return S_OK; + } + + protected: + explicit embedded_object(PARENT* parent) : parent_(parent) {} + + PARENT* get_parent() const { return parent_; } + + typedef embedded_object base_class; + private: + PARENT* parent_; + + // non-copyable + embedded_object(const embedded_object&); + embedded_object& operator=(const embedded_object&); + }; + + /*! \class embedded_object2 server.h comet/server.h + * + * \sa handle_exception_default IProvideClassInfoImpl + * \todo documentation + */ + template class ATL_NO_VTABLE embedded_object2 : + public implement_qi< typelist::append< typename make_list::result, make_list >::result > > + { + public: + STDMETHOD_(ULONG, AddRef)() + { + if (rc_ == 0) module().lock(); + long r = InterlockedIncrement(&rc_); + if (is_connected_) return parent_->AddRef(); + return r; + } + + STDMETHOD_(ULONG, Release)() + { + size_t rc = InterlockedDecrement(&rc_); + + if (is_connected_) return parent_->Release(); + + if (rc == 0) { + try { + delete this; + } + COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); + module().unlock(); + } + return rc; + } + + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID) + { + return S_OK; + } + + void disconnect() + { + // todo make thread safe! + + if (is_connected_) { + is_connected_ = false; + + for (long i=0; iRelease(); + + // Provoke destruction if necessary. + AddRef(); + Release(); + } + } + + protected: + explicit embedded_object2(PARENT* parent) : parent_(parent), rc_(0), is_connected_(true) {} + + virtual ~embedded_object2() {} + + PARENT* get_parent() const { return parent_; } + + typedef embedded_object2 base_class; + private: + PARENT* parent_; + bool is_connected_; + long rc_; + + // non-copyable + embedded_object2(const embedded_object2&); + embedded_object2& operator=(const embedded_object2&); + }; + //@} + + /// Base class for class factories. + template class class_factory_base : public IClassFactory + { + public: + STDMETHOD_(ULONG, AddRef)() + { + if (LOCK_MODULE) module().lock(); + return 2; + } + + STDMETHOD_(ULONG, Release)() + { + if (LOCK_MODULE) module().unlock(); + return 1; + } + + STDMETHOD(QueryInterface)(REFIID riid, void **pv) + { + if (!pv) return E_POINTER; + *pv = 0; + if (riid == IID_IClassFactory) *pv = static_cast(this); + if (riid == IID_IUnknown) *pv = this; + + if (*pv == NULL) return E_NOINTERFACE; + + AddRef(); + return S_OK; + } + + STDMETHOD(LockServer)(BOOL bLock) + { + if (bLock) + module().lock(); + else + module().unlock(); + return S_OK; + } + protected: + HRESULT handle_exception( const bstr_t &src ) + { +#ifndef COMET_DISABLE_EXCEPTION_RETHROW_CATCH + return comet_exception_handler::rethrow( source_info_t( src, IID_IUnknown, L"ClassFactory") ); +#else // COMET_DISABLE_EXCEPTION_RETHROW_CATCH + return comet_exception_handler::catcher_hr(E_FAIL, source_info_t(src, IID_IUnknown, L"ClassFactory") ); +#endif // COMET_DISABLE_EXCEPTION_RETHROW_CATCH + } + }; + + //! Basic class-factory. + template class class_factory : public class_factory_base + { + public: + STDMETHOD(CreateInstance)(::IUnknown *pUnkOuter, REFIID riid, void **ppv) + { + if (pUnkOuter) return CLASS_E_NOAGGREGATION; + *ppv = 0; + + if (!LOCK_MODULE) module().lock(); + + T::coclass_type* t; + try { + t = new T; + } + catch (...) + { + if (!LOCK_MODULE) module().unlock(); + return handle_exception( bstr_t(L"CreateInstance(") + bstr_t(uuid_t::create_const_reference(riid),true ) + ")" ); + } + + t->AddRef(); + HRESULT hr = t->QueryInterface(riid, ppv); + t->Release(); + + if (!LOCK_MODULE) module().unlock(); + + return hr; + } + + }; + + //! Class factory for aggregateable objects. + template class class_factory_agg : public class_factory_base + { + STDMETHOD(CreateInstance)(::IUnknown *pUnkOuter, REFIID riid, void **ppv) + { + *ppv = 0; + + if (!LOCK_MODULE) module().lock(); + + T* t; + try { + t = new T; + } + catch (...) + { + if (!LOCK_MODULE) module().unlock(); + return handle_exception( bstr_t(L"CreateInstance(") + bstr_t(uuid_t::create_const_reference(riid),true ) + ")" ); + } + if(pUnkOuter!=NULL) + { + if(riid!=IID_IUnknown) + { + if (!LOCK_MODULE) module().unlock(); + return CLASS_E_NOAGGREGATION; + } + t->set_outer_(pUnkOuter); + } + + t->get_inner()->AddRef(); + HRESULT hr = t->get_inner()->QueryInterface(riid, ppv); + t->get_inner()->Release(); + + if (!LOCK_MODULE) module().unlock(); + + return hr; + } + }; + + /// Class factory for singletons. + template class class_factory_singleton : public class_factory_base + { + public: + class_factory_singleton() : obj_(NULL), primed_(0) + { } + + STDMETHOD(CreateInstance)(::IUnknown *pUnkOuter, REFIID riid, void **ppv) + { + *ppv = 0; + if(pUnkOuter!=NULL) + return CLASS_E_NOAGGREGATION; + + if (!LOCK_MODULE) module().lock(); + + // Add this to the list to get the object disposed on + // moudle terminate. + if (0==InterlockedExchange(&primed_, 1)) + { + module().add_object_to_dispose( create_object_disposer(this) ); + } + + if (obj_ == NULL ) + { + + try { + // Create a new instance, but make sure only one is + // used if there is contention. + T *newVal = new T; + newVal->set_dispose_command_( create_object_disposer(this)); +#ifndef InterlockedCompareExchangePointer + InterlockedCompareExchange( &(void *&)obj_, newVal, 0); +#else + InterlockedCompareExchangePointer( &(void *&)obj_, newVal, 0); +#endif + } + catch (...) + { + if (!LOCK_MODULE) module().unlock(); + return handle_exception( bstr_t(L"CreateInstance(") + bstr_t(uuid_t::create_const_reference(riid),true ) + ")" ); + } + } + + HRESULT hr = obj_->QueryInterface(riid, ppv); + + if (!LOCK_MODULE) module().unlock(); + + return hr; + } + + // Called by object_disposer on module terminate. + void object_dispose() + { + if (obj_ != NULL) + { + T *t= obj_; + obj_ = NULL; + CoDisconnectObject(t->get_unknown(), 0); + delete t; + } + } + + T *obj_; + long primed_; + private: + }; + + + /*!\addtogroup Objects + */ + //@{ + /** Enumerate thread_model. + */ + namespace thread_model { + /** Enumerate thread_model. + */ + enum thread_model_t { + Apartment = 0, ///< Apartment threaded. + Free = 1, ///< Free threaded. + Both = 2, ///< Both threaded (either apartment or free) + Neutral = 3 ///< Netural threaded. + }; + } + //@} + + //! Provide static string description of thread models. + template + struct tm_properties; + + template<> struct tm_properties + { + COMET_FORCEINLINE static const TCHAR *string() { return _T("Apartment"); } + }; + + template<> struct tm_properties + { + COMET_FORCEINLINE static const TCHAR *string() { return _T("Free"); } + }; + + template<> struct tm_properties + { + COMET_FORCEINLINE static const TCHAR *string() { return _T("Both"); } + }; + + template<> struct tm_properties + { + COMET_FORCEINLINE static const TCHAR *string() { return _T("Neutral"); } + }; + + /*! \defgroup Interfaces Interface implementations. + */ + //@{ + /*! \class IProvideClassInfoImpl server.h comet/server.h + * This class provides IProvideClassInfo interfaces for simple, static, embeded or + * other custom classes. + * IProvideClassInfoImpl is used by coclass and aggregateable_coclass by + * default. + * This class also provides class name information to the exception + * handler. + * \sa default_exception_handler_traits + */ + template class IProvideClassInfoImpl : public IProvideClassInfo, public handle_exception_default + { + public: + typedef IProvideClassInfo interface_is; + STDMETHOD(GetClassInfo)(ITypeInfo **ppTypeInfo) throw() + { + if(!ppTypeInfo) return E_POINTER; + *ppTypeInfo = 0; + ITypeLib *pTypeLib; + typedef typename COCLASS::type_library COCLASS_typelib; + HRESULT hr = typelibrary_loader::load(&pTypeLib); + + if(FAILED(hr)) return hr; + hr = pTypeLib->GetTypeInfoOfGuid(uuidof(), ppTypeInfo); + pTypeLib->Release(); + return hr; + } + }; + /** \struct coclass server.h comet/server.h + * Implement a standard coclass with interfaces defined in TypeLibrary and + * implemented within the class \p T and thread model \p TM, followed by a + * list of extra interfaces to implement. + * Provides IProvideClassInfo and ISupportErrorInfo as standard. + * \code + template<> + class coclass_implementation : public coclass + { + // ... + }; + * \endcode + * The thread model can be specified for the coclass, and as well, extra + * interfaces can be implemented by specifying them at the end. + * \code + template<> + class coclass_implementation : public coclass + { + // ... + }; + * \endcode + * \sa FTM aggregates thread_model::thread_model_t + */ + +/* template struct ATL_NO_VTABLE coclass : public impl::simple_object_aux< typelist::append >::result > > { + enum { thread_model = TM }; + static const TCHAR* get_progid() { return 0; } + };*/ + //@} + + /*!\addtogroup Objects + */ + //@{ + template struct ATL_NO_VTABLE coclass : public impl::simple_object_aux< typelist::append< typelist::append< typename T::interface_impls, typename make_list::result>, typename make_list >::result > > { + typedef coclass coclass_type; + enum { factory_type = impl::ft_standard }; + enum { thread_model = TM }; + static const TCHAR* get_progid() { return 0; } + }; + //@} + +// COMET_WRAP_EACH_DECLARE(aggregates_interface); + + namespace impl { + template + struct append3 + { + typedef typelist::append first_two; + typedef typelist::append list; + }; + } +#ifdef NOTNOW + /** \struct coclass_aggregates server.h comet/server.h + * Implement a coclass with interfaces defined in TypeLibrary and + * implemented by the class, as well as supporting specified aggregated interfaces. + * Provides IProvideClassInfo and ISupportErrorInfo as standard. + * \code + * template<> + * class coclass_implementation + * : public coclass_aggregates::result> + * { + * public: + * coclass_implementation() + * { + * aggregates_interface::set_aggregate(com_ptr(CoClassForAggIFace,com_cast(this))); + * } + * // ... + * }; + * \endcode + * \note This should provide IProvideMultipleClassInfo. + */ + +/* template + struct ATL_NO_VTABLE coclass_aggregates : public impl::simple_object_aux >::result > > + { + enum { thread_model = TM }; + static const TCHAR* get_progid() { return 0; } + };*/ +#endif //0 + + /*!\addtogroup Objects + */ + //@{ + /** \struct aggregateable_coclass server.h comet/server.h + * Implement an aggregateable coclass with interfaces defined in TypeLibrary and + * implemented within the class T. + * Provides IProvideClassInfo and ISupportErrorInfo as standard. + * \code + * template<> + * class coclass_implementation + * : public aggregateable_coclass + * { + * // .... + * }; + * \endcode + */ + + template + struct ATL_NO_VTABLE aggregateable_coclass : public impl::aggregateable_object_aux< typelist::append< typename T::interface_impls, typename make_list >::result > > + { + typedef aggregateable_coclass coclass_type; + enum { thread_model = TM }; + enum { factory_type = impl::ft_aggregateable }; + static const TCHAR* get_progid() { return 0; } + aggregateable_coclass() {} + protected: + ~aggregateable_coclass() {} + private: + aggregateable_coclass(const aggregateable_coclass&); + aggregateable_coclass& operator=(const aggregateable_coclass&); + }; + + /** \class singleton_coclass server.h comet/server.h + * Implement a singleton coclass within interfaces defined in TypeLibrary + * and implemented with the class T. + * Gets cleaned up when dll unloads. + * Provides IProvideClassInfo and ISupportErrorInfo as standard. + \code + class coclass_implementation + : public singleton_coclass + { + // .... + }; + \endcode + */ + template< typename T, enum thread_model::thread_model_t TM = thread_model::Apartment> + struct ATL_NO_VTABLE singleton_coclass : public impl::static_object_aux< + typelist::append< typename T::interface_impls, typename make_list >::result > + > + { + typedef singleton_coclass coclass_type; + enum { thread_model = TM }; + enum { factory_type = impl::ft_singleton }; + void set_dispose_command_( impl::cmd_t *) { } + static const TCHAR* get_progid() { return 0; } + singleton_coclass() {} + ~singleton_coclass() {} + + private: + singleton_coclass(const singleton_coclass&); + singleton_coclass& operator=(const singleton_coclass&); + }; + + template< typename T, enum thread_model::thread_model_t TM = thread_model::Apartment> + struct ATL_NO_VTABLE singleton_autorelease_coclass : public impl::static_object_aux< + typelist::append< typename T::interface_impls, typename make_list >::result > + > + { + singleton_autorelease_coclass() : rc_(0), dispose_(0) {} + ~singleton_autorelease_coclass() + { delete dispose_; } + + STDMETHOD_(ULONG, AddRef)() + { + if (rc_ == 0) module().lock(); + return InterlockedIncrement(&rc_); + } + + STDMETHOD_(ULONG, Release)() + { + LONG rc = InterlockedDecrement(&rc_); + if (rc == 0) { + try { + if (dispose_!=NULL) + dispose_->cmd(); + + } COMET_CATCH_UNKNOWN( L"Release", IID_IUnknown, bstr_t()); + module().unlock(); + } + return rc; + } + + typedef singleton_autorelease_coclass coclass_type; + enum { thread_model = TM }; + enum { factory_type = impl::ft_singleton }; + static const TCHAR* get_progid() { return 0; } + + void set_dispose_command_( impl::cmd_t *p) + { + delete dispose_; + dispose_ = p; + } + + private: + singleton_autorelease_coclass(const singleton_autorelease_coclass&); + singleton_autorelease_coclass& operator=(const singleton_autorelease_coclass&); + long rc_; + impl::cmd_t *dispose_; + }; + //@} + + + namespace impl { + template + class reghelper_t + { + // convert_string is overloaded to select the correct + // behaviour based on argument type. + // dest_size is the number of bytes, not the number of characters. + COMET_FORCEINLINE static void convert_string(wchar_t *dest, size_t dest_size, const wchar_t *src) + { + ::memcpy(dest, src, dest_size); + } + + COMET_FORCEINLINE static void convert_string(char *dest, size_t dest_size, const wchar_t *src) + { + ::WideCharToMultiByte(CP_ACP, 0, src, -1, dest, dest_size, 0, 0); + } + + static void removekey(const tstring& key); + static void addkey(const tstring& key, const tstring& valueName, const tstring& value); + static void addkey(const tstring& key, const tstring& value); + static tstring StringFromUUID(REFCLSID rclsid); + static void updatekey(bool unregister, const tstring &key, const tstring &valueName, const tstring &value); + static void updatekey(bool unregister, const tstring &key, const tstring &value); + public: + static void update_coclass(bool unregister, + const CLSID &rclsid, + const TCHAR *filename, + const TCHAR *thread_model, + const TCHAR *coclass_name, + const TCHAR *progid, + unsigned long version, + const GUID &rlibid, + bool inproc_server, + const GUID* appid); + }; // reghelper_t + + template + void reghelper_t::removekey(const tstring& key) + { + regkey rkey(HKEY_CLASSES_ROOT); + rkey.delete_subkey_nothrow(key); + } + + template + void reghelper_t::addkey(const tstring& key, const tstring& valueName, const tstring& value) + { + regkey rkey(HKEY_CLASSES_ROOT); + rkey.create(key)[valueName] = value; + } + + template + void reghelper_t::addkey(const tstring& key, const tstring& value) + { + regkey rkey(HKEY_CLASSES_ROOT); + rkey.create(key)[_T("")] = value; + } + + template + tstring reghelper_t::StringFromUUID(REFCLSID rclsid) + { + wchar_t *ws; + ::StringFromCLSID(rclsid, &ws); + size_t num_chars = wcslen(ws) + 1; + size_t bytes = num_chars * sizeof (TCHAR); + TCHAR *s = static_cast(_alloca(bytes)); + convert_string(s, bytes, ws); + CoTaskMemFree(ws); + return s; + } + + template + void reghelper_t::updatekey(bool unregister, const tstring &key, const tstring &valueName, const tstring &value) + { + if(unregister) + removekey(key); + else + addkey(key, valueName, value); + } + + template + void reghelper_t::updatekey(bool unregister, const tstring &key, const tstring &value) + { + if(unregister) + removekey(key); + else + addkey(key, value); + } + + template + void reghelper_t::update_coclass(bool unregister, + const CLSID &rclsid, + const TCHAR *filename, + const TCHAR *thread_model, + const TCHAR *coclass_name, + const TCHAR *progid, + unsigned long version, + const GUID &rlibid, + bool inproc_server, + const GUID* /*appid*/) + { + tstring clsid = StringFromUUID(rclsid); + tstring name = _T("CLSID\\") + clsid; + tstring typelib = StringFromUUID(rlibid); + // On WinNT/Win2000, subkeys must be deleted before parent keys. + // Therefore, be sure to specify changes to subkeys before + // changes to parent keys - otherwise the server will not + // cleanly remove all keys when it is unregistered. + if (inproc_server) + { + updatekey(unregister, name + _T("\\InprocServer32"), filename); + updatekey(unregister, name + _T("\\InprocServer32"), _T("ThreadingModel"), thread_model); + } + else + { + updatekey(unregister, name + _T("\\LocalServer32"), filename); + updatekey(unregister, name + _T("\\Programmable"), _T("")); + } + updatekey(unregister, name + _T("\\TypeLib"), typelib); +// updatekey(unregister, name, coclass_name); + + if (progid != 0) + { + tstring prgid(progid); + + if (version != 0) + { + TCHAR buffer[35]; +#if _MSC_VER >= 1400 + _ultot_s(version, buffer, 35, 10); + tstring prgid_ver(prgid + _T(".") + buffer); +#else + tstring prgid_ver(prgid + _T(".") + _ultot(version, buffer, 10)); +#endif + + updatekey(unregister, name + _T("\\ProgID"), prgid_ver); + updatekey(unregister, prgid + _T("\\CurVer"), prgid_ver); + updatekey(unregister, prgid_ver + _T("\\CLSID"), clsid); + updatekey(unregister, prgid_ver, coclass_name); + } + else + { + updatekey(unregister, name + _T("\\ProgID"), prgid); + } + + updatekey(unregister, prgid + _T("\\CLSID"), clsid); + updatekey(unregister, prgid, coclass_name); + } + + updatekey(unregister, name, coclass_name); + +// if (progid != 0) { +// updatekey(unregister, name + _T("\\ProgID"), progid); +// updatekey(unregister, tstring(progid) + _T("\\CLSID"), clsid); +// updatekey(unregister, progid, coclass_name); +// } + } + + typedef reghelper_t reghelper; + +#ifndef COMET_PARTIAL_SPECIALISATION + + template + struct entry_builder; + + template struct THE_FOLLOWING_COCLASS_HAS_NOT_BEEN_IMPLEMENTED; + template<> struct THE_FOLLOWING_COCLASS_HAS_NOT_BEEN_IMPLEMENTED {}; + + template<> struct entry_builder + { + template + struct registration + { + COMET_FORCEINLINE static void perform(const TCHAR*, bool, bool, const GUID* ) + { +#ifndef COMET_ALLOW_UNIMPLEMENTED_COCLASSES + THE_FOLLOWING_COCLASS_HAS_NOT_BEEN_IMPLEMENTED x; +#endif + } + }; + + template + struct factory + { + COMET_FORCEINLINE static ::IUnknown* get(const CLSID&) + { + return 0; + } + }; + }; // entry_builder + + template<> struct entry_builder + { + template + struct registration + { + static void perform(const TCHAR *filename, bool unregister, bool inproc_server, const GUID* appid) + { + if(unregister) { + try { + custom_registration().on_unregister(filename); + } + catch(...) + { + + } + } + + reghelper::update_coclass(unregister, + uuidof(), + filename, + tm_properties::thread_model>::string(), + CLASS::name(), + coclass_implementation::get_progid(), + CLASS::major_version, + uuidof(), + inproc_server, + appid); + + if(!unregister) + custom_registration().on_register(filename); + } // perform + }; // registration + + + template + struct factory_builder { }; + + template<> struct factory_builder + { + template + struct factory + { + typedef class_factory is_factory; + }; + }; + template<> struct factory_builder + { + template + struct factory + { + typedef class_factory_agg is_factory; + }; + }; + template<> struct factory_builder + { + template + struct factory + { + typedef class_factory_singleton is_factory; + }; + }; + + template + struct factory_type + { + typedef COMET_STRICT_TYPENAME factory_builder< CLASS::factory_type >::factory::is_factory factory; + }; + template + struct factory + { + typedef typename factory_type< coclass_implementation, LOCK_MODULE >::factory CLASS_FACTORY; + + COMET_FORCEINLINE static ::IUnknown* get(const CLSID& clsid) + { + static CLASS_FACTORY class_factory_; + + // NB: This might cause problems if CLASS_FACTORY + // implemented more than one interface. If so, this logic will + // have to be changed to inline the QueryInterface call instead. + if (clsid == uuidof()) + return &class_factory_; + return 0; + } // get + }; // factory + }; // entry_builder + + template + struct coclass_table_entry + { + // We use sizeof here to determine if there is a specialization of coclass_implementation. + // It is relying on the fact that any real implementation of coclass_implementation + // must be at least sizeof IUnknown, whereas the default sizeof implementation + // is always just a dummy class. + enum { is_undefined = sizeof (coclass_implementation) == sizeof( coclass_implementation) }; + + typedef typename entry_builder::factory factory; + typedef typename entry_builder::registration registration; + }; + +#else // COMET_PARTIAL_SPECIALISATION + template + struct entry_builder + { + typedef nil factory; + typedef nil registration; + }; + + template struct entry_builder + { + struct registration + { + COMET_FORCEINLINE static void perform(const TCHAR*, bool, bool, const GUID* ) {} + }; + + struct factory + { + COMET_FORCEINLINE static ::IUnknown* get(const CLSID&) + { + return 0; + } + }; + }; // entry_builder + + template + struct factory_builder_aux { }; + + template struct factory_builder_aux + { + typedef class_factory is_factory; + }; + template struct factory_builder_aux + { + typedef class_factory_agg is_factory; + }; + template struct factory_builder_aux + { + typedef class_factory_singleton is_factory; + }; + + + template struct entry_builder + { + struct registration + { + static void perform(const TCHAR *filename, bool unregister, bool inproc_server, const GUID* appid) + { + if(unregister) { + try { + custom_registration().on_unregister(filename); + } catch(...) {} + } + + reghelper::update_coclass(unregister, + uuidof(), + filename, + tm_properties::thread_model>::string(), + CLASS::name(), + coclass_implementation::get_progid(), + CLASS::major_version, + uuidof(), + inproc_server, + appid); + + if(!unregister) + custom_registration().on_register(filename); + } // perform + }; // registration + + struct factory_type + { + enum {type_ = coclass_implementation::factory_type }; + typedef typename factory_builder_aux< type_, coclass_implementation, FACTORY_LOCK_MODULE >::is_factory factory; + }; + struct factory + { + typedef typename factory_type::factory CLASS_FACTORY; + + COMET_FORCEINLINE static ::IUnknown* get(const CLSID& clsid) + { + static CLASS_FACTORY class_factory_; + + // NB: This might cause problems if CLASS_FACTORY + // implemented more than one interface. If so, this logic will + // have to be changed to inline the QueryInterface call instead. + if (clsid == uuidof()) + return &class_factory_; + return 0; + } // get + }; // factory + }; // entry_builder + + template + struct coclass_table_entry + { + // We use sizeof here to determine if there is a specialization of coclass_implementation. + // It is relying on the fact that any real implementation of coclass_implementation + // must be at least sizeof IUnknown, whereas the default sizeof implementation + // is always just a dummy class. + enum { is_undefined = (sizeof(coclass_implementation) == sizeof(coclass_implementation)) }; + + typedef typename entry_builder::factory factory; + typedef typename entry_builder::registration registration; + }; +#endif // COMET_PARTIAL_SPECIALISATION + + } // namespace impl + + /*! \addtogroup Server + */ + //@{ + template + class coclass_table + { + public: + COMET_FORCEINLINE static ::IUnknown* find(const CLSID& clsid) + { + ::IUnknown *ret = impl::coclass_table_entry::factory::get(clsid); + return ret ? ret : coclass_table::find(clsid); + } + + COMET_FORCEINLINE static void registration(const TCHAR* filename, bool unregister, bool inproc_server = true, const GUID* appid = 0) + { + impl::coclass_table_entry::registration::perform(filename, unregister, inproc_server, appid); + coclass_table::registration(filename, unregister, inproc_server, appid); + } + }; + + struct coclass_term + { + COMET_FORCEINLINE static ::IUnknown* find(const IID&) + { + return 0; + } + COMET_FORCEINLINE static void registration(const TCHAR*, bool, bool = true, const GUID* = 0) {} + }; + +// template<> class coclass_table > : public coclass_term {}; + template<> class coclass_table : public coclass_term {}; + template<> class coclass_table : public coclass_term {}; + + enum { NO_EMBEDDED_TLB = 1}; + + template + struct com_server_traits { + enum { flags = FL }; + enum { embedded_tlb = !(flags & NO_EMBEDDED_TLB) }; + }; + /** Main COM DLL module implementation. + * Called my the COMET_DECLARE_DLL_FUNCTIONS macro - provides implementation + * for the DLL entry points. + * \sa COMET_DECLARE_DLL_FUNCTIONS + */ + template > class com_server + { + typedef coclass_table COCLASS_TABLE; + public: + static BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID); + static HRESULT DllCanUnloadNow(); + static HRESULT DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv); + static HRESULT DllRegisterServer(); + static HRESULT DllUnregisterServer(); + }; + //@} + template + BOOL WINAPI com_server::DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID) + { + if (dwReason == DLL_PROCESS_ATTACH) + { + module().instance(hInstance); + DisableThreadLibraryCalls(hInstance); + + // initialize static variables in factory::get to avoid potential thread safety problem. + ::IUnknown* cf = COCLASS_TABLE::find(IID_NULL); + /* prevent warning */ cf; + } + else if (dwReason == DLL_PROCESS_DETACH) + { + module().shutdown(); + } + return TRUE; + } + + template + HRESULT com_server::DllCanUnloadNow() + { + return module().rc() == 0 ? S_OK : S_FALSE; + } + + template + HRESULT com_server::DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) + { + ::IUnknown* cf = COCLASS_TABLE::find(rclsid); + if (cf == 0) return CLASS_E_CLASSNOTAVAILABLE; + + return cf->QueryInterface(riid, ppv); + } + + namespace impl { + template + struct typelibrary_registration + { + static void convert(wchar_t *dest, const char *src) + { + size_t cs = 0; +#if _MSC_VER >=1400 + ::mbstowcs_s(&cs, dest, MAX_PATH, src, MAX_PATH); +#else + cs = ::mbstowcs(dest,src, MAX_PATH); +#endif + } + static void convert(wchar_t *dest, const wchar_t *src) + { +#if _MSC_VER >= 1400 + ::wcscpy_s(dest, MAX_PATH, src); +#else + ::wcscpy(dest, src); +#endif + } + static HRESULT perform(const TCHAR *filename, bool unregister) throw() + { + wchar_t wfilename[MAX_PATH]; + convert(wfilename, filename); + ITypeLib* tl; + HRESULT hr = LoadTypeLib(wfilename, &tl); + if (SUCCEEDED(hr)) { + if(unregister) { + TLIBATTR *tla = 0; + hr = tl->GetLibAttr(&tla); + if (SUCCEEDED(hr)) { + hr = UnRegisterTypeLib(tla->guid, tla->wMajorVerNum, tla->wMinorVerNum, tla->lcid, tla->syskind); + tl->ReleaseTLibAttr(tla); + } + } + else + hr = RegisterTypeLib(tl, wfilename, 0); + tl->Release(); + } + return hr; + } + }; + + template<> struct typelibrary_registration<0> + { + COMET_FORCEINLINE static HRESULT perform(const TCHAR *, bool) + { + return S_OK; + } + }; + } // namespace impl + + template + HRESULT com_server::DllRegisterServer() + { + TCHAR filename[MAX_PATH]; + + GetModuleFileName(module().instance(), filename, MAX_PATH); + + { + HRESULT hr = impl::typelibrary_registration::perform(filename, false); + if(FAILED(hr)) return SELFREG_E_TYPELIB; + } + + try { + COCLASS_TABLE::registration(filename, false); + } + catch (const com_error &e) + { + DllUnregisterServer(); + return impl::return_com_error(e); + } + catch (const std::exception &e) + { + DllUnregisterServer(); + ::OutputDebugStringA(e.what()); + return E_FAIL; + } + + return S_OK; + } + + template + HRESULT com_server::DllUnregisterServer() + { + TCHAR filename[MAX_PATH]; + GetModuleFileName(module().instance(), filename, MAX_PATH); + + impl::typelibrary_registration::perform(filename, true); + + COCLASS_TABLE::registration(filename, true); + return S_OK; + } +/** Declares the DLL Functions and passes them through to \a SERVER static + * functions. + * \sa com_server + */ + +#define COMET_DECLARE_DLL_FUNCTIONS(SERVER) \ +extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID) \ +{ \ + return SERVER::DllMain(hInstance, dwReason, 0); \ +} \ + \ +STDAPI DllCanUnloadNow() \ +{ \ + return SERVER::DllCanUnloadNow(); \ +} \ + \ +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) \ +{ \ + return SERVER::DllGetClassObject(rclsid, riid, ppv); \ +} \ + \ +STDAPI DllRegisterServer() \ +{ \ + return SERVER::DllRegisterServer(); \ +} \ + \ +STDAPI DllUnregisterServer() \ +{ \ + return SERVER::DllUnregisterServer(); \ +} + +} + +#endif diff --git a/lib/local/CamCom/comet/smart_enum.h b/lib/local/CamCom/comet/smart_enum.h new file mode 100644 index 0000000..c45f53b --- /dev/null +++ b/lib/local/CamCom/comet/smart_enum.h @@ -0,0 +1,139 @@ +/** \file + * _NewEnum style COM enumerator backed by a smart pointer to items. + */ +/* + * Copyright 2010 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_SMART_ENUM_H +#define COMET_SMART_ENUM_H + +#include + +#include +#include + +namespace comet { + + namespace impl { + + template + class smart_enum_source + { + public: + typedef typename SmartPtr::element_type::const_iterator + const_iterator; + + explicit smart_enum_source(SmartPtr source) + : source_(source), it_(begin()) {} + + const_iterator begin() + { + return source_->begin(); + } + + const_iterator end() + { + return source_->end(); + } + + const_iterator& current() + { + return it_; + } + + private: + SmartPtr source_; + const_iterator it_; + }; + + } + + /** + * Implements _NewEnum style COM object on top of smart pointer to + * a collection. + * \param Itf Enumeration Interface. + * \param C STL Style container. + * \param T Iteration Element type + * \param CONVERTER Converts container element to \p T type. (std::identity) + * \sa stl_enumeration create_enum + */ + template< + typename Itf, typename SmartPtr, typename T, + typename CONVERTER=std::identity< + COMET_STRICT_TYPENAME SmartPtr::element_type::value_type> > + class smart_enumeration : + public impl::enumeration< + Itf, T, CONVERTER, impl::smart_enum_source > + { + public: + smart_enumeration( + SmartPtr container, const CONVERTER& converter=CONVERTER()) + : enumeration( + impl::smart_enum_source(container), converter) {} + + private: + smart_enumeration(const smart_enumeration&); + smart_enumeration& operator=(const smart_enumeration&); + }; + + /** + * Smart Enumeration creation helper. + * + * Creates the enumeration with the element type specified by the + * enumerated_type_of policy. To specify the element type explicitly, use + * smart_enumeration directly. + * + * \tparam ET Enumeration Type e.g. IEnumUnknown. + * \tparam SmartPtr Smart pointer (inferred from @a container parameter). + * + * \param container Smart pointer to an STL collection + * e.g. auto_ptr. + */ + template + inline com_ptr make_smart_enumeration(SmartPtr container) + { + typedef typename enumerated_type_of::is T; + typedef std::identity< + COMET_STRICT_TYPENAME SmartPtr::element_type::value_type> + CONVERTER; + return new smart_enumeration(container); + } + + /** + * Smart Enumeration creation helper with custom converter. + * + * Creates the enumeration with the element type specified by the + * enumerated_type_of policy. To specify the element type explicitly, use + * smart_enumeration directly. + * + * \tparam ET Enumeration Type e.g. IEnumUnknown. + * \tparam SmartPtr Smart pointer (inferred from @a container parameter). + * \tparam CONVERTER Converter type (inferred from @a converter). + * + * \param container Smart pointer to an STL collection + * e.g. auto_ptr. + * \param converter Custom converter. + */ + template + inline com_ptr make_smart_enumeration( + SmartPtr container, const CONVERTER& converter) + { + typedef typename enumerated_type_of::is T; + return new smart_enumeration( + container, converter); + } +} + +#endif diff --git a/lib/local/CamCom/comet/static_assert.h b/lib/local/CamCom/comet/static_assert.h new file mode 100644 index 0000000..b0bfe44 --- /dev/null +++ b/lib/local/CamCom/comet/static_assert.h @@ -0,0 +1,54 @@ +/** \file + Provide compile-time asserts. + See www.boost.org for most recent version including documentation. + \author John Maddock + */ +/* + * Copyright 2000, 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_STATIC_ASSERT_H +#define COMET_STATIC_ASSERT_H + +#include + +// (C) Copyright John Maddock 2000. +// Permission to copy, use, modify, sell and +// distribute this software is granted provided this copyright notice appears +// in all copies. This software is provided "as is" without express or implied +// warranty, and with no claim as to its suitability for any purpose. + +// See http://www.boost.org for most recent version including documentation. + +/* + Revision history: + 02 August 2000 + Initial version. +*/ + +namespace comet { + namespace impl { + + template struct COMPILE_TIME_ASSERTION_FAILURE; + + template <> struct COMPILE_TIME_ASSERTION_FAILURE{}; + + template struct ct_assert_test{}; + + } +} + +#define COMET_STATIC_ASSERT( B ) typedef ::comet::impl::ct_assert_test)> comet_static_assert_typedef_ + +#endif diff --git a/lib/local/CamCom/comet/stl.h b/lib/local/CamCom/comet/stl.h new file mode 100644 index 0000000..a6ac7c0 --- /dev/null +++ b/lib/local/CamCom/comet/stl.h @@ -0,0 +1,69 @@ +/** \file + Provide STL extensions. + */ +/* + * Copyright 2001 Sofus Mortensen + * Copyright 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_STL_H +#define COMET_STL_H + +#include + +#include + +// add identity, select1st, and select2nd. +#if !defined(__SGI_STL_PORT) && !defined(__MINGW32__) +namespace std { + /** \internal + */ + template struct identity : public unary_function { + T operator()(const T& t) { return t; } + }; + + /** \internal + */ + template struct select1st : public unary_function { + typename T::first_type operator()(const T& t) { return t.first; } + }; + + /** \internal + */ + template struct select2nd : public unary_function { + typename T::second_type operator()(const T& t) { return t.second; } + }; +} +#else +#include +#endif + +template class delete_fun : public std::unary_function { + public: + void operator()(T& x) { delete x; } +}; + +template class delete2nd_fun : public std::unary_function { + public: + void operator()(T& x) { delete x.second; } +}; + +template class delete1st_fun : public std::unary_function { + public: + void operator()(T& x) { delete x.first; } +}; + + + +#endif diff --git a/lib/local/CamCom/comet/stl_enum.h b/lib/local/CamCom/comet/stl_enum.h new file mode 100644 index 0000000..7537b2d --- /dev/null +++ b/lib/local/CamCom/comet/stl_enum.h @@ -0,0 +1,188 @@ +/** \file + * Implement _NewEnum style classes and iterators. + */ +/* + * Copyright 2000 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_STL_ENUM_H +#define COMET_STL_ENUM_H + +#include + +#include +#include +#include +#include + +namespace comet { + + namespace impl { + + template + class stl_enum_source + { + public: + typedef typename Collection::const_iterator const_iterator; + + explicit stl_enum_source( + const Collection& container, com_ptr outer) + : outer_(outer), container_(container), it_(begin()) {} + + const_iterator begin() + { + return container_.begin(); + } + + const_iterator end() + { + return container_.end(); + } + + const_iterator& current() + { + return it_; + } + + private: + + // Not copy-assignable + stl_enum_source& operator=(const stl_enum_source&); + + com_ptr outer_; + const Collection& container_; + const_iterator it_; + }; + + } + + /** \class stl_enumeration_t enum.h comet/enum.h + * Implements _NewEnum style COM object. + * \param Itf Enumeration Interface. + * \param C STL Style container. + * \param T Iteration Element type (VARIANT) + * \param CONVERTER Converts container element to \p T type. (std::identity) + * \sa stl_enumeration create_enum + */ + template< + typename Itf, typename C, typename T=VARIANT, + typename CONVERTER=std::identity, + typename TH=::IUnknown> + class stl_enumeration_t : + public impl::enumeration< + Itf, T, CONVERTER, impl::stl_enum_source > + { + public: + + stl_enumeration_t( + const C& container, TH* outer=0, + const CONVERTER& converter=CONVERTER()) + : enumeration( + impl::stl_enum_source(container, outer), converter) {} + + private: + stl_enumeration_t(const stl_enumeration_t&); + stl_enumeration_t& operator=(const stl_enumeration_t&); + }; + + /** + * STL Enumeration creation helper. + * + * Creates the enumeration with the element type specified by the + * enumerated_type_of policy. To specify the element type directly, use + * stl_enumeration_t. + * + * \param ET Enumeration Type e.g. IEnumUnknown. + */ + template + struct stl_enumeration + { + + /** Auto-Create a _NewEnum enumerator from an STL container. + * No contained object. + * \param container STL Container. + */ + template + static com_ptr create(const C& container) + { + typedef typename enumerated_type_of::is T; + typedef std::identity + CONVERTER; + return new stl_enumeration_t( + container, 0); + } + + /** Auto-Create a _NewEnum enumerator from an STL container. + * \param container STL Container. + * \param th Outer or \e this pointer. + */ + template + static com_ptr create(const C& container, TH* th) + { + typedef typename enumerated_type_of::is T; + typedef std::identity + CONVERTER; + return new stl_enumeration_t( + container, th); + } + + /** Auto-Create a _NewEnum enumerator from an STL container, specifying + * a converter. + * \param container STL Container. + * \param th Outer or \e this pointer. + * \param converter Converter type (convert Container element to + * iterator interface element types). + */ + template + static com_ptr create( + const C& container, TH* th, const CONVERTER& converter) + { + typedef typename enumerated_type_of::is T; + return new stl_enumeration_t( + container, th, converter); + } + }; + + /*! Creates IEnumVARIANT enumeration of a STL container. + * \param container STL Container. + * \param th Outer or \e this pointer. + \code + com_ptr get__NewEnum() { + return create_enum( collection_, this ); + } + \endcode + * \relates stl_enumeration + */ + template + com_ptr create_enum(const C& container, TH* th = 0) + { + return stl_enumeration::create(container, th); + } + + //! Creates IEnumVARIANT enumeration of a STL container with a converter. + /*! \param container STL Container. + * \param th Outer or \e this pointer. + * \param converter Converter type (convert Container element to VARIANT) + * \sa ptr_converter ptr_converter_select1st ptr_converter_select2nd + * \relates stl_enumeration + */ + template + com_ptr create_enum(const C& container, TH* th, CONVERTER converter) + { + return stl_enumeration::create(container, th, converter); + } + +} + +#endif diff --git a/lib/local/CamCom/comet/stream.h b/lib/local/CamCom/comet/stream.h new file mode 100644 index 0000000..7d91c43 --- /dev/null +++ b/lib/local/CamCom/comet/stream.h @@ -0,0 +1,1566 @@ +/** \file + * IStream adapters. + */ +/* + * Copyright (C) 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_STREAM_H +#define COMET_STREAM_H + +#include + +#include // bstr_t +#include // com_error +#include // COMET_CATCH_CLASS_INTERFACE_BOUNDARY +#include // simple_object + +#include // assert +#include +#include // numeric_limits +#include + +#include // StringCbCopyW + +namespace comet { + +namespace impl { + + static const size_t COPY_CHUNK_SIZE = 512; + + /** + * Used to clear stream failure on exiting a scope. + * + * Useful when trying an operation and converting any failure to an + * exception. In that case there is no need for the stream object to + * also retain evidence of the failure. + * + * Note, only clears `failbit`. `eofbit` is left alone as it is a + * valid consequence of operations performed by the wrapper. `badbit` is + * also left as these errors are unrecoverable and therefore the + * stream is as good as dead; a caller of the unwrapped stream needs + * to know that. + */ + template + class stream_failure_cleanser + { + public: + explicit stream_failure_cleanser(Stream& stream) + : m_stream(stream) + {} + + ~stream_failure_cleanser() throw() + { + try + { + m_stream.clear(m_stream.rdstate() & ~std::ios_base::failbit); + } + catch (const std::exception&) + {} + } + + private: + stream_failure_cleanser(const stream_failure_cleanser&); + stream_failure_cleanser& operator=(const stream_failure_cleanser&); + + Stream& m_stream; + }; + + // These do_read/write helper functions dispatch the stream-type specific code + // so that we only need one class to implement all the stream adapters + + inline void do_istream_read( + std::istream& stream, void* buffer, ULONG buffer_size_in_bytes, + ULONG& bytes_read_out) + { + typedef std::istream stream_type; + + // + // IMPORTANT: The bytes_read_out count must be correct even in the + // error case, EVEN if that error is an exception, because the caller + // can treat an error as EOF (see Read method docs). + // + // However, in the error case it is acceptable to make the read count + // smaller than the actual number of bytes read (e.g. 0) because the + // caller is losing the unread part of the stream anyway. Losing a few + // extra bytes that are already in the buffer but not declared valid + // by the byte count will not make the situation worse. + + bytes_read_out = 0U; + + stream.read( + reinterpret_cast(buffer), + buffer_size_in_bytes / sizeof(std::istream::char_type)); + + // Any failure not caused by eof is a failure. + // Badbit is always a failure because, even if we are at eof, the stream + // encountered a problem that needs reporting. + if (stream.bad() || (stream.fail() && !stream.eof())) + { + throw std::runtime_error("Reading from stream failed"); + } + else + { + if (stream.gcount() >= 0 && + // temp conversion to unsigned larger than ULONG to catch + // values larger than ULONG + static_cast(stream.gcount()) < + (std::numeric_limits::max)() / + sizeof(std::istream::char_type)) + { + bytes_read_out = static_cast( + stream.gcount() * sizeof(std::istream::char_type)); + } + + assert(stream.eof() || bytes_read_out == buffer_size_in_bytes); + } + } + + inline void do_ostream_write( + std::ostream& stream, const void* buffer, ULONG buffer_size_in_bytes, + ULONG& bytes_written_out) + { + // If there is an error we cannot get a reliable write count, even + // if we were to use stream.rdbuf()->sputn, because the failure + // might well happen during the flush operation which doesn't let + // us find out how much was flushed before failing. + + typedef std::ostream stream_type; + + bytes_written_out = 0U; + + stream.write( + reinterpret_cast(buffer), + buffer_size_in_bytes / sizeof(std::ostream::char_type)); + + try + { + stream.flush(); + } + catch (const std::exception& e) + { + throw com_error(e.what(), STG_E_MEDIUMFULL); + } + + if (stream.good()) + { + bytes_written_out = buffer_size_in_bytes; + } + else + { + throw com_error("Writing to stream failed", STG_E_MEDIUMFULL); + } + } + + /** Ensure read position updated even in case of exception */ + template + class read_position_finaliser + { + public: + read_position_finaliser( + Stream& stream, std::streampos& new_position_out) + : m_stream(stream), m_new_position_out(new_position_out) + {} + + ~read_position_finaliser() throw() + { + try + { + // we still want the read position if previous op failed + m_stream.clear(); + + std::streampos new_position = m_stream.tellg(); + if (m_stream) + { + m_new_position_out = new_position; + } + else + { + m_new_position_out = std::streampos(); + } + } + catch (...) + { + // We tried. Nothing else we can do + // + // We likely ended up here in the exception unwinding of a + // failed seek because a non-seekable stream chose to let us + // know by throwing an exception from the streambuf + // (e.g. Boost.IOStream). Non-seekable is also non-tellable so + // telgp does the same thing. + // + // We have prevent this exception propagating else we get an + // thrown while unwinding another exception causing terminate() + m_new_position_out = std::streampos(-1); + } + } + + private: + + read_position_finaliser(const read_position_finaliser&); + read_position_finaliser& operator=(const read_position_finaliser&); + + Stream& m_stream; + std::streampos& m_new_position_out; + }; + + /** Ensure write position updated even in case of exception */ + template + class write_position_finaliser + { + public: + write_position_finaliser( + Stream& stream, std::streampos& new_position_out) + : m_stream(stream), m_new_position_out(new_position_out) + {} + + ~write_position_finaliser() throw() + { + try + { + // we still want the write position if previous op failed + m_stream.clear(); + + std::streampos new_position = m_stream.tellp(); + if (m_stream) + { + m_new_position_out = new_position; + } + else + { + m_new_position_out = std::streampos(); + } + } + catch (...) + { + // We tried. Nothing else we can do + // + // We likely ended up here in the exception unwinding of a + // failed seek because a non-seekable stream chose to let us + // know by throwing an exception from the streambuf + // (e.g. Boost.IOStream). Non-seekable is also non-tellable so + // tellp does the same thing. + // + // We have prevent this exception propagating else we get an + // thrown while unwinding another exception causing terminate() + m_new_position_out = std::streampos(-1); + } + } + + private: + write_position_finaliser(const write_position_finaliser&); + write_position_finaliser& operator=(const write_position_finaliser&); + + Stream& m_stream; + std::streampos& m_new_position_out; + }; + + /** + * Copies `streampos` out-parameter to ULARGE_INTEGER out parameter + * in the face of exceptions. + * + * Using this class means you can concentrate on keeping the `streampos` + * variable updated, confident in the knowledge the the COM-interface + * ULARGE_INTEGER parameter will eventually be updated to match it, + * no matter what. + * + * Assumes that the source out parameter is guaranteed to be valid at + * all times. Valid doesn't necessarily mean correct but that it always + * contains the value we want to set the out parameter to, even if that is + * wrong (for instance failure while calculating correct position). + */ + class position_out_converter + { + public: + + position_out_converter( + std::streampos& source_out_parameter, + ULARGE_INTEGER* destination_out_parameter) + : + m_source(source_out_parameter), + m_destination(destination_out_parameter) {} + + ~position_out_converter() + { + if (m_destination) + { + try + { + // Convert to streamoff because streampos may not + // be an integer. streamoff is guaranteed to be. + std::streamoff offset_from_beginning = m_source; + if (offset_from_beginning < 0) + { + // Invalid offset, for example seeking not supported + // The error itself is dealt with right after seeking + // so this class just has to convert it to something + // reasonable for an unsigned value + m_destination->QuadPart = 0U; + } + else + { + m_destination->QuadPart = offset_from_beginning; + } + } + catch(const std::exception&) + { + // Only way this can happen is if streampos refuses to + // convert to streamoff in which case we really are screwed. + m_destination->QuadPart = 0U; + } + } + } + + private: + position_out_converter(const position_out_converter&); + position_out_converter& operator=(const position_out_converter&); + + std::streampos& m_source; + ULARGE_INTEGER* m_destination; + }; + + /** + * Increments a total counter with an increment are end of scope, + * regardless of how that scope is ended. + * + * Assumes the increment parameter is valid at all times. + */ + class byte_count_incrementer + { + public: + byte_count_incrementer( + ULARGE_INTEGER* total, ULONG& increment) + : m_total(total), m_increment(increment) {} + + ~byte_count_incrementer() + { + if (m_total) + { + m_total->QuadPart += m_increment; + } + } + + private: + + byte_count_incrementer(const byte_count_incrementer&); + byte_count_incrementer& operator=(const byte_count_incrementer&); + + ULARGE_INTEGER* m_total; + ULONG& m_increment; + }; + + template + class position_resetter + { + public: + position_resetter(StreamTraits& traits, std::streampos position) + : + m_traits(traits), m_position(position) {} + + ~position_resetter() + { + try + { + std::streampos new_position; + m_traits.do_seek( + m_position, std::ios_base::beg, new_position); + + assert(new_position == m_position); + } + catch (const std::exception&) + {} + } + + private: + position_resetter(const position_resetter&); + position_resetter& operator=(const position_resetter&); + + StreamTraits& m_traits; + std::streampos m_position; + }; + + /** + * Calculate offset of end of stream from start. + */ + template + inline std::streamoff stream_size(StreamTraits& traits) + { + position_resetter(traits, traits.do_tell()); + + std::streampos new_position; + traits.do_seek(0, std::ios_base::end, new_position); + + return new_position; + } + + template + class stream_traits; + + template + class stream_traits + { + public: + explicit stream_traits(Stream& stream) : m_stream(stream) {} + + void do_read( + void* buffer, ULONG buffer_size_in_bytes, + ULONG& bytes_read_out) + { + do_istream_read( + m_stream, buffer, buffer_size_in_bytes, bytes_read_out); + } + + void do_write( + const void* /*buffer*/, + ULONG /*buffer_size_in_bytes*/, ULONG& bytes_written_out) + { + bytes_written_out = 0U; + throw com_error( + "std::istream does not support writing", STG_E_ACCESSDENIED); + } + + void do_seek( + std::streamoff offset, std::ios_base::seekdir way, + std::streampos& new_position_out) + { + read_position_finaliser position_out_updater( + m_stream, new_position_out); + + if (!m_stream.seekg(offset, way)) + { + throw std::runtime_error("Unable to change read position"); + } + } + + std::streampos do_tell() + { + std::streampos pos = m_stream.tellg(); + if (!m_stream) + { + throw std::runtime_error("Stream position unavailable"); + } + + return pos; + } + + void do_flush() + { + throw com_error( + "std::istream does not support committing data", + STG_E_ACCESSDENIED); + } + + private: + stream_traits(const stream_traits&); + stream_traits& operator=(const stream_traits&); + + Stream& m_stream; + }; + + template + class stream_traits + { + public: + explicit stream_traits(Stream& stream) : m_stream(stream) {} + + void do_read( + void* /*buffer*/, + ULONG /*buffer_size_in_bytes*/, ULONG& bytes_read_out) + { + bytes_read_out = 0U; + throw com_error( + "std::ostream does not support reading", STG_E_ACCESSDENIED); + } + + void do_write( + const void* buffer, + ULONG buffer_size_in_bytes, ULONG& bytes_written_out) + { + do_ostream_write( + m_stream, buffer, buffer_size_in_bytes, bytes_written_out); + } + + void do_seek( + std::streamoff offset, std::ios_base::seekdir way, + std::streampos& new_position_out) + { + write_position_finaliser position_out_updater( + m_stream, new_position_out); + + if (!m_stream.seekp(offset, way)) + { + throw std::runtime_error("Unable to change write position"); + } + } + + std::streampos do_tell() + { + std::streampos pos = m_stream.tellp(); + if (!m_stream) + { + throw std::runtime_error("Stream position unavailable"); + } + + return pos; + } + + void do_flush() + { + if (!m_stream.flush()) + { + throw std::runtime_error( + "Unable to flush buffer to output sequence"); + } + } + + private: + stream_traits(const stream_traits&); + stream_traits& operator=(const stream_traits&); + + Stream& m_stream; + }; + + template + class stream_traits + { + private: + + enum last_stream_operation + { + read, + write + }; + + public: + explicit stream_traits(Stream& stream) + : m_stream(stream), m_last_op(read) {} + + void do_read( + void* buffer, ULONG buffer_size_in_bytes, ULONG& bytes_read_out) + { + bytes_read_out = 0U; + + // sync reading position with writing position, which was the last + // one used and is allowed to be different in C++ streams but + // not COM IStreams + if (m_last_op == write) + { + m_stream.seekg(m_stream.tellp()); + // We ignore errors syncing the positions as even iostreams may + // not be seekable at all + + m_last_op = read; + } + assert(m_last_op == read); + + do_istream_read( + m_stream, buffer, buffer_size_in_bytes, bytes_read_out); + } + + void do_write( + const void* buffer, ULONG buffer_size_in_bytes, + ULONG& bytes_written_out) + { + bytes_written_out = 0U; + + // sync writing position with reading position, which was the last + // one used and is allowed to be different in C++ streams but + // not COM IStreams + if (m_last_op == read) + { + m_stream.seekp(m_stream.tellg()); + // We ignore errors syncing the positions as even iostreams may + // not be seekable at all + + m_last_op = write; + } + assert(m_last_op == write); + + do_ostream_write( + m_stream, buffer, buffer_size_in_bytes, bytes_written_out); + } + + void do_seek( + std::streamoff offset, std::ios_base::seekdir way, + std::streampos& new_position_out) + { + + // Unlike with do_read/do_write, we do not ignore errors when + // trying to sync the read/write positions as, if the + // first seek succeeded, we know the stream supports + // seeking. Therefore a later error is really an error. + + if (m_last_op == read) + { + read_position_finaliser position_out_updater( + m_stream, new_position_out); + + if (!m_stream.seekg(offset, way)) + { + throw std::runtime_error("Unable to change read position"); + } + else + { + if (!m_stream.seekp(m_stream.tellg())) + { + throw std::runtime_error( + "Unable to synchronise write position"); + } + } + } + else + { + write_position_finaliser position_out_updater( + m_stream, new_position_out); + + if (!m_stream.seekp(offset, way)) + { + throw std::runtime_error("Unable to change write position"); + } + else + { + if (!m_stream.seekg(m_stream.tellp())) + { + throw std::runtime_error( + "Unable to synchronise read position"); + } + } + } + } + + std::streampos do_tell() + { + std::streampos pos; + if (m_last_op == read) + { + pos = m_stream.tellg(); + } + else + { + pos = m_stream.tellp(); + } + + if (!m_stream) + { + throw std::runtime_error("Stream position unavailable"); + } + + return pos; + } + + void do_flush() + { + if (!m_stream.flush()) + { + throw std::runtime_error( + "Unable to flush buffer to output sequence"); + } + } + + private: + stream_traits(const stream_traits&); + stream_traits& operator=(const stream_traits&); + + Stream& m_stream; + last_stream_operation m_last_op; + }; + + /** + * Wrap COM IStream interface around C++ IOStream. + * + * Unlike C++ streams which may have separate read and write positions that + * move independently, COM IStreams assume a single combined read/write head. + * Therefore this wrapper always starts the next read or write operation + * from the where the last operation finished, regardless of whether that + * operation was a call to `Read` or `Write`. + * + * @note This only applies for as long as the read/write positions are + * modified only via this wrapper. If the positions are modified by + * directly on the underlying IOStream, it is undefined whether the + * starting point for the next call to `Read`/`Write` is syncronised + * with the end of the previous operation. + * + * If operations on the inner stream results in failure (the `failbit` + * is set), this is communicated via the COM-interface return code. The + * `failbit` is cleared before the call returns. This allows further + * wrapper methods to be called without having the clear the bit directly + * on the underlying stream. Fatal errors (`badbit`) and end-of-file + * (`eofbit`) are left unchanged and remain visible in the underlying + * stream. + */ + template + class adapted_stream : public simple_object + { + private: + + typedef impl::stream_traits< + Stream, + type_traits::super_sub_class::result, + type_traits::super_sub_class::result + > stream_traits_type; + + public: + + adapted_stream(Stream& stream, const bstr_t& optional_name) + : m_stream(stream), m_traits(stream), + m_optional_name(optional_name) {} + + /** + * Fill the given buffer with data read from the wrapped C++ stream. + * + * @param [in] buffer + * Destination of bytes to be read. + * + * @param [in] buffer_size + * Size of `buffer` and, therefore, the maximum number of bytes + * this method will read. The method may read fewer than this + * number of bytes if the request cannot be fulfilled + * (e.g. end-of-file, error), in which case only the portion of + * `buffer` up to `*read_count_out` bytes from the start + * may be considered valid. + * + * @param [out] read_count_out + * Number of bytes actually read into `buffer`. In other words, + * the extent of the valid bytes in `buffer` once this method + * returns. This value is correct whether the method returns + * success or an error code. + * + * @returns + * Error code indicating the success or failure of the method. + * @retval `S_OK` + * If `buffer` was completely filled. + * @retval `S_FALSE` if EOF reached before `buffer` was filled. + * `*read_count_out` gives the number of bytes that were read. + * @retval a COM error code + * If there was a read error. + * + * Error behaviour rationale + * ------------------------- + * + * MSDN says that, if `read_count_out` < `buffer_size`, callers + * should treat both error codes and success codes as meaning + * the end-of-file was reached. However, doing so means they will be + * unable to distinguish EOF from a genuine read error. Therefore, + * we make the stronger guarantee that only `S_FALSE` means EOF + * while an error code always indicates a read error. + * To accommodate callers who follow the documentation on MSDN, + * we ensure that the read-count out-variable is correct even if the + * wrapped stream encountered an error (`failbit`, `badbit`) or + * threw an exception, because the caller may use the byte-count to + * decide which bytes of the partial read are valid. + * + * In the error case, `*read_count_out` may be less than the number + * of bytes actually read from the wrapped stream. This is for + * performance reasons: unless we read from the wrapped stream one + * byte at a time, there is no way to calculate the the exact number + * of bytes read if an exception is thrown part way through reading. + * Byte-by-byte reading is hopelessly slow for some applications, such + * as an unbuffered stream over a network, so our behaviour is a + * pragmatic compromise. We believe it is within the (vaguely) + * documented behaviour of `IStream` to treat the out-count in this way + * for error cases as the count still delimits a valid region of bytes. + */ + virtual HRESULT STDMETHODCALLTYPE Read( + void* buffer, ULONG buffer_size, ULONG* read_count_out) + { + impl::stream_failure_cleanser state_resetter(m_stream); + + if (read_count_out) + { + *read_count_out = 0U; + } + + try + { + if (!buffer) + { + throw com_error("No buffer given", STG_E_INVALIDPOINTER); + } + + // We use a dummy read count location if one is not given so + // that do_read can keep it updated correctly even if + // do_read throws an exception. + ULONG dummy_read_count = 0U; + if (!read_count_out) + { + read_count_out = &dummy_read_count; + } + + m_traits.do_read(buffer, buffer_size, *read_count_out); + + if (*read_count_out < buffer_size) + { + assert(m_stream.eof()); + + return S_FALSE; + } + else + { + assert(*read_count_out == buffer_size); + assert(m_stream.good()); + return S_OK; + } + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Read", "adapted_stream"); + } + + /** + * Write the given data to the wrapped C++ stream's controlled sequence. + * + * The wrapped stream is flushed before this method returns to ensure + * the data is written to the controlled sequence (and any associated + * errors are detected) rather than just to the stream's buffer. + * Therefore, best performance is obtained if this method is called with + * as much data as possible for the fewest number of flushes. + * + * @param [in] data + * Bytes to write to the controlled sequence. + * + * @param [in] data_size + * Size of `data` and the number of bytes to write. + * + * @param [out] written_count_out + * Number of bytes guaranteed to be written to the controlled + * sequence. This will be `data_size` if writing succeeded. If + * an error occurred, this may be fewer than the actual number of + * bytes written to the sequence. + * + * @returns + * Error code indicating the success or failure of the method. + * @retval `S_OK` + * If `data` was completely written to the wrapped stream's + * controlled sequence. + * @retval a COM error code + * If there was a write error. + * + * Error behaviour rationale + * ------------------------- + * + * If writing succeeds, `*written_count_out` equals `data_size`. If + * writing encountered an error `*written_count_out` will be set to zero, + * even if some bytes were written out. We do this for performance + * reasons: unless we write the data one byte at a time to the wrapped + * stream _and flush the stream after each byte_, the C++ streams don't + * provide a way to count the exact number of bytes written to the + * stream's controlled sequence. Byte-by-byte writing is hopelessly + * slow for some applications, such as a stream over a network, so our + * behaviour is a pragmatic compromise. + * We believe it is within the (vaguely) documented behaviour of + * `IStream` to treat the out-count in this way for error cases. + * It may seem strange that this method even has an out-count if it + * was no intended to be meaningful in the error case (the count would + * be equal to `data_size` in the success case), however we believe + * it was only intended to be meaningful for non-blocking writes to + * asynchronous stream (`E_PENDING` would be returned) which this + * wrapper is not (see http://bit.ly/1hZGy1L). + */ + virtual HRESULT STDMETHODCALLTYPE Write( + const void* data, ULONG data_size, ULONG* written_count_out) + { + stream_failure_cleanser state_resetter(m_stream); + + if (written_count_out) + { + *written_count_out = 0U; + } + + try + { + if (!data) + { + throw com_error("Buffer not given", STG_E_INVALIDPOINTER); + } + + // We use a dummy written count out location if one is not + // given so that do_write can keep it updated correctly even if + // do_write throws an exception. + ULONG dummy_written_count = 0U; + if (!written_count_out) + { + written_count_out = &dummy_written_count; + } + + m_traits.do_write(data, data_size, *written_count_out); + + if (*written_count_out < data_size) + { + throw com_error( + "Unable to complete write operation", STG_E_MEDIUMFULL); + } + else + { + assert(*written_count_out == data_size); + return S_OK; + } + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Write", "adapted_stream"); + } + + virtual HRESULT STDMETHODCALLTYPE Seek( + LARGE_INTEGER offset, DWORD origin, + ULARGE_INTEGER* new_position_out) + { + stream_failure_cleanser state_resetter(m_stream); + + std::streampos new_stream_position_out = std::streampos(); + impl::position_out_converter out_param_guard( + new_stream_position_out, new_position_out); + + try + { + std::ios_base::seekdir way; + if (origin == STREAM_SEEK_CUR) + { + way = std::ios_base::cur; + } + else if (origin == STREAM_SEEK_SET) + { + way = std::ios_base::beg; + } + else if (origin == STREAM_SEEK_END) + { + way = std::ios_base::end; + } + else + { + throw com_error( + "Unrecognised stream seek origin", + STG_E_INVALIDFUNCTION); + } + + if (offset.QuadPart > + (std::numeric_limits::max)()) + { + throw com_error( + "Seek offset too large", STG_E_INVALIDFUNCTION); + } + else if (offset.QuadPart < + (std::numeric_limits::min)()) + { + throw com_error( + "Seek offset too small", STG_E_INVALIDFUNCTION); + } + else + { + try + { + m_traits.do_seek( + static_cast(offset.QuadPart), + way, new_stream_position_out); + } + // Translate logic_errors (and subtypes) as they + // correspond (very roughly) to the kinds of errors + // for which IStream::Seek is documented to return + // STG_E_INVALIDFUNCTION + catch(const std::logic_error& e) + { + throw com_error(e.what(), STG_E_INVALIDFUNCTION); + } + + return S_OK; + } + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Seek", "adapted_stream"); + } + + /** + * Expand stream to given size. + * + * The will only increase a stream's size if it is smaller than the + * given size. If the stream size is already equal or bigger, it + * remains unchanged. + * + * Not all streams support changing size. In particular, `istream`s + * do not support this method. + */ + virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER new_size) + { + try + { + stream_failure_cleanser state_resetter(m_stream); + + position_resetter resetter( + m_traits, m_traits.do_tell()); + + if (new_size.QuadPart > 0) + { + ULARGE_INTEGER new_end_position; + new_end_position.QuadPart = new_size.QuadPart - 1; + + std::streamoff new_offset; + if ((std::numeric_limits::max)() < 0) + { + assert(!"Purely negative number!"); + throw com_error( + "Seek offset too large", STG_E_INVALIDFUNCTION); + } + else if (new_end_position.QuadPart > + static_cast( + (std::numeric_limits::max)())) + { + throw com_error( + "Seek offset too large", STG_E_INVALIDFUNCTION); + } + else + { + new_offset = static_cast( + new_end_position.QuadPart); + } + + std::streamoff existing_end = stream_size(m_traits); + + if (new_offset > existing_end) + { + std::streampos new_position; + m_traits.do_seek( + new_offset, std::ios_base::beg, new_position); + + assert(std::streamoff(new_position) == new_offset); + + // Force the stream to expand by writing NUL at + // new extent + ULONG bytes_written; + m_traits.do_write("\0", 1, bytes_written); + assert(bytes_written == 1); + } + } + + return S_OK; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("SetSize", "adapted_stream"); + } + + virtual HRESULT STDMETHODCALLTYPE CopyTo( + IStream* destination, ULARGE_INTEGER amount, + ULARGE_INTEGER* bytes_read_out, ULARGE_INTEGER* bytes_written_out) + { + stream_failure_cleanser state_resetter(m_stream); + + ULARGE_INTEGER dummy_read_out; + if (!bytes_read_out) + { + bytes_read_out = &dummy_read_out; + } + bytes_read_out->QuadPart = 0U; + + ULARGE_INTEGER dummy_written_out; + if (!bytes_written_out) + { + bytes_written_out = &dummy_written_out; + } + bytes_written_out->QuadPart = 0U; + + try + { + + if (!destination) + { + throw com_error( + "Destination stream not given", STG_E_INVALIDPOINTER); + } + + std::vector buffer(COPY_CHUNK_SIZE); + + // Perform copy operation in chunks COPY_CHUNK bytes big + // The chunk must be less than the biggest ULONG in size + // because of the limits of the Read/Write API. Of course + // it will be in any case as it would be insane to use more + // memory than that, but we make sure anyway using the first + // min comparison + do { + ULONG next_chunk_size = + static_cast( + min( + (std::numeric_limits::max)(), + min( + amount.QuadPart - bytes_read_out->QuadPart, + buffer.size()))); + + ULONG read_this_round = 0U; + ULONG written_this_round = 0U; + + // These two take care of updating the total on each pass + // round the loop as well as on termination, exception or + // natural. + // + // The means the out counts are valid even in the failure + // case. MSDN says they don't have to be but, as we can, + // we might as well + impl::byte_count_incrementer read_incrementer( + bytes_read_out, read_this_round); + + impl::byte_count_incrementer write_incrementer( + bytes_written_out, written_this_round); + + m_traits.do_read( + &buffer[0], next_chunk_size, read_this_round); + HRESULT hr = destination->Write( + &buffer[0], read_this_round, &written_this_round); + if (FAILED(hr)) + { + com_error_from_interface(destination, hr); + } + + if (read_this_round < next_chunk_size) + { + // EOF + break; + } + + } while (amount.QuadPart > bytes_read_out->QuadPart); + + return S_OK; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("CopyTo", "adapted_stream"); + } + + /** + * Flush data in the buffer to the controlled output sequence. + * + * This implementation doesn't support transactions so ignores + * the commit flags. + * + * Fails if called with an istream. + */ + virtual HRESULT STDMETHODCALLTYPE Commit(DWORD /*commit_flags*/) + { + stream_failure_cleanser state_resetter(m_stream); + + try + { + m_traits.do_flush(); + return S_OK; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Commit", "adapted_stream"); + } + + virtual HRESULT STDMETHODCALLTYPE Revert() + { + try + { + throw com_error("Transactions not supported", E_NOTIMPL); + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Revert", "adapted_stream"); + } + + virtual HRESULT STDMETHODCALLTYPE LockRegion( + ULARGE_INTEGER /*offset*/, ULARGE_INTEGER /*extent*/, + DWORD /*lock_type*/) + { + try + { + throw com_error( + "Locking not supported", STG_E_INVALIDFUNCTION); + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("LockRegion", "adapted_stream"); + } + + virtual HRESULT STDMETHODCALLTYPE UnlockRegion( + ULARGE_INTEGER /*offset*/, ULARGE_INTEGER /*extent*/, + DWORD /*lock_type*/) + { + try + { + throw com_error( + "Locking not supported", STG_E_INVALIDFUNCTION); + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("UnlockRegion", "adapted_stream"); + } + + /** + * Get some metadata about the stream. + * + * The name returned (if requested) is the name optionally given + * in the constructor. If not given in the constructor, an + * empty string is returned. + * + * Some fields, such as the date fields, are not valid as that data + * is not available for IOStreams. + */ + virtual HRESULT STDMETHODCALLTYPE Stat( + STATSTG* attributes_out, DWORD stat_flag) + { + try + { + if (!attributes_out) + { + throw com_error("STATSTG not given", STG_E_INVALIDPOINTER); + } + + *attributes_out = STATSTG(); + + attributes_out->type = STGTY_STREAM; + + try + { + attributes_out->cbSize.QuadPart = + impl::stream_size(m_traits); + } + catch (const std::exception&) + { + // Swallow non-bad errors as many stream are not seekable and + // therefore not sizeable + if (m_stream.bad()) + throw; + } + + // Must be last as, after we detach, any failure will leak + // memory + if (!(stat_flag & STATFLAG_NONAME)) + { + // pwcsName is NOT a BSTR. It's a null-terminated OLESTR + // managed by the COM memory allocator + + size_t buffer_size = m_optional_name.size() + 1; + size_t buffer_size_in_bytes = + buffer_size * sizeof(wchar_t); + + attributes_out->pwcsName = static_cast( + ::CoTaskMemAlloc(buffer_size_in_bytes)); + if (!attributes_out->pwcsName) + { + throw com_error( + "Unable to allocate memory for stream name", + STG_E_INSUFFICIENTMEMORY); + } + + try + { + HRESULT hr = ::StringCbCopyW( + attributes_out->pwcsName, buffer_size_in_bytes, + m_optional_name.c_str()); + if (FAILED(hr)) + { + throw com_error( + "Unable to copy stream name to STATSTG", hr); + } + } + catch(...) + { + ::CoTaskMemFree(attributes_out->pwcsName); + throw; + } + } + + return S_OK; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Stat", "adapted_stream"); + } + + /** + * Cloning not supported for IOStreams as they are not copyable. + */ + virtual HRESULT STDMETHODCALLTYPE Clone(IStream** stream_out) + { + if (stream_out) + { + *stream_out = NULL; + } + + try + { + throw com_error( + "Cloning not supported", STG_E_INVALIDFUNCTION); + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY("Clone", "adapted_stream"); + } + + private: + + Stream& m_stream; + stream_traits_type m_traits; + bstr_t m_optional_name; + }; + + template + class adapted_stream_pointer : public simple_object + { + public: + + adapted_stream_pointer(StreamPtr stream, const bstr_t& optional_name) + : m_stream(stream), m_inner(adapt_stream(*m_stream, optional_name)) + {} + + // The forwarded methods must return their HRESULT by throwing and + // catching in order to propagate the IErrorInfo upwards. + + virtual HRESULT STDMETHODCALLTYPE Read( + void* buffer, ULONG buffer_size, ULONG* read_count_out) + { + if (read_count_out) + { + *read_count_out = 0U; + } + + try + { + HRESULT hr = m_inner->Read(buffer, buffer_size, read_count_out); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Read", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE Write( + const void* buffer, ULONG buffer_size, ULONG* written_count_out) + { + if (written_count_out) + { + *written_count_out = 0U; + } + + try + { + HRESULT hr = m_inner->Write( + buffer, buffer_size, written_count_out); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Write", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE Seek( + LARGE_INTEGER offset, DWORD origin, + ULARGE_INTEGER* new_position_out) + { + if (new_position_out) + { + new_position_out->QuadPart = 0U; + } + + try + { + HRESULT hr = m_inner->Seek(offset, origin, new_position_out); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Seek", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER new_size) + { + try + { + HRESULT hr = m_inner->SetSize(new_size); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "SetSize", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE CopyTo( + IStream* destination, ULARGE_INTEGER amount, + ULARGE_INTEGER* bytes_read_out, ULARGE_INTEGER* bytes_written_out) + { + if (bytes_read_out) + { + bytes_read_out->QuadPart = 0U; + } + + if (bytes_written_out) + { + bytes_written_out->QuadPart = 0U; + } + + try + { + HRESULT hr = m_inner->CopyTo( + destination, amount, bytes_read_out, bytes_written_out); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "CopyTo", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE Commit(DWORD commit_flags) + { + try + { + HRESULT hr = m_inner->Commit(commit_flags); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Commit", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE Revert() + { + try + { + HRESULT hr = m_inner->Revert(); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Revert", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE LockRegion( + ULARGE_INTEGER offset, ULARGE_INTEGER extent, DWORD lock_type) + { + try + { + HRESULT hr = m_inner->LockRegion(offset, extent, lock_type); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "LockRegion", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE UnlockRegion( + ULARGE_INTEGER offset, ULARGE_INTEGER extent, DWORD lock_type) + { + try + { + HRESULT hr = m_inner->UnlockRegion(offset, extent, lock_type); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "UnlockRegion", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE Stat( + STATSTG* attributes_out, DWORD stat_flag) + { + if (attributes_out) + { + *attributes_out = STATSTG(); + } + + try + { + HRESULT hr = m_inner->Stat(attributes_out, stat_flag); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Stat", "adapted_stream_pointer"); + } + + virtual HRESULT STDMETHODCALLTYPE Clone(IStream** stream_out) + { + if (stream_out) + { + *stream_out = NULL; + } + + try + { + HRESULT hr = m_inner->Clone(stream_out); + if (FAILED(hr)) + throw com_error_from_interface(m_inner, hr); + + return hr; + } + COMET_CATCH_CLASS_INTERFACE_BOUNDARY( + "Clone", "adapted_stream_pointer"); + } + + private: + + StreamPtr m_stream; + com_ptr m_inner; + }; + +} + +/** + * Wrap COM IStream interface around C++ IOStream. + * + * The caller must ensure that the C++ IOStream remains valid until the + * last reference to the returned wrapper is released. + * + * Unlike C++ streams which may have separate read and write positions that + * move independently, COM IStreams assume a single combined read/write head. + * Therefore this wrapper always starts the next read or write operation + * from the where the last operation finished, regardless of whether that + * operation was a call to `Read` or `Write`. + * + * @note This only applies for as long as the read/write positions are + * modified only via this wrapper. If the positions are modified by + * directly on the underlying IOStream, it is undefined whether the + * starting point for the next call to `Read`/`Write` is syncronised + * with the end of the previous operation. + * + * If operations on the inner stream results in failure (the `failbit` + * is set), this is communicated via the COM-interface return code. The + * `failbit` is cleared before the call returns. This allows further + * wrapper methods to be called without having the clear the bit directly + * on the underlying stream. Fatal errors (`badbit`) and end-of-file + * (`eofbit`) are left unchanged and remain visible in the underlying + * stream. + */ +template +inline com_ptr adapt_stream( + Stream& stream, const bstr_t& optional_name=bstr_t()) +{ + return new impl::adapted_stream(stream, optional_name); +} + +/** + * Wrap COM IStream interface around pointer (usually smart) to C++ IOStream. + * + * If the pointer type is a smart pointer, the caller need not must ensure + * the lifetime of the C++ IOStream exceeds that of the adapter; the smart + * pointer takes care of ensuring this. + * + * The main reason for having this function in addition to `adapt_stream` is + * support the common case where a COM stream is intended to be the sole owner + * of the C++ stream with which it is created. This allows the caller to + * create the IStream and forget about the C++ stream. Using `adapt_stream` + * they would have to manage the lifetime of both. + * + * When we support movable types (C++11 or Boost.Move emulation), this method + * would become unnecessary for this purpose as the C++ stream could simply + * be moved into the adapter + */ +template +inline com_ptr adapt_stream_pointer( + StreamPtr stream_pointer, const bstr_t& optional_name=bstr_t()) +{ + return new impl::adapted_stream_pointer( + stream_pointer, optional_name); +} + +} + +#endif diff --git a/lib/local/CamCom/comet/threading.h b/lib/local/CamCom/comet/threading.h new file mode 100644 index 0000000..a4a79ab --- /dev/null +++ b/lib/local/CamCom/comet/threading.h @@ -0,0 +1,228 @@ +/** \file + * Threading support. + */ +/* + * Copyright 2001-2002 Sofus Mortensen, Mikael Lindgren + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_THREADING_H +#define COMET_THREADING_H + +#include +#include + +#include + +namespace comet { + +/** \class critical_section threading.h comet/threading.h + * wrapper for Win32 CRITICAL_SECTION. + */ +class critical_section { +public: + critical_section() { + ::InitializeCriticalSection(&cs_); + } + + ~critical_section() { + ::DeleteCriticalSection(&cs_); + } + + void enter() const { + ::EnterCriticalSection(&cs_); + } + + void leave() const { + ::LeaveCriticalSection(&cs_); + } + +private: + critical_section(const critical_section&); + critical_section& operator=(const critical_section&); + + mutable CRITICAL_SECTION cs_; +}; + +/** \class auto_cs threading.h comet/threading.h + * Stack based critical-section resource obtaining and releasing. + */ +class auto_cs { +public: + explicit auto_cs(const critical_section& cs) : cs_(cs) { + cs_.enter(); + } + + ~auto_cs() { + cs_.leave(); + } + +private: + auto_cs& operator=(const auto_cs&); + auto_cs(const auto_cs&); + + const critical_section& cs_; +}; + +/** \class locking_ptr threading.h comet/threading.h + Locking pointer. + Based on an article on the volatile keyword by Andrei Alexandrescu + See article. + */ +template class locking_ptr { +public: + locking_ptr(volatile T& obj, critical_section& cs) : + pointer_(const_cast(&obj)), + cs_(cs) + { + cs_.enter(); + } + + ~locking_ptr() + { + cs_.leave(); + } + + T& operator*() + { + return *pointer_; + } + + T* operator->() + { + return pointer_; + } + +private: + T* pointer_; + critical_section& cs_; + + locking_ptr(const locking_ptr&); + locking_ptr& operator=(const locking_ptr&); +}; + +class thread +{ +private: + DWORD id_; + auto_handle handle_; + + // declare non-copyable + thread(thread const& ); + thread& operator=(thread const& ); +public: + thread() : id_(0) + {} + + const auto_handle& start() + { + handle_ = auto_attach(::CreateThread(0, 0, &thread::start_proc, this, 0, &id_)); + return handle_; + } + + const auto_handle& handle() const + { + return handle_; + } + + void exit(DWORD exit_code) + { + ::ExitThread(exit_code); + } + + void suspend() + { + ::SuspendThread(handle_); + } + + void resume() + { + ::ResumeThread(handle_); + } + + bool running() + { + DWORD code; + return handle_ && + ::GetExitCodeThread(handle_, &code) && + code == STILL_ACTIVE; + } + + bool wait(DWORD timeout = INFINITE) + { + return ::WaitForSingleObject(handle_, timeout) == WAIT_OBJECT_0; + } + +private: + static DWORD _stdcall start_proc(void* param) + { + return static_cast(param)->thread_main(); + } + + virtual DWORD thread_main() = 0; +}; + +class event +{ +private: + auto_handle handle_; + + // declare non-copyable + event(event const& ); + event& operator=(event const& ); +public: + explicit event(bool initial_state = false) + { + handle_ = auto_attach(::CreateEvent(0, false, initial_state, 0)); + } + + explicit event(const TCHAR* name, bool initial_state = false) + { + handle_ = auto_attach(::CreateEvent(0, false, initial_state, name)); + } + + void set() + { + if (0 == ::SetEvent(handle_)) + { + DWORD err = GetLastError(); + raise_exception(HRESULT_FROM_WIN32(err)); + } + } + + void reset() + { + if (0==::ResetEvent(handle_) ) + { + DWORD err = GetLastError(); + raise_exception(HRESULT_FROM_WIN32(err)); + } + } + + bool wait(DWORD timeout = INFINITE) + { + return ::WaitForSingleObject(handle_, timeout) == WAIT_OBJECT_0; + } + + bool is_set() + { + return ::WaitForSingleObject(handle_, 0) == WAIT_OBJECT_0; + } + + operator HANDLE() const + { return handle_; } +}; + +} + +#endif diff --git a/lib/local/CamCom/comet/tlbinfo.h b/lib/local/CamCom/comet/tlbinfo.h new file mode 100644 index 0000000..38a4900 --- /dev/null +++ b/lib/local/CamCom/comet/tlbinfo.h @@ -0,0 +1,451 @@ +/** \file + * Wrappers for ITypeLibInfo. + */ +/* + * Copyright 2002 Michael Geddes. + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_TLIBINFO_H +#define COMET_TLIBINFO_H + +#ifdef _SHOW_INC +#pragma message(" #Include " __FILE__) +#endif + +#include +#include +#include + +namespace comet +{ + template<> struct comtype + { + static const IID& uuid() throw() { return IID_IPictureDisp; } + typedef ::IUnknown base; + }; + template<> struct comtype + { + static const IID& uuid() throw() { return IID_ITypeInfo; } + typedef ::IUnknown base; + }; + template<> struct comtype + { + static const IID& uuid() throw() { return IID_ITypeInfo2; } + typedef ::ITypeInfo base; + }; + /*! \addtogroup Interfaces + */ + //@{ + namespace impl + { + /// A class to handle the auto-releaseing of structs returned by by the Typeinfo interfaces. + template< typename B, typename T> + struct tlib_info + { + typedef void (__stdcall B::*RelFunc)(T*); + template< RelFunc RELEASE> + struct typeinfo_attr_base + { + public: + typeinfo_attr_base() : info_(NULL), attrib_(NULL), rc_(NULL) {} + typeinfo_attr_base( const com_ptr &info, T *attrib ) : info_(info),attrib_(attrib),rc_(NULL) + { + if (attrib != NULL) + { + rc_ = new long; + (*rc_)=1; + } + } + typeinfo_attr_base( const typeinfo_attr_base &base) + : info_(base.info_), attrib_(base.attrib_), rc_(base.rc_) + { + ++*rc_; + } + ~typeinfo_attr_base() + { + release(); + } + typeinfo_attr_base &operator =( const typeinfo_attr_base &base) + { + release(); + info_= base.info_; + attrib_= base.attrib_; + rc_ = base.rc_; + ++*rc_; + return *this; + } + void release() + { + if(attrib_ != NULL && rc_ != NULL ) + { + if (0 == --*rc_) + { + (info_.raw()->*RELEASE)( attrib_); + delete rc_; + } + rc_ = NULL; + attrib_ = NULL; + info_ = NULL; + } + } + + + T *operator->() const + { + if( attrib_ ==NULL ) throw com_error(E_POINTER); + return attrib_; + } + bool is_null() const { return attrib_ == NULL; } + protected: + long *rc_; + T *attrib_; + com_ptr info_; + }; + }; + }; + + /// Auto-release wrapper for TYPEATTR. + typedef impl::tlib_info::typeinfo_attr_base< &ITypeInfo::ReleaseTypeAttr > type_attr_t; + /// Auto-release wrapper for FUNCDESC. + typedef impl::tlib_info::typeinfo_attr_base< &ITypeInfo::ReleaseFuncDesc > func_desc_t; + /// Auto-release wrapper for VARDESC. + typedef impl::tlib_info::typeinfo_attr_base< &ITypeInfo::ReleaseVarDesc > var_desc_t; + + /// Auto-release wrapper for TLIBATTR. + typedef impl::tlib_info::typeinfo_attr_base< &ITypeLib::ReleaseTLibAttr > tlibattr_t; + + + /** Flags for GetImplTypeFlags. + * \sa IMPLTYPEFLAGS + */ + enum impl_type_flag + { + eft_default=0x1, ///< The interface or dispinterface represents the default for the source or sink. + eft_source =0x2, ///< This member of a coclass is called rather than implemented. + eft_restricted=0x4, ///< The member should not be displayed or programmable by users. + eft_defaultvtable=0x8 ///< Sinks receive events through the VTBL. + }; + + /** Specialisation wrapper for ITypeInfo. + * \struct wrap_t tlbinfo.h comet/tlbinfo.h + * Wrapper for ITypeInfo typelib information. + * \sa ITypeInfo + */ + template<> + struct wrap_t + { + private: + inline ITypeInfo *raw_(){ return reinterpret_cast(this); } + public: + + /** Returns a wrapped Type Attributes struct. + * \sa TYPEATTR + */ + type_attr_t GetTypeAttr() + { + TYPEATTR *pTypeAttr; + raw_()->GetTypeAttr( &pTypeAttr) | raise_exception ; + return type_attr_t( raw_(), pTypeAttr); + } + + /// Returns an ITypeComp interface. + com_ptr GetTypeComp() + { + com_ptr ppTComp; + raw_()->GetTypeComp( ppTComp.out()) | raise_exception; + return ppTComp; + } + + /** Get the function description struct. + * \sa FUNCDESC + */ + func_desc_t GetFuncDesc( unsigned int index) + { + FUNCDESC *pFuncDesc ; + raw_()->GetFuncDesc(index, &pFuncDesc) | raise_exception ; + return func_desc_t( raw_(), pFuncDesc); + } + + /** Get the Variable/Constant/Datamember description. + * \sa VARDESC + */ + var_desc_t GetVarDesc( unsigned int index ) + { + VARDESC *pVarDesc; + raw_()->GetVarDesc( index,&pVarDesc) | raise_exception; + return var_desc_t(raw_(), pVarDesc); + } + + +#ifdef NOT_YET + std::list GetNames( MEMBERID memid ) + { + /* [local] */ HRESULT GetNames( /* [in] */ MEMBERID memid, /* [length_is][size_is][out] */ BSTR *rgBstrNames, + /* [in] */ UINT cMaxNames, /* [out] */ UINT *pcNames) ; + } +#endif // + + /// Retrieves the type description of implemented interface types. + HREFTYPE GetRefTypeOfImplType( unsigned int index) + { + HREFTYPE reftype; + raw_()->GetRefTypeOfImplType(index, &reftype) | raise_exception; + return reftype; + } + + /// Retrieves the type description of implemented interface types. + long GetImplTypeFlags( int index) + { + INT implTypeFlags; + raw_()->GetImplTypeFlags( index, &implTypeFlags) |raise_exception; + return implTypeFlags; + } + +#ifdef NOT_YET + std::vector GetIDsOfNames( const std::vector &rgsNames); + { + /* [local] */ HRESULT GetIDsOfNames( + /* [size_is][in] */ LPOLESTR *rgszNames, + /* [in] */ UINT cNames, + /* [size_is][out] */ MEMBERID *pMemId) ; + } + + /* [local] */ HRESULT Invoke( + /* [in] */ PVOID pvInstance, + /* [in] */ MEMBERID memid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr) ; +#endif // NOT_YET + /// Raw wrapper to make sure comet still works/compiles. + HRESULT GetIDsOfNames( LPOLESTR *rgszNames, UINT cNames, + MEMBERID *pMemId) + { + return raw_()->GetIDsOfNames( rgszNames, cNames, pMemId); + } + + /// Raw wrapper to make sure comet still works/compiles. + HRESULT Invoke( PVOID pvInstance, MEMBERID memid, WORD wFlags, + DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, + UINT *puArgErr) + { + return raw_()->Invoke( pvInstance, memid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); + } + + bool GetIDOfName( const wchar_t *name, MEMBERID *id) + { + wchar_t *ucname = const_cast(name); + return SUCCEEDED(raw_()->GetIDsOfNames( &ucname, 1, id)); + } + + + /// Get the documentation for the specified MEMBERID. + void GetDocumentation(MEMBERID memid, bstr_t *name, bstr_t *docString, DWORD *helpcontext, bstr_t *helpfile) + { + raw_()->GetDocumentation(memid, name?name->out():NULL, docString?docString->out():NULL, + helpcontext, helpfile? helpfile->out():NULL) | raise_exception; + } + /** Get the member name for the specified MEMBERID. + * This is a shortcut for GetDocumentation. + */ + + bstr_t GetMemberName(MEMBERID memid) + { + bstr_t name; + raw_()->GetDocumentation(memid, name.out(), NULL, NULL, NULL) | raise_exception; + return name; + } + bstr_t GetName() + { + return GetMemberName(-1); + } + +#if NOT_YET + /* [local] */ HRESULT GetDllEntry( + /* [in] */ MEMBERID memid, + /* [in] */ INVOKEKIND invKind, + /* [out] */ BSTR *pBstrDllName, + /* [out] */ BSTR *pBstrName, + /* [out] */ WORD *pwOrdinal) ; +#endif // NOT_YET + + /** Get the referenced Type information. + */ + com_ptr GetRefTypeInfo( HREFTYPE refType) + { + com_ptr refinfo; + raw_()->GetRefTypeInfo( refType, refinfo.out()) | raise_exception; + return refinfo; + } + +#if NOT_YET + /* [local] */ HRESULT AddressOfMember( /* [in] */ MEMBERID memid, /* [in] */ INVOKEKIND invKind, + /* [out] */ PVOID *ppv) ; + + /* [local] */ HRESULT CreateInstance( /* [in] */ IUnknown *pUnkOuter, /* [in] */ REFIID riid, + /* [iid_is][out] */ PVOID *ppvObj) ; + + HRESULT GetMops( /* [in] */ MEMBERID memid, /* [out] */ BSTR *pBstrMops) ; +#endif // NOT_YET + + /** Get the typelib containing this definition. + * \return A pair containing the typelibrary and the index of the type description within the type library. + */ + std::pair< com_ptr, UINT > GetContainingTypeLib() + { + std::pair< com_ptr, UINT> result; + raw_()->GetContainingTypeLib( result.first.out(), &(result.second) ) | raise_exception; + return result; + } + }; + //@} + + template<> + struct wrap_t : wrap_t + { + TYPEKIND GetTypeKind() + { + TYPEKIND tkind; + raw_()->GetTypeKind(&tkind) | raise_exception; + return tkind; + } + private: + inline ITypeInfo2 *raw_(){ return reinterpret_cast(this); } + }; + + + /*! \addtogroup Interfaces + */ + //@{ + + /// Specialisation to handle TypeLibrary API. + template<> + struct wrap_t + { + inline ITypeLib *raw_(){ return reinterpret_cast(this); } + unsigned int GetTypeInfoCount() + { + return raw_()->GetTypeInfoCount(); + } + + /// Get typeinfo at specified index. + com_ptr GetTypeInfo( UINT index) + { + com_ptr tinfo; + raw_()->GetTypeInfo( index, tinfo.out()) | raise_exception; + return tinfo; + } + + /// Get type of information at specified index. + TYPEKIND GetTypeInfoType( UINT index) + { + TYPEKIND retval; + raw_()->GetTypeInfoType( index, &retval) | raise_exception; + return retval; + } + + /// Get typeinfo given GUID. + com_ptr GetTypeInfoOfGuid( const uuid_t &guid ) + { + com_ptr tinfo; + raw_()->GetTypeInfoOfGuid( guid, tinfo.out()) | raise_exception; + return tinfo; + } + /// Get Raw Typeinfo of guid. + HRESULT GetTypeInfoOfGuid( REFGUID guid, ITypeInfo **ppTinfo) + { + return raw_()->GetTypeInfoOfGuid( guid,ppTinfo); + } + + /// Get attributes of the typelibrary. + tlibattr_t GetLibAttr() + { + TLIBATTR *attr; + raw_()->GetLibAttr( &attr) | raise_exception; + return tlibattr_t( raw_(), attr); + } + + com_ptr GetTypeComp() + { + com_ptr typecomp; + raw_()->GetTypeComp( typecomp.out() ) | raise_exception; + return typecomp; + } + + void GetDocumentation(int index, bstr_t *name, bstr_t *docString, DWORD *helpcontext, bstr_t *helpfile) + { + raw_()->GetDocumentation(index, name?name->out():NULL, docString?docString->out():NULL, + helpcontext, helpfile? helpfile->out():NULL) | raise_exception; + } + bstr_t GetItemName(int index) + { + bstr_t name; + raw_()->GetDocumentation(index, name.out(), NULL, NULL, NULL) | raise_exception; + return name; + } + bstr_t GetName() + { + return GetItemName(-1); + } + + bool IsName( const bstr_t &name, unsigned long hashval ) + { + BOOL ret; + raw_()->IsName( name.in(), hashval, &ret) | raise_exception; + return ret!=0; + } + + std::pair, MEMBERID> FindName( const bstr_t &name) + { + std::pair, MEMBERID> result; + USHORT tofind = 1; + raw_()->FindName(name.in(), 0, result.first.out(), &result.second, &tofind) | raise_exception; + return result; + } +#ifdef NOT_YET + std::list, MEMBERID> >FindName( const bstr_t &name, int max) + {} + [local] + HRESULT FindName( + [in, out] LPOLESTR szNameBuf, + [in] ULONG lHashVal, + [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo, + [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId, + [in, out] USHORT * pcFound + ); +#endif // LATER + + + }; + + /// Load typeinfo from a file. + namespace typeinfo + { + /** Whether to register the typelibrary on load. + * \relates typeinfo::LoadTypeLib + */ + enum regkind_t { reg_default = REGKIND_DEFAULT, reg_register = REGKIND_REGISTER, reg_none = REGKIND_NONE } ; + /// Load typeinfo from a file. + static inline com_ptr LoadTypeLib( const bstr_t &filename, regkind_t regkind= reg_default) + { + com_ptr tlib; + LoadTypeLibEx(filename.in(), (REGKIND)(regkind), tlib.out()) | raise_exception; + return tlib; + } + } + //@} +} // namespace comet +#endif /* COMET_TLIBINFO_H */ diff --git a/lib/local/CamCom/comet/tstring.h b/lib/local/CamCom/comet/tstring.h new file mode 100644 index 0000000..3b54677 --- /dev/null +++ b/lib/local/CamCom/comet/tstring.h @@ -0,0 +1,125 @@ +/** \file + * C++ Std. lib TCHAR mappings. + */ +/* + * Copyright 2002 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_TSTRING_H +#define COMET_TSTRING_H + +#include +#include +#include +#include + +namespace comet { + + /*! \addtogroup WinUtil + */ + //@{ + +#if defined(_MBCS) && !defined(_UNICODE) && !defined(COMET_NO_MBCS_WARNING) +#pragma message( "Warning: _MBCS is defined. Be aware that tstring does not support multi-byte character strings" ) +#endif + /** \page comettstring Comet tstring type. + * In order for comet projects to more easily support unicode via the + * windows file "tchar.h", many comet classes support the type #comet::tstring which is + * a convenience typedef to basic_string. Associated with + * \link comet::tstring tstring \endlink are all or most of the other STL + * classes that have a \p char argument to the templates. + * + * In addition to being used by comet, this is a generally useful series + * of typedefs to be used when combining STL types with tchar.h compatible + * projects. + * + * There are two area to be particularly wary of with STL and tchar.h. + * + * The first is that the filename argument for file streams are always + * narrow char *. I would suggest using a #comet::bstr_t which will + * convert for you, especially in UNICODE (actually UCS2 little-endien) projects. + * + * The second is that tstring support for multi-byte character strings is + * very minimal. Embedded NULLs in the stream are not a problem for + * copying around, however none of the parsing/searching/comparison + * methods cope with multi-byte character sets. + * + * I believe that part of the reason for this is the platform specific + * nature of multi-byte, and the internal support for a variety of + * different MBCS implementations by Microsoft. + */ + + /** TCHAR version of std::basic_string. + * See \ref comettstring + */ + typedef std::basic_string< TCHAR > tstring; + + /** TCHAR version of std::basic_ios. + * \relates tstring + */ + typedef std::basic_ios > tios; + /** TCHAR version of std::basic_streambuf. + * \relates tstring + */ + typedef std::basic_streambuf > tstreambuf; + /** TCHAR version of std::basic_istream. + * \relates tstring + */ + typedef std::basic_istream > tistream; + /** TCHAR version of std::basic_ostream. + * \relates tstring + */ + typedef std::basic_ostream > tostream; + /** TCHAR version of std::basic_iostream. + * \relates tstring + */ + typedef std::basic_iostream > tiostream; + /** TCHAR version of std::basic_stringbuf. + * \relates tstring + */ + typedef std::basic_stringbuf, std::allocator > tstringbuf; + /** TCHAR version of std::basic_istringstream. + * \relates tstring + */ + typedef std::basic_istringstream, std::allocator > tistringstream; + /** TCHAR version of std::basic_ostringstream. + * \relates tstring + */ + typedef std::basic_ostringstream, std::allocator > tostringstream; + /** TCHAR version of std::basic_stringstream. + * \relates tstring + */ + typedef std::basic_stringstream, std::allocator > tstringstream; + /** TCHAR version of std::basic_filebuf. + * \relates tstring + */ + typedef std::basic_filebuf > tfilebuf; + /** TCHAR version of std::basic_ifstream. + * \relates tstring + */ + typedef std::basic_ifstream > tifstream; + /** TCHAR version of std::basic_ofstream. + * \relates tstring + */ + typedef std::basic_ofstream > tofstream; + /** TCHAR version of std::basic_fstream. + * \relates tstring + */ + typedef std::basic_fstream > tfstream; + + //@} +} + + +#endif diff --git a/lib/local/CamCom/comet/type_traits.h b/lib/local/CamCom/comet/type_traits.h new file mode 100644 index 0000000..45f7c3a --- /dev/null +++ b/lib/local/CamCom/comet/type_traits.h @@ -0,0 +1,262 @@ +/** \file + * Interrogate traits of template types. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen, Paul Hollingsworth + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +/* + * Partial copyright for is_const, is_volatile and is_reference. + * + * (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. + * Permission to copy, use, modify, sell and + * distribute this software is granted provided this copyright notice appears + * in all copies. This software is provided "as is" without express or implied + * warranty, and with no claim as to its suitability for any purpose. + */ + +#ifndef COMET_TYPE_TRAITS_H +#define COMET_TYPE_TRAITS_H + +namespace comet { + + /** Provides structs to interrogate traits of template types. + */ + namespace type_traits { + + ////////////////////////////////////////////////////////////////////////// + // From www.boost.org + + //* is a type T declared const - is_const + namespace detail{ + typedef char yes_result; + typedef char (&no_result)[8]; + yes_result is_const_helper(const volatile void*); + no_result is_const_helper(volatile void *); + yes_result is_volatile_helper(const volatile void*); + no_result is_volatile_helper(const void *); + + template struct helper { T t; }; + } + + template struct is_const + { + enum{ result = (sizeof(detail::yes_result) == sizeof( detail::is_const_helper( + & ((reinterpret_cast *>(0))->t)) + )) + }; + }; + + template struct is_volatile + { + enum{ result = (sizeof(detail::yes_result) == sizeof(detail::is_volatile_helper( + & ((reinterpret_cast *>(0))->t)) + )) + }; + }; + +# pragma warning(push) +# pragma warning(disable: 4181) + + //* is a type T a reference type - is_reference + template struct is_reference + { + private: + typedef T const volatile cv_t; + public: + enum // dwa 10/27/00 - VC6.4 seems to choke on short-circuit (&&,||) + { // evaluations in constant expressions + value = !is_const::result | !is_volatile::result + }; + }; + + template <> struct is_reference + { + enum{ value = false }; + }; + +# pragma warning(pop) + + + ////////////////////////////////////////////////////////////////////////// + + template struct is_integer { enum { result = false }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; +// template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + template<> struct is_integer { enum { result = true }; }; + + //! @if Internal + /** Taken from STLPort. + * \internal + */ + struct _PointerShim { + // Since the compiler only allows at most one non-trivial + // implicit conversion we can make use of a shim class to + // be sure that IsPtr below doesn't accept classes with + // implicit pointer conversion operators + _PointerShim(const volatile void*); // no implementation + }; + //! @endif + + // These are the discriminating functions + static char __cdecl _IsP(bool, _PointerShim); // no implementation is required + static char* __cdecl _IsP(bool, ...); // no implementation is required + + template + struct is_pointer { + // This template meta function takes a type T + // and returns true exactly when T is a pointer. + // One can imagine meta-functions discriminating on + // other criteria. + static _Tp& __null_rep(); + enum { result = (sizeof(_IsP(false,__null_rep())) == sizeof(char)) }; + }; + + // Work out whether the Type is something we can use operator-> on + // (hopefully). If we fail, the worst we get is a level 3 warinng. + template + struct is_class_pointer + { + enum { result = (is_pointer<_Tp>::result && ! is_integer<_Tp>::result) }; + }; + + template struct int_holder + { + enum { result = x }; + }; + + template struct type_holder + { + typedef T result; + }; + +/* template class is_static_compatible + { + class yes { }; + class no {char a[10]; }; + + static yes test( U * ); + static no test( ... ); + + public: + enum { is = sizeof(test(static_cast(0))) == sizeof(yes) ? true : false }; + };*/ + + template class is_cast_operator_compatible + { + protected: + class yes { }; + class no {char a[10]; }; + + static yes test( U* ); + static no test( ... ); + + public: + enum { is = sizeof(test(*static_cast(0))) == sizeof(yes) /*? 1 : 0 */}; + }; + +#ifndef COMET_PARTIAL_SPECIALISATION + template struct conversion_aux + { + template class X + { + protected: + class yes { }; + class no {char a[10]; }; + static T makeT(); + + static yes test(U); + static no test(...); + public: + enum { exists = sizeof(test(makeT())) == sizeof(yes) }; + enum { same_type = false }; + }; + + + template<> class X + { + public: + enum { exists = true }; + enum { same_type = true }; + }; + + }; + template struct conversion + { + enum { exists = conversion_aux::X::exists }; + enum { same_type = conversion_aux::X::same_type }; + enum { exists_two_way = exists && conversion_aux::X::exists }; + }; +#else + template struct conversion + { + protected: + class yes { }; + class no {char a[10]; }; + static T makeT(); + + static yes test(U); + static no test(...); + public: + enum { exists = sizeof(test(makeT())) == sizeof(yes) }; + enum { same_type = false }; + enum { exists_two_way = conversion::exists}; + + }; + template struct conversion + { + + enum { exists = true }; + enum { same_type = true }; + enum { exists_two_way = true}; + }; + +#endif // COMET_PARTIAL_SPECIALISATION + + template struct super_sub_class + { + enum { result = conversion::exists && !conversion::same_type }; + }; + + inline bool is_null_vtable_entry(void *p,short n) + { + return ((n<0)?true:(0==(*reinterpret_cast(reinterpret_cast(*(reinterpret_cast(p)))+n)))); + } + + } + + namespace impl { + + // used by NutshellImpl's + struct false_type {}; + struct true_type {}; + + template struct is_one { typedef false_type val; }; + template<> struct is_one<1> { typedef true_type val; }; + + } + + +} + + +#endif diff --git a/lib/local/CamCom/comet/typelist.h b/lib/local/CamCom/comet/typelist.h new file mode 100644 index 0000000..8af6ab8 --- /dev/null +++ b/lib/local/CamCom/comet/typelist.h @@ -0,0 +1,450 @@ +/** \file + * Implementation of Lists of types. + * Type lists are rather integral to the operation of Comet, and provide us + * with many of the mechanisms that allow us to all but remove the need for + * \#define macros in code. + */ +/* + * Copyright 2000-2002 Sofus Mortensen, Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_TYPELIST_H +#define COMET_TYPELIST_H + +#include + +namespace comet { + + /** \struct nil typelist.h comet/typelist.h + * End of list type. + */ + struct nil {}; + + template + struct tl_t { + typedef T head; + typedef U tail; + }; + +#ifndef COMET_TL_TRUNC +#ifndef __BORLANDC__ +#define COMET_TL_LIST( X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ + X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) \ + X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ + X30,X31,X32,X33,X34,X35,X36,X37,X38,X39 +#else +#define COMET_TL_LIST( X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ + X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) \ + X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29 +#endif +#else +#define COMET_TL_LIST( X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ + X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) \ + X01,X02,X03,X04,X05,X06,X07,X08,X09,X10 +#endif + + + +#define COMET_LIST_TEMPLATE \ + typename X00=comet::nil, COMET_TL_LIST( typename X01=comet::nil, typename X02=comet::nil, typename X03=comet::nil, typename X04=comet::nil, \ + typename X05=comet::nil, typename X06=comet::nil, typename X07=comet::nil, typename X08=comet::nil, typename X09=comet::nil, \ + typename X10=comet::nil, typename X11=comet::nil, typename X12=comet::nil, typename X13=comet::nil, typename X14=comet::nil, \ + typename X15=comet::nil, typename X16=comet::nil, typename X17=comet::nil, typename X18=comet::nil, typename X19=comet::nil, \ + typename X20=comet::nil, typename X21=comet::nil, typename X22=comet::nil, typename X23=comet::nil, typename X24=comet::nil, \ + typename X25=comet::nil, typename X26=comet::nil, typename X27=comet::nil, typename X28=comet::nil, typename X29=comet::nil, \ + typename X30=comet::nil, typename X31=comet::nil, typename X32=comet::nil, typename X33=comet::nil, typename X34=comet::nil, \ + typename X35=comet::nil, typename X36=comet::nil, typename X37=comet::nil, typename X38=comet::nil, typename X39=comet::nil) + +#define COMET_LIST_TEMPLATE_0 typename X00, COMET_TL_LIST(\ + typename X01, typename X02, typename X03, typename X04, \ + typename X05, typename X06, typename X07, typename X08, typename X09, \ + typename X10, typename X11, typename X12, typename X13, typename X14, \ + typename X15, typename X16, typename X17, typename X18, typename X19, \ + typename X20, typename X21, typename X22, typename X23, typename X24, \ + typename X25, typename X26, typename X27, typename X28, typename X29, \ + typename X30, typename X31, typename X32, typename X33, typename X34, \ + typename X35, typename X36, typename X37, typename X38, typename X39) + +#define COMET_LIST_ARG_1 X00, COMET_TL_LIST(\ + X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ + X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) + +#define COMET_LIST_ARG_0 COMET_TL_LIST(\ + X01,X02,X03,X04,X05,X06,X07,X08,X09, \ + X10,X11,X12,X13,X14,X15,X16,X17,X18,X19, \ + X20,X21,X22,X23,X24,X25,X26,X27,X28,X29, \ + X30,X31,X32,X33,X34,X35,X36,X37,X38,X39) + +#define COMET_LIST_NIL comet::nil, COMET_TL_LIST(\ + comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil, \ + comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil, \ + comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil, \ + comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil,comet::nil) + + /** \struct make_list typelist.h comet/typelist.h + * Construct a 'type list' of up to 40 types. + * A list is a 'head-tail' list terminated by a 'nil' tail struct. + * It is most easily constructe by using make_list: + \code + comet::make_list< FooType,BarType>::result + \endcode + + * The \e concept of a type-list is that it is either \link comet::nil nil \endlink + * or a struct containing a \e typedef of \p head to the first element in the + * list and a typedef of \p tail to a type-list that contains the rest of + * the list. + * + * This means that for a type-list \e LST + * \code + LST::head + \endcode + * is the first element in the list (assuming it is not + * \link comet::nil nil \endlink) and + * \code + LST::head::tail::head + \endcode + would be the second element in the list (assuming LST::head::tail is not + \link comet::nil nil \endlink), and so on. + + * Two type lists can be appended together with typelist::append. + + \sa typelist::append + */ + template struct make_list + { + typedef tl_t::result> result; + }; + + template<> struct make_list + { + typedef nil result; + }; + + namespace typelist { + + template struct length + { + enum { value = 1 + length< typename L::tail>::value }; + }; + + template<> struct length + { + enum { value = 0 }; + }; + +#ifdef COMET_PARTIAL_SPECIALISATION + //! Find the type at the specified index. + /** \param L Type List + * \param idx Index + */ + template struct type_at + { + typedef typename type_at::result result; + }; + template struct type_at + { + typedef typename L::head result; + }; + template< unsigned idx> struct type_at + { + typedef nil result; + }; + template<> struct type_at + { + typedef nil result; + }; + + + /** \internal + */ + template struct index_of_aux + { + enum { value = 1+(index_of_aux::value) }; + }; + template< typename L, typename T> struct index_of_aux + { + enum { value = 0 }; + }; + /** Find the index of the type \a T in the type-list \a L. + * The result is in index_of::value. + */ + template struct index_of + { + enum { value = index_of_aux::value }; + }; + + +#else + template struct type_at; + + template struct type_at_aux + { + template struct X + { + typedef typename type_at::result result; +// typedef type_at_aux::X::result result; + }; + + template<> struct X<0> + { + typedef typename L::head result; + }; + }; + + template<> struct type_at_aux + { + template struct X + { + typedef nil result; + }; + }; + + +/* template<> struct type_at_aux< make_list<> > + { + template struct X + { + typedef nil result; + }; + };*/ + + template struct type_at + { + typedef typename type_at_aux::X::result result; + }; + + template struct index_of; + + template struct index_of_aux + { + template struct X1 + { + template struct X2 + { + enum { value = 1 + index_of::value }; + }; + + template<> struct X2 + { + enum { value = 0 }; + }; + }; + }; + + template struct index_of + { + enum { value = index_of_aux::X1::X2::value }; + }; +#endif // COMET_PARTIAL_SPECIALISATION + +#undef COMET_LIST_ARG + +#ifdef COMET_PARTIAL_SPECIALISATION + + /** \struct append typelist.h comet/typelist.h + * Appends two type-lists together. + * Example: + * \code + comet::typelist::append< + comet::make_list< Type1, Type2 >::result, + comet::make_list< Type3, Type4 >::result + > + \endcode + \sa make_list + */ + template struct append + { + typedef typename L1::head head; + typedef append tail; + }; + + template struct append + { + typedef typename L2::head head; + typedef typename L2::tail tail; + }; + template struct append,L2> + { + typedef typename L2::head head; + typedef typename L2::tail tail; + }; + template<> struct append + { + typedef nil head; + typedef nil tail; + }; + template struct append_element + { + typedef typename append::result>::head head; + typedef typename append::result>::tail tail; + }; +#else // COMET_PARTIAL_SPECIALISATION + + template struct append; + + namespace impl { + + template struct append_aux + { + template struct with + { + typedef typename L1::head head; + typedef typename append tail; +// typedef typename append_aux::with tail; + }; + + template<> struct with + { + typedef typename L1::head head; + typedef typename L1::tail tail; + }; + }; + + template<> struct append_aux + { + template struct with + { + typedef typename L2::head head; + typedef typename L2::tail tail; + }; + }; + +/* template<> struct append_aux > + { + template struct with + { + typedef typename L2::head head; + typedef typename L2::tail tail; + }; + };*/ + + } + + template struct append + { + typedef typename impl::append_aux::with::head head; + typedef typename impl::append_aux::with::tail tail; + }; + + template struct append_element + { + typedef typename impl::append_aux::with< typename make_list::result >::head head; + typedef typename impl::append_aux::with< typename make_list::result >::tail tail; + }; +#endif // COMET_PARTIAL_SPECIALISATION + + +#ifdef COMET_NESTED_TEMPLATES + /** \struct wrap_each typelist.h comet/typelist.h + * Wrap each of the elements of a list in the specified template class. + * Due to lack of support for template parameter to templates by Microsoft, + * macros have been defined as a necessary evil to get arround this. + * The macros are #COMET_WRAP_EACH_DECLARE and #COMET_WRAP_EACH. + * There is a propper implementation for compilers that support nested + * interfaces, which will be selected by the macro as appropriate. + * \sa COMET_WRAP_EACH_DECLARE COMET_WRAP_EACH + */ + template< template< typename > class T, typename L1> struct wrap_each; + namespace impl + { + template< template< typename > class T, typename L1> struct wrap_each_aux + { + typedef wrap_each x; + }; + template< template< typename > class T> struct wrap_each_aux< T, nil> + { + typedef nil x; + }; + } + + template< template< typename > class T, typename L1> struct wrap_each + { + typedef T head; + typedef typename impl::wrap_each_aux::x tail; + }; + + template< template< typename > class T> struct wrap_each< T, ::comet::nil > + { + }; + /** \def COMET_WRAP_EACH_DECLARE(T) + * Declare a template for wrapping each element in the specified type. + * \relates wrap_each + */ +#define COMET_WRAP_EACH_DECLARE(T) +// MSVC7.1 doesn't like this: +// template< template< typename > class T1, typename L1> struct wrap_each; + + /** \def COMET_WRAP_EACH(T, L1) + * Produce a list L2 that consists of each member of list L1 wrapped in type T. + * This is very much a Lambda calculus concept for those who care. + * \relates wrap_each + */ +#define COMET_WRAP_EACH(T, L1) typelist::wrap_each + +#else // COMET_NESTED_TEMPLATES +#define COMET_WRAP_EACH_DECLARE(T) \ + template< typename L1 > struct wrap_each_aux##T; \ + namespace impl \ + { \ + template< typename L1> struct p_wrap_each_aux##T \ + { \ + typedef wrap_each_aux##T x; \ + }; \ + template<> struct p_wrap_each_aux##T < ::comet::nil> \ + { \ + typedef ::comet::nil x; \ + }; \ + }; \ + template< typename L1> struct wrap_each_aux##T \ + { \ + typedef T head; \ + typedef typename impl::p_wrap_each_aux##T < typename L1::tail>::x tail;\ + }; \ + template<> struct wrap_each_aux##T< ::comet::nil> { }; + +#define COMET_WRAP_EACH(T, L1) wrap_each_aux##T + +#endif // COMET_NESTED_TEMPLATES + + template struct ATL_NO_VTABLE inherit_all + : public ITF_LIST::head, public inherit_all + {}; + + template<> struct inherit_all {}; +// template<> struct inherit_all > {}; + + } + +/* MSVC7 chokes on this one - not actually used anywhere + + template struct select + { + typedef typelist::type_at< make_list::result, idx>::result result; + };*/ + +} // namespace + +#endif diff --git a/lib/local/CamCom/comet/unittest.h b/lib/local/CamCom/comet/unittest.h new file mode 100644 index 0000000..d53821a --- /dev/null +++ b/lib/local/CamCom/comet/unittest.h @@ -0,0 +1,86 @@ +/** \file + * Unit-test wrapper. + */ +/* + * Copyright 2000, 2001 Paul Hollingsworth + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_UNITTEST_H +#define COMET_UNITTEST_H + +#include +#include + +namespace comet { + //! Define a unit test \a n. + template + struct test + { + void run() {} + }; + + int current_test = 0; + + //! Run \a n tests. + /** \sa test + */ + template + struct tester + { + inline static void runtests() + { + tester::runtests(); + current_test = n; + test().run(); + } + }; + + template<> + struct tester<0> + { + static void runtests() {} + }; +} // namespace comet + +//! Implement Main function for testing. +template +struct main_t +{ + /// Call to run tests. + static int call(int argc, const char * const argv[]) + { + using std::cout; + using std::cerr; + using std::endl; + try { + comet::tester<64>::runtests(); + } catch (const std::exception &e) { + std::cerr << "Test #" << comet::current_test << " failed - error message: <" << e.what() << ">" << endl; + return 1; + } + catch(...) { + std::cerr << "Test #" << comet::current_test << " failed with an unrecognized exception" << endl; + return 2; + } + std::cout << "Ran all tests successfully" <::call(argc,argv);\ +} + +#endif diff --git a/lib/local/CamCom/comet/util.h b/lib/local/CamCom/comet/util.h new file mode 100644 index 0000000..0e514e0 --- /dev/null +++ b/lib/local/CamCom/comet/util.h @@ -0,0 +1,125 @@ +/** \file + * Various utilities. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_UTIL_H +#define COMET_UTIL_H + +#include + +#include + +#include +#include + +namespace comet { + + /*! \addtogroup WinUtil + */ + //@{ + //! Automatic handling of CoInitialize / CoUninitialize. + class auto_coinit { + public: +#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM + explicit auto_coinit(COINIT ci) { + ::CoInitializeEx(0, ci) | raise_exception; + } +#endif + + auto_coinit() { ::CoInitialize(0) | raise_exception; } + + ~auto_coinit() { ::CoUninitialize(); } + + private: + auto_coinit& operator=(const auto_coinit&); + auto_coinit(const auto_coinit&); + }; + + // For backward compatibility. + typedef auto_coinit auto_CoInitialize; + + /// Returns the class id of the free threaded marshaler + inline CLSID get_clsid_of_ftm() + { + CLSID rv; + class Dummy : public static_object<> {} dummy; + + IUnknown* pUnk = 0; + ::CoCreateFreeThreadedMarshaler(&dummy, &pUnk) | raise_exception; + + com_ptr marshal = try_cast(pUnk); + + marshal.raw()->GetUnmarshalClass(IID_IUnknown, &dummy, MSHCTX_INPROC,0,MSHLFLAGS_NORMAL, &rv) | raise_exception; + return rv; + } + + /** + * Returns true if and only if object is aggregating the free threaded marshaler. + */ + inline bool is_object_aggregating_ftm(const com_ptr& p) + { + com_ptr marshal = com_cast(p); + if (marshal == 0) return false; + + class Dummy : public static_object<> {} dummy; + + CLSID clsid = CLSID_NULL; + marshal.raw()->GetUnmarshalClass(IID_IUnknown, &dummy, MSHCTX_INPROC,0,MSHLFLAGS_NORMAL, &clsid); + + CLSID ftm_clsid = get_clsid_of_ftm(); + return clsid == ftm_clsid ? true : false; + } + +#if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM + /** + * Returns true if and only if current apartment is the MTA. + */ + inline bool is_mta() + { + if (SUCCEEDED(::CoInitializeEx(0, COINIT_MULTITHREADED))) + { + ::CoUninitialize(); + return true; + } + return false; + } +#endif + /** + * Returns true if and only if current apartment is an STA. + */ + inline bool is_sta() + { + if (SUCCEEDED(::CoInitialize(0))) + { + ::CoUninitialize(); + return true; + } + return false; + } + + /** + * Returns true if and only if specified ptr is a standard proxy. + */ + inline bool is_std_proxy(const com_ptr& unk) + { + com_ptr pm; + return SUCCEEDED(unk.raw()->QueryInterface(IID_IProxyManager, reinterpret_cast(pm.out()))); + } + +} // namespace + +#endif diff --git a/lib/local/CamCom/comet/uuid.h b/lib/local/CamCom/comet/uuid.h new file mode 100644 index 0000000..ffd9802 --- /dev/null +++ b/lib/local/CamCom/comet/uuid.h @@ -0,0 +1,88 @@ +/** \file + * uuid wrapper class. + */ +/* + * Copyright 2001, 2002 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_UUID_H +#define COMET_UUID_H + +#include +#include +#include + +#pragma comment( lib, "Rpcrt4" ) + +namespace comet { + + template + void uuid_t::copy_to_str(C s[36]) const throw() + { + const unsigned char *p = reinterpret_cast(this); + + for (int i=0; i<20; ++i) + { + int j = uuid_table()[i]; + if (j >= 0) + { + const unsigned char byt = p[j]; + *s = hex_table()[byt >> 4]; + ++s; + *s = hex_table()[byt & 0xf]; + } + else *s = L'-'; + ++s; + } + } + + template + bool uuid_t::init_from_str(const C s[], size_t len) throw() + { + unsigned char *p = reinterpret_cast(this); + + bool has_brace; + switch (len) + { + default: return false; + case 36: has_brace = false; break; + case 38: + if (*s != C('{')) + return false; + has_brace = true; + ++s; + break; + } + + int i; + for (i=0; i<20; ++i) + { + int j = uuid_table()[i]; + if (j >= 0) + { + int a = parse_nibble(*s); + ++s; + int b = parse_nibble(*s); + p[j] = unsigned char(a << 4 | b); + } + else if (*s != C('-')) + return false; + ++s; + } + return (! has_brace) || (*s == C('}')); + } + +} + +#endif diff --git a/lib/local/CamCom/comet/uuid_fwd.h b/lib/local/CamCom/comet/uuid_fwd.h new file mode 100644 index 0000000..316178f --- /dev/null +++ b/lib/local/CamCom/comet/uuid_fwd.h @@ -0,0 +1,441 @@ +/** \file + * uuid wrapper class. + */ +/* + * Copyright 2001, 2002 Sofus Mortensen + * Copyright 2013 Alexander Lamaison + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_UUID_FWD_H +#define COMET_UUID_FWD_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace comet{ + + +/*! \addtogroup COMType + */ +//@{ + +/// UUID wrapper. +class uuid_t : public COMET_GUID_BASE +{ + struct unitialized_t {}; + uuid_t(unitialized_t) {} + + friend class bstr_t; + +public: + /// Default constructor - constructs a nil uuid. + uuid_t() + { + UuidCreateNil(this); + } + + /// Copy constructor + uuid_t(const COMET_GUID_BASE& u) + { + memcpy(this, &u, sizeof(COMET_GUID_BASE)); + } + + /// Assignment operator + uuid_t& operator=(const COMET_GUID_BASE& u) + { + memcpy(this, &u, sizeof(COMET_GUID_BASE)); + return *this; + } + + /// \name Construct uuid from string + //@{ + explicit uuid_t(const std::string& s) + { + if (!init_from_str(s.c_str(), s.length())) + throw std::runtime_error(err_msg()); + } + + explicit uuid_t(const char* s) + { + if (!init_from_str(s, strlen(s))) + throw std::runtime_error(err_msg()); + } + + explicit uuid_t(const std::wstring& s) + { + if (!init_from_str(s.c_str(), s.length())) + throw std::runtime_error(err_msg()); + } + + explicit uuid_t(const wchar_t* s) + { + if (!init_from_str(s, wcslen(s))) + throw std::runtime_error(err_msg()); + } + + explicit uuid_t(const bstr_t& bs); + //@} + + //! Generate new guid. + static uuid_t create() + { + unitialized_t x; + uuid_t g(x); + UuidCreate(&g); + return g; + } + + //! Set to nil uuid. + void clear() + { + UuidCreateNil(this); + } + + //! Returns hash of uuid + unsigned short hash() const + { + RPC_STATUS status; + unsigned short r = UuidHash(const_cast(this), &status); + if (status != RPC_S_OK) + throw std::runtime_error("uuid_t::hash - UuidHash failed."); + return r; + } + + //! Convert uuid to string + //@{ + /// Return a std::string version of the uuid. + std::string str() const + { + std::string r; + r.resize(36); + copy_to_str(&r[0]); + return r; + } + /// Return a std::string version of the uuid. + inline std::string s_str() const + { + return str(); + } + + /// Return a std::wstring version of the uuid. + std::wstring w_str() const + { + std::wstring r; + r.resize(36); + copy_to_str(&r[0]); + return r; + } + + /// Return a tstring (templated to TCHAR) version of the uuid. + tstring t_str() const + { + tstring r; + r.resize(36); + copy_to_str(&r[0]); + return r; + } + //@} + + /// Returns true if and only if uuid is nil. + bool is_null() const throw() + { + return ((PLONG) this)[0] == 0 && + ((PLONG) this)[1] == 0 && + ((PLONG) this)[2] == 0 && + ((PLONG) this)[3] == 0; + } + + //! Returns true if and only if uuid is nil + bool operator!() const throw() + { + return is_null(); + } + + /// Output to an ostream. + template + friend inline std::basic_ostream& operator<<(std::basic_ostream& os, const uuid_t& u); + + /// Input from an ostream + template + friend inline std::basic_istream& operator>>(std::basic_istream& is, uuid_t& u); + + /** \internal + */ + class bool_tester + { void operator delete(void*); }; + + /// Copy the uuid_t to a string/container. + template void copy_to_str(C s[]) const throw(); + /// Initialise the uuid_t from a string/container. + template bool init_from_str(const C s[], size_t len) throw(); + + static const int* uuid_table() + { + static const int table[] = { 3, 2, 1, 0, -1, 5, 4, -1, 7, 6, -1, 8, 9, -1, 10, 11, 12, 13, 14, 15 }; + return table; + } + + static const char* hex_table() + { + static const char hex[] = "0123456789abcdef"; + return hex; + } + + static const char* err_msg() + { + static const char msg[] = "uuid_t: invalid format"; + return msg; + } + + static int parse_nibble(int c) + { + return c >= 'A' ? (c|0x20) - 'a' + 10 : c - '0'; + } + + /// Compare two guids. + inline long cmp(const comet::uuid_t &rhs) const + { + long i; // The code below may be a bit dense, but it is compact and works. + if((i = (Data1 - rhs.Data1)) == 0 && (i = (Data2 - rhs.Data2)) == 0 && (i = (Data3 - rhs.Data3)) == 0) + (i = ::memcmp(Data4, rhs.Data4, 8)); + return i; + } + + /// Compare two guids for equality. + inline bool is_equal( const comet::uuid_t &rhs) const + { + // From ATL + return ((PLONG) this)[0] == ((PLONG) &rhs)[0] && + ((PLONG) this)[1] == ((PLONG) &rhs)[1] && + ((PLONG) this)[2] == ((PLONG) &rhs)[2] && + ((PLONG) this)[3] == ((PLONG) &rhs)[3]; + } + +public: + /**\internal + */ + operator bool_tester*() const throw() + { if (is_null()) return 0; static bool_tester test; return &test; } + + /// Construct const reference to uuid from a raw GUID + static const uuid_t& create_const_reference(const COMET_GUID_BASE& x) + { + return *reinterpret_cast(&x); + } + + /// Construct reference to uuid from a raw GUID + static uuid_t& create_reference(COMET_GUID_BASE& x) + { + return *reinterpret_cast(&x); + } + + //! \name Methods for converting uuid to raw GUID when calling raw COM functions or legacy code. + //@{ + COMET_GUID_BASE* out() { return this; } + COMET_GUID_BASE* inout() { return this; } + COMET_GUID_BASE in() const { return *this; } + COMET_GUID_BASE* in_ptr() const { return const_cast(static_cast(this)); } + //@} +}; +//@} + +/// \name comparison operators +//@{ +/** Equals operator. + * \relates uuid_t + */ +inline bool operator==(const comet::uuid_t& lhs, const comet::uuid_t& rhs) +{ + return lhs.is_equal(rhs); +} + +/** Inequality operator. + * \relates uuid_t + */ +inline bool operator!=(const comet::uuid_t& lhs, const comet::uuid_t& rhs) +{ + return !lhs.is_equal(rhs); +} + +/** Equals operator. + * \relates uuid_t + */ +inline bool operator==(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) +{ + return lhs.is_equal( comet::uuid_t::create_const_reference(rhs) ); +} + +/** Inequality operator. + * \relates uuid_t + */ +inline bool operator!=(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) +{ + return !lhs.is_equal( comet::uuid_t::create_const_reference(rhs) ); +} + +/** Equals operator. + * \relates uuid_t + */ +inline bool operator==(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) +{ + return comet::uuid_t::create_const_reference(lhs).is_equal(rhs); +} + +/** Inequality operator. + * \relates uuid_t + */ +inline bool operator!=(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) +{ + return !comet::uuid_t::create_const_reference(lhs).is_equal(rhs); +} + +/** Less-than operator. + * \relates uuid_t + */ +inline bool operator<(const comet::uuid_t& lhs, const comet::uuid_t& rhs) +{ + return lhs.cmp(rhs)<0; +} + +/** Less-than operator. + * \relates uuid_t + */ +inline bool operator<(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) +{ + return lhs.cmp(comet::uuid_t::create_const_reference(rhs))<0; +} + +/** Less-than operator. + * \relates uuid_t + */ +inline bool operator<(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) +{ + return comet::uuid_t::create_const_reference(lhs).cmp(rhs)<0; +} + +/** Greater-than-equals operator. + * \relates uuid_t + */ +inline bool operator>=(const comet::uuid_t& lhs, const comet::uuid_t& rhs) +{ + return lhs.cmp(rhs)>=0; +} + +/** Greater-than-equals operator. + * \relates uuid_t + */ +inline bool operator>=(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) +{ + return lhs.cmp(comet::uuid_t::create_const_reference(rhs))>=0; +} + +/** Greater-than-equals operator. + * \relates uuid_t + */ +inline bool operator>=(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) +{ + return comet::uuid_t::create_const_reference(lhs).cmp(rhs)>=0; +} + +/** Greater-than operator. + * \relates uuid_t + */ +inline bool operator>(const comet::uuid_t& lhs, const comet::uuid_t& rhs) +{ + return lhs.cmp(rhs)>0; +} + +/** Greater-than operator. + * \relates uuid_t + */ +inline bool operator>(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) +{ + return lhs.cmp(comet::uuid_t::create_const_reference(rhs))>0; +} + +/** Greater-than operator. + * \relates uuid_t + */ +inline bool operator>(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) +{ + return comet::uuid_t::create_const_reference(lhs).cmp(rhs)>0; +} + +/** Less-than-equals operator. + * \relates uuid_t + */ +inline bool operator<=(const comet::uuid_t& lhs, const comet::uuid_t& rhs) +{ + return lhs.cmp(rhs)<=0; +} + +/** Less-than-equals operator. + * \relates uuid_t + */ +inline bool operator<=(const comet::uuid_t& lhs, const COMET_GUID_BASE& rhs) +{ + return lhs.cmp(comet::uuid_t::create_const_reference(rhs))<=0; +} + +/** Less-than-equals operator. + * \relates uuid_t + */ +inline bool operator<=(const COMET_GUID_BASE& lhs, const comet::uuid_t& rhs) +{ + return comet::uuid_t::create_const_reference(lhs).cmp(rhs)<=0; +} +//@} + +/// \name overloads for output/input to/from streams +/// @{ + +/** Output to an ostream. + * \relates uuid_t + */ +template +inline std::basic_ostream& operator<<(std::basic_ostream& os, const comet::uuid_t& u) +{ + E buf[36]; + u.copy_to_str(buf); + os.write(buf, 36); + return os; +} + +/** Input from an istream. + * \relates uuid_t + */ +template +inline std::basic_istream& operator>>(std::basic_istream& is, comet::uuid_t& u) +{ + typename std::basic_istream::sentry se(is); + if (se) + { + E buf[36]; + is.read(buf, 36); + if (!u.init_from_str(buf, is.gcount())) + is.setstate(std::ios::badbit); + } + return is; +} +//@} + +} // namespace comet + +#endif diff --git a/lib/local/CamCom/comet/variant.h b/lib/local/CamCom/comet/variant.h new file mode 100644 index 0000000..95129e2 --- /dev/null +++ b/lib/local/CamCom/comet/variant.h @@ -0,0 +1,1054 @@ +/** \file + * Wrapper for VARIANT. + */ +/* + * Copyright 2000, 2001 Sofus Mortensen, Michael Geddes + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_VARIANT_H +#define COMET_VARIANT_H + +#include +#include +#include +#include +#include +#include +#include + +#include + +#pragma warning(push) +#pragma warning(disable : 4127) + +#define COMET_VARIANT_OPERATOR(op, name) \ + variant_t operator##op(const variant_t& x) const \ + { \ + VARIANT t; \ + Var##name(const_cast(get_var()), const_cast(x.get_var()), &t) | raise_exception; \ + return auto_attach(t); \ + } \ + \ + variant_t& operator##op##=(const variant_t& x) \ + { \ + return operator=(operator##op(x)); \ + } + +#define COMET_VARIANT_CONVERTERS_EX_(type, vartype, func) \ + variant_t(type x) throw() \ + { \ + V_##vartype(this) = x; V_VT(this) = VT_##vartype; \ + } \ + \ + func() const \ + { \ + if (V_VT(this) == VT_##vartype) return V_##vartype(this); \ + variant_t v(*this, VT_##vartype); \ + return V_##vartype(v.get_var()); \ + } \ + \ + variant_t& operator=(type x) throw() \ + { \ + clear(); \ + V_##vartype(this) = x; V_VT(this) = VT_##vartype; \ + return *this; \ + } + +#define COMET_VARIANT_CONVERTERS_EXPLICIT(type, vartype, funcname) COMET_VARIANT_CONVERTERS_EX_(type,vartype, type funcname) +#define COMET_VARIANT_CONVERTERS(type, vartype) COMET_VARIANT_CONVERTERS_EX_(type,vartype, operator type ) + +#define COMET_VARIANT_FRIENDS(type) \ + inline bool operator!=(type x, const variant_t& y) { return y != x; } \ + inline bool operator==(type x, const variant_t& y) { return y == x; } \ + inline bool operator<(type x, const variant_t& y) { return y > x; } \ + inline bool operator<=(type x, const variant_t& y) { return y >= x; } \ + inline bool operator>(type x, const variant_t& y) { return y < x; } \ + inline bool operator>=(type x, const variant_t& y) { return y <= x; } + +namespace comet { + + template class safearray_t; + + namespace impl { + + template + inline HRESULT compare(const T& operand1, const T& operand2) + { + if (operand1 == operand2) + return VARCMP_EQ; + else if (operand1 < operand2) + return VARCMP_LT; + else + return VARCMP_GT; + } + + /** + * Comparison workaround for broken VarCmp. + * + * VarCmp() doesn't work for several of the numeric types + * (VT_I1, VT_INT, VT_UI2, VT_UI4, VT_UINT or VT_UI8) so we have + * to do these ourselves. + * + * @see http://source.winehq.org/WineAPI/VarCmp.html + */ + inline HRESULT var_cmp( + VARIANT* lhs, VARIANT* rhs, LCID lcid, ULONG flags) + { + switch (V_VT(lhs)) + { + case VT_I1: + return compare(V_I1(lhs), V_I1(rhs)); + case VT_INT: + return compare(V_INT(lhs), V_INT(rhs)); + case VT_UI2: + return compare(V_UI2(lhs), V_UI2(rhs)); + case VT_UI4: + return compare(V_UI4(lhs), V_UI4(rhs)); + case VT_UINT: + return compare(V_UINT(lhs), V_UINT(rhs)); + case VT_UI8: + return compare(V_UI8(lhs), V_UI8(rhs)); + default: + return ::VarCmp(lhs, rhs, lcid, flags); + } + } + + }; + + template class com_ptr; + + + /*! \addtogroup COMType + */ + //@{ + + //! Wrapper for VARIANT type. + /** variant_t is exception safe (basic and strong guarantee). + */ + class variant_t : private ::tagVARIANT + { + private: + void init() throw() + { + //::VariantInit(this); + tagVARIANT * x = this; + V_VT(x)= VT_EMPTY; + } + + void create(const VARIANT& v) throw(com_error) + { + HRESULT hr = ::VariantCopy(this, const_cast(&v)); + if (FAILED(hr)) { + ::VariantClear(this); + raise_exception(hr); + } + } + + public: + //! Default constructor + variant_t() throw() + { + init(); + } + + private: + struct tagMissing {}; + + variant_t(const tagMissing&) throw() + { + init(); + vt = VT_ERROR; + scode = DISP_E_PARAMNOTFOUND; + } + + struct tagNothing {}; + + variant_t(const tagNothing&) throw() + { + init(); + vt = VT_DISPATCH; + pdispVal = 0; + } + + struct tagNull {}; + + variant_t(const tagNull&) throw() + { + init(); + vt = VT_NULL; + } + + public: + //! Return a variant constructed as missing. + /** (VT_ERROR with code DISP_E_PARAMNOTFOUND ) + */ + static const variant_t& missing() + { + static tagMissing t; + static variant_t v(t); + return v; + } + + //! Return a variant contructed as nothing. + /** (VT_DISPATCH with value 0) + */ + static const variant_t& nothing() + { + static tagNothing t; + static variant_t v(t); + return v; + } + + //! Return a variant constructed as null (VT_NULL). + static const variant_t& null() + { + static tagNull t; + static variant_t v(t); + return v; + } + + //! Copy constructor + /*! + \exception com_error + Thrown if underlying VariantCopy fails. + */ + variant_t(const variant_t& v) throw(com_error) + { + init(); + create(v); + } + + public: + + //! VariantChangeType Constructor + /*! + Copies variant and changes to specified type. + + \note Unlike the _variant_t of VC, variant_t uses Thread Locale for type changes instead of the user setting. + + \par v + Variant to copy from + \par vartype + Type to change to. + + \exception com_error + Thrown if underlying VariantChangeTypeEx fails. + */ + variant_t(const variant_t& v, VARTYPE vartype) throw(com_error) + { + init(); + if (vartype != V_VT(&v)) + ::VariantChangeTypeEx(get_var(), + const_cast(v.get_var()), + GetThreadLocale(), + 0, vartype) | raise_exception; + else + ::VariantCopy(this, const_cast(v.get_var())); + } + + variant_t(const variant_t& v, VARTYPE vartype, std::nothrow_t) throw(com_error) + { + init(); + if (vartype != V_VT(&v)) + ::VariantChangeTypeEx(get_var(), + const_cast(v.get_var()), + GetThreadLocale(), + 0, vartype); + else + ::VariantCopy(this, const_cast(v.get_var())); + } + + //! Constructor + /*! + \exception com_error + Thrown if underlying VariantCopy fails. + */ + explicit variant_t(const VARIANT& v) throw(com_error) + { + init(); + create(v); + } + + //! Attaching constructor + /*! + Takes ownership of specified VARIANT. + + \param v + auto_attach wrapper variant to attach to the variant_t + */ + variant_t(const impl::auto_attach_t& v) throw() + { + memcpy(this, &const_cast(v.get()), sizeof(VARIANT)); + } + + private: + void clear() COMET_THROWS_ASSERT + { + HRESULT hr = ::VariantClear(this); + COMET_ASSERT(SUCCEEDED(hr)); + /* Avoid C4189 */ hr; + } + + public: + + //! Destructor + /*! + \note Be aware that the underlying call to VariantClear may fail. + But since we are not allowed to throw any exceptions (Otherwise STL containers cannot guarantee exception safety) + from within a + destructor, a failing VariantClear will be ignored. + Instead we assert for success in debug and ignore in release. + */ + ~variant_t() throw() + { + clear(); + } + + /// \name com_ptr conversion. + //@{ + private: + template inline void create(const com_ptr& x) throw(); + + + public: + template variant_t(const com_ptr& x) throw() + { + init(); + create(x); + } + + template + variant_t& operator=(const com_ptr& x) throw() + { + clear(); create(x); return *this; + } + + //@} + + + //!\name bool Conversion + //@{ + variant_t(bool x) throw() { + init(); + V_VT(this) = VT_BOOL; + V_BOOL(this) = x ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; + } + + operator bool() const throw() + { + if (V_VT(this) == VT_BOOL) return (V_BOOL(this) != COMET_VARIANT_FALSE); + variant_t v(*this, VT_BOOL); + return (V_BOOL(&v) != COMET_VARIANT_FALSE); + } + + variant_t& operator=(bool x) throw() + { + clear(); + V_VT(this) = VT_BOOL; + V_BOOL(this) = x ? COMET_VARIANT_TRUE : COMET_VARIANT_FALSE; + return *this; + } + + //@} + + //!\name string Conversion + //@{ + variant_t(const bstr_t& s) throw(std::bad_alloc) + { + init(); + bstr_t t(s); + V_BSTR(this) = bstr_t::detach(t); + V_VT(this) = VT_BSTR; + } + + variant_t(const wchar_t* s) throw(std::bad_alloc) + { + init(); + bstr_t t(s); + V_BSTR(this) = bstr_t::detach(t); + V_VT(this) = VT_BSTR; + } + + variant_t(const std::wstring& s) throw(std::bad_alloc) + { + init(); + bstr_t t(s); + V_BSTR(this) = bstr_t::detach(t); + V_VT(this) = VT_BSTR; + } + + variant_t(const std::string& s) throw(std::bad_alloc) + { + init(); + bstr_t bs(s); + V_BSTR(this) = bstr_t::detach(bs); + V_VT(this) = VT_BSTR; + } + + variant_t(const char* x) + { + init(); + V_BSTR(this) = bstr_t::detach(x); + V_VT(this) = VT_BSTR; + } + + /** Attach a BSTR to a variant. + * \code + bstr_t val = L"A large string"; + variant_t(auto_attach(val.detach())); + \endcode + */ + variant_t( const impl::auto_attach_t &bstrVal) + { + V_BSTR(this) = bstrVal.get(); + V_VT(this) = VT_BSTR; + } + +/* operator bstr_t() const + { + if (V_VT(this) == VT_BSTR) return V_BSTR(this); + variant_t v(*this, VT_BSTR); + VARIANT t = v.detach(); + return auto_attach(V_BSTR(&t)); + }*/ + + bstr_t str() const + { + if (V_VT(this) == VT_BSTR) return V_BSTR(this); + if (V_VT(this) == (VT_BSTR | VT_BYREF)) return *V_BSTRREF(this); + if (V_VT(this) == VT_NULL) return bstr_t(); + variant_t v(*this, VT_BSTR); + VARIANT t = v.detach(); + return auto_attach(V_BSTR(&t)); + } + + operator bstr_t() const + { + return str(); + } + + operator std::wstring() const + { + if (V_VT(this) == VT_BSTR) return V_BSTR(this); + if (V_VT(this) == (VT_BSTR | VT_BYREF)) return *V_BSTRREF(this); + if (V_VT(this) == VT_NULL) return std::wstring(); + variant_t v(*this, VT_BSTR); + return V_BSTR(&v) ? std::wstring(V_BSTR(&v)) : std::wstring(); + } + + operator std::string() const + { + return str().s_str(); + } + + variant_t& operator=(const bstr_t& s) + { + variant_t t(s); + swap(t); + return *this; + } + + variant_t& operator=(const wchar_t* s) + { + variant_t t(s); + swap(t); + return *this; + } + + variant_t& operator=(const char* s) + { + variant_t t(s); + swap(t); + return *this; + } + + variant_t& operator=(const std::wstring& s) + { + variant_t t(s); + swap(t); + return *this; + } + + variant_t& operator=(const std::string& s) + { + variant_t t(s); + swap(t); + return *this; + } + + //@} + + //! \name safearray Conversions + //@{ + template + variant_t(const safearray_t &x) + { + safearray_t sa( x ); + V_ARRAY(this) = sa.detach(); + V_VT(this) = (VT_ARRAY | safearray_t::traits::vt); + } + + template + variant_t& operator=(const safearray_t &x) throw() + { + variant_t t(x); + swap(t); + return *this; + } + + /** Allow attaching a SAFEARRAY to a variant. + * \code + * safearray_t array; + * variant_t(auto_attach(array.detach())); + * \endcode + */ + variant_t( const impl::auto_attach_t &psa) + { + V_ARRAY(this) = psa.get(); + VARTYPE vt; + SafeArrayGetVartype( psa.get(), &vt) | raise_exception; + V_VT(this) = VARTYPE(VT_ARRAY | vt) ; + } + + + //@} + + //! \name Numeric Conversions + //@{ + + COMET_VARIANT_CONVERTERS_EXPLICIT(short, I2, as_short); + inline operator short() const { return as_short(); } + COMET_VARIANT_CONVERTERS_EXPLICIT(int, I4, as_int); // Do not use VT_INT, because VariantChangeTypeEx does not support VT_INT. + inline operator int() const { return as_int(); } + COMET_VARIANT_CONVERTERS_EXPLICIT(long, I4, as_long); + inline operator long() const { return as_long(); } + COMET_VARIANT_CONVERTERS_EXPLICIT(LONGLONG, I8, as_longlong); + inline operator LONGLONG() const { return as_longlong(); } + COMET_VARIANT_CONVERTERS_EXPLICIT(float, R4, as_float); + inline operator float() const { return as_float(); } + COMET_VARIANT_CONVERTERS_EXPLICIT(double, R8, as_double); + inline operator double() const { return as_double(); } + // These can't have implicit conversions as they cause confusion when + // assigning some common objects from variant_ts. + COMET_VARIANT_CONVERTERS_EXPLICIT(char, I1, as_char); + COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned char, UI1, as_uchar); + COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned short, UI2, as_ushort); + COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned int, UI4, as_uint); + COMET_VARIANT_CONVERTERS_EXPLICIT(unsigned long, UI4, as_ulong); + COMET_VARIANT_CONVERTERS_EXPLICIT(ULONGLONG, UI8, as_ulonglong); + COMET_VARIANT_CONVERTERS_EXPLICIT(DECIMAL, DECIMAL, as_decimal); + + wchar_t as_wchar_t() const { return as_ushort(); } + //@} + // CONVERTERS(DATE, DATE); + + //! \name Currency Conversions + //@{ + + variant_t(const currency_t &x) throw() + { + V_CY(this) = x.get(); + V_VT(this) = VT_CY; + } + + operator currency_t() const + { + return as_curency(); + } + currency_t as_curency() const + { + if (V_VT(this) == VT_CY) return V_CY(this); + variant_t v(*this, VT_CY); + return V_CY(v.get_var()); + } + + variant_t& operator=(const currency_t &x) throw() + { + clear(); + V_CY(this) = x.get(); + V_VT(this) = VT_CY; + return *this; + } + + //@} + + //! \name Date Conversions + //@{ + + variant_t(const datetime_t &x) throw() + { + V_DATE(this) = x.get(); + V_VT(this) = VT_DATE; + } + + operator datetime_t() const + { + if (V_VT(this) == VT_DATE) return datetime_t(V_DATE(this)); + variant_t v(*this, VT_DATE); + return datetime_t(V_DATE(v.get_var())); + } + + variant_t& operator=(const datetime_t &x) throw() + { + clear(); + V_DATE(this) = x.get(); + V_VT(this) = VT_DATE; + return *this; + } + + //@} + /// swap routine, fast with nothrow guarantee + void swap(variant_t& x) throw() + { + ::tagVARIANT t; + memcpy(&t, this, sizeof(VARIANT)); + memcpy(this, &x, sizeof(VARIANT)); + memcpy(&x, &t, sizeof(VARIANT)); + } + + /// Assignment operator + variant_t& operator=(const variant_t& x) throw(com_error) + { + variant_t t(x); + swap(t); + return *this; + } + + //! \name Comparison operators + //@{ + template + bool operator==(const T& x) const throw(com_error) + { + return operator==( variant_t(x) ); + } + + bool operator==(const variant_t& x) const throw(com_error) + { + if (V_VT(&x) != V_VT(this)) { + if (V_VT(this) == VT_EMPTY || V_VT(&x) == VT_EMPTY) return false; + variant_t tmp(x, V_VT(this), std::nothrow); + if (V_VT(&tmp) != V_VT(this)) return false; + return VARCMP_EQ == (impl::var_cmp(const_cast(get_var()), const_cast(tmp.get_var()), GetThreadLocale(), 0) | raise_exception) ; + } else { + switch (impl::var_cmp(const_cast(get_var()), const_cast(x.get_var()), GetThreadLocale(), 0)) + { + case VARCMP_EQ: + case VARCMP_NULL: + return true; + default: + return false; + } + } + } + + template + bool operator!=(const T& x) const throw(com_error) + { + return !operator==(variant_t(x)); + } + + bool operator!=(const variant_t& x) const throw(com_error) + { + return !operator==(x); + } + + template + bool operator<(const T& x) const throw(com_error) + { + return operator<(variant_t(x)); + } + + bool operator<(const variant_t& x) const throw(com_error) + { + if (V_VT(&x) != V_VT(this)) { + return VARCMP_LT == (impl::var_cmp(const_cast(get_var()), const_cast(variant_t(x, V_VT(this)).get_var()), GetThreadLocale(), 0) | raise_exception); + } else { + return VARCMP_LT == (impl::var_cmp(const_cast(get_var()), const_cast(x.get_var()), GetThreadLocale(), 0) | raise_exception); + } + } + + template + bool operator<=(const T& x) const throw(com_error) + { + return operator<=(variant_t(x)); + } + + template + bool operator>(const T& x) const throw(com_error) + { + return operator>(variant_t(x)); + } + + bool operator>(const variant_t& x) const throw(com_error) + { + if (V_VT(&x) != V_VT(this)) { + return VARCMP_GT == (impl::var_cmp(const_cast(get_var()), const_cast(variant_t(x, V_VT(this)).get_var()), GetThreadLocale(), 0) | raise_exception); + } else { + return VARCMP_GT == (impl::var_cmp(const_cast(get_var()), const_cast(x.get_var()), GetThreadLocale(), 0) | raise_exception); + } + } + + bool operator<=(const variant_t& x) const throw(com_error) + { + return !operator>(x); + } + + template + bool operator>=(const T& x) const throw(com_error) + { + return operator>=(variant_t(x)); + } + + bool operator>=(const variant_t& x) const throw(com_error) + { + return !operator<(x); + } + + //@} + + //! \name Mathematical operators + //@{ + COMET_VARIANT_OPERATOR(+,Add); + COMET_VARIANT_OPERATOR(-,Sub); + COMET_VARIANT_OPERATOR(*,Mul); + COMET_VARIANT_OPERATOR(/,Div); + COMET_VARIANT_OPERATOR(&,And); + COMET_VARIANT_OPERATOR(|,Or); + COMET_VARIANT_OPERATOR(^,Xor); + COMET_VARIANT_OPERATOR(%,Mod); + + variant_t operator-() const + { + VARIANT t; + VarNeg(const_cast(get_var()), &t) | raise_exception; + return auto_attach(t); + } + + void change_type(VARTYPE vartype) throw(com_error) + { + if (vartype != V_VT(this)) + ::VariantChangeTypeEx(get_var(), + get_var(), + GetThreadLocale(), + 0, vartype) | raise_exception; + } + + //@} + + //! Is variant a BSTR + bool is_string() const + { + return VT_BSTR == get_vt(true); + } + + //! Is variant an IDispatch or IUnknown pointer? + bool is_object() const + { + return VT_UNKNOWN == get_vt(true) || VT_DISPATCH == get_vt(true); + } + + /*! Is variant empty. + * This compares strictly to VT_EMPTY. + */ + bool is_empty() const throw() + { + return VT_EMPTY == get_vt(); + } + /*! Is variant 'NULL'. + * This compares strictly to VT_NULL. + */ + bool is_null() const throw() + { + return VT_NULL == get_vt(); + } + + /**! Is variant Nothing. + * Is this a NULL pointer, empty, or null. + * This returns true if the value would cleanly try_cast to a NULL + * com_ptr. + */ + bool is_nothing() const throw() + { + switch (get_vt()) { + case VT_DISPATCH: return NULL == V_DISPATCH(&get()); + case VT_UNKNOWN: return NULL == V_UNKNOWN(&get()); + case VT_DISPATCH|VT_BYREF: return NULL == *V_DISPATCHREF(&get()); + case VT_UNKNOWN|VT_BYREF: return NULL == *V_UNKNOWNREF(&get()); + case VT_EMPTY: + case VT_NULL: return true; + } + return false; + } + + + //! \name Accessor Functions + //@{ + const VARIANT& get() const throw() + { + return *get_var(); + } + + VARTYPE get_vt() const throw() + { + return VARTYPE(V_VT(this)); + } + + VARTYPE get_vt(bool ignore_byref) const throw() + { + return ignore_byref ? VARTYPE(V_VT(this) & ~VT_BYREF) : VARTYPE(V_VT(this)); + } + + static VARIANT detach(variant_t& v) throw() + { + return v.detach(); + } + + VARIANT detach() throw() + { + VARIANT r = *get_var(); + V_VT(this) = VT_EMPTY; + return r; + } + + static const variant_t& create_const_reference(const VARIANT& x) + { + return *reinterpret_cast(&x); + } + + static variant_t& create_reference(VARIANT& x) + { + return *reinterpret_cast(&x); + } + + //! [in] adapter. + /*! + Used when calling raw interfaces that require an [in] VARIANT argument. + + \code + variant_t v; + HRESULT hr = pRawInterface->raw_Method(v.in()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + VARIANT in() const throw() + { + return *get_var(); + } + + //! [in] adapter. + /*! + Used when calling raw interfaces that require an [in] VARIANT* argument. + + \code + variant_t v; + HRESULT hr = pRawInterface->raw_Method(v.in_ptr()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + VARIANT* in_ptr() const throw() + { + return const_cast(get_var()); + } + + //! [out] adapter. + /*! + Used when calling raw interfaces that require an [out] VARIANT * argument. + + \code + variant_t v; + HRESULT hr = pRawInterface->raw_MethodThatReturnsVariant(v.out()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + VARIANT* out() throw() + { + clear(); + new (this) variant_t(); + return get_var(); + } + + //! [in, out] adapter. + /*! + Used when calling raw interfaces that require an [in, out] VARIANT * argument. + + \code + variant_t v; + HRESULT hr = pRawInterface->raw_MethodThatChangesVariant(v.inout()); + \endcode + + Only use this wrapper when forced to deal with raw interface. + */ + VARIANT* inout() throw() + { + return get_var(); + } + //@} + + private: +#define __COMET_VARAIANT_OUT(vartype) case VT_##vartype: os << V_##vartype(this); break +#define __COMET_VARAIANT_OUT_CAST(vartype,cast) case VT_##vartype: os << cast(V_##vartype(this)); break + template + std::basic_ostream &output(std::basic_ostream &os) const + { + switch (V_VT(this)) + { + __COMET_VARAIANT_OUT_CAST(I1, short); + __COMET_VARAIANT_OUT(I2); + __COMET_VARAIANT_OUT(I4); + __COMET_VARAIANT_OUT(INT); + __COMET_VARAIANT_OUT_CAST(UI1, (unsigned short)); + __COMET_VARAIANT_OUT(UI2); + __COMET_VARAIANT_OUT(UI4); + __COMET_VARAIANT_OUT(UINT); + __COMET_VARAIANT_OUT(R4); + __COMET_VARAIANT_OUT(R8); +// __COMET_VARAIANT_OUT_CAST(CY, currency_t::create_const_reference); +// __COMET_VARAIANT_OUT_CAST(DATE, datetime_t::create_const_reference); + default: + os << std::basic_string(*this); + break; + } + return os; + } +#undef __COMET_VARAIANT_OUT + public: + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const variant_t &val) + { + return val.output(os); + } + + friend + std::basic_ostream &operator<<(std::basic_ostream &os, const variant_t &val) + { + return val.output(os); + } + + private: + const VARIANT* get_var() const throw() + { +#ifndef __BORLANDC__ + return static_cast(this); +#else + return reinterpret_cast(this); +#endif + } + + VARIANT* get_var() throw() + { +#ifdef __BORLANDC__ +#if __BORLANDC__ >= 0x0551 + return reinterpret_cast(this); +#else + return static_cast(this); +#endif +#else + return reinterpret_cast(this); +#endif + } + }; + //@} + + COMET_VARIANT_FRIENDS(short); + COMET_VARIANT_FRIENDS(int); + COMET_VARIANT_FRIENDS(long); + COMET_VARIANT_FRIENDS(float); + COMET_VARIANT_FRIENDS(double); + + COMET_VARIANT_FRIENDS(const char*); + COMET_VARIANT_FRIENDS(const wchar_t*); + + COMET_VARIANT_FRIENDS(const std::wstring&); + COMET_VARIANT_FRIENDS(const std::string&); + + COMET_VARIANT_FRIENDS(const DECIMAL&); + +} // namespace + +#include +#include + +namespace comet{ + template inline void variant_t::create(const com_ptr& x) throw() + { + com_ptr< ::IDispatch > p( com_cast(x) ); + if (p != 0) { + V_VT(this) = VT_DISPATCH; + V_DISPATCH(this) = p.detach(); + } else { + V_VT(this) = VT_UNKNOWN; +// VTT_(punkVal) = static_cast<::IUnknown*>(com_ptr(x).detach()); + com_ptr< ::IUnknown > p( com_cast(x) ); + V_UNKNOWN(this) = p.detach(); + } + } + +} + +namespace std { + template<> inline void swap(comet::variant_t& x, comet::variant_t& y) COMET_STD_SWAP_NOTHROW + { + x.swap(y); + } +} + +#undef COMET_VARIANT_CONVERTERS +#undef COMET_VARIANT_CONVERTERS_EX_ +#undef COMET_VARIANT_CONVERTERS_EXPLICIT +#undef COMET_VARIANT_OPERATOR +#undef COMET_VARIANT_FRIENDS + +namespace comet { + /*! \addtogroup COMType + */ + //@{ + + inline bool operator!=(const bstr_t& b, const variant_t& v) + { + return v != b; + } + + inline bool operator==(const bstr_t& b, const variant_t& v) + { + return v == b; + } + + inline bool operator<(const bstr_t& b, const variant_t& v) + { + return v > b; + } + + inline bool operator>(const bstr_t& b, const variant_t& v) + { + return v < b; + } + + inline bool operator<=(const bstr_t& b, const variant_t& v) + { + return v >= b; + } + + inline bool operator>=(const bstr_t& b, const variant_t& v) + { + return v <= b; + } + //@} +} + +#pragma warning(pop) + +#endif diff --git a/lib/local/CamCom/comet/variant_iterator.h b/lib/local/CamCom/comet/variant_iterator.h new file mode 100644 index 0000000..618df94 --- /dev/null +++ b/lib/local/CamCom/comet/variant_iterator.h @@ -0,0 +1,149 @@ +/** \file + * Standard C++ iterators wrapping IEnumVARIANT objects. + */ +/* + * Copyright 2000 Sofus Mortensen + * + * This material is provided "as is", with absolutely no warranty + * expressed or implied. Any use is at your own risk. Permission to + * use or copy this software for any purpose is hereby granted without + * fee, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is + * granted, provided the above notices are retained, and a notice that + * the code was modified is included with the above copyright notice. + * + * This header is part of Comet version 2. + * https://github.com/alamaison/comet + */ + +#ifndef COMET_VARIANT_ITERATOR_H +#define COMET_VARIANT_ITERATOR_H + +#include + +#include +#include + +#include + +namespace comet { + + /** \class variant_iterator enum.h comet/enum.h + * STL style iterator for IEnumVariant interface. + */ + class variant_iterator + { + com_ptr enum_; + variant_t ce_; + public: + /** Constructor. + */ + variant_iterator( const com_ptr& e ) : enum_(e) { + next(); + } + + variant_iterator() {} + + /** Move to next element. + */ + variant_iterator& operator++() { + next(); + return *this; + } + + bool operator!=(const variant_iterator& v) { + if (!v.enum_.is_null()) + throw std::logic_error( + "variant_iterator comparison does not work"); + + return !enum_.is_null(); + } + + /** Move to next element (post increment). + */ + variant_iterator operator++(int) { + variant_iterator t(*this); + operator++(); + return t; + } + + /** Current element. + */ + variant_t& operator*() { + return ce_; + } + private: + void next() { + if (enum_) { + unsigned long x = 0; + enum_->Next(1, ce_.out(), &x) | raise_exception; + if (x == 0) enum_ = 0; + } + } + }; + + /** \class itf_iterator enum.h comet/enum.h + * STL style Iterator for IEnumVARIANT interface returning a contained + * interface pointer. + */ + template class itf_iterator + { + com_ptr enum_; + com_ptr p_; + public: + /** Constructor. + */ + itf_iterator( const com_ptr& e ) : enum_(e) { + next(); + } + + itf_iterator() {} + + /** Move to next element. + */ + itf_iterator& operator++() { + next(); + return *this; + } + + bool operator!=(const itf_iterator& v) { + if (v.enum_) + throw std::logic_error( + "itf_iterator comparison does not work"); + + return enum_ != 0; + } + + /** Move to next element. + */ + itf_iterator operator++(int) { + itf_iterator t(*this); + operator++(); + return t; + } + + /** Access element. + */ + com_ptr& operator*() { + return p_; + } + private: + void next() { + if (enum_) { + unsigned long x = 0; + variant_t v; + enum_->Next(1, v.out(), &x) | raise_exception; + if (x == 0) { + enum_ = 0; + p_ = 0; + } + else { + p_ = try_cast(v); + } + } + } + }; + +} + +#endif diff --git a/lib/local/CamCom/comet_auto_mf.h b/lib/local/CamCom/comet_auto_mf.h new file mode 100644 index 0000000..0e2c1c5 --- /dev/null +++ b/lib/local/CamCom/comet_auto_mf.h @@ -0,0 +1,20 @@ +#pragma once + +#include "comet/handle_except.h" +#include + +namespace comet +{ + struct auto_mf + { + auto_mf(DWORD dwFlags = MFSTARTUP_FULL) + { + MFStartup(MF_VERSION) | comet::raise_exception; + } + ~auto_mf() + { + MFShutdown(); + } + }; +} + diff --git a/lib/local/CamCom/comet_com_ptr_array.h b/lib/local/CamCom/comet_com_ptr_array.h new file mode 100644 index 0000000..17ac424 --- /dev/null +++ b/lib/local/CamCom/comet_com_ptr_array.h @@ -0,0 +1,65 @@ +#ifndef comet_com_ptr_array_h__ +#define comet_com_ptr_array_h__ + +#include +#include + +namespace comet { + template + class com_ptr_array { + public: + com_ptr_array() : _ptr(nullptr), _count(0) {} + ~com_ptr_array() { + clear(); + } + + + TInf** in() { + return _ptr.in(); + } + + TInf*** inout() { + return _ptr.inout(); + } + + TInf*** out() { + clear(); + return _ptr.out(); + } + + TCount count() { + return _count; + } + + TCount* inout_count() { + return &_count; + } + + TCount* out_count() { + clear(); + return &_count; + } + + com_ptr operator[](size_t i) { + return com_ptr(_ptr[i]); + } + + + + private: + void clear() { + if (_ptr) { + for (DWORD i = 0; i < _count; i++) { + _ptr[i]->Release(); + } + _count = 0; + _ptr.free(); + } + } + + task_ptr _ptr; + TCount _count; + }; +} + +#endif // comet_com_ptr_array_h__ \ No newline at end of file diff --git a/lib/local/CamCom/comet_task_ptr.h b/lib/local/CamCom/comet_task_ptr.h new file mode 100644 index 0000000..dfec380 --- /dev/null +++ b/lib/local/CamCom/comet_task_ptr.h @@ -0,0 +1,85 @@ +#ifndef comet_task_ptr_h__ +#define comet_task_ptr_h__ + +#include + +namespace comet { + template + class task_ptr { + public: + task_ptr() : _ptr(0) {} + task_ptr(T* ptr) : _ptr(ptr) {} + + task_ptr( const task_ptr& other ); // non construction-copyable + task_ptr( task_ptr&& other ); // non construction-movable + task_ptr& operator=( const task_ptr& ); // non copyable + task_ptr& operator=( task_ptr&& ); // non movable + + ~task_ptr() { + free(); + } + + void free() { + if (_ptr) { + CoTaskMemFree(_ptr); + } + _ptr = 0; + } + + bool alloc(size_t size) { + free(); + _ptr = ::CoTaskMemAlloc(size); + return _ptr != NULL; + } + + bool realloc(size_t size) { + _ptr = ::CoTaskMemRealloc(_ptr, size); + return _ptr != NULL; + } + + T* in() { + return _ptr; + } + + T** inout() { + return &_ptr; + } + + T** out() { + free(); + return &_ptr; + } + +#ifdef _TYPEDEF_BOOL_TYPE + typedef task_ptr _Myt; + _TYPEDEF_BOOL_TYPE; + _OPERATOR_BOOL() const _NOEXCEPT + { // test for non-null pointer + return (_ptr != 0 ? _CONVERTIBLE_TO_TRUE : 0); + } +#else + explicit operator bool() const + { // test for non-null pointer + return _ptr != 0; + } +#endif + + T& operator[](size_t i) { + return _ptr[i]; + } + const T& operator[](size_t i) const { + return _ptr[i]; + } + T* operator->() { + return _ptr; + } + T operator*() { + return _ptr; + } + + private: + T* _ptr; + }; +} + +#endif // comet_task_ptr_h__ diff --git a/lib/local/CamCom/stdafx.cpp b/lib/local/CamCom/stdafx.cpp new file mode 100644 index 0000000..1907c1b --- /dev/null +++ b/lib/local/CamCom/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// ComCam.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/lib/local/CamCom/stdafx.h b/lib/local/CamCom/stdafx.h new file mode 100644 index 0000000..b005a83 --- /dev/null +++ b/lib/local/CamCom/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: reference additional headers your program requires here diff --git a/lib/local/CamCom/targetver.h b/lib/local/CamCom/targetver.h new file mode 100644 index 0000000..87c0086 --- /dev/null +++ b/lib/local/CamCom/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/lib/local/CppInerop/AssemblyInfo.cpp b/lib/local/CppInerop/AssemblyInfo.cpp new file mode 100644 index 0000000..700bcb4 --- /dev/null +++ b/lib/local/CppInerop/AssemblyInfo.cpp @@ -0,0 +1,38 @@ +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute("CppInterop")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("")]; +[assembly:AssemblyProductAttribute("CppInterop")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) 2016")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/lib/local/CppInerop/CameraInterop.h b/lib/local/CppInerop/CameraInterop.h new file mode 100644 index 0000000..63faa5a --- /dev/null +++ b/lib/local/CppInerop/CameraInterop.h @@ -0,0 +1,462 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED AS IS FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called open source software licenses (Open Source +// Components), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensees request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltruaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltruaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +// Camera_Interop.h + +#pragma once + +#pragma unmanaged + +// Include all the unmanaged things we need. + +#include +#include "opencv2/objdetect.hpp" +#include "opencv2/calib3d.hpp" +#include +#include +#include +#include +#include + +#include + +// For camera listings +#include "comet_auto_mf.h" +#include "camera_helper.h" + +#pragma managed + +#include +#include + +namespace CameraInterop { + + public ref class CaptureFailedException : System::Exception + { + public: + + CaptureFailedException(System::String^ message): Exception(message){} + }; + + public ref class Capture + { + private: + + // OpenCV based video capture for reading from files + cv::VideoCapture* vc; + + OpenCVWrappers::RawImage^ latestFrame; + OpenCVWrappers::RawImage^ grayFrame; + + double fps; + + bool is_webcam; + bool is_image_seq; + + int frame_num; + std::vector* image_files; + + int vid_length; + + public: + + int width, height; + + Capture(int device, int width, int height) + { + assert(device >= 0); + + latestFrame = gcnew OpenCVWrappers::RawImage(); + + vc = new cv::VideoCapture(device); + vc->set(CV_CAP_PROP_FRAME_WIDTH, width); + vc->set(CV_CAP_PROP_FRAME_HEIGHT, height); + + is_webcam = true; + is_image_seq = false; + + this->width = width; + this->height = height; + + vid_length = 0; + frame_num = 0; + + int set_width = vc->get(CV_CAP_PROP_FRAME_WIDTH); + int set_height = vc->get(CV_CAP_PROP_FRAME_HEIGHT); + + if(!vc->isOpened()) + { + throw gcnew CaptureFailedException("Failed to open the webcam"); + } + if(set_width != width || set_height != height) + { + throw gcnew CaptureFailedException("Failed to open the webcam with desired resolution"); + } + } + + Capture(System::String^ videoFile) + { + latestFrame = gcnew OpenCVWrappers::RawImage(); + + vc = new cv::VideoCapture(msclr::interop::marshal_as(videoFile)); + fps = vc->get(CV_CAP_PROP_FPS); + is_webcam = false; + is_image_seq = false; + this->width = vc->get(CV_CAP_PROP_FRAME_WIDTH); + this->height = vc->get(CV_CAP_PROP_FRAME_HEIGHT); + + vid_length = vc->get(CV_CAP_PROP_FRAME_COUNT); + frame_num = 0; + + if(!vc->isOpened()) + { + throw gcnew CaptureFailedException("Failed to open the video file"); + } + } + + // An alternative to using video files is using image sequences + Capture(System::Collections::Generic::List^ image_files) + { + + latestFrame = gcnew OpenCVWrappers::RawImage(); + + is_webcam = false; + is_image_seq = true; + this->image_files = new std::vector(); + + for(int i = 0; i < image_files->Count; ++i) + { + this->image_files->push_back(msclr::interop::marshal_as(image_files[i])); + } + vid_length = image_files->Count; + } + + static System::Collections::Generic::Dictionary^>^>^ GetListingFromFile(std::string filename) + { + // Check what cameras have been written (using OpenCVs XML packages) + cv::FileStorage fs_read(filename, cv::FileStorage::READ); + + auto managed_camera_list_initial = gcnew System::Collections::Generic::Dictionary^>^>(); + + cv::FileNode camera_node_list = fs_read["cameras"]; + + // iterate through a sequence using FileNodeIterator + for(size_t idx = 0; idx < camera_node_list.size(); idx++ ) + { + std::string camera_name = (std::string)camera_node_list[idx]["name"]; + + cv::FileNode resolution_list = camera_node_list[idx]["resolutions"]; + auto resolutions = gcnew System::Collections::Generic::List^>(); + for(size_t r_idx = 0; r_idx < resolution_list.size(); r_idx++ ) + { + int x = (int)resolution_list[r_idx]["x"]; + int y = (int)resolution_list[r_idx]["y"]; + resolutions->Add(gcnew System::Tuple(x, y)); + } + managed_camera_list_initial[gcnew System::String(camera_name.c_str())] = resolutions; + } + fs_read.release(); + return managed_camera_list_initial; + } + + static void WriteCameraListingToFile(System::Collections::Generic::Dictionary^>^>^ camera_list, std::string filename) + { + cv::FileStorage fs("camera_list.xml", cv::FileStorage::WRITE); + + fs << "cameras" << "["; + for each( System::String^ name_m in camera_list->Keys ) + { + + std::string name = msclr::interop::marshal_as(name_m); + + fs << "{:" << "name" << name; + fs << "resolutions" << "["; + auto resolutions = camera_list[name_m]; + for(int j = 0; j < resolutions->Count; j++) + { + + fs << "{:" << "x" << resolutions[j]->Item1 << "y" << resolutions[j]->Item2; + fs<< "}"; + } + fs << "]"; + fs << "}"; + } + fs << "]"; + fs.release(); + } + + static System::Collections::Generic::List^>^, OpenCVWrappers::RawImage^>^>^ GetCameras(System::String^ root_directory_m) + { + std::string root_directory = msclr::interop::marshal_as(root_directory_m); + auto managed_camera_list_initial = GetListingFromFile(root_directory + "camera_list.xml"); + + auto managed_camera_list = gcnew System::Collections::Generic::List^>^, OpenCVWrappers::RawImage^>^>(); + + // Using DirectShow for capturing from webcams (for MJPG as has issues with other formats) + comet::auto_mf auto_mf; + + std::vector cameras = camera_helper::get_all_cameras(); + + // A Surface Pro specific hack, it seems to list webcams in a weird way + for (size_t i = 0; i < cameras.size(); ++i) + { + cameras[i].activate(); + std::string name = cameras[i].name(); + if(name.compare("Microsoft LifeCam Front") == 0) + { + cameras.push_back(cameras[i]); + cameras.erase(cameras.begin() + i); + } + } + + + for (size_t i = 0; i < cameras.size(); ++i) + { + cameras[i].activate(); + std::string name = cameras[i].name(); + System::String^ name_managed = gcnew System::String(name.c_str()); + + // List camera media types + auto media_types = cameras[i].media_types(); + + System::Collections::Generic::List^>^ resolutions; + std::set> res_set; + + // If we have them just use pre-loaded resolutions + if(managed_camera_list_initial->ContainsKey(name_managed)) + { + resolutions = managed_camera_list_initial[name_managed]; + } + else + { + resolutions = gcnew System::Collections::Generic::List^>(); + for (size_t m = 0; m < media_types.size(); ++m) + { + auto media_type_curr = media_types[m]; + res_set.insert(std::pair(std::pair(media_type_curr.resolution().width, media_type_curr.resolution().height))); + } + } + + // Grab some sample images and confirm the resolutions + cv::VideoCapture cap1(i); + // Go through resolutions if they have not been identified + if(resolutions->Count == 0) + { + for (auto beg = res_set.begin(); beg != res_set.end(); ++beg) + { + auto resolution = gcnew System::Tuple(beg->first, beg->first); + + cap1.set(CV_CAP_PROP_FRAME_WIDTH, resolution->Item1); + cap1.set(CV_CAP_PROP_FRAME_HEIGHT, resolution->Item2); + + // Add only valid resolutions as API sometimes provides wrong ones + int set_width = cap1.get(CV_CAP_PROP_FRAME_WIDTH); + int set_height = cap1.get(CV_CAP_PROP_FRAME_HEIGHT); + + resolution = gcnew System::Tuple(set_width, set_height); + if(!resolutions->Contains(resolution)) + { + resolutions->Add(resolution); + } + } + managed_camera_list_initial[name_managed] = resolutions; + } + + cv::Mat sample_img; + OpenCVWrappers::RawImage^ sample_img_managed = gcnew OpenCVWrappers::RawImage(); + + // Now that the resolutions have been identified, pick a camera and create a thumbnail + if(resolutions->Count > 0) + { + int resolution_ind = resolutions->Count / 2; + + if(resolution_ind >= resolutions->Count) + resolution_ind = resolutions->Count - 1; + + auto resolution = resolutions[resolution_ind]; + + cap1.set(CV_CAP_PROP_FRAME_WIDTH, resolution->Item1); + cap1.set(CV_CAP_PROP_FRAME_HEIGHT, resolution->Item2); + + for (int k = 0; k < 5; ++k) + cap1.read(sample_img); + + // Flip horizontally + cv::flip(sample_img, sample_img, 1); + + + } + cap1.~VideoCapture(); + + sample_img.copyTo(sample_img_managed->Mat); + + managed_camera_list->Add(gcnew System::Tuple^>^, OpenCVWrappers::RawImage^>(gcnew System::String(name.c_str()), resolutions, sample_img_managed)); + } + + WriteCameraListingToFile(managed_camera_list_initial, root_directory + "camera_list.xml"); + + return managed_camera_list; + } + + OpenCVWrappers::RawImage^ GetNextFrame(bool mirror) + { + frame_num++; + + if(vc != nullptr) + { + + bool success = vc->read(latestFrame->Mat); + + if (!success) + { + // Indicate lack of success by returning an empty image + cv::Mat empty_mat = cv::Mat(); + empty_mat.copyTo(latestFrame->Mat); + return latestFrame; + } + } + else if(is_image_seq) + { + if(image_files->empty()) + { + // Indicate lack of success by returning an empty image + cv::Mat empty_mat = cv::Mat(); + empty_mat.copyTo(latestFrame->Mat); + return latestFrame; + } + + cv::Mat img = cv::imread(image_files->at(0), -1); + img.copyTo(latestFrame->Mat); + // Remove the first frame + image_files->erase(image_files->begin(), image_files->begin() + 1); + } + + if (grayFrame == nullptr) { + if (latestFrame->Width > 0) { + grayFrame = gcnew OpenCVWrappers::RawImage(latestFrame->Width, latestFrame->Height, CV_8UC1); + } + } + + if(mirror) + { + flip(latestFrame->Mat, latestFrame->Mat, 1); + } + + + if (grayFrame != nullptr) { + cvtColor(latestFrame->Mat, grayFrame->Mat, CV_BGR2GRAY); + } + + return latestFrame; + } + + double GetProgress() + { + if(vc != nullptr && is_webcam) + { + return - 1.0; + } + else + { + return (double)frame_num / (double)vid_length; + } + } + + bool isOpened() + { + if(vc != nullptr) + return vc->isOpened(); + else + { + if(is_image_seq && image_files->size() > 0) + return true; + else + return false; + } + } + + OpenCVWrappers::RawImage^ GetCurrentFrameGray() { + return grayFrame; + } + + double GetFPS() { + return fps; + } + + // Finalizer. Definitely called before Garbage Collection, + // but not automatically called on explicit Dispose(). + // May be called multiple times. + !Capture() + { + // Automatically closes capture object before freeing memory. + if(vc != nullptr) + { + vc->~VideoCapture(); + } + if(image_files != nullptr) + delete image_files; + } + + // Destructor. Called on explicit Dispose() only. + ~Capture() + { + this->!Capture(); + } + }; + +} diff --git a/lib/local/CppInerop/CppInerop.vcxproj b/lib/local/CppInerop/CppInerop.vcxproj new file mode 100644 index 0000000..0dd42b2 --- /dev/null +++ b/lib/local/CppInerop/CppInerop.vcxproj @@ -0,0 +1,205 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {78196985-EE54-411F-822B-5A23EDF80642} + Win32Proj + CppInerop + 8.1 + + + + DynamicLibrary + true + v140 + Unicode + true + + + DynamicLibrary + false + v140 + true + Unicode + true + + + DynamicLibrary + true + v140 + Unicode + true + + + DynamicLibrary + false + v140 + true + Unicode + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions) + ./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;%(AdditionalIncludeDirectories) + + + Windows + true + + + + + + + Level3 + Disabled + _DEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions) + ./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;%(AdditionalIncludeDirectories) + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions) + ./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions) + ./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + + + + + + + + + + + + + + + {b47a5f12-2567-44e9-ae49-35763ec82149} + + + {0cec6a75-17ba-4dc5-9405-c74154921e60} + + + {0e7fc556-0e80-45ea-a876-dde4c2fedcd7} + + + {bdc1d107-de17-4705-8e7b-cdde8bfb2bf8} + + + + + + ..\..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\WindowsBase.dll + + + + + + \ No newline at end of file diff --git a/lib/local/CppInerop/CppInerop.vcxproj.filters b/lib/local/CppInerop/CppInerop.vcxproj.filters new file mode 100644 index 0000000..6d1324c --- /dev/null +++ b/lib/local/CppInerop/CppInerop.vcxproj.filters @@ -0,0 +1,39 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/lib/local/CppInerop/CppInterop.cpp b/lib/local/CppInerop/CppInterop.cpp new file mode 100644 index 0000000..9420aac --- /dev/null +++ b/lib/local/CppInerop/CppInterop.cpp @@ -0,0 +1,63 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED AS IS FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called open source software licenses (Open Source +// Components), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensees request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltruaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltruaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +// This is the main DLL file. +#include "LandmarkDetectorInterop.h" +#include "FaceAnalyserInterop.h" +#include "OpenCVWrappers.h" +#include "CameraInterop.h" diff --git a/lib/local/CppInerop/FaceAnalyserInterop.h b/lib/local/CppInerop/FaceAnalyserInterop.h new file mode 100644 index 0000000..8aa4e38 --- /dev/null +++ b/lib/local/CppInerop/FaceAnalyserInterop.h @@ -0,0 +1,463 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED AS IS FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called open source software licenses (Open Source +// Components), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensees request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltruaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltruaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +// FaceAnalyser_Interop.h +#ifndef __FACE_ANALYSER_INTEROP_h_ +#define __FACE_ANALYSER_INTEROP_h_ + +#pragma once + +// Include all the unmanaged things we need. +#pragma managed + +#include +#include + +#pragma unmanaged + +#include +#include "opencv2/objdetect.hpp" +#include "opencv2/calib3d.hpp" +#include +#include +#include + +#include +#include +#include +#include +#include + +// Allows to overcome boost name clash stuff with C++ CLI +#ifdef __cplusplus_cli +#define generic __identifier(generic) +#endif + +// Boost stuff +#include +#include + +#ifdef __cplusplus_cli +#undef generic +#endif + +#pragma managed + +namespace FaceAnalyser_Interop { + +public ref class FaceAnalyserManaged +{ + +private: + + FaceAnalysis::FaceAnalyser* face_analyser; + + // The actual descriptors (for visualisation and output) + cv::Mat_* hog_features; + cv::Mat* aligned_face; + cv::Mat* visualisation; + cv::Mat* tracked_face; + + // Variables used for recording things + std::ofstream* hog_output_file; + std::string* align_output_dir; + int* num_rows; + int* num_cols; + bool* good_frame; + cv::VideoWriter* tracked_vid_writer; + + // Variable storing gaze for recording + + // Absolute gaze direction + cv::Point3f* gazeDirection0; + cv::Point3f* gazeDirection1; + + cv::Point3f* pupil_left; + cv::Point3f* pupil_right; + +public: + + FaceAnalyserManaged(System::String^ root, bool dynamic) + { + + vector orientation_bins; + orientation_bins.push_back(cv::Vec3d(0,0,0)); + double scale = 0.7; + int width = 112; + int height = 112; + + string root_std = msclr::interop::marshal_as(root); + + // TODO diff paths and locations for the demo mode + boost::filesystem::path tri_loc = boost::filesystem::path(root_std) / "model" / "tris_68_full.txt"; + boost::filesystem::path au_loc; + if(dynamic) + { + au_loc = boost::filesystem::path(root_std) / "AU_predictors" / "AU_all_best.txt"; + } + else + { + au_loc = boost::filesystem::path(root_std) / "AU_predictors" / "AU_all_static.txt"; + } + + face_analyser = new FaceAnalysis::FaceAnalyser(orientation_bins, scale, width, height, au_loc.string(), tri_loc.string()); + + hog_features = new cv::Mat_(); + + aligned_face = new cv::Mat(); + visualisation = new cv::Mat(); + tracked_face = new cv::Mat(); + + num_rows = new int; + num_cols = new int; + + good_frame = new bool; + + align_output_dir = new string(); + + hog_output_file = new std::ofstream(); + + gazeDirection0 = new cv::Point3f(); + gazeDirection1 = new cv::Point3f(); + + pupil_left = new cv::Point3f(); + pupil_right = new cv::Point3f(); + } + + void SetupAlignedImageRecording(System::String^ directory) + { + *align_output_dir = msclr::interop::marshal_as(directory); + } + + void SetupHOGRecording(System::String^ file) + { + // Create the file for recording + hog_output_file->open(msclr::interop::marshal_as(file), ios_base::out | ios_base::binary); + } + + void SetupTrackingRecording(System::String^ file, int width, int height, double fps) + { + tracked_vid_writer = new cv::VideoWriter(msclr::interop::marshal_as(file), CV_FOURCC('D', 'I', 'V', 'X'), fps, cv::Size(width, height)); + } + + void StopHOGRecording() + { + hog_output_file->close(); + } + + void StopTrackingRecording() + { + tracked_vid_writer->release(); + } + + void RecordAlignedFrame(int frame_num) + { + char name[100]; + + // output the frame number + sprintf(name, "frame_det_%06d.png", frame_num); + + string out_file = (boost::filesystem::path(*align_output_dir) / boost::filesystem::path(name)).string(); + imwrite(out_file, *aligned_face); + } + + void RecordHOGFrame() + { + // Using FHOGs, hence 31 channels + int num_channels = 31; + + hog_output_file->write((char*)(num_cols), 4); + hog_output_file->write((char*)(num_rows), 4); + hog_output_file->write((char*)(&num_channels), 4); + + // Not the best way to store a bool, but will be much easier to read it + float good_frame_float; + if(good_frame) + good_frame_float = 1; + else + good_frame_float = -1; + + hog_output_file->write((char*)(&good_frame_float), 4); + + cv::MatConstIterator_ descriptor_it = hog_features->begin(); + + for(int y = 0; y < *num_cols; ++y) + { + for(int x = 0; x < *num_rows; ++x) + { + for(unsigned int o = 0; o < 31; ++o) + { + + float hog_data = (float)(*descriptor_it++); + hog_output_file->write((char*)&hog_data, 4); + } + } + } + + } + + void RecordTrackedFace() + { + tracked_vid_writer->write(*tracked_face); + } + + void AddNextFrame(OpenCVWrappers::RawImage^ frame, CppInterop::LandmarkDetector::CLNF^ clnf, double fx, double fy, double cx, double cy, bool online, bool vis_hog, bool vis_tracked) { + + face_analyser->AddNextFrame(frame->Mat, *clnf->getCLM(), 0, online, vis_hog); + + face_analyser->GetLatestHOG(*hog_features, *num_rows, *num_cols); + + face_analyser->GetLatestAlignedFace(*aligned_face); + + *good_frame = clnf->clnf->detection_success; + + if(vis_hog) + { + *visualisation = face_analyser->GetLatestHOGDescriptorVisualisation(); + } + + if(vis_tracked) + { + if(frame->Mat.cols != tracked_face->cols && frame->Mat.rows != tracked_face->rows) + { + *tracked_face = frame->Mat.clone(); + } + else + { + frame->Mat.clone().copyTo(*tracked_face); + } + + if(clnf->clnf->detection_success) + { + ::LandmarkDetector::Draw(*tracked_face, *clnf->clnf); + } + tracked_face->deallocate(); + } + + // After the AUs have been detected do some gaze estimation as well + FaceAnalysis::EstimateGaze(*clnf->getCLM(), *gazeDirection0, fx, fy, cx, cy, true); + FaceAnalysis::EstimateGaze(*clnf->getCLM(), *gazeDirection1, fx, fy, cx, cy, false); + + // Grab pupil locations + int part_left = -1; + int part_right = -1; + for (size_t i = 0; i < clnf->getCLM()->hierarchical_models.size(); ++i) + { + if (clnf->getCLM()->hierarchical_model_names[i].compare("left_eye_28") == 0) + { + part_left = i; + } + if (clnf->getCLM()->hierarchical_model_names[i].compare("right_eye_28") == 0) + { + part_right = i; + } + } + + cv::Mat_ eyeLdmks3d_left = clnf->getCLM()->hierarchical_models[part_left].GetShape(fx, fy, cx, cy); + cv::Point3f pupil_left_h = FaceAnalysis::GetPupilPosition(eyeLdmks3d_left); + pupil_left->x = pupil_left_h.x; pupil_left->y = pupil_left_h.y; pupil_left->z = pupil_left_h.z; + + cv::Mat_ eyeLdmks3d_right = clnf->getCLM()->hierarchical_models[part_right].GetShape(fx, fy, cx, cy); + cv::Point3f pupil_right_h = FaceAnalysis::GetPupilPosition(eyeLdmks3d_right); + pupil_right->x = pupil_right_h.x; pupil_right->y = pupil_right_h.y; pupil_right->z = pupil_right_h.z; + } + + System::Tuple^, System::Tuple^>^ GetGazeCamera() + { + + auto gaze0 = gcnew System::Tuple(gazeDirection0->x, gazeDirection0->y, gazeDirection0->z); + auto gaze1 = gcnew System::Tuple(gazeDirection1->x, gazeDirection1->y, gazeDirection1->z); + + return gcnew System::Tuple^, System::Tuple^>(gaze0, gaze1); + + } + + System::Collections::Generic::List^>^ CalculateGazeLines(float fx, float fy, float cx, float cy) + { + + cv::Mat_ cameraMat = (cv::Mat_(3, 3) << fx, 0, cx, 0, fy, cy, 0, 0, 0); + + vector points_left; + points_left.push_back(cv::Point3d(*pupil_left)); + points_left.push_back(cv::Point3d(*pupil_left + *gazeDirection0*40.0)); + + vector points_right; + points_right.push_back(cv::Point3d(*pupil_right)); + points_right.push_back(cv::Point3d(*pupil_right + *gazeDirection1*40.0)); + + vector imagePoints_left; + projectPoints(points_left, cv::Mat::eye(3, 3, cv::DataType::type), cv::Mat::zeros(1, 3, cv::DataType::type), cameraMat, cv::Mat::zeros(4, 1, cv::DataType::type), imagePoints_left); + + vector imagePoints_right; + projectPoints(points_right, cv::Mat::eye(3, 3, cv::DataType::type), cv::Mat::zeros(1, 3, cv::DataType::type), cameraMat, cv::Mat::zeros(4, 1, cv::DataType::type), imagePoints_right); + + auto lines = gcnew System::Collections::Generic::List^>(); + lines->Add(gcnew System::Tuple(System::Windows::Point(imagePoints_left[0].x, imagePoints_left[0].y), System::Windows::Point(imagePoints_left[1].x, imagePoints_left[1].y))); + lines->Add(gcnew System::Tuple(System::Windows::Point(imagePoints_right[0].x, imagePoints_right[0].y), System::Windows::Point(imagePoints_right[1].x, imagePoints_right[1].y))); + + return lines; + } + + + System::Collections::Generic::List^ GetClassActionUnitsNames() + { + auto names = face_analyser->GetAUClassNames(); + + auto names_ret = gcnew System::Collections::Generic::List(); + + for(std::string name : names) + { + names_ret->Add(gcnew System::String(name.c_str())); + } + + return names_ret; + + } + + System::Collections::Generic::List^ GetRegActionUnitsNames() + { + auto names = face_analyser->GetAURegNames(); + + auto names_ret = gcnew System::Collections::Generic::List(); + + for(std::string name : names) + { + names_ret->Add(gcnew System::String(name.c_str())); + } + + return names_ret; + + } + + System::Collections::Generic::Dictionary^ GetCurrentAUsClass() + { + auto classes = face_analyser->GetCurrentAUsClass(); + auto au_classes = gcnew System::Collections::Generic::Dictionary(); + + for(auto p: classes) + { + au_classes->Add(gcnew System::String(p.first.c_str()), p.second); + } + return au_classes; + } + + System::Collections::Generic::Dictionary^ GetCurrentAUsReg() + { + auto preds = face_analyser->GetCurrentAUsReg(); + auto au_preds = gcnew System::Collections::Generic::Dictionary(); + + for(auto p: preds) + { + au_preds->Add(gcnew System::String(p.first.c_str()), p.second); + } + return au_preds; + } + + OpenCVWrappers::RawImage^ GetLatestAlignedFace() { + OpenCVWrappers::RawImage^ face_aligned_image = gcnew OpenCVWrappers::RawImage(*aligned_face); + return face_aligned_image; + } + + OpenCVWrappers::RawImage^ GetLatestHOGDescriptorVisualisation() { + OpenCVWrappers::RawImage^ HOG_vis_image = gcnew OpenCVWrappers::RawImage(*visualisation); + return HOG_vis_image; + } + + void Reset() + { + face_analyser->Reset(); + } + + // Finalizer. Definitely called before Garbage Collection, + // but not automatically called on explicit Dispose(). + // May be called multiple times. + !FaceAnalyserManaged() + { + delete hog_features; + delete aligned_face; + delete visualisation; + delete num_cols; + delete num_rows; + delete hog_output_file; + delete good_frame; + delete align_output_dir; + delete face_analyser; + delete tracked_face; + + delete gazeDirection0; + delete gazeDirection1; + + delete pupil_left; + delete pupil_right; + + if(tracked_vid_writer != 0) + { + delete tracked_vid_writer; + } + } + + // Destructor. Called on explicit Dispose() only. + ~FaceAnalyserManaged() + { + this->!FaceAnalyserManaged(); + } + +}; +} + +#endif \ No newline at end of file diff --git a/lib/local/CppInerop/LandmarkDetectorInterop.h b/lib/local/CppInerop/LandmarkDetectorInterop.h new file mode 100644 index 0000000..ea12dc1 --- /dev/null +++ b/lib/local/CppInerop/LandmarkDetectorInterop.h @@ -0,0 +1,395 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED AS IS FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called open source software licenses (Open Source +// Components), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensees request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltruaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltruaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef __LANDMARK_DETECTOR_INTEROP_h_ +#define __LANDMARK_DETECTOR_INTEROP_h_ + +#pragma once + +#pragma managed +#include +#include + +#pragma unmanaged + +// Include all the unmanaged things we need. + +#include +#include "opencv2/objdetect.hpp" +#include "opencv2/calib3d.hpp" +#include +#include +#include + +#include + +#include + +#include +#include + +#pragma managed + +namespace CppInterop { + + namespace LandmarkDetector { + + public ref class FaceModelParameters + { + public: + ::LandmarkDetector::FaceModelParameters* params; + + public: + + // Initialise the parameters + FaceModelParameters(System::String^ root) + { + std::string root_std = msclr::interop::marshal_as(root); + vector args; + args.push_back(root_std); + + params = new ::LandmarkDetector::FaceModelParameters(args); + + params->track_gaze = true; + } + + // TODO this could have optimize for demo mode (also could appropriately update sigma, reg_factor as well) + void optimiseForVideo() + { + params->window_sizes_small = vector(4); + params->window_sizes_init = vector(4); + + // For fast tracking + params->window_sizes_small[0] = 0; + params->window_sizes_small[1] = 9; + params->window_sizes_small[2] = 7; + params->window_sizes_small[3] = 5; + + // Just for initialisation + params->window_sizes_init.at(0) = 11; + params->window_sizes_init.at(1) = 9; + params->window_sizes_init.at(2) = 7; + params->window_sizes_init.at(3) = 5; + + // For first frame use the initialisation + params->window_sizes_current = params->window_sizes_init; + + params->sigma = 1.5; + params->reg_factor = 25; + params->weight_factor = 0; + } + + // TODO adapt here as well + void optimiseForImages() + { + params->window_sizes_init = vector(4); + params->window_sizes_init[0] = 15; + params->window_sizes_init[1] = 13; + params->window_sizes_init[2] = 11; + params->window_sizes_init[3] = 9; + + params->multi_view = true; + + params->sigma = 1.25; + params->reg_factor = 35; + params->weight_factor = 2.5; + params->num_optimisation_iteration = 10; + } + + ::LandmarkDetector::FaceModelParameters* getParams() { + return params; + } + + ~FaceModelParameters() + { + delete params; + } + + }; + + public ref class CLNF + { + public: + + // A pointer to the CLNF landmark detector + ::LandmarkDetector::CLNF* clnf; + + public: + + // Wrapper functions for the relevant CLNF functionality + CLNF() : clnf(new ::LandmarkDetector::CLNF()) { } + + CLNF(FaceModelParameters^ params) + { + clnf = new ::LandmarkDetector::CLNF(params->getParams()->model_location); + } + + ~CLNF() + { + delete clnf; + } + + ::LandmarkDetector::CLNF* getCLM() { + return clnf; + } + + void Reset() { + clnf->Reset(); + } + + void Reset(double x, double y) { + clnf->Reset(x, y); + } + + + double GetConfidence() + { + return clnf->detection_certainty; + } + + bool DetectLandmarksInVideo(OpenCVWrappers::RawImage^ image, FaceModelParameters^ clmParams) { + return ::LandmarkDetector::DetectLandmarksInVideo(image->Mat, *clnf, *clmParams->getParams()); + } + + bool DetectFaceLandmarksInImage(OpenCVWrappers::RawImage^ image, FaceModelParameters^ clmParams) { + return ::LandmarkDetector::DetectLandmarksInImage(image->Mat, *clnf, *clmParams->getParams()); + } + + System::Collections::Generic::List^>^>^ DetectMultiFaceLandmarksInImage(OpenCVWrappers::RawImage^ image, FaceModelParameters^ clmParams) { + + auto all_landmarks = gcnew System::Collections::Generic::List^>^>(); + + // Detect faces in an image + vector > face_detections; + + vector confidences; + + // TODO this should be pre-allocated as now it might be a bit too slow + dlib::frontal_face_detector face_detector_hog = dlib::get_frontal_face_detector(); + + ::LandmarkDetector::DetectFacesHOG(face_detections, image->Mat, face_detector_hog, confidences); + + // Detect landmarks around detected faces + int face_det = 0; + // perform landmark detection for every face detected + for(size_t face=0; face < face_detections.size(); ++face) + { + cv::Mat depth; + // if there are multiple detections go through them + bool success = ::LandmarkDetector::DetectLandmarksInImage(image->Mat, depth, face_detections[face], *clnf, *clmParams->getParams()); + + auto landmarks_curr = gcnew System::Collections::Generic::List^>(); + if(clnf->detected_landmarks.cols == 1) + { + int n = clnf->detected_landmarks.rows / 2; + for(int i = 0; i < n; ++i) + { + landmarks_curr->Add(gcnew System::Tuple(clnf->detected_landmarks.at(i,0), clnf->detected_landmarks.at(i+n,0))); + } + } + else + { + int n = clnf->detected_landmarks.cols / 2; + for(int i = 0; i < clnf->detected_landmarks.cols; ++i) + { + landmarks_curr->Add(gcnew System::Tuple(clnf->detected_landmarks.at(0,i), clnf->detected_landmarks.at(0,i+1))); + } + } + all_landmarks->Add(landmarks_curr); + + } + + return all_landmarks; + } + + void GetCorrectedPoseCamera(System::Collections::Generic::List^ pose, double fx, double fy, double cx, double cy) { + auto pose_vec = ::LandmarkDetector::GetCorrectedPoseCamera(*clnf, fx, fy, cx, cy); + pose->Clear(); + for(int i = 0; i < 6; ++i) + { + pose->Add(pose_vec[i]); + } + } + + void GetCorrectedPoseWorld(System::Collections::Generic::List^ pose, double fx, double fy, double cx, double cy) { + auto pose_vec = ::LandmarkDetector::GetCorrectedPoseWorld(*clnf, fx, fy, cx, cy); + pose->Clear(); + for(int i = 0; i < 6; ++i) + { + pose->Add(pose_vec[i]); + } + } + + System::Collections::Generic::List^>^ CalculateLandmarks() { + vector vecLandmarks = ::LandmarkDetector::CalculateLandmarks(*clnf); + + auto landmarks = gcnew System::Collections::Generic::List^>(); + for(cv::Point2d p : vecLandmarks) { + landmarks->Add(gcnew System::Tuple(p.x, p.y)); + } + + return landmarks; + } + + System::Collections::Generic::List^ Calculate3DLandmarks(double fx, double fy, double cx, double cy) { + + cv::Mat_ shape3D = clnf->GetShape(fx, fy, cx, cy); + + auto landmarks_3D = gcnew System::Collections::Generic::List(); + + for(int i = 0; i < shape3D.cols; ++i) + { + landmarks_3D->Add(System::Windows::Media::Media3D::Point3D(shape3D.at(0, i), shape3D.at(1, i), shape3D.at(2, i))); + } + + return landmarks_3D; + } + + + // Static functions from the CLMTracker namespace. + void DrawLandmarks(OpenCVWrappers::RawImage^ img, System::Collections::Generic::List^ landmarks) { + + vector vecLandmarks; + + for(int i = 0; i < landmarks->Count; i++) { + System::Windows::Point p = landmarks[i]; + vecLandmarks.push_back(cv::Point(p.X, p.Y)); + } + + ::LandmarkDetector::DrawLandmarks(img->Mat, vecLandmarks); + } + + + System::Collections::Generic::List^>^ CalculateBox(float fx, float fy, float cx, float cy) { + + cv::Vec6d pose = ::LandmarkDetector::GetCorrectedPoseWorld(*clnf, fx,fy, cx, cy); + + vector> vecLines = ::LandmarkDetector::CalculateBox(pose, fx, fy, cx, cy); + + auto lines = gcnew System::Collections::Generic::List^>(); + + for(pair line : vecLines) { + lines->Add(gcnew System::Tuple(System::Windows::Point(line.first.x, line.first.y), System::Windows::Point(line.second.x, line.second.y))); + } + + return lines; + } + + void DrawBox(System::Collections::Generic::List^>^ lines, OpenCVWrappers::RawImage^ image, double r, double g, double b, int thickness) { + cv::Scalar color = cv::Scalar(r,g,b,1); + + vector> vecLines; + + for(int i = 0; i < lines->Count; i++) { + System::Tuple^ points = lines[i]; + vecLines.push_back(pair(cv::Point(points->Item1.X, points->Item1.Y), cv::Point(points->Item2.X, points->Item2.Y))); + } + + ::LandmarkDetector::DrawBox(vecLines, image->Mat, color, thickness); + } + + int GetNumPoints() + { + return clnf->pdm.NumberOfPoints(); + } + + int GetNumModes() + { + return clnf->pdm.NumberOfModes(); + } + + // Getting the non-rigid shape parameters describing the facial expression + System::Collections::Generic::List^ GetNonRigidParams() + { + auto non_rigid_params = gcnew System::Collections::Generic::List(); + + for (int i = 0; i < clnf->params_local.rows; ++i) + { + non_rigid_params->Add(clnf->params_local.at(i)); + } + + return non_rigid_params; + } + + // Getting the rigid shape parameters describing face scale rotation and translation (scale,rotx,roty,rotz,tx,ty) + System::Collections::Generic::List^ GetRigidParams() + { + auto rigid_params = gcnew System::Collections::Generic::List(); + + for (size_t i = 0; i < 6; ++i) + { + rigid_params->Add(clnf->params_global[i]); + } + return rigid_params; + } + + // Rigid params followed by non-rigid ones + System::Collections::Generic::List^ GetParams() + { + auto all_params = GetRigidParams(); + all_params->AddRange(GetNonRigidParams()); + return all_params; + } + + }; + + } + +} + +#endif \ No newline at end of file diff --git a/lib/local/CppInerop/OpenCVWrappers.h b/lib/local/CppInerop/OpenCVWrappers.h new file mode 100644 index 0000000..de2907d --- /dev/null +++ b/lib/local/CppInerop/OpenCVWrappers.h @@ -0,0 +1,305 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2016, Carnegie Mellon University and University of Cambridge, +// all rights reserved. +// +// THIS SOFTWARE IS PROVIDED AS IS FOR ACADEMIC USE ONLY AND ANY EXPRESS +// OR IMPLIED WARRANTIES WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS +// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY. +// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Notwithstanding the license granted herein, Licensee acknowledges that certain components +// of the Software may be covered by so-called open source software licenses (Open Source +// Components), which means any software licenses approved as open source licenses by the +// Open Source Initiative or any substantially similar licenses, including without limitation any +// license that, as a condition of distribution of the software licensed under such license, +// requires that the distributor make the software available in source code format. Licensor shall +// provide a list of Open Source Components for a particular version of the Software upon +// Licensees request. Licensee will comply with the applicable terms of such licenses and to +// the extent required by the licenses covering Open Source Components, the terms of such +// licenses will apply in lieu of the terms of this Agreement. To the extent the terms of the +// licenses applicable to Open Source Components prohibit any of the restrictions in this +// License Agreement with respect to such Open Source Component, such restrictions will not +// apply to such Open Source Component. To the extent the terms of the licenses applicable to +// Open Source Components require Licensor to make an offer to provide source code or +// related information in connection with the Software, such offer is hereby made. Any request +// for source code or related information should be directed to cl-face-tracker-distribution@lists.cam.ac.uk +// Licensee acknowledges receipt of notices for the Open Source Components for the initial +// delivery of the Software. + +// * Any publications arising from the use of this software, including but +// not limited to academic journal and conference publications, technical +// reports and manuals, must cite at least one of the following works: +// +// OpenFace: an open source facial behavior analysis toolkit +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency +// in IEEE Winter Conference on Applications of Computer Vision, 2016 +// +// Rendering of Eyes for Eye-Shape Registration and Gaze Estimation +// Erroll Wood, Tadas Baltruaitis, Xucong Zhang, Yusuke Sugano, Peter Robinson, and Andreas Bulling +// in IEEE International. Conference on Computer Vision (ICCV), 2015 +// +// Cross-dataset learning and person-speci?c normalisation for automatic Action Unit detection +// Tadas Baltruaitis, Marwa Mahmoud, and Peter Robinson +// in Facial Expression Recognition and Analysis Challenge, +// IEEE International Conference on Automatic Face and Gesture Recognition, 2015 +// +// Constrained Local Neural Fields for robust facial landmark detection in the wild. +// Tadas Baltruaitis, Peter Robinson, and Louis-Philippe Morency. +// in IEEE Int. Conference on Computer Vision Workshops, 300 Faces in-the-Wild Challenge, 2013. +// +/////////////////////////////////////////////////////////////////////////////// + +// OpenCVWrappers.h + +#pragma once + +#pragma managed + +#include + +#pragma unmanaged + +#include "cv.h" +#include "highgui.h" + +#include // Video write +#include // Video write + +#pragma managed + +#pragma make_public(cv::Mat) + +using namespace System::Windows; +using namespace System::Windows::Threading; +using namespace System::Windows::Media; +using namespace System::Windows::Media::Imaging; + +namespace OpenCVWrappers { + + public ref class RawImage : System::IDisposable + { + + private: + + cv::Mat* mat; + + static int refCount; + + + public: + + static int PixelFormatToType(PixelFormat fmt) + { + if (fmt == PixelFormats::Gray8) + return CV_8UC1; + else if(fmt == PixelFormats::Bgr24) + return CV_8UC3; + else if(fmt == PixelFormats::Bgra32) + return CV_8UC4; + else if(fmt == PixelFormats::Gray32Float) + return CV_32FC1; + else + throw gcnew System::Exception("Unsupported pixel format"); + } + + static PixelFormat TypeToPixelFormat(int type) + { + switch (type) { + case CV_8UC1: + return PixelFormats::Gray8; + case CV_8UC3: + return PixelFormats::Bgr24; + case CV_8UC4: + return PixelFormats::Bgra32; + case CV_32FC1: + return PixelFormats::Gray32Float; + default: + throw gcnew System::Exception("Unsupported image type"); + } + } + + static property int RefCount { + int get() { return refCount; } + } + + RawImage() + { + mat = new cv::Mat(); + refCount++; + } + + RawImage(const cv::Mat& m) + { + mat = new cv::Mat(m.clone()); + refCount++; + } + + RawImage(RawImage^ img) + { + mat = new cv::Mat(img->Mat.clone()); + refCount++; + } + + RawImage(int width, int height, int type) + { + mat = new cv::Mat(height, width, type); + refCount++; + } + + RawImage(int width, int height, PixelFormat format) + { + int type = RawImage::PixelFormatToType(format); + mat = new cv::Mat(height, width, type); + refCount++; + } + + // Finalizer. Definitely called before Garbage Collection, + // but not automatically called on explicit Dispose(). + // May be called multiple times. + !RawImage() + { + if (mat) + { + delete mat; + mat = NULL; + refCount--; + } + } + + // Destructor. Called on explicit Dispose() only. + ~RawImage() + { + this->!RawImage(); + } + + property int Width + { + int get() + { + return mat->cols; + } + } + + property int Height + { + int get() + { + return mat->rows; + } + } + + property int Stride + { + + int get() + { + return mat->step; + } + } + + property PixelFormat Format + { + PixelFormat get() + { + return TypeToPixelFormat(mat->type()); + } + } + + property cv::Mat& Mat + { + cv::Mat& get() + { + return *mat; + } + } + + property bool IsEmpty + { + bool get() + { + return !mat || mat->empty(); + } + } + + bool UpdateWriteableBitmap(WriteableBitmap^ bitmap) + { + if (bitmap == nullptr || bitmap->PixelWidth != Width || bitmap->PixelHeight != Height || bitmap->Format != Format) + return false; + else { + if (mat->data == NULL) { + cv::Mat zeros(bitmap->PixelHeight, bitmap->PixelWidth, PixelFormatToType(bitmap->Format), 0); + bitmap->WritePixels(Int32Rect(0, 0, Width, Height), System::IntPtr(zeros.data), Stride * Height * (Format.BitsPerPixel / 8), Stride, 0, 0); + } + else { + bitmap->WritePixels(Int32Rect(0, 0, Width, Height), System::IntPtr(mat->data), Stride * Height * (Format.BitsPerPixel / 8), Stride, 0, 0); + } + return true; + } + } + + WriteableBitmap^ CreateWriteableBitmap() + { + return gcnew WriteableBitmap(Width, Height, 72, 72, Format, nullptr); + } + + }; + + public ref class VideoWriter + { + private: + // OpenCV based video capture for reading from files + cv::VideoWriter* vc; + + public: + + VideoWriter(System::String^ location, int width, int height, double fps, bool colour) + { + + msclr::interop::marshal_context context; + std::string location_std_string = context.marshal_as(location); + + vc = new cv::VideoWriter(location_std_string, CV_FOURCC('D','I','V','X'), fps, cv::Size(width, height), colour); + + } + + // Return success + bool Write(RawImage^ img) + { + if(vc != nullptr && vc->isOpened()) + { + vc->write(img->Mat); + return true; + } + else + { + return false; + } + } + + // Finalizer. Definitely called before Garbage Collection, + // but not automatically called on explicit Dispose(). + // May be called multiple times. + !VideoWriter() + { + if(vc != nullptr) + { + vc->~VideoWriter(); + } + } + + // Destructor. Called on explicit Dispose() only. + ~VideoWriter() + { + this->!VideoWriter(); + } + + }; + +} diff --git a/lib/local/FaceAnalyser/include/GazeEstimation.h b/lib/local/FaceAnalyser/include/GazeEstimation.h index ac92be7..e7124f4 100644 --- a/lib/local/FaceAnalyser/include/GazeEstimation.h +++ b/lib/local/FaceAnalyser/include/GazeEstimation.h @@ -68,5 +68,8 @@ namespace FaceAnalysis void EstimateGaze(const LandmarkDetector::CLNF& clnf_model, cv::Point3f& gaze_absolute, float fx, float fy, float cx, float cy, bool left_eye); void DrawGaze(cv::Mat img, const LandmarkDetector::CLNF& clnf_model, cv::Point3f gazeVecAxisLeft, cv::Point3f gazeVecAxisRight, float fx, float fy, float cx, float cy); + // Some utilities + cv::Point3f GetPupilPosition(cv::Mat_ eyeLdmks3d); + } #endif \ No newline at end of file diff --git a/lib/local/FaceAnalyser/src/GazeEstimation.cpp b/lib/local/FaceAnalyser/src/GazeEstimation.cpp index 9ac0896..4e31d96 100644 --- a/lib/local/FaceAnalyser/src/GazeEstimation.cpp +++ b/lib/local/FaceAnalyser/src/GazeEstimation.cpp @@ -96,7 +96,7 @@ cv::Point3f RaySphereIntersect(cv::Point3f rayOrigin, cv::Point3f rayDir, cv::Po return rayOrigin + rayDir * t; } -cv::Point3f GetPupilPosition(cv::Mat_ eyeLdmks3d){ +cv::Point3f FaceAnalysis::GetPupilPosition(cv::Mat_ eyeLdmks3d){ eyeLdmks3d = eyeLdmks3d.t(); diff --git a/matlab_runners/Action Unit Experiments/DISFA_valid_res.txt b/matlab_runners/Action Unit Experiments/DISFA_valid_res.txt index edbb1ee..170f9fd 100644 --- a/matlab_runners/Action Unit Experiments/DISFA_valid_res.txt +++ b/matlab_runners/Action Unit Experiments/DISFA_valid_res.txt @@ -1,12 +1,12 @@ -AU1 results - corr 0.740, ccc - 0.729 -AU2 results - corr 0.702, ccc - 0.623 -AU4 results - corr 0.847, ccc - 0.823 -AU5 results - corr 0.669, ccc - 0.662 -AU6 results - corr 0.641, ccc - 0.627 -AU9 results - corr 0.722, ccc - 0.703 -AU12 results - corr 0.857, ccc - 0.847 -AU15 results - corr 0.652, ccc - 0.639 +AU1 results - corr 0.740, ccc - 0.728 +AU2 results - corr 0.703, ccc - 0.624 +AU4 results - corr 0.845, ccc - 0.821 +AU5 results - corr 0.668, ccc - 0.661 +AU6 results - corr 0.638, ccc - 0.624 +AU9 results - corr 0.721, ccc - 0.702 +AU12 results - corr 0.863, ccc - 0.852 +AU15 results - corr 0.651, ccc - 0.637 AU17 results - corr 0.572, ccc - 0.506 -AU20 results - corr 0.507, ccc - 0.489 -AU25 results - corr 0.918, ccc - 0.916 -AU26 results - corr 0.552, ccc - 0.185 +AU20 results - corr 0.505, ccc - 0.487 +AU25 results - corr 0.921, ccc - 0.919 +AU26 results - corr 0.551, ccc - 0.184 diff --git a/matlab_runners/Feature Point Experiments/results/fps_yt.mat b/matlab_runners/Feature Point Experiments/results/fps_yt.mat index dfe869e4887677ce2cc557f935cc4c8ba7fd5f8f..399ddeaba49130f84d17f8d6b1ef137593c24718 100644 GIT binary patch delta 1168989 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%0Aq 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%0ApR1F{Gkt-&J&Hk4^dDzEnC&UsILad7@Y&J|$k~ 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

T!$lmk+Ky1^!6Z}DjIBqQvIbab6p?daZMcN2 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

P@-<~iWQBO5c8Vf^ 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ΝD1XRh2TTV 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%0D2l@b`CCE+HTP|Gt5G<#m3F9a9D>dz=glsuY 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�P_xyt37c-TIiT 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�k@s_7sZ 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 z

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 L;2(Qf0l2uOn4Z$Z@b`Ij4g_4mjY}` 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%0DA9V9Q=5S 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
6d}?He3=8kBeK{oG$bUj;k^$w%e=JP!R=>>C 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 M&Z11W&Z12eeI&;UCjbBd delta 1168980 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⪙B(UWo@~4~Xl5c+COPKd6>p!P9GRXQVCEH*+pi zbiBau^A&?cd#pr7^-Hd{J_!S9gQQBP3aJPz61#*Rr1X3~yMYKF4TJ?2lhXz5;eh8O z_}4yjV1B+(9t;Sj9YTXA@|?~>8+9im4 zXGo9`b^jd&LzxC1F3aOHMoJL zeB?PIcpr_@B7;=rC#u}4&P8R)KBz_wKXFtitKZL_bpKoY+?_%!y`N!Z?uYm6Zwyk8 zT&rFE8})^!l990@tfS>Y5*o&lcC~C$Uqmtwrsw@BRLd+PckFLdsSG0)Xzay&2qxvPYMHZC?e`eKrzWlG+gA^+IYM3PSk8@iuwL@yq7S6V)&_Y z+f`1upHign(E}`83COwy5@UIPFK}+Do8{Kt75)g*qUPx?xl&~dkqT_i6-R&htb$d_ z$D~8p-x$C+rP)Dvn(d=%a7YPJR+MkR;je@4LI^Mz)=~d9>=MUc-u?XrSs}<%`sX>i zQ}j_;<=%~)AUhJ`zrvN~*5PdR%m{EY=u4ky80%TUJ6J=96>8FOko|iw=Fg z*~h~D{Udi>y_$+POBCF|WT(EQKVQb*-zeJaX-4nv>Y>G*O)b`?2kLD%>T?wD72yM4 zB;6tdKVMB6gGQw}M}vFg(c1ohQ#N0$o?Qy~TM>frrQ8`dIs4f6yTaL~D(dPwwD%Z+ z?%Au_Uf zLM~M$%cnPVaimcBqR&~g>-{rg|28YeH}>=ZPTODnpRb_;^z&C~`j-W+3CVsvRnpDZ za6i!q>}`8RSEVv}`2LrfZbSMsS<`=@JC_a`b?w6hO?9pb$Z5b#p|qYaabCSm-J2VE zfzub`F&<(l428hLZLb*wK27d87Ju%0D@uZn;=^L4+c1cFBaW;3X)--Ozjs*`EY5od zfK>)rEZXK74*qlnY898k&BuY z?!gNTAVzeEVyD3Qr5YBc4a!N@Zya3JN;J9(@H|#i#E^R ziV{%3tvy)Q5!cMlRc zlR94L_MWol@F%T5|8?g>s8cYmIj_H2sIViRqU6OJF>iaWLk&dF_5=TqZZ7+3xoyn1-Kok0+FE|Hvyt0xD z6S9D;vA;>J6+4Bb`4yhuPu0Bjf_K0E?4lZh&3?BC1Y2cU3E=;fqYCGoyrNv5H_`?x zOvDgvx(w|iev)bg)FUO>BP`AG=wrVO3ENJ_Z0n-%pp@W;`itI`3SzndP7+~?l=6it z_`(wGK6A6Vu6IEqO@b^%4k`M~jSHXsJKpl(e9(Cir@Iha3|Oqr8@6Q#^X55#)V+@6 zzwO---S)BPf?QhAWL2?9LyLOY#P~hu(SRiZ4sqxY{n8rhOi{h{iUI#(p%AsO?3wdp zOhQfqo()LW0NpF1V1O*emiqVhM32U~0BgaJk9xi><)2}x7It^$7={akgmyFsy`Qs_Z zVO3T~|1+6vsLvN%oJS)9mzhPsf2-bfJuz%_5(Vmy82XsUUvq7(Z9Xk(^nF*2FBDUY z^9~WA5>n4nR640^VOt^Xw+~D(2~~mAZhr`XI?oUuYglV~0wpiMTANwV7`>?qu$)yX z?dUXndkjqh_m*{b$lIl3@T>IDRcd-ib-4uRN^DsBSBC65wgn9n+SG3Ntorq%{*9VA z$ba5~5jRIY2dciNHcu}0Y7ebX&OZoLajRjO?t<8(qZ zmJM3uf#j)K0k`EB_2Ezbn4lrEhIZkmyK99;dK?EpxyJP}oBd-`d)2b;{#Cym@OD0p zVf;s?bE{Unzqq9J>{35Tkt6(>6Y|EF_1w^6_)Vee4H|Q$R$NiZM6P5XABMufcPdYc zhtw30#I;v8uq*f4V}@UGPw&sPt<`g=&gj>|U8_W!|Hcu8KH*3Z=H~FYZ8t~e2m&BR zCoNdz!CVPywd{1qB#pJ=6EiG8NE6?44-sT*3aQUQ(80b%j%p8E-K*hsK) zxddYV)gs^V+)0k@Y^bwMu0a0YZ1af^SGdySxN0h@6Vgm=7_18vC+*U&1+);lKGA5e z#i*w5CKwBa`ND^qxw_jx-^M!rI9v2HM5FBlHOUWST+yYtqNbe!X$%gL&oSGoR=L_V zEwp7#C4asjOc2e%p?oy?v+s?eVHjuOV*kgq2w_ zOzx=X1lw^x*Bdex8<+zIlwC}=Mt zd@Zj=K+8MKGnp0Xw_NzF%~&Zg{=AW&``mG*aN!uvsd3VlT!$E>ZOM{5_~jG4`_fxF z#V2H|WcD^=X4>JTpPl-kLz!x%UFgM`IcnH1OlZZ<@*=#>1``W(E^b&uPG&ZRNMKR+ z*5*sE&6jY0Ne$^Q5!?{d#;5(c;x8IOf-+rrt@k)mFth5l2V>}Jv9(1;u}bO4E^BK& z&0@uKxNv93hl`*nGe#^=BUmk0ANv|M8%UoAI@$h4bq2(6Z4r^;N2>#RxZx`OL9FVh zGvR5@WsM!;D`4<~A9eI<&-{0;@a;@^|6l*%PvPc88NT+KX2#?1R3h5O>(`o%ISek_ zBarhK@sR3%a_mLte}UkZ_h?W%TW`q=wqWQJwutwFv^r0FOZQ=S*dq)VGX^F-$&Y1g z&0hhx?VoC`scXDFb(*2GpqD#A?@oL$&QF~?{2=B>st4XiCKG+nx(XDxFzWPYPxR@jAMaEdnl=FGT3)Gh}df~L;9Sx2;@Qa(Y3GOTh(2BQM zFjGEA5O{G93uDLx%Mt>0W6rOy#Q8#{-BT^^3_>3doI%VcxwY6pj@q%2OdW1B6?%e% zP|r)GuT)_w!ydZsVRpfn)U&6rz|L3ic{y>M+&rJsZ_~b9`=PvP^J$XkxkgLPC-avr zHucY4DE5Rjq~Y9VPM07Dh7x9|6ppmM|~X(&e4=a4(`b(WZ{i>e z>-WwMBF!?u>09@5Yi^U;dx;mF{D{C=E#j#lxgV{&rb`b~+PPynLyUhvVBdog(6-rc z#|hW_HRoNx|6#!;{_X_mW+KOtv*AeX#KxH?~Q(3U-` zX#4j!F^$1@14doND+Ls(Cn*Ra!Orpy=vs|q0Q^lRx*B*% zrw{nT8|^N3oDDf(A75zA$dA?mRiLOwGztt;;6rwydhSX}F*C1I=fb4U{3$mSgA!s( zD|&)7btVj)jb2;H^GXtye#+pkf4c~+PU>!8PwfO}b4mh$idD^P?SJ8IPKIq{iwgk= zbl(}?C8#s=hvvj?;qzgjI@tF;rjSQq3ut@R#7pkc7098WLVj?Not3@s!GB*{$w5t7 zGLju$xvus_icIGGE^TRP$^CTaDoO-Ftu~BH&!^Jt*jJpHck~V6&kl>J@eB?n3-ed) z;G-vtFI*>+h}yX4Nu0!v*@Up{4_xQmnxM<5c*OS2JlIttR|((&o6&IxSx$Fq-w1b& za7k#t>F)Yjv9p7BNB`rTS1X4u9?4$N-W$IUm7xh8l zo+z6Ix0vOud`d~ZYdNse+juSa}}X|9!JSz=GT0!{D6 zV1b&99rrMfuzP)^wucuqhp!_t+nEO3xRm(WlZ6*DI>PRX^0uF_J^6gu$X1fZp|rssg6F<13FwL&X6j@2l{tJ>Hm1c@?qJ8tuoJ(_j(Sp{+rV%z9tD-2 z?EvH4Tpue(Yi^hS2V74isZ|vK!hPYd?&JXALtpeLSC$hZ#zgeCkktc28wuTF!!7SL1(Uz+}KEV&rHXTFS7 z8xUNu*d842@lM=U)j6nb8zHCDz;X15;3UB7x?e8fTznD#TN4b)zYSv{8Sre6N9Y_y z$(>c1(No-VSQZJ{4)d<(GlOe8*RehUh`kUJ>xE<+vK`8W_k7Ag|a+)LmRHo`2@_h z`!Ymo0oeLF;%NwWp$VUjJsS<(Q$9c}*pE4toVt|sK|wFZ`Z&Ejj!YY5emwsH-#$qm zoA?!K(E&;a%(kYie<4!R{;G$R>7@L9d(rQUT8rj`oxL}duA!jtbuVOV$Spk(nc}g# z=tQDeG0Zja!NxGF4}@FJ|6RN9*)k>k_^9^&Kw52ww%EV-L2mzjTh9m1UAE_XylB2u z&HIlWeUSV1FHOgsIX!^ynaOu6SAbqOw^@+-x%mOk{S)bXb5nKn z;Yt=*RE#Q@$qSSfIQ-1?pH4Un`FJr=XUkNmX@~ylrt*FSa<_(m%fVup3l?ZvGE_qf zTS3SN6Q5YF>8OAPf0AwQ)_pc}*-1(NQud7ZZhltUtjzMO`ZO_3cV53^Zr1MThP|OM z3Qv+)8elRisAw#q!B#@6NM(8_z4-UncxU)`U#xar!fyMsk6Psil5x-HIJ4a>lOH)w zt-EVdycyNYQ;buFzA!{#K z+dC(GJT7c4;#tntgO`@N22d|kj|4xPa?SuVR#cOr?eiCmN7r)9>uy(NzZ}~uVq+5R zDYXBO`}c!~{=6)c~ypDMilA~(Xu89GsVcN=-)dUU}e zfJg8IFuDY?bx*(6&lp|vRmi{5xP-FL`zkF}8Dqzi>|mPw@-v5nU~&2mot@2xbQc!b zVY}YR&BIap4>O^(gOR@Pd3J$s<;wp!qNoP38wC@ePH4@|nBPtgZagfeTd>&YPX4zQ zmv>=0bFTp5_z&i35=LPa$89(;?YDc3aerMZ2jm|+cu{4w&BEPyK`5%tD0=iZpX(=s2xl#Pp3I#Ns zj*;{MCXZs$bcOu?^)Kt{;*wV7M*Cs*i`Pdn`~`#$wITy zP(VXZ3o2^sy}Emqq^4TQLG5XihXdaDq)|fa; zBer_S<~LIaT)0LsBgX({@JvH-?x=L_!{8gT+sWoyVE((-h0oy>k2>$i#hGSid;(va zWgb0OtH(ug6BWS{XSGflsj7s`?*6&hM&w$ng8#Wc?P`O6JNxay;{7dNP0*)@7$7X_ zvU-^8yWmT&V>;lCzCSr9?lUwzN_dERT53{H>X$mCLIdi&=e=P`5cWFQO!A$ZQPzx) zCu@!yeU4^RNG`9e*NJ-j>)vADcv!NrU(wf`Hr`e95RjdWF3+f3i}dS3aYKi_fkKdB zlz1~cs_@ZeV#YT*SVI2ThX93GbzIqtEcfldc z0Ui(7^>c?8RdtRT^WS1-N>JdBMZJ6Twb$+q6CaV~m z_*JfTS;CGTu;5@uk@pOm72SsRgRAKNEk^0C{tk5+Lvvo89DqUVfZgsSbC#1S%bs8x z#X*T5OfoWJLaD-dfJG$4~6>yov)w<%9k3Sax28vaYf>6q{wtRKV( zu+xP34koB;JczA+`8N-5BHkO>da#zF{hInm>d%!ATMBtg-Mge~ZJMS~g$HXs@^38+P zQh9#g2l4^vFJd~4xBZM`BFGI6+i!pHUe7azmwW;9KO11Xi%MmUuzVDIZjK8?4h1|i zj!RPxCbg#wWFFtD*OYTDcW>>5+;2AcL%aouqa{Do*(;zpc)A+gc~%y4R_))brCobG zxdj~7{Nv{>gXF+K7LC}VSF}Hhb6UCs>g{7|8pXQ=s_uGMYAxTP4L|L@;2QEubBvXuI^z9Xh{h5&DYk84y4s7ID?2irH(=?8G_N;Q#_kmXPxd}vW(t6K8={U88d49 z_6TG_lj9J2@D42;^L#3b>+n)zE`Hltc{A|^_FFTJ!kx{-AYX~9g$o`KEF=xpTrMX-1w|)t%Bg z)B|TA_OQ{Os-If4vf;J>>7^N|EYzlEHRn|K*hGjM#_G@Qqs<#oXzdW4SVG1ixIBrH zvYAluNx#Xj-A4j`6N%AyNVt`j^)DW2venW5&^8cK6AW9DArq;qX84le76PiK!Y%>h^@G;yo1%yorTCzv}YB-HAdUi3>o(1yCcKNL?qEnwP3hAFyluX(mi+WOZnf#*cyD0<R827H~EPCX7)1Iqa?$a6ASak|yF!Pzh1 zG#x+0qr_4i*D!4zeV9re7D7X1uI3EY34Pqp*Io$3CIrEml z;eI7Mgifrv!I+#c5x#fWU&0mFGDP9gkYOm)mG~Oo;Ik1tyt40it&4N<;E5;@u}s_l zO6M`~h(X(Q7{mDQfyaFQ-HA3E4G5<5`D&X@mo{OTD+aO5v$d76uyivxERH@My#FH6B9Z-d@bfih~98pQ%RpW6_pxQu{I-VFB*WkmB#JAV{;Vb|dp|5~^R@?Kq1P&O&{9)6wVLK9y2K|Y`W%@!# zLmhNs&@og)q!8-ihub*yyUfj5BJ@b9fiOtQhutSaV#&Hl^gwhvgWR|A_u|)vAC5~= zCrs5n+iKe&QAqPf0?=5N?`J;MW${LXF`@4!3Q(Mxzs_>vXx~MiKUMQaUfBasfU&DK ziadg6A^o||hi1-F7Mh8(!zF4W zk*{|-UUjGj}p2cIC0V0xcPoz6OXXR(($8K zpCGZwWv`M0$~E2oaQ$FG;$g8tefgKm)F@w}u4|niT;0?_>j`lg6%yZj=FJP0OYIPt zdv*^ET|JH{x|qG744@hu&zCDhKgFX%nP}4S9`4fog-xWm;-nDA&)-SY#I;q8bm~8-E?P)4+GZ?S%^&`BuMZ6l~M4>l`TCQ9ecACG))6v z?}t-iX>GNaVDK-8h&Jg+SOt`Rb=b+#X8+V z<$n$(MruJ**FIo~s2xDd5nD7=(Pr%QG-6XSGPX)$3sOwCB=+@v$&FTE^EagP7KKt& zJG6bhM*7ynR)N6{bY6!;X@b$^U|+M#0h8UTpr$@Vo8SInYJt>2K+N`_D{u36gaLeV zG*<3pJ-GRc;mLNqmC}NZdeu|RG`$L-1ILZ!8SQ$Z+iud#TyIS?JsJOhL?W+f-gSOM zIx*XbPx&|7;+P~1<^Jma_Wk(B?BmeLRi#gh59^|jYMpS?~5@CjWZHG!8rjltEW+sqf_VTht4iJ~s6LQ^E?;d^vr`Z#x*|g&Hm1cgBBB z-QI|Q_Bi4L_x#PckWeBD82&d1G5ZT$_u!Lh600x0No8GL z&)}7Ht$p{j4ea&F1&UYH`*+3YmQ+NE)!j2}jFHx^eCno++6>Om>G6Lu{`aJo)AbpHFV*&C@W{>kDMGVATu|Lk#{t8f z=bZAxfnc3yghi<@fWep0_N@7YsF$pd#5HQ2g4S-O=^pQ1aB?cuPrt;|G74{dCiLY8 zEm7@3CSH^;76+%MjG^WR|~K2`G8U%_Wrh>+iYP~GhA4_fc>_!c?6G;&IUX!+aF=cP{F0t%z9OXlt9Az=)xd?rf~~dux>blU z!N~(vn4Go{A_26VS|TZmqB1#Qpgfvs+HqPp26#4&-IH)KA)`A@27_JX6^NA|P6nOkq?nfHXdwhNg~CUjyUPm?X_ zg~d1@enaYekaA5pUEk_amvn~OBy;pN9@Y)t_0M9a)Yk&h##8xw`3sScA73q3s9Cwm zSylOovMQ{irQFFdn&(kI8!(pGTy(Wk=RvWt#Gm;DLe~Hv%Zg0V_+tDM_i#NAKNUY6 zD#H6~Ilp+G>=X^Fbr-zMisvRtwqC)A5yZNDU1%UeZPg<|AryEwntgexqH6x3u|{%^ z){*6=tMpr70ek%-Iz1`~{IbMSi@w>$sKhlSpCYQ)&UkrJp`+A+mo;jZPj_*&40U#! zFW{?Po)UF=)hUub_%Tl}cKF4JK+ewk1Lql&+#@pLO*j=@9I6Krfh=HY{TdjeD{g}3 z6d&(~CT;w3JcOq=^>_@AQrY39J-oExl`pNF_K$(u=TZmhJ<%L~EdRBwvk-*sYHMIZ zEBB{{z7~-D;)mMFm4^(|Gu@qiYNEvVMKK)+N1bmBLmV2AW||y$!AHm$h4&6_^+nDO zeCDOsJ$bv$*>hQTyhf1(^k7*VABPJ5%F%ZH#ed|htc_o+bF(}r28-v4rkwGdPaM#` zml^@593!Pr7PlK;-;&yXb~5IH%qhi~%0LzuABA($*Ll}}u8)}R8FDTzoVfL+wmFZ* z)yolm#z}HP{|qYx*k)a{Y8dhJTShKfjWUP{wGRNoG(VGlql$Q?A-R1txWVAe#~1Y@ zm(4kd=|V%C?LQ5By8pI1tHwAJ(*0hm!KwV6eOD$;$4fM+tBSUZls-MbSOZYf$;|im z*AX7S$Lt%@_!ECpzO6}~-BoLUfBo?7?5v#pV!Qa=pZ&>Xu}`@rf{Mf;TESoqcRlL7 zIuTuYQS9s8+NJBXGhdYU&rYRqQS*9GW5Z`e{EDA1-7zmVN3%`v;$C$oYRHba8JGm< zIPJ4AB^73<+vEAj-ntk0t-fB#&~y7kL71Qz&vQurpe^U3=$B23kC$Sb2pM&hl+8oX zzTe+WCXMOlf$Bwa_^3aJ0bN`N+6x!tk!iWus{8Z^FM}9+Dg#m5PR3mSWiB(>e_BIC zA6&aI3m)}g3E}yW^1d^DKpUgy1kgt~m>PrT`Si|V|K)Zti)fJdg6N{4c@n8u+qI7B zx5!;)8qSTm&QZ)ng& zk)D|BeiU|hMATQ-i}z=IvTJ6V{C4sune(+ixHNz0GDUi^(_37S@N(c3TcI}-f9_8_ z%;sX|>v)B+O2l&;Emgn%j@T3@#9UN#`KRTxI{BDq>o|`Jp$9$;`O?~71s%v9U{E2I zBie(eG`4BP%ENrvz_p_RQN@Emu#px%%c10RlDe>#@X70F&fSvW|L>ey!%xOwG|g5IuD2n? zUbAv;xbY?`J=I-jWoo=bSV6WmvZs09+xMVmHX<EGU&+JTF%{G-vKBy@cW4*+&m5H}u?9I|;vPOineG)o(do$_#16}xbjY%tD_vzL zhTNgYYq>8+CIy>~ST%O&_4$Z%1@3ghpZ}80Lg?RWr4d&UV4il#n0tfHaF-jgnA4hE z@95wWt3Tz;zB_?{ON`*XcPgrDqxYgcpjF*zWUU2y4nDKL%){MwC0xm8t##LH?6D zNgB~hho)Z}E88=`+0DrBIEp>h*7Bm8GfhE(v*g<>pu-ETlGskka1tTe)|IaP>zNy^ z+P5^19BW;Pfj|DprVT%!@zWK=<4!~PtB!2p8Q9|bFK2)Ud`UgC_h**h@q_8KSCsSp&ShhjoM7~^T3n1eTYV=o zfg58g$d2ZYbW~~G(XXbjbycEod*)D;H2 zC775+!f%F2b#dCTuM(x*j%L2?D8=y;mhYYh?lru+K(6{o1B$r81Wi4K=|JeUeqTCUg*}|PK;GgR{JyF6e4>tVH_uy>bWTBb^#k1wB|&`sir1} zr#_0pBpccu6(y?&U5i26)jKvIAX)|6qW1 zaj`qCGo{f%9(9E}X^(uN%%JZpZd9L#ne6=jt&Uv}w*!pCs(+UnGlQlD$jGvJC~X+V z_xtD%WMca?wUazliRp>rMx8p)okB&rng&6d2%EHf>HOcZObT-GuBwd(``ebh5qJN_ zR*(G3ebIAkOSA6Y%zA?6PiX69HaHUycGKcPcd^H#6~P+2rTthhYJ&7kPg>Zx#F(COk^?mfN&@YR%MHBAeaElYiOTnP}3TM`25LRzUh2=%w-HWNoHZh;22#_4diW&A^MVZz!-bi4HU$##M#B5mzxt zz3^7*Xd7R>&TtTs5&WDT@vy?t&-P@|a8|%&SoULcbggw7~h@83DXEn9sZb^4;#z*=nmQOP>~y_Qrpc3qD$-*o>w_VGU} zffS9Lk5!RwoTq)4t#9_Qi-h=(haxYD%szAH8MWtiM)h#3_&ezuoj*emeM&QoTQC^v zyzq9yn=$Nzgj$5;LPI;V_-MumHUF}^$>&BAr0gBUWXE2EI0j7rp8OB}R(*4(bu6pE zl?Yv(^kaETS;ej1JWHjC+Ebb66$u@?N6}tCoZut5jzC6(1$T@iGE__cfMWJM48NyI zbC1xLgh9E9%e~i*del1JWnfz3%utSZx@r)o&LOJXq?fGCN|X7Be}1BmfW5ke=MA!v zt1I(EstJub?^jj4S7o#@4lUrc5py~E6yYu?f8oYLEfV*K)j4SP z3c`5P(;^#w;UGUQEf|l;n~O3SDF9lY$l9B4)sN9=`58y_`39OUmXTv==J4>>jxH{O zLq~dOJ+JJ>A>LUiIPbhZI1iB>)P=r;_lJjk@~QX{>3n3m)dX{IkRG3#l4JyxVw$Lu{A@eKoihO+dDK; zi6O{zAyZM_XO@A)`jqd{eU9^PYB~WhAyJ; zd1rkcU!HFC3&N>W4HFzxa&XuybF^j4MjjJ2hLHkB;*M7eTc02AOdF|)ZdOyaI|&}B zW`OIgu^mcSJ>JnV6UG1OLrA99!Lxj0(!R_Zt4wzaEPu)l^D4{m62etv^oWQe3iNb% zsBQYUc27h6F~R;!{hYLEC|2=%&`DV5=<_9L^?Cwq=4%tM?`#Fz&OBEZsT;7MG1Kk| zmd#uG{Wn(T1CxB)*Zc9MmiMRgKfhHl`nnT`4;{saM`A&NI-z?_9fy(a2>huw5*@1E zkm`dujr#b{Y-pUKnw6W7U*p>p_D^aaa;&u3Qxowkv(Bibcl%m_2H2()n}&ZkU1IuK zX}_Tc*}PK%uTFjFYeskmO#l+`fA&@jUUkibP6?c#qBwWEN*}IVqJ?@BJtJB9c!`kd zKVsaI`lssGvq){SruzZw@>A{d+irF<-o~V#{`UrC8MB6dp4DLq65!7VI^HjaIuJ}6svX0O`w+1vPgdV4FR`;~X zoqaP6g8KOtJgqhmj(E#T`FOo4VDO!pl9`uLsIMq%!ltiZkD`f>J)pE>#)Jg1j*FrL zL*`YkI)^?ej(HM^^?FnGBYDOy**W7|_MOcjaP6ldsgv42g@3Q1PflRZo-D#2E}Y*< zUZ`owsSQ}1=SZ4j2wDJ8|A7xhUxn_QvnMRfr_Z~6XvslHI}tSJX~f)bzB<q{q(iwzYNa(XU)9^M|9@Ql`Dbrr2%Ppe>27J~j&G zD_9Hr(9EM#Qsss*_{XMeXn`ZMdOMX@{zg0x)OR34~M4ze>ET?l{m z8BNvvZUhlsJ5}yJmDuZ1PpUAQo~y75ttCU&l~D_K%;a{eeG_1siCp zyB}Om3Ss#NI5%R9v&++*GrWS2b>*S^Rt4SMk^-I#n3`R1h+{j_;@Xss-+ujA+OEW| zqsHOp+Op?NKIbWBz14dCvFJ%$4d?Gmffp|k_kXr5=gGS8G$19mQFsjo!mH_f5Ehaa z6r}P#Eu4WcZBaZ=w2*0dh#AOZj%z{eNPG}Ju^#|D*PJ*%WoSl2ZN|?)en?jKK*_)^JtNID2`u zPPbax#q5n}@VY3@10GL>JYsg9d_Y~JYR})&YZ1q2(*DhlrRTD@|NK=}@P1#%l;-E| z#sE+-8p`xnlRKoQUwljZ@Dcsg=V&DN^e`{9xP}?gZ^~>h8)Nqk&j*7`d@x-CJX6sm5L}=_$Z|Lq>6!@x}P9D=OzJ@zXwp=x3 zlA{L!m1j97h-Pr>b86s|?qKq<{$l#n7zo%XEyYgDZjou})uYl`pmcX8{TOqWcpBzD zdyefqz>g%0a$HP^Pz=hmr3+BD;}tf%sa zBNsYVDhB5ng|<%gMb9>0d~{k`)~b}&P~MXCsPidf5rwF;xgy_+a~fZUGn!$1qt71Q zjv>#O=L79odX#Ox{F=Q7F&#=D6Kj-Xw8NK-V8pD_AGYdS>y3J$RcDlXc!EjLGPqrQ zu7MQPd|JXe%|%=WeI##GNkdS70BsOo)mi8q?-Wg^TRPmlb)m2@V%GS~B9Y-VSex(s z#9+FZ5fXIlg4QW{t+Rhr#f+W+70oZCkNKpfbN9Q&ToiLrMj4BxNWwlbtZ*aI&CHi& zXw&U@7Oly%k~Pfd%T$`Q;+BS3@ePS=wej0QL1kuljJ5ZzN`}SXrfDny`%M$#m0(>4 z7}{g4)-@xzI~F!o*IBbJMeMxJOZ@rz(DF_A@dv}|opYOR@{u7UIWjMfqSB{(UcUA| zYh!BQ=JTDUXX4v~kEcP)8m$oyKH|vTmy>CO_&*TIw_;qx@#P;Rl|2ovT(y`}&@BXq z9%K2NQlqImAWi%`y0%l`K|fJgauBOV-}rN8OyCt8?!RPa=RT;GOX=s=P?$yDlCK4= zfKo~XFBYc#(}edHY5j2Ci&*A1+C*rudk?*|E8!xM*B%eu5txVU+@f!N)MT-wY{|LO z4uhrE=JE3JmZtFwoxt<*KuqKea(&n@+i?}0M}zTY;ID7B#r^`87CynavQ%A&^^XL^ zqOe3m>xhQONgMZ3O(fqMdYlPr4}R0W(Z_Ai&KqG|xvlR*yw_P*2d5Wlsr8dhp{(+1 zihynQ!#^@;r~SLPEh7TMCz?|TQc&ra+B*}ww|r0<#tJ<9z?sa?l~EziB9hn zHH1|0m1K2;T6gBH+1jQxxaQq+Dr>SX0)$4N@%kr^03Y+srRHmacL!~tMP>rT^CPGl zn&w`xr)ZQu(Jp%%{bqq=xXFL`r7L}W@>aH%;-)>3dli}7(OIKwyt3BsY0uv=S0_~q zQYP51Cg4kdQWi-`HxzO74)A0a(-V%KMmem~KP;6NzngdIt!lD;u*CY_-DF^eUGuzS z&N8W;;Y0vDof6TJL?gweAwmpG>e4=k!4CHMlD32I>g-gUmkY6t8 z6Cm|xGB3?DP!{W8&)b&MbXxTzZ67+Qr!A3`9R<&O;q|ff#HQ}f!t+%5H?=I%nYV_zH|{ZCX)*+--8o1o`IsTl zSmg1QyIuGnSh$2YKu{S97@o1%TI%--o43F5C*_QY_C#n=*ywBIL(zZW+7}?JHH~9E zB#VwMNxS%os5)r5HN;x9P3CBA!bNcdYc9|>dpVvucpoTsi?yY|8dy%1Y>Z*QUMmob z@IQux2}J0>sCb8Lx5`+Z$ho;q!SKJhSV%NQ?e1cfKKpTr9vEU$!libFcPEM&Q`p88 zxl|Kb)Q~~7i@P)oDZhK*H1avUrf}beLlI#sN3cq5O;>ohwXdsS8mXSmPpZr>%~k(7xfQEUWlC~JJfe5(;pqaP zJQ2V;o=r)V;`vm*9lZ@^Q~#D)j7a5LpRzz0e16*P<-qi=yzl?k{@XgMYl zrL==x)L2&AxVQLrA+h6AJr^=8UzfwKxwXN=Bk_aO+(25(Wr<-&UL0Lxi%329kNxjl zpuS#I-~ueD{TJ=m8CW;5Kyhf_n+rgz)fp~eovz_#;GaD;gx9OGxquh3aHh!afLL)) z#0%u?4}8&$2g|3H%wYGHn4NvwgOaY#Crd#G`Q@9QSsNH^tMI{whXCb^Kri)sUoqem zwETtZqyntEa!w~&W7q!(#A;nBSjwYmTgOAvEb76}o>{fOQ8XY}f2v;T24Dr;T6_}? z6n+}A(DwEz8>JU(y9g)On(wIhq=47|xM3!Qk6E8uf!g#Hj%-#wM`iN6MFoD}wn1mH zQ`I}Ge3m+f!Q{=*Lh?);y*w&sg$UBitHO3RDuH;NQk0NE5QGAie5`(LKkH8$BEg7> z|3KGla^bgSEd>zWORa$P!s)-ikT;xCeoQ}dvX6f+i|=$6$&GM}{ET0}M`%wUSanV9 z#(9b(?Y}yJNZOCDo*xRDoDfr(v&gAd6;XTnocH;$9U+@GZ zCv@v_&y8u>RylX@1kjb$`uIFJBTIr@{%pMOgo3%5J9Ash;knx=kh1AV*lmuI8$P2bz*@LXNjr68x@^s? z{w~25lKF%S{IK1U2j3cTg+SNFxsR*Z5ALld^a1o5eJ<+pne1<=ZQA(D!zU`MUhjT~ z*^aPoRHOa@oXjomm6aPs!Ut`wT(0-Ki!(ibx_5#Nc$=fyfQ8+1i`V}6{q#0oFgmNN zUEF`UG%G2z-H{R*jUS<1{PXKyK*ATRq6~o^fBY%hts|;0kT~|+|DZj}*|SPLaP2%i zcH7fM{i7tegW_thHS>w^PkfJ!3QqYRo|JreY$FClI@Lz|)l4-D45%YrF6xWIsXLL0 zVIqq(m0OIn5z<}V9M_kDNQsrzv^dm_SolB>`wOi2FeGSUZJQpqqgBDsH&3CIMZWqZ zCf8iMj+YwgL{?opsT@hYr=RY!J2D|`xIvp!za!w%rM{K`@Y0qR$)JjPq7*2=G6K|8 z4ICOIplJt7v^i4P-<)gkdzGsRZh@=+RGFf#WWe|T?S};&sz?57W;wZ28v%cPcr)oF z{F1uGIi>{ONUpt9vmYut-)xB7XvB+k8(sQ*D7A03r zd|*$>#yP48dAmIEa;_ajx$`sL@BGSGCod=313|LZxFp8@X_`P(7)W4L0PpZzsVi zs5f*t(S?r|r<%7O_f1^h1HNjQ1z$285Qwa$2P<{Hn`b#}_EWEZ|8UN8)9!6L{KwR> zNv@u2$FA)!W{L2Ym1h1b*UBp&sapo-u`5SB?-Jz59np!)Ti5pZ-;CU`TG9WvG=*pN z*H*Y;p|h3xXYgtSNvl=E*8cSaX_XkPny~VcSABH1Z0Ggge^;Kqz32`oK$}a74B9nS z*0ji$YC}N4LW6Xy%Yog`a=Bh1`L?hq&kAXe*}zR3($OD$!y0!zwXUwUiq>^wj@`KZ zDS=#t{|I>^0YbN5Bd?+LAzIt?{`YsH-{V(~$uquyczIui!DE@~#M4TngzTef=h=rc z5hq_LnrzAi?e;D*CxCxnvhwuR|60PT&2)CKEeM;e)fQryv)LKnqJt8IO=OF2O!{UW zdh5MO@#E(m-wn!+hwp|pzBdrCPymfzH7OtZnQqbfV95APRMBsj$mNTK>9O&TV2j7* z<7-Z_@iT(sN^3$Qmt@Xw)_pOFxq9k!*v}N1(KCB=;+3agi)Z%k#AKn@DF*9$Y7-=!Evd3kKTa^j78+_H*)BXY3mf zdNI#^t7MD3+3>cnReDkBJkECYE&rswZo}CAZ`7@#{JP7hB-x`mQ_m>n7jy1n{`Q#r zJ6i02s>(1l*cq!>y(v6gmvHEQiE?Vd=+|70OPxU>ENZU&jj{Q3#}yP8y`Q3V;O%p6 zW801w0HhEK*~cnZO;sb04IlTrHmM&3=!)(}kQ#mEqol-XV$VG4|01nTTlx1{Z;-{;nl&W>SPD6I9&)l&Boj z(J9OXvRUkJ*J7mj-MtKoV;fhH0T?M}L1QycPbpuI3ycGo>r11_oJ!9seYEWyD*GPu)2{de|ABlQ`e5vj z3uA7Pheer#3QHG{k2Eu1&{~EY1DBf-@!>i@JG{zXH8<+_yIP+kwTMV-rTT3?D%AKi z3Vjz}>3!Kx%{CHhRgBh4D4@)~f7drBF}~2kUQ~7oV>Oaq&@r4Yx&27-AiK>U7iuDk zez({kQRw^`a+#H?A*c5pa1p&sN$@z`vf;&lzih50D5v=Kn}PoJgVyh5rmAc~*Ctf^ zn2X9hJ)OQNxwmeDlL=OE?M!dST0#0a_WD70E7*w@a$}v4AE81-9=kUHKAX|XNh{}CHHF^d z?#02>HE&NOY+w(gE$RIFkiL7Tl^+n#hE)_IKVZ0x(?MSm-}ZEk*PRFtI?a~k*W z%gs%qjuPx>y{|a3u>Z> ze!P8pGoN=LM0sA8eq#A=3XL)e|KAAq;JlT6pnBZK*(6`fP@oD;f zHUEBCI%=%$bV{vOcyTTVAlVDV&s+bnaArz^&K0RN`^R|?vQ^2q!K$K0hgamoAFaG^ zzkcFuyV13f&kAa(>N!~w52Q_TVzU+{Pq4aUK;zrG6bI!SgqA)k_Z-g3qt^bEf%qO& ze$$B%V2j(~;DphEQgU-a4gcy#TsSE+pCk|xN-mW8#Z483yB|qg3dDxSvmNkv(NY5m zZHDx*KdfwNt}eC7xZ{HSs%yYBmjW?F?+h%(eYM+-_IYss=YTZjP@ahtF&MQUz|;Zo zzQcYjX;`rgY=1Ns<#cJA(RNgdtpxCd4{8)<2SI$evjxc}#M?PfY5 zN^$vQLY=T~&d?{qk2+aD8wh)NMiXfLZC>^LGV-5pN16Mpg(0Hau! zsaOx!xwvSSE{S**Lz^*+wkYs~ORO--6wxtu8u`@zTg>Y0w4dCm;okkNw}|!G{_>^r z8nD5kCp@ID6x6$%3b9V{8hy}c%kYx<^0UUDZG-BU1_He8iw2S%(pBTE@W55}b-G6O z%N}%u4kBuM2%&G&4M1>f{kXKwPp<$_{M){A30A4J>x@UhQovF9nY*DS6Q2i+vI zm9TAnA&NLiFVdCzFJQ`*F1D`*>0TfUr`FT@tgy{XtNU9^Iat5GTYcqt9GxC?jy$Xl zP9T{Xy4anq`r>ofkOl!ZE}s*8Id(LlvJRqnUNqNSoo@<%a)#Vl=MQM@ zR#?y%b$wupZ>3)Vtk1ud-%2e)NJgs-bbN3%HM7m{Kt+LsPPBpRjlKh`HWTjb%HdmT zF1w?<$8p7B9sM@WXSgUz1SJzA7?&c<_a!8Jh9T{{5Nhcz6OjkevxcT;5#e=@+QZL= z=3in|Skwklo-rJjutfZX@X$hNwGQdU& zYjn?ipKC-t4d7SWBV?tA38G*tdm7W~y-Vtx8(3As3D=+Y@k_%B*V15O=EWAqe5eJr zO=COhr!8}<84bUHmoxu_?X@v|kCcd~jUfLDLhFDDnEO(-J}Xplfdk|~AT5;=)NWr` zy_a_;5>obGtsG9H+4@|Y^5r*?iB$D~oK*-{t+Q|@aOoP)0)GEXQzRmYKELwj-m3ti zT_n3%1z$Rsa^ieqlZe1q3^sjVV?wFOsWBFVtd{6;?b#m)XAW4DUh!(#p-dOK) zJ0Ebc@6WSgj^B@d8R;vt^55#y4`@R=xX?1&HPTG6)cq1N|jA) zt>1fi`aozy{zwAB#@M5F^)=pMGvNW}iB>ncMKeb8;LW4jaJe)DSc$QKmW2|v^<^Mh z6&cA7~5 zN9h_vU!wy957dfW*NuxIdVPfy!0%3Wr!E0udJaEl+)e1bAuz~zU!z|4n zf2<}92Jiu?SD4AUeQ17v%}|B9|2nCg1IbgKNu-~<=EphBNZCke&HW5SsmwQrt)G+# zd4?$7fcHxwb{qX0`ust_CB|Bgmv7S_gHM$L-l4MtcPJY2JK+LjT zt-w61*x9sM{qf&|chMo{cJ`-fC$2Vs=uv7ui$G_Q7H?>;M&-xNaLP|(K?Yd}tl^`7H4GZlEkIfe*a7GD* z7@HHzHU=|nC_qmSOj}#6Xzbl-jV2`;bG;8p!fUAiR=b6baxdO7QzeLRL@YG-OsO8f z$*xX&j;!@6Itw6`>{eRmSRvr6ufP!X*BwVo$Az6LgI#)c1=^M=uM!k`z5)wQg+VgX z7~nn2E5PskEAc1iix=ZR?rms~D~{gw#F?>?OpZz+a_1!HyD8wy=~TCX6}%2Vcz56& z+506I0b}x$T0sY>IWsDF)gwVdivbO{4ni}}h~Koe0_+vDHHfsk@!Md+BYKW6AqB6$ zDkFFXhlhg5PnGtIKe8d3notnPiIJk3W|U&mQqk`ndmRZPJKY(D-?1uIYqwo3%RgLn z;K$-Oru?3Pk%)@_kV66o@2*NLV;7I57b7Y_&bGJwT&(N2&lNSwzHpTr!dG{`Miyu_ z{=Nnbb?+c4>R5in@JOuPWUjY#Ep(AQ z!CQoe*}kpIfED=J9=)Y%-uj~yOXL1uzY|?+inRU5XK3(=^({13kKsDw^^&}jOYgn; z-gmbD@(n&d`f^1iyw37+qV)&kOuqZ!VI_d6;5i=sE0S``%({2l&Yq1qv(p}dI6i_? zeHtQmB5!*RYur{N!Na?g@0lqF9PL~+ckRv4@cp}-m@O@=SO;w#Uo$!A==gR`LNN*2 z4nM7>cz^77&C7<54jascP;TwvD$nNa9=zPWAd$OAd;YJW(X==we*_Di%QO{CDdGUs zf~TM5>o0<@$lcaT^`Sz;q1(e>D3DUiS>$` z%Iy?*(BpQtZy)Vv8t*MKKR+%1TjObS6ZjAedFeWE_l7_%#eI_hD5}E0yGnRXr;e*Y z#q_Gwn>R>-=UH0g#~y;2;0-CP_MxM00sjM~AEuKkG>3{D7fWbiRCR{`=hbRoM-&Wp zl4MaeG411&^<`{+cz2J8@i^YGez*pzqQMHKX+}vQTDXLFNRWf!@-l zphzMu6mnHWO}y-_KPmjdg>knsv%`Vu4+ZD*gET{cl{yc|l%Jw_FQaKh)D>eE_#hvt%dKJwxfMsgXU( zB0+XzHqr$2ALFBGn}~p zmRq-c_iF2}*g-p7$Ro|g&zEiVfD8KD;R5QBrDH617Z2lDg9_J~pukaSnjXXM@p&A~ z0wUCR$)(%aLB-+I7oEx(>C`t%Q1Io9U3})4sO`YrS>GFbB{B<|Km9MjH1CBUhu-Wn z5%rml)D`|kTzH@=buQw}NV7e+U4*c)QwFP?kcvv0uwCaLU*DD_YZ>pqWk9XiT_+?G z*}o!y-7e`n>!<{4cE4n_N4@YN*$MNp!LnWc|qGTikmXZIqPPDe~gxv19SS^eN_q z-0MSKlBC~er^7{Au$2#Y_yLiS{Ufw{N5p>n4^14_mROu2Ivf}N?iec=91F9pl zx@hey&)=1ar)9}4HLLwQmkP6PKB;riB&gX|RNSP7{N8ZKn3W+P$o>cT-nx4=epHUB zxAKFp=y=^3L7*CSPcZd-j!*K$HEa(9Mz^${^d%xP)3bDqIjeg^dIqShc!!Bl#d*TT zCgm(-m~^`8Ey$#(iw`>z!M^CQ)=YNT?~!*{6DYxb{FLxM8Vf>yDj(Y}+Y}cz0BxR= z9EQhU@VW9bL^w1kON_)B@DXj4f~qnxf?8DJ;^?^%$*dhb3;I~tiZLbQ!fbP148m1* zDa6Oa(G9bv%1e0w7#Y#&jMojYGXexMOXkJ;84&xYQfL_0cq58A5}o~`vrN7xe+xxo zT|>1GrAAsFT~7DvM4`>N5elulou%@)pqO*w-jYk5cUdgBuiH)%V~VY0mL_^r$*F%{ zrC7&7Z>t-8`0Y;FR9{Nx8Ab?}=+_uTroF$OF*3L0q!bElSD%3iS1iFi9`rcrGGcQ* zWNRHp@fFM$30)>y>l02NJ{)~RwsiIS#EO5GfVpSp%9b;%S`??23&4`4|H%Hr( zC?giJrf2kwt`x}^)P!>dPFHZp9f{g&k}jJ%z29rA@7#WPvU3WKyR^PtR$$&my&63= z#|OW_wyfTGY9!Yy!;v>6uISEuGJCuPk^iG)V++LUrxCWFgnuVwhy8UsyXS+{^7i!M zXbPG{`qp?!Fny2ZP`AA898a;NFV5x3amwPF<~!2j*vbDYO8YYLfk{%4;oaU(?J#jSZ3=YKP=D*gr& z{sPs3?fLhy$)@&NR}aGzm)h$!{RNlv?gpfOppItLyYupb5+HKtVYy_{W+3sktEg>ns7pX}y4tw>6(kG?Oly-IxT2Z1s(S_{?ngS)}?G7toe)R%0AFO=i5=#EU|8 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

>!JY<%zv2Mi5K-SP1GBkPHTS{45sas$iZaugsf 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’qka(+X^}Lp6c{3f1h|HS^C&w{ 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 z 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

njT1-zSPr4|L{ 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.ZsWT02S{j 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

6XJV4dV(T&_bw4AEJ}E?w=?@{DJvCVVS6_>L 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 ~M+V@O{=2`+uo%U;(cfH3{rSH+b8 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 z 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

s>zKMhwg-4qDK{S+X3wX#N z=V9)t3Eze%M9fSJn=|H!pgca2x;c>oX@8dphj$`abFoPDSgWiTB?&B1l~>0=I-17!tj1tXrCbk| z(ZRc8_D|p0sVD;ax5`8p1`}YhV^iBXof0rTY;S+l;~>zXMfc}Be-eH#EP3r_R06-B za#dq?Z18oidd}XLi|zle#c{ppI3Lu~x_pKVZwIB{!`;P5@_4n~!^GwLe zPF)&NV8bqWɮ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

Ygl7ux^c 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⩰uEuxKD%L*3>u~8WpM%oPN`r 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 z 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

VkCS%9FV2JwDm%q7uALC`>Pm2!`@onr_%cj^g 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