diff --git a/.gitignore b/.gitignore index 6fba84f0..c88172d6 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ .DS_Store .idea +bin +obj diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 049f19e2..1038dbc4 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,4 +1,5 @@ ConfigManager.cpp WARNING: value path/to/nowhere is not present in config. +<<<<<<< HEAD ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. @@ -151,6 +152,313 @@ ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path i ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +======= +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +>>>>>>> updated protocol helper test suite ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. Token.cpp ERROR: Location Id was not referenced by this Token. Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.sln b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.sln new file mode 100644 index 00000000..d49e21df --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoatiPlugin", "CoatiPlugin\CoatiPlugin.csproj", "{A585A530-E120-4C74-934E-D57ED12A7DA9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A585A530-E120-4C74-934E-D57ED12A7DA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A585A530-E120-4C74-934E-D57ED12A7DA9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A585A530-E120-4C74-934E-D57ED12A7DA9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A585A530-E120-4C74-934E-D57ED12A7DA9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo new file mode 100644 index 00000000..b8347eb6 Binary files /dev/null and b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo differ diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj new file mode 100644 index 00000000..f5f65bce --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj @@ -0,0 +1,181 @@ + + + + 11.0 + 11.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + 2.0 + {A585A530-E120-4C74-934E-D57ED12A7DA9} + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Library + Properties + SnowForest.CoatiPlugin + CoatiPlugin + True + Key.snk + v4.5 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + true + + + + + + + + + + true + + + + + + + + + + + + + + + + {80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2} + 8 + 0 + 0 + primary + False + False + + + {26AD1324-4B7C-44BC-84F8-B86AED45729F} + 10 + 0 + 0 + primary + False + False + + + {1A31287A-4D7D-413E-8E32-3B374931BD89} + 8 + 0 + 0 + primary + False + False + + + {2CE2370E-D744-4936-A090-3FFFE667B0E1} + 9 + 0 + 0 + primary + False + False + + + {1CBA492E-7263-47BB-87FE-639000619B15} + 8 + 0 + 0 + primary + False + False + + + {00020430-0000-0000-C000-000000000046} + 2 + 0 + 0 + primary + False + False + + + + + + + + + True + True + Resources.resx + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + true + VSPackage + Designer + + + + + Designer + + + + + + + + Menus.ctmenu + Designer + + + + + + + + Always + true + + + + true + + + + + \ No newline at end of file diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj.user b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj.user new file mode 100644 index 00000000..a3001f8a --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj.user @@ -0,0 +1,13 @@ + + + + Program + C:\Program Files %28x86%29\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe + /rootsuffix Exp + + + Program + C:\Program Files %28x86%29\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe + /rootsuffix Exp + + \ No newline at end of file diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.vsct b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.vsct new file mode 100644 index 00000000..0fc3968a --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.vsct @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs new file mode 100644 index 00000000..c964f628 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs @@ -0,0 +1,123 @@ +using System; +using System.Diagnostics; +using System.Globalization; +using System.Runtime.InteropServices; +using System.ComponentModel.Design; +using Microsoft.Win32; +using Microsoft.VisualStudio; +using Microsoft.VisualStudio.Shell.Interop; +using Microsoft.VisualStudio.OLE.Interop; +using Microsoft.VisualStudio.Shell; + +using System.Net.Sockets; +using System.Net; +using System.Text; +using System.Threading; + +using EnvDTE; +using EnvDTE80; + +namespace SnowForest.CoatiPlugin +{ + [PackageRegistration(UseManagedResourcesOnly = true)] + [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] + [ProvideMenuResource("Menus.ctmenu", 1)] + [Guid(GuidList.guidCoatiPluginPkgString)] + [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids80.NoSolution)] + + public sealed class CoatiPluginPackage : Package + { + System.Threading.Thread _serverThread = null; + + public CoatiPluginPackage() + {} + + protected override void Initialize() + { + base.Initialize(); + + AsynchronousSocketListener server = new AsynchronousSocketListener(); + AsynchronousSocketListener._onReadCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkReadCallback); + AsynchronousSocketListener._onErrorCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkErrorCallback); + _serverThread = new System.Threading.Thread(server.DoWork); + _serverThread.Start(); + + AsynchronousClient._onErrorCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkErrorCallback); + + FileUtility._errorCallback = new FileUtility.ErrorCallback(OnFileUtilityError); + + OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; + if ( null != mcs ) + { + CommandID setActiveTokenCommandID = new CommandID(GuidList.guidCoatiPluginCmdSet, (int)PkgCmdIDList.cmdidCoatiSetActiveToken); + MenuCommand menuItemSetActiveToken = new MenuCommand(MenuItemCallback, setActiveTokenCommandID); + mcs.AddCommand(menuItemSetActiveToken); + } + } + + private void MenuItemCallback(object sender, EventArgs e) + { + MenuCommand menuCommand = sender as MenuCommand; + + DTE dte = (DTE)GetService(typeof(DTE)); + + if (menuCommand != null) + { + if (menuCommand.CommandID.ID == (int)PkgCmdIDList.cmdidCoatiSetActiveToken) + { + string fileName = FileUtility.GetActiveDocumentName(dte); + string filePath = FileUtility.GetActiveDocumentPath(dte); + + int lineNumber = FileUtility.GetActiveLineNumber(dte); + int columnNumber = FileUtility.GetActiveColumnNumber(dte); + + string message = NetworkProtocolUtility.createOutMessage(filePath + fileName, lineNumber, columnNumber); + + AsynchronousClient.Send(message); + } + } + } + + private void OnNetworkReadCallback(string message) + { + NetworkProtocolUtility.CursorPosition cursorPosition = NetworkProtocolUtility.parseInMessage(message); + if (cursorPosition.Valid) + { + DTE dte = (DTE)GetService(typeof(DTE)); + if (FileUtility.OpenSourceFile(dte, cursorPosition.FilePath)) + { + FileUtility.GoToLine(dte, cursorPosition.LineNumber, cursorPosition.ColumnNumber); + } + } + } + + private void OnNetworkErrorCallback(string message) + { + DisplayMessage("Coati Network Error", message); + } + + private void OnFileUtilityError(string message) + { + DisplayMessage("Coati File Error", message); + } + + private void DisplayMessage(string title, string message) + { + IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); + Guid clsid = Guid.Empty; + int result; + Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox( + 0, + ref clsid, + title, + message, + string.Empty, + 0, + OLEMSGBUTTON.OLEMSGBUTTON_OK, + OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, + OLEMSGICON.OLEMSGICON_INFO, + 0, // false + out result)); + } + } +} diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs new file mode 100644 index 00000000..d7735d65 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using EnvDTE; + +namespace SnowForest.CoatiPlugin +{ + class FileUtility + { + public delegate void ErrorCallback(string message); + + public static ErrorCallback _errorCallback = null; + + /** + * Returns true when file was found, false otherwise + */ + public static bool OpenSourceFile(DTE dte, string fileName) + { + try + { + dte.ItemOperations.OpenFile(fileName); + return true; + } + catch (Exception e) + { + if (_errorCallback != null) + { + _errorCallback("Failed to open file at " + fileName); + } + return false; + } + } + + public static void GoToLine(DTE dte, int lineNumber, int columnNumber) + { + try + { + ((EnvDTE.TextSelection)dte.ActiveDocument.Selection).MoveToLineAndOffset(lineNumber, columnNumber); + } + catch (Exception e) + { + if (_errorCallback != null) + { + _errorCallback("Failed to set cursor to position [" + lineNumber.ToString() + "," + columnNumber.ToString() + "]"); + } + } + } + + public static string GetActiveDocumentName(DTE dte) + { + return dte.ActiveDocument.Name; + } + + public static string GetActiveDocumentPath(DTE dte) + { + return dte.ActiveDocument.Path; + } + + public static int GetActiveLineNumber(DTE dte) + { + return ((EnvDTE.TextSelection)dte.ActiveDocument.Selection).ActivePoint.Line; + } + + public static int GetActiveColumnNumber(DTE dte) + { + return ((EnvDTE.TextSelection)dte.ActiveDocument.Selection).ActivePoint.LineCharOffset; + } + } +} diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/GlobalSuppressions.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/GlobalSuppressions.cs new file mode 100644 index 00000000..a893f9d2 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/GlobalSuppressions.cs @@ -0,0 +1,11 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. Project-level +// suppressions either have no target or are given a specific target +// and scoped to a namespace, type, member, etc. +// +// To add a suppression to this file, right-click the message in the +// Error List, point to "Suppress Message(s)", and click "In Project +// Suppression File". You do not need to add suppressions to this +// file manually. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1017:MarkAssembliesWithComVisible")] diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs new file mode 100644 index 00000000..0ab44894 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs @@ -0,0 +1,14 @@ +// Guids.cs +// MUST match guids.h +using System; + +namespace SnowForest.CoatiPlugin +{ + static class GuidList + { + public const string guidCoatiPluginPkgString = "acf15780-03b5-440e-a41e-db79b7043fc2"; + public const string guidCoatiPluginCmdSetString = "0efb005b-715c-4a62-8a9b-1e5a870e6c34"; + + public static readonly Guid guidCoatiPluginCmdSet = new Guid(guidCoatiPluginCmdSetString); + }; +} \ No newline at end of file diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Key.snk b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Key.snk new file mode 100644 index 00000000..b0f11bb0 Binary files /dev/null and b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Key.snk differ diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs new file mode 100644 index 00000000..97fcd656 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SnowForest.CoatiPlugin +{ + class NetworkProtocolUtility + { + private static string s_divider = ">>"; + private static string s_setActiveTokenPrefix = "setActiveToken"; + private static string s_moveCursorPrefix = "moveCursor"; + private static string s_endOfMessageToken = ""; + + public class CursorPosition + { + private string _filePath = ""; + private int _lineNumber = 0; + private int _columnNumber = 0; + private bool _valid = false; + + public string FilePath + { + get { return _filePath; } + set { _filePath = value; } + } + + public int LineNumber + { + get { return _lineNumber; } + set { _lineNumber = value; } + } + + public int ColumnNumber + { + get { return _columnNumber; } + set { _columnNumber = value; } + } + + public bool Valid + { + get { return _valid; } + set { _valid = value; } + } + } + + public static string createOutMessage(string filePath, int lineNumber, int columnNumber) + { + string message = s_setActiveTokenPrefix; + + message += s_divider; + + message += filePath; + + message += s_divider; + + message += lineNumber.ToString(); + + message += s_divider; + + message += columnNumber.ToString(); + + message += s_endOfMessageToken; + + return message; + } + + /** + * TODO: debug + */ + public static CursorPosition parseInMessage(string message) + { + CursorPosition result = new CursorPosition(); + + // remove eof token right away + if(message.IndexOf(s_endOfMessageToken) > -1) + { + message = message.Substring(0, message.IndexOf(s_endOfMessageToken)); + } + + int pos = message.IndexOf(s_moveCursorPrefix); + + if (pos < 0) + { + return result; + } + + message = message.Substring(pos + s_moveCursorPrefix.Length + s_divider.Length); + + pos = message.IndexOf(s_divider); + + if (pos < 0) + { + return result; + } + + string filePath = message.Substring(0, pos); + result.FilePath = filePath; + + message = message.Substring(pos+2); + + pos = message.IndexOf(s_divider); + + if (pos < 0) + { + return result; + } + + string sLineNumber = message.Substring(0, pos); + int lineNumber = 0; + bool valid = int.TryParse(sLineNumber, out lineNumber); + if (valid) + { + result.LineNumber = lineNumber; + } + + message = message.Substring(pos+2); + + string sColumnNumber = message; + int columnNumber = 0; + valid = int.TryParse(sColumnNumber, out columnNumber); + if (valid) + { + result.ColumnNumber = columnNumber; + result.Valid = true; + } + + return result; + } + } +} diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs new file mode 100644 index 00000000..965bfaf8 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs @@ -0,0 +1,221 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using System.Net.Sockets; +using System.Net; + +namespace SnowForest.CoatiPlugin +{ + public class StateObject + { + public Socket _workSocket = null; + public const int _bufferSize = 1024; + public byte[] _buffer = new byte[_bufferSize]; + public StringBuilder _stringBuilder = new StringBuilder(); + } + + public class AsynchronousSocketListener + { + public static ManualResetEvent _allDone = new ManualResetEvent(false); + + public delegate void OnReadCallback(string message); + + public static OnReadCallback _onReadCallback = null; + public static OnReadCallback _onErrorCallback = null; + + private static string _endOfMessageToken = ""; + + public AsynchronousSocketListener() + { + } + + public void DoWork() + { + StartListening(); + } + + public static void StartListening() + { + const int port = 6666; + const string ipAddressString = "127.0.0.1"; + + byte[] bytes = new Byte[1024]; + + IPAddress ipAddress = IPAddress.Parse(ipAddressString); + IPEndPoint localEndPoint = new IPEndPoint(ipAddress, port); + + Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + + try + { + listener.Bind(localEndPoint); + listener.Listen(100); + + while (true) + { + _allDone.Reset(); + + listener.BeginAccept(new AsyncCallback(AcceptCallback), listener); + _allDone.WaitOne(); + } + } + catch (Exception e) + { + //if(_onErrorCallback != null) + //{ + // _onErrorCallback(e.ToString()); + //} + } + } + + public static void AcceptCallback(IAsyncResult ar) + { + _allDone.Set(); + + Socket listener = (Socket)ar.AsyncState; + Socket handler = listener.EndAccept(ar); + + StateObject state = new StateObject(); + state._workSocket = handler; + handler.BeginReceive(state._buffer, 0, StateObject._bufferSize, 0, new AsyncCallback(ReadCallback), state); + } + + public static void ReadCallback(IAsyncResult ar) + { + String content = String.Empty; + + StateObject state = (StateObject)ar.AsyncState; + Socket handler = state._workSocket; + + int bytesRead = handler.EndReceive(ar); + + if (bytesRead > 0) + { + state._stringBuilder.Append(Encoding.ASCII.GetString(state._buffer, 0, bytesRead)); + + content = state._stringBuilder.ToString(); + if (content.IndexOf(_endOfMessageToken) > -1) + { + if (_onReadCallback != null) + { + _onReadCallback(content); + } + } + else + { + handler.BeginReceive(state._buffer, 0, StateObject._bufferSize, 0, new AsyncCallback(ReadCallback), state); + } + } + } + + private static void Send(Socket handler, String data) + { + byte[] byteData = Encoding.ASCII.GetBytes(data); + handler.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), handler); + } + + private static void SendCallback(IAsyncResult ar) + { + try + { + Socket handler = (Socket)ar.AsyncState; + + int bytesSent = handler.EndSend(ar); + Console.WriteLine("Sent {0} bytes to client.", bytesSent); + } + catch (Exception e) + { + if (_onErrorCallback != null) + { + _onErrorCallback(e.ToString()); + } + } + } + } + + public class AsynchronousClient + { + private const int _port = 6667; + + private static ManualResetEvent connectDone = new ManualResetEvent(false); + private static ManualResetEvent sendDone = new ManualResetEvent(false); + + private static String response = String.Empty; + + public static AsynchronousSocketListener.OnReadCallback _onErrorCallback = null; + + public static void Send(string message) + { + IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); + IPEndPoint remoteEP = new IPEndPoint(ipAddress, _port); + + Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + + IAsyncResult ar = client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client); + if (!connectDone.WaitOne(1000)) + { + client.EndConnect(ar); + } + + Send(client, message); + sendDone.WaitOne(); + + client.Shutdown(SocketShutdown.Both); + client.Close(); + } + + private static void ConnectCallback(IAsyncResult ar) + { + try + { + Socket client = (Socket)ar.AsyncState; + + if (client.Connected == false) + { + return; + } + + client.EndConnect(ar); + + connectDone.Set(); + } + catch (Exception e) + { + if (_onErrorCallback != null) + { + _onErrorCallback(e.ToString()); + } + } + } + + private static void Send(Socket client, String data) + { + byte[] byteData = Encoding.ASCII.GetBytes(data); + + client.BeginSend(byteData, 0, byteData.Length, 0, new AsyncCallback(SendCallback), client); + } + + private static void SendCallback(IAsyncResult ar) + { + try + { + Socket client = (Socket)ar.AsyncState; + + int bytesSent = client.EndSend(ar); + + sendDone.Set(); + } + catch (Exception e) + { + if (_onErrorCallback != null) + { + _onErrorCallback(e.ToString()); + } + } + } + } +} diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs new file mode 100644 index 00000000..be6bc196 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs @@ -0,0 +1,11 @@ +// PkgCmdID.cs +// MUST match PkgCmdID.h +using System; + +namespace SnowForest.CoatiPlugin +{ + static class PkgCmdIDList + { + public const uint cmdidCoatiSetActiveToken = 0x104; + }; +} \ No newline at end of file diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Properties/AssemblyInfo.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..5a8f5737 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System; +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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("CoatiPlugin")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Coati Software")] +[assembly: AssemblyProduct("CoatiPlugin")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] +[assembly: CLSCompliant(false)] +[assembly: NeutralResourcesLanguage("en-US")] + +// 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 Revision and Build Numbers +// by using the '*' as shown below: + +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + + + diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.Designer.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.Designer.cs new file mode 100644 index 00000000..15676794 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/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 SnowForest.CoatiPlugin { + 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("SnowForest.CoatiPlugin.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/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.resx b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.resx new file mode 100644 index 00000000..891c592b --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources/favicon_16x16.png b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources/favicon_16x16.png new file mode 100644 index 00000000..71ad3bac Binary files /dev/null and b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources/favicon_16x16.png differ diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/VSPackage.resx b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/VSPackage.resx new file mode 100644 index 00000000..ea75abb8 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/VSPackage.resx @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + CoatiPlugin + + + Coati plugin test + + \ No newline at end of file diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/coati.ico b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/coati.ico new file mode 100644 index 00000000..90ce2937 Binary files /dev/null and b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/coati.ico differ diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest new file mode 100644 index 00000000..7403e635 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest @@ -0,0 +1,19 @@ + + + + + CoatiPlugin + This package allows Coati to communicate with Visual Studio and vice versa. + coati.ico + + + + + + + + + + + + diff --git a/src/test/CxxParserTestSuite.h b/src/test/CxxParserTestSuite.h index 22a06c9b..3435dc19 100644 --- a/src/test/CxxParserTestSuite.h +++ b/src/test/CxxParserTestSuite.h @@ -1951,6 +1951,7 @@ public: "{\n" "};\n" ); + TS_ASSERT_EQUALS(client->classes.size(), 2); TS_ASSERT_EQUALS(client->classes[0], "A <1:1 <2:7 2:7> 4:1>"); TS_ASSERT_EQUALS(client->classes[1], "A <5:1 <6:7 6:7> 8:1>"); diff --git a/src/test/NetworkProtocolHelperTestSuite.h b/src/test/NetworkProtocolHelperTestSuite.h index b1bd66bf..eba00c9a 100644 --- a/src/test/NetworkProtocolHelperTestSuite.h +++ b/src/test/NetworkProtocolHelperTestSuite.h @@ -10,53 +10,59 @@ public: std::string type = "setActiveToken"; std::string divider = ">>"; std::string filePath = "C:\\Users\\Manuel\\imporant\\file\\location\\fileName.cpp"; + std::string endOfMessageToken = ""; int row = 1; int column = 2; // valid message std::stringstream message; - message << type << divider << filePath << divider << row << divider << column; + message << type << divider << filePath << divider << row << divider << column << endOfMessageToken; NetworkProtocolHelper::NetworkMessage networkMessage = NetworkProtocolHelper::parseMessage(message.str()); TS_ASSERT_EQUALS(networkMessage.fileLocation, filePath); TS_ASSERT_EQUALS(networkMessage.row, row); TS_ASSERT_EQUALS(networkMessage.column, column); + TS_ASSERT_EQUALS(networkMessage.valid, true); // invalid type message.str(""); - message << "foo" << divider << filePath << divider << row << divider << column; + message << "foo" << divider << filePath << divider << row << divider << column << endOfMessageToken; networkMessage = NetworkProtocolHelper::parseMessage(message.str()); TS_ASSERT_EQUALS(networkMessage.fileLocation, ""); TS_ASSERT_EQUALS(networkMessage.row, 0); TS_ASSERT_EQUALS(networkMessage.column, 0); + TS_ASSERT_EQUALS(networkMessage.valid, false); // missing divider message.str(""); - message << type << divider << filePath << row << divider << column; + message << type << divider << filePath << row << divider << column << endOfMessageToken; networkMessage = NetworkProtocolHelper::parseMessage(message.str()); TS_ASSERT_EQUALS(networkMessage.fileLocation, ""); TS_ASSERT_EQUALS(networkMessage.row, 0); TS_ASSERT_EQUALS(networkMessage.column, 0); + TS_ASSERT_EQUALS(networkMessage.valid, false); // invalid row message.str(""); - message << type << divider << filePath << divider << "potato" << divider << column; + message << type << divider << filePath << divider << "potato" << divider << column << endOfMessageToken; networkMessage = NetworkProtocolHelper::parseMessage(message.str()); TS_ASSERT_EQUALS(networkMessage.fileLocation, ""); TS_ASSERT_EQUALS(networkMessage.row, 0); TS_ASSERT_EQUALS(networkMessage.column, 0); + TS_ASSERT_EQUALS(networkMessage.valid, false); // invalid column message.str(""); - message << type << divider << filePath << divider << row << divider << "laz0r"; + message << type << divider << filePath << divider << row << divider << "laz0r" << endOfMessageToken; networkMessage = NetworkProtocolHelper::parseMessage(message.str()); TS_ASSERT_EQUALS(networkMessage.fileLocation, ""); TS_ASSERT_EQUALS(networkMessage.row, 0); TS_ASSERT_EQUALS(networkMessage.column, 0); + TS_ASSERT_EQUALS(networkMessage.valid, false); } }; \ No newline at end of file