diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a61678e --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +opcplusplus/.vs/opcplusplus/FileContentIndex/8c8a4015-5e45-4eaa-b6ff-3144697f792a.vsidx +opcplusplus/Debug/ +opcplusplus/Dox/ +opcplusplus/.vs/ +*.pdb +*.exe +opcplusplus/Generated/ +opcplusplus/Release/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..6428901 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# opcplusplus + +compiler for c++ headers with custom attributes/modifiers via language extension dialects: outputs generated src/h, xml definitions. + +default extension dialect generates mirrored reflection structure, fast dynamic casts, stack memory only, no heap allocations. + +supports reflection of stl data structures. + + +## dialect files + +[dialect definition files](opcplusplus/Distribution/opcpp/dialects/) + +[reflection dialect definition](opcplusplus/Distribution/opcpp/dialects/opc++dialect.doh) + + +## manual pdf + +[manual](opcplusplus/Documentation/Manual/Manual.pdf) + +## site + +[getting started site](http://opcpp.com) + +[reflection class reference](http://opcpp.com/documentation/docs/html) diff --git a/opcplusplus/Addins/ItemWizards/about.txt b/opcplusplus/Addins/ItemWizards/about.txt deleted file mode 100644 index 4118ab3..0000000 --- a/opcplusplus/Addins/ItemWizards/about.txt +++ /dev/null @@ -1,9 +0,0 @@ -Installer needs to locate visual studio (or query the user for it) - -opC++ Directory goes into: - -\Program Files\Microsoft Visual Studio 8\VC\vcprojectitems - -opCppItems.vsdir goes into: - -\Program Files\Microsoft Visual Studio 8\VC\VCNewItems \ No newline at end of file diff --git a/opcplusplus/Addins/ItemWizards/install.bat b/opcplusplus/Addins/ItemWizards/install.bat deleted file mode 100644 index 8ac3cfd..0000000 --- a/opcplusplus/Addins/ItemWizards/install.bat +++ /dev/null @@ -1,3 +0,0 @@ -xcopy /s /f /i "opC++" "c:\Program Files\Microsoft Visual Studio 8\VC\vcprojectitems\opC++" /Y -xcopy /s /f "opCppItems.vsdir" "c:\Program Files\Microsoft Visual Studio 8\VC\vcnewitems\opC++\opCppItems.vsdir" /Y -pause \ No newline at end of file diff --git a/opcplusplus/Addins/ItemWizards/opC++/NewopC++DialectFile.doh b/opcplusplus/Addins/ItemWizards/opC++/NewopC++DialectFile.doh deleted file mode 100644 index e69de29..0000000 diff --git a/opcplusplus/Addins/ItemWizards/opC++/NewopC++File.oh b/opcplusplus/Addins/ItemWizards/opC++/NewopC++File.oh deleted file mode 100644 index e69de29..0000000 diff --git a/opcplusplus/Addins/ItemWizards/opC++/code.vsdir b/opcplusplus/Addins/ItemWizards/opC++/code.vsdir deleted file mode 100644 index 54e9734..0000000 --- a/opcplusplus/Addins/ItemWizards/opC++/code.vsdir +++ /dev/null @@ -1,2 +0,0 @@ -NewopC++File.oh|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|opC++ Code File (.oh)|10|Creates An opC++ Code File|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|a|4096|.oh -NewopC++DialectFile.doh|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|opC++ Dialect File (.doh)|9|Creates An opC++ Dialect File|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|a|4096|.doh \ No newline at end of file diff --git a/opcplusplus/Addins/ItemWizards/opCppItems.vsdir b/opcplusplus/Addins/ItemWizards/opCppItems.vsdir deleted file mode 100644 index 8cc9da0..0000000 --- a/opcplusplus/Addins/ItemWizards/opCppItems.vsdir +++ /dev/null @@ -1,2 +0,0 @@ -..\..\vcprojectitems\opC++\NewopC++File.oh|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|opC++ Code File (.oh)|10|Creates An opC++ Code File|{1B027A40-8F43-11D0-8D11-00A0C91BC942}| |4096|.oh -..\..\vcprojectitems\opC++\NewopC++DialectFile.doh|{1B027A40-8F43-11D0-8D11-00A0C91BC942}|opC++ Dialect File (.doh)|9|Creates An opC++ Dialect File|{1B027A40-8F43-11D0-8D11-00A0C91BC942}| |4096|.doh \ No newline at end of file diff --git a/opcplusplus/Addins/opC++Wizard/install.bat b/opcplusplus/Addins/opC++Wizard/install.bat deleted file mode 100644 index 26368c9..0000000 --- a/opcplusplus/Addins/opC++Wizard/install.bat +++ /dev/null @@ -1,3 +0,0 @@ -xcopy /s /f "opC++Wizard\vcwizards" "c:\Program Files\Microsoft Visual Studio 8\VC\vcwizards" /Y /I -xcopy /s /f "opC++Wizard\vcprojects" "c:\Program Files\Microsoft Visual Studio 8\VC\vcprojects" /Y /I -pause \ No newline at end of file diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard.sln b/opcplusplus/Addins/opC++Wizard/opC++Wizard.sln deleted file mode 100644 index 12fe3e9..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opC++Wizard", "opC++Wizard\opC++Wizard.vcproj", "{9A8283C5-87E7-4C1E-B32A-F89B0CA94333}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9A8283C5-87E7-4C1E-B32A-F89B0CA94333}.Debug|Win32.ActiveCfg = Debug|Win32 - {9A8283C5-87E7-4C1E-B32A-F89B0CA94333}.Debug|Win32.Build.0 = Debug|Win32 - {9A8283C5-87E7-4C1E-B32A-F89B0CA94333}.Release|Win32.ActiveCfg = Release|Win32 - {9A8283C5-87E7-4C1E-B32A-F89B0CA94333}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/opC++Wizard.vcproj b/opcplusplus/Addins/opC++Wizard/opC++Wizard/opC++Wizard.vcproj deleted file mode 100644 index ce05d0f..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/opC++Wizard.vcproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/opC++Wizard.vsz b/opcplusplus/Addins/opC++Wizard/opC++Wizard/opC++Wizard.vsz deleted file mode 100644 index 3bd7ca9..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/opC++Wizard.vsz +++ /dev/null @@ -1,8 +0,0 @@ -VSWIZARD 7.0 -Wizard=VsWizard.VsWizardEngine.8.0 - -Param="WIZARD_NAME = opC++Wizard" -Param="RELATIVE_PATH = VCWizards\opC++" -Param="FALLBACK_LCID = 1033" -Param="WIZARD_UI = FALSE" -Param="SOURCE_FILTER = oh,doh,cpp,h" diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.ico b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.ico deleted file mode 100644 index 8d6ba9e..0000000 Binary files a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.ico and /dev/null differ diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.vsdir b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.vsdir deleted file mode 100644 index e7541b1..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.vsdir +++ /dev/null @@ -1 +0,0 @@ -opC++Wizard.vsz| |opC++ Project|1|Creates a basic new opC++ project| |6777| |opC++ Project diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.vsz b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.vsz deleted file mode 100644 index 7ef9faa..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcprojects/opC++/opC++Wizard.vsz +++ /dev/null @@ -1,8 +0,0 @@ -VSWIZARD 7.0 -Wizard=VsWizard.VsWizardEngine.8.0 - -Param="WIZARD_NAME = opC++Wizard" -Param="RELATIVE_PATH = VCWizards" -Param="FALLBACK_LCID = 1033" -Param="WIZARD_UI = FALSE" -Param="SOURCE_FILTER = oh,doh,cpp,h" diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Scripts/1033/default.js b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Scripts/1033/default.js deleted file mode 100644 index d02f3b8..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Scripts/1033/default.js +++ /dev/null @@ -1,235 +0,0 @@ - -function OnFinish(selProj, selObj) -{ - try - { - var strProjectPath = wizard.FindSymbol('PROJECT_PATH'); - var strProjectName = wizard.FindSymbol('PROJECT_NAME'); - - selProj = CreateCustomProject(strProjectName, strProjectPath); - AddConfig(selProj, strProjectName); - AddFilters(selProj); - - var InfFile = CreateCustomInfFile(); - AddFilesToCustomProj(selProj, strProjectName, strProjectPath, InfFile); - PchSettings(selProj); - InfFile.Delete(); - - selProj.Object.Save(); - } - catch(e) - { - if (e.description.length != 0) - SetErrorInfo(e); - return e.number - } -} - -function CreateCustomProject(strProjectName, strProjectPath) -{ - try - { - var strProjTemplatePath = wizard.FindSymbol('START_PATH'); - var strProjTemplate = ''; - strProjTemplate = strProjTemplatePath + '\\default.vcproj'; - - var Solution = dte.Solution; - var strSolutionName = ""; - if (wizard.FindSymbol("CLOSE_SOLUTION")) - { - Solution.Close(); - strSolutionName = wizard.FindSymbol("VS_SOLUTION_NAME"); - if (strSolutionName.length) - { - var strSolutionPath = strProjectPath.substr(0, strProjectPath.length - strProjectName.length); - Solution.Create(strSolutionPath, strSolutionName); - } - } - - var strProjectNameWithExt = ''; - strProjectNameWithExt = strProjectName + '.vcproj'; - - var oTarget = wizard.FindSymbol("TARGET"); - var prj; - if (wizard.FindSymbol("WIZARD_TYPE") == vsWizardAddSubProject) // vsWizardAddSubProject - { - var prjItem = oTarget.AddFromTemplate(strProjTemplate, strProjectNameWithExt); - prj = prjItem.SubProject; - } - else - { - prj = oTarget.AddFromTemplate(strProjTemplate, strProjectPath, strProjectNameWithExt); - } - return prj; - } - catch(e) - { - throw e; - } -} - -var SourceFilter; -var HeaderFilter; -var DialectFilter; -var opFilter; - -function AddFilters(proj) -{ - try - { - // Add the folders to your project - var strSrcFilter = wizard.FindSymbol('SOURCE_FILTER'); - var group = proj.Object.AddFilter('Source Files'); - group.Filter = strSrcFilter; - - SourceFilter = group; - SourceFilter.Filter = "cpp"; - - // Add the folders to your project - HeaderFilter = proj.Object.AddFilter('Header Files'); - HeaderFilter.Filter = "h"; - - DialectFilter = proj.Object.AddFilter('Dialect Files'); - DialectFilter.Filter = "doh"; - - opFilter = proj.Object.AddFilter('opC++ Files'); - opFilter.Filter = "oh"; - - } - catch(e) - { - throw e; - } -} - -function AddConfig(proj, strProjectName) -{ - try - { - var config = proj.Object.Configurations('Debug'); - config.IntermediateDirectory = '$(ConfigurationName)'; - config.OutputDirectory = '$(ConfigurationName)'; - - var CLTool = config.Tools('VCCLCompilerTool'); - // TODO: Add compiler settings - - var LinkTool = config.Tools('VCLinkerTool'); - // TODO: Add linker settings - - config = proj.Object.Configurations('Release'); - config.IntermediateDirectory = '$(ConfigurationName)'; - config.OutputDirectory = '$(ConfigurationName)'; - - var CLTool = config.Tools('VCCLCompilerTool'); - // TODO: Add compiler settings - - var LinkTool = config.Tools('VCLinkerTool'); - // TODO: Add linker settings - } - catch(e) - { - throw e; - } -} - -function PchSettings(proj) -{ - // TODO: specify pch settings -} - -function DelFile(fso, strWizTempFile) -{ - try - { - if (fso.FileExists(strWizTempFile)) - { - var tmpFile = fso.GetFile(strWizTempFile); - tmpFile.Delete(); - } - } - catch(e) - { - throw e; - } -} - -function CreateCustomInfFile() -{ - try - { - var fso, TemplatesFolder, TemplateFiles, strTemplate; - fso = new ActiveXObject('Scripting.FileSystemObject'); - - var TemporaryFolder = 2; - var tfolder = fso.GetSpecialFolder(TemporaryFolder); - var strTempFolder = tfolder.Drive + '\\' + tfolder.Name; - - var strWizTempFile = strTempFolder + "\\" + fso.GetTempName(); - - var strTemplatePath = wizard.FindSymbol('TEMPLATES_PATH'); - var strInfFile = strTemplatePath + '\\Templates.inf'; - wizard.RenderTemplate(strInfFile, strWizTempFile); - - var WizTempFile = fso.GetFile(strWizTempFile); - return WizTempFile; - } - catch(e) - { - throw e; - } -} - -function GetTargetName(strName, strProjectName) -{ - try - { - // TODO: set the name of the rendered file based on the template filename - var strTarget = strName; - - - - return strTarget; - } - catch(e) - { - throw e; - } -} - -function AddFilesToCustomProj(proj, strProjectName, strProjectPath, InfFile) -{ - try - { - var projItems = proj.ProjectItems - - var strTemplatePath = wizard.FindSymbol('TEMPLATES_PATH'); - - var strTpl = ''; - var strName = ''; - - var strTextStream = InfFile.OpenAsTextStream(1, -2); - while (!strTextStream.AtEndOfStream) - { - strTpl = strTextStream.ReadLine(); - if (strTpl != '') - { - strName = strTpl; - var strTarget = GetTargetName(strName, strProjectName); - var strTemplate = strTemplatePath + '\\' + strTpl; - var strFile = strProjectPath + '\\' + strTarget; - - var bCopyOnly = false; //"true" will only copy the file from strTemplate to strTarget without rendering/adding to the project - var strExt = strName.substr(strName.lastIndexOf(".")); - if(strExt==".bmp" || strExt==".ico" || strExt==".gif" || strExt==".rtf" || strExt==".css") - bCopyOnly = true; - wizard.RenderTemplate(strTemplate, strFile, bCopyOnly); - proj.Object.AddFile(strFile); - } - } - strTextStream.Close(); - } - catch(e) - { - throw e; - } -} diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/Templates.inf b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/Templates.inf deleted file mode 100644 index 954ce1a..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/Templates.inf +++ /dev/null @@ -1,5 +0,0 @@ -code.oh -dialect.doh -main.cpp -main.h - diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/code.oh b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/code.oh deleted file mode 100644 index 93d6449..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/code.oh +++ /dev/null @@ -1,2 +0,0 @@ -// opC++ code - diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/dialect.doh b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/dialect.doh deleted file mode 100644 index e3f953e..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/dialect.doh +++ /dev/null @@ -1,7 +0,0 @@ -// The Project Dialect - -// opinclude the default opC++ dialect: -opinclude "opc++dialect.doh" - -// Specify custom dialect settings below: - diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/main.cpp b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/main.cpp deleted file mode 100644 index 875dab0..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "main.h" - -// Include the generated source index. -// NOTE: Keep the project name and this path in sync. -#include "Generated/[!output PROJECT_NAME]/Generated.ocppindex" - -// Entry point into the application. -int main() -{ - - - return 0; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/main.h b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/main.h deleted file mode 100644 index 81ca5de..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/Templates/1033/main.h +++ /dev/null @@ -1,3 +0,0 @@ -// Include the generated opC++ header code. -// NOTE: Keep the project name and this path in sync. -#include "Generated/[!output PROJECT_NAME]/Generated.oohindex" \ No newline at end of file diff --git a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/default.vcproj b/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/default.vcproj deleted file mode 100644 index 7a7fdef..0000000 --- a/opcplusplus/Addins/opC++Wizard/opC++Wizard/vcwizards/opC++Wizard/default.vcproj +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/opcplusplus/Addins/opCpp2005/Copy Debug Addin.bat b/opcplusplus/Addins/opCpp2005/Copy Debug Addin.bat deleted file mode 100644 index 344b4e8..0000000 --- a/opcplusplus/Addins/opCpp2005/Copy Debug Addin.bat +++ /dev/null @@ -1,2 +0,0 @@ -copy "opCpp2005\bin\Debug\opCpp2005.dll" "%PROGRAMFILES%\opC++\bin\win32\release\opCpp2005.dll" /Y -pause \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005.sln b/opcplusplus/Addins/opCpp2005/opCpp2005.sln deleted file mode 100644 index 21ac6c7..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "opCpp2005", "opCpp2005\opCpp2005.csproj", "{B549031E-B7B8-40FE-BC19-2765BD2A8272}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B549031E-B7B8-40FE-BC19-2765BD2A8272}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B549031E-B7B8-40FE-BC19-2765BD2A8272}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B549031E-B7B8-40FE-BC19-2765BD2A8272}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B549031E-B7B8-40FE-BC19-2765BD2A8272}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/CommandIds.h b/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/CommandIds.h deleted file mode 100644 index 38a0eb0..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/CommandIds.h +++ /dev/null @@ -1,70 +0,0 @@ -// CommandIds.h -// Command IDs used in defining command bars -// - -// do not use #pragma once - used by ctc compiler -#ifndef __COMMANDIDS_H_ -#define __COMMANDIDS_H_ - -/////////////////////////////////////////////////////////////////////////////// -// Menu IDs - -#define opCppMenu 0x1000 -#define opCppToolbar 0x1001 -#define opCppAdditionalMenu 0x1002 -#define opCppArgumentMenu 0x1003 - -/////////////////////////////////////////////////////////////////////////////// -// Menu Group IDs - -//#define MyMenuGroup 0x1020 -#define opCppCompilerGroup 0x1030 -#define opCppSettingsGroup 0x1031 -#define opCppGlobalGroup 0x1032 -#define opCppToolbarGroup 0x1033 -#define opCppCodeContextGroup 0x1034 -#define opCppProjectContextGroup 0x1035 -#define opCppGotoGroup 0x1036 -#define opCppAdditionalGroup 0x1037 - -#define opCppCodeToolsGroup 0x1038 -#define opCppArgumentGroup 0x1039 - -#define VSTopLevelGroup 0x1040 - -/////////////////////////////////////////////////////////////////////////////// -// Command IDs - -// Menu and Toolbar Commands -#define cmdopProjectSettings 0x100 -#define cmdopGlobalSettings 0x101 -#define cmdopBuildSolution 0x102 -#define cmdopBuildProject 0x103 -#define cmdopCleanSolution 0x104 -#define cmdopFeatureManager 0x105 - -// Context Menu Commands -#define cmdGotoOriginal 0x115 -#define cmdGotoDefinition 0x116 //NOTE: doesnt know enough to work yet. -#define cmdGotoNote 0x117 -#define cmdOpenInclude 0x118 -#define cmdGotoOOH 0x119 -#define cmdGotoOCPP 0x120 - -#define cmdVisualize 0x121 -#define cmdArgumentLabel 0x122 - -#define cmdStop 0x123 - - -#define cmdArgumentStart 0x300 - - -#define cmdModifiersStart 0x400 - - -/////////////////////////////////////////////////////////////////////////////// -// Bitmap IDs - - -#endif // __COMMANDIDS_H_ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/Guids.h b/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/Guids.h deleted file mode 100644 index f076f09..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/Guids.h +++ /dev/null @@ -1,137 +0,0 @@ -// guids.h: definitions of GUIDs/IIDs/CLSIDs used in this VsPackage - -/* -Do not use #pragma once, as this file needs to be included twice. Once to declare the externs -for the GUIDs, and again right after including initguid.h to actually define the GUIDs. -*/ - - - -// package guid -// { 42231b8e-2a34-43c0-8504-96b74d38af4a } -#define guidopCpp2005Pkg { 0x42231B8E, 0x2A34, 0x43C0, { 0x85, 0x4, 0x96, 0xB7, 0x4D, 0x38, 0xAF, 0x4A } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_opCpp2005, -0x42231B8E, 0x2A34, 0x43C0, 0x85, 0x4, 0x96, 0xB7, 0x4D, 0x38, 0xAF, 0x4A ); -#endif - -// Command set guid for our commands (used with IOleCommandTarget) -// { 55b4a236-8c21-464c-bdf4-e6817502f011 } -#define guidopCpp2005CmdSet { 0x55B4A236, 0x8C21, 0x464C, { 0xBD, 0xF4, 0xE6, 0x81, 0x75, 0x2, 0xF0, 0x11 } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_opCpp2005CmdSet, -0x55B4A236, 0x8C21, 0x464C, 0xBD, 0xF4, 0xE6, 0x81, 0x75, 0x2, 0xF0, 0x11 ); -#endif - -// GUID for bitmap ProjectSettings -#define guidProjectSettings { 0xced7a358, 0x19c2, 0x4677, { 0xbd, 0x6c, 0xf3, 0xc5, 0xf0, 0xf1, 0x8, 0x68 } } -// {CED7A358-19C2-4677-BD6C-F3C5F0F10868} -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_ProjectSettings, - 0xced7a358, 0x19c2, 0x4677, 0xbd, 0x6c, 0xf3, 0xc5, 0xf0, 0xf1, 0x8, 0x68); -#endif - -// GUID for bitmap SolutionBuild -// {FAE8A118-3838-4f94-9EDA-06461DBA55E1} -#define guidSolutionBuild { 0xfae8a118, 0x3838, 0x4f94, { 0x9e, 0xda, 0x6, 0x46, 0x1d, 0xba, 0x55, 0xe1 } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_SolutionBuild, - 0xfae8a118, 0x3838, 0x4f94, 0x9e, 0xda, 0x6, 0x46, 0x1d, 0xba, 0x55, 0xe1); -#endif - -// GUID for bitmap ProjectBuild -// {660862C1-AD0F-487a-BD73-E0012459A3C6} -#define guidProjectBuild { 0x660862c1, 0xad0f, 0x487a, { 0xbd, 0x73, 0xe0, 0x1, 0x24, 0x59, 0xa3, 0xc6 } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_ProjectBuild, - 0x660862c1, 0xad0f, 0x487a, 0xbd, 0x73, 0xe0, 0x1, 0x24, 0x59, 0xa3, 0xc6); -#endif - -// GUID for bitmap CleanSolution -// {E5164D49-EE9B-4fe4-ACD6-8894992F771D} -#define guidCleanSolution { 0xe5164d49, 0xee9b, 0x4fe4, { 0xac, 0xd6, 0x88, 0x94, 0x99, 0x2f, 0x77, 0x1d } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_CleanSolution, - 0xe5164d49, 0xee9b, 0x4fe4, 0xac, 0xd6, 0x88, 0x94, 0x99, 0x2f, 0x77, 0x1d); -#endif - -// GUID for bitmap OOH -// {CBB65EB3-2A46-4693-963E-9DC9D2CE1BF3} -#define guidOOH { 0xcbb65eb3, 0x2a46, 0x4693, { 0x96, 0x3e, 0x9d, 0xc9, 0xd2, 0xce, 0x1b, 0xf3 } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_OOH, - 0xcbb65eb3, 0x2a46, 0x4693, 0x96, 0x3e, 0x9d, 0xc9, 0xd2, 0xce, 0x1b, 0xf3); -#endif - -// GUID for bitmap OCPP -// {5084C0B9-2903-43ec-A96D-6F9B27893D9F} -#define guidOCPP { 0x5084c0b9, 0x2903, 0x43ec, { 0xa9, 0x6d, 0x6f, 0x9b, 0x27, 0x89, 0x3d, 0x9f } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_OCPP, - 0x5084c0b9, 0x2903, 0x43ec, 0xa9, 0x6d, 0x6f, 0x9b, 0x27, 0x89, 0x3d, 0x9f); -#endif - -// GUID for bitmap DOH -// {D3F97031-4214-4100-B370-D035C9842B34} -#define guidDOH { 0xd3f97031, 0x4214, 0x4100, { 0xb3, 0x70, 0xd0, 0x35, 0xc9, 0x84, 0x2b, 0x34 } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_DOH, - 0xd3f97031, 0x4214, 0x4100, 0xb3, 0x70, 0xd0, 0x35, 0xc9, 0x84, 0x2b, 0x34); -#endif - -// GUID for bitmap OH -// {9825A297-F377-487d-8C4B-A6A23119E26C} -#define guidOH { 0x9825a297, 0xf377, 0x487d, { 0x8c, 0x4b, 0xa6, 0xa2, 0x31, 0x19, 0xe2, 0x6c } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_OH, - 0x9825a297, 0xf377, 0x487d, 0x8c, 0x4b, 0xa6, 0xa2, 0x31, 0x19, 0xe2, 0x6c); -#endif - -// GUID for bitmap feature -// {93DB1D5A-B250-45c1-82FF-67FE6E43C28D} -#define guidFeatureManager { 0x93db1d5a, 0xb250, 0x45c1, { 0x82, 0xff, 0x67, 0xfe, 0x6e, 0x43, 0xc2, 0x8d } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_FeatureManager, - 0x93db1d5a, 0xb250, 0x45c1, 0x82, 0xff, 0x67, 0xfe, 0x6e, 0x43, 0xc2, 0x8d); -#endif - -// GUID for opInclude -#define guidopInclude { 0x4b5d2b71, 0xbb2e, 0x4150, { 0x94, 0x1e, 0xa2, 0xb1, 0xf5, 0xad, 0x82, 0x21 } } -#ifdef DEFINE_GUID -// {4B5D2B71-BB2E-4150-941E-A2B1F5AD8221} -DEFINE_GUID(CLSID_opInclude, - 0x4b5d2b71, 0xbb2e, 0x4150, 0x94, 0x1e, 0xa2, 0xb1, 0xf5, 0xad, 0x82, 0x21); -#endif - -// GUID for ArgumentIcon -#define guidArgument { 0xe606093c, 0x9a89, 0x4942, { 0x95, 0xcf, 0x2d, 0x50, 0xff, 0x3d, 0xbe, 0xe1 } } -#ifdef DEFINE_GUID -// {E606093C-9A89-4942-95CF-2D50FF3DBEE1} -DEFINE_GUID(CLSID_Argument, - 0xe606093c, 0x9a89, 0x4942, 0x95, 0xcf, 0x2d, 0x50, 0xff, 0x3d, 0xbe, 0xe1); -#endif - -// GUID for VisualizeIcon -#define guidVisualize { 0x6ce40167, 0x98f6, 0x4fdd, { 0xbc, 0x87, 0xcc, 0x88, 0xeb, 0xfc, 0xf4, 0x9c } } -#ifdef DEFINE_GUID -// {6CE40167-98F6-4fdd-BC87-CC88EBFCF49C} -DEFINE_GUID(CLSID_Visualize, - 0x6ce40167, 0x98f6, 0x4fdd, 0xbc, 0x87, 0xcc, 0x88, 0xeb, 0xfc, 0xf4, 0x9c); -#endif - -// GUID for StopIcon -#define guidStop { 0xf00c355f, 0xf967, 0x48b8, { 0xa0, 0x76, 0xd, 0x62, 0x8c, 0x8f, 0x68, 0xf9 } } -#ifdef DEFINE_GUID -// {F00C355F-F967-48b8-A076-0D628C8F68F9} -DEFINE_GUID(CLSID_Stop, - 0xf00c355f, 0xf967, 0x48b8, 0xa0, 0x76, 0xd, 0x62, 0x8c, 0x8f, 0x68, 0xf9); -#endif - - - -// GUID for standard VS commands -#define guidStandardCommandSet97 { 0x5efc7975, 0x14bc, 0x11cf, { 0x9b, 0x2b, 0x00, 0xaa, 0x00, 0x57, 0x38, 0x19 } } -#ifdef DEFINE_GUID -DEFINE_GUID(CLSID_StandardCommandSet97, - 0x5efc7975, 0x14bc, 0x11cf, 0x9b, 0x2b, 0x00, 0xaa, 0x00, 0x57, 0x38, 0x19); -#endif \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/Resource.h b/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/Resource.h deleted file mode 100644 index 8e54691..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/Resource.h +++ /dev/null @@ -1,25 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by opCpp2005UI.rc - - -#define IDB_MENU_IMAGES 300 -#define IDB_FRAME_IMAGES 301 -#define IDI_PACKAGE_ICON 400 -#define IDB_OPCPP_ICON 257 -#define IDB_SOLUTIONBUILD 3 -#define IDB_PROJECTBUILD 2 -#define IDB_CLEANSOLUTION 1 -#define IDB_PROJECTSETTINGS 4 -#define IDB_OCPP 301 -#define IDB_OOH 302 -#define IDB_DOH 303 -#define IDB_OH 304 -#define IDB_FEATUREMANAGER 305 -#define IDB_OPINCLUDE 306 -#define IDB_ARGUMENT 307 -#define IDB_VISUALIZE 308 -#define IDB_STOP 309 - - - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/opCpp2005.ctc b/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/opCpp2005.ctc deleted file mode 100644 index 62acd3b..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/CtcComponents/opCpp2005.ctc +++ /dev/null @@ -1,297 +0,0 @@ -// -// This is the file that defines the actual layout and type of the commands. -// It is divided in different sections (e.g. command definition, command -// placement, ...), with each defining a specific set of properties. -// See the comment before each section for more details about how to -// use it. - -// The CTC compiler (the tool that translates this file into the binary -// format that VisualStudio will consume) has the ability to run a preprocessor -// on the ctc file; this preprocessor is (usually) the C++ preprocessor, so -// it is possible to define includes and macros with the same syntax used -// in C++ files. Using this ability of the compiler here, we include some files -// defining some of the constants that we will use inside the file. - -#include "stdidcmd.h" // This is the file that defines the IDs for all the - // commands exposed by VisualStudio. - -#include "vsshlids.h" // This header contains the command ids for the menus - // provided by the shell. - -#include "msobtnid.h" // Definition of some CTC specific constants. In this sample - // we use it for the IDs inside the guidOfficeIcon group. - -#include "CommandIds.h" // Definition of the IDs of the commands and CTC elements - // specific for this sample. - -#include "Resource.h" // Definition of the IDs of the resources used by this package; - // Here it is used to include the bitmap with the images used for - // the commands. - -#include "Guids.h" // This is the file with the definition of the Guid - // specific for this sample. - -// shorthand macros for a more compact and manageable table -#define OI_NOID guidOfficeIcon:msotcidNoIcon -#define DIS_DEF DEFAULTDISABLED | DEFAULTINVISIBLE | DYNAMICVISIBILITY -#define VIS_DEF COMMANDWELLONLY - - -// The CMDS_SECTION section is where we the commands, menus and menu groups are defined. -// This section uses a Guid to identify the package that provides the command defined -// inside it. -CMDS_SECTION guidopCpp2005Pkg - - // Inside this section we have different sub-sections: one for the menus, another - // for the menu groups, one for the buttons (the actual commands), one for the combos - // and the last one for the bitmaps used. Each element is identified by a command id that - // is a unique pair of guid and numeric identifier; the guid part of the identifier is usually - // called "command set" and is used to group different command inside a logically related - // group; your package should define its own command set in order to avoid collisions - // with command ids defined by other packages. - - // This is the sub-section that defines the menus and toolbars. - MENUS_BEGIN - // To define an element in this group you need an ID, a parent group, a display priority, - // a menu type, a name and a default text. - - // NewMenu Relative to Group Priority Type Name Text - guidopCpp2005CmdSet:opCppMenu, guidopCpp2005CmdSet:VSTopLevelGroup, 0x0000, , "opC++Menu", "opC++"; - - // Additional Options - guidopCpp2005CmdSet:opCppAdditionalMenu, guidopCpp2005CmdSet:opCppGotoGroup, 0x1000, MenuController , "opCppAdditional", "opC++ Additional"; - - //NOTE: adding a toolbar... I think I have to add a menu here.. - guidopCpp2005CmdSet:opCppToolbar, guidopCpp2005CmdSet:0 , 0x0000, Toolbar, "opC++CompilerToolbar", "opC++ Compiler Toolbar"; - - // adding a submenu - guidopCpp2005CmdSet:opCppArgumentMenu, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0000, DynamicVisibility|DefaultInvisible ,"ArgumentsMenu", "Add Note Argument"; - - MENUS_END - - // In this section you can define new menu groups. A menu group is a container for - // other menus or buttons (commands); from a visual point of view you can see the - // group as the part of a menu contained between two lines. The parent of a group - // must be a menu. - NEWGROUPS_BEGIN - // NewGroup Parent Group Priority - -// Any command added to this group is placed in the top level menu. -guidopCpp2005CmdSet:opCppCompilerGroup, // Group ID - guidopCpp2005CmdSet:opCppMenu // Menu ID - 0x0000; // Priority - -// Any menu added to this group is placed in the top level menu bar. -guidopCpp2005CmdSet:VSTopLevelGroup, // Group ID - guidSHLMainMenu:IDM_VS_TOOL_MAINMENU,// Menu ID - 0xE000; // Priority - -// Any command added to this group is placed in the top level menu. -guidopCpp2005CmdSet:opCppSettingsGroup, // Group ID - guidopCpp2005CmdSet:opCppMenu // Menu ID - 0x0100; // Priority - -// Any command added to this group is placed in the top level menu. -guidopCpp2005CmdSet:opCppGlobalGroup, // Group ID - guidopCpp2005CmdSet:opCppMenu // Menu ID - 0x0110; // Priority - -// Any command added to this group is placed in the toolbar compile group. -guidopCpp2005CmdSet:opCppAdditionalGroup, // Group ID - guidopCpp2005CmdSet:opCppAdditionalMenu // Menu ID - 0x0100; // Priority - - -// Any command added to this group is placed in the toolbar compile group. -guidopCpp2005CmdSet:opCppToolbarGroup, // Group ID - guidopCpp2005CmdSet:opCppToolbar // Menu ID - 0x0100; // Priority - -guidopCpp2005CmdSet:opCppGotoGroup, // Group ID - guidopCpp2005CmdSet:opCppToolbar// Menu ID - 0x0200; // Priority - - -// commands for context menu -guidopCpp2005CmdSet:opCppProjectContextGroup, - guidSHLMainMenu:IDM_VS_CTXT_PROJNODE, - 0x1000; - -guidopCpp2005CmdSet:opCppCodeContextGroup, - guidSHLMainMenu:IDM_VS_CTXT_CODEWIN, - 0x1000; - - -//arguments group -guidopCpp2005CmdSet:opCppArgumentGroup, -guidopCpp2005CmdSet:opCppArgumentMenu, - 0x0000; - - -//arguments group -guidopCpp2005CmdSet:opCppCodeToolsGroup, - guidSHLMainMenu:IDM_VS_CTXT_CODEWIN, - 0x0000; - - NEWGROUPS_END - - // Button section. - // This section defines the elements the user can interact with, like a menu command or a button - // or combo box in a toolbar. - BUTTONS_BEGIN - // To define a menu group you have to specify its ID, the parent menu and its display priority. - // Some commands are not defined as shared, so they use our package CLSID - // as the command set GUID. Also, by specifying blank for the FLAGS, the command is - // default visible and enabled. Other valid values for FLAGS are the following: - // DEFAULTDISABLED, DEFAULTINVISIBLE, DYNAMICVISIBILITY, TEXTCHANGES - // These values for FLAGS can be or'ed together, e.g. "DEFAULTINVISIBLE | DYNAMICVISIBILITY" - // If you do not want an image next to your command, set the image to "guidOfficeIcon:msotcidNoIcon" - - // Command Parent Group Priority Image Type Visibility - -// -// Menu Buttons -// - -//Build Solution -guidopCpp2005CmdSet:cmdopBuildSolution, guidopCpp2005CmdSet:opCppCompilerGroup, 0x0000, guidSolutionBuild:1, BUTTON, DefaultDisabled , "Build Solution"; - -//Build Project -guidopCpp2005CmdSet:cmdopBuildProject, guidopCpp2005CmdSet:opCppCompilerGroup, 0x0100, guidProjectBuild:1, BUTTON, DefaultDisabled , "Build Project"; - -//Clean Solution -guidopCpp2005CmdSet:cmdopCleanSolution, guidopCpp2005CmdSet:opCppCompilerGroup, 0x0200, guidCleanSolution:1, BUTTON, DefaultDisabled , "Clean Solution"; - -//Clean Solution -guidopCpp2005CmdSet:cmdStop, guidopCpp2005CmdSet:opCppCompilerGroup, 0x0400, guidStop:1, BUTTON, DefaultDisabled , "Stop Build"; - -//Global Settings Dialog -guidopCpp2005CmdSet:cmdopProjectSettings, guidopCpp2005CmdSet:opCppSettingsGroup, 0x0010, guidProjectSettings:1, BUTTON, DefaultDisabled , "Project Settings"; - -//Project Settings Dialog -guidopCpp2005CmdSet:cmdopGlobalSettings, guidopCpp2005CmdSet:opCppGlobalGroup, 0x0100, guidopCpp2005CmdSet:1, BUTTON, , "Global Settings"; - -//Feature Manager Dialog -guidopCpp2005CmdSet:cmdopFeatureManager, guidopCpp2005CmdSet:opCppSettingsGroup, 0x0020, guidFeatureManager:1, BUTTON, DefaultDisabled , "Project Feature Manager (coming soon)"; - -//Goto Original -guidopCpp2005CmdSet:cmdGotoOriginal, guidopCpp2005CmdSet:opCppGotoGroup, 0x0003, guidOH:1, BUTTON, DEFAULTINVISIBLE|DynamicVisibility, "Go To Original Code"; - -//Goto Note -guidopCpp2005CmdSet:cmdGotoNote, guidopCpp2005CmdSet:opCppGotoGroup, 0x0003, guidDOH:1, BUTTON, DEFAULTINVISIBLE|DynamicVisibility, "Go To Dialect Note"; - -//Open opInclude -guidopCpp2005CmdSet:cmdOpenInclude, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0000, guidopInclude:1, BUTTON, DEFAULTINVISIBLE|DynamicVisibility|TextChanges, "Open opInclude"; - -//Goto OOH File -guidopCpp2005CmdSet:cmdGotoOOH, guidopCpp2005CmdSet:opCppAdditionalGroup, 0x0000, guidOOH:1, BUTTON, DEFAULTINVISIBLE|DefaultDisabled|DynamicVisibility|TextChanges, "Goto Generated Header"; - -//Goto OCPP File -guidopCpp2005CmdSet:cmdGotoOCPP, guidopCpp2005CmdSet:opCppAdditionalGroup, 0x0000, guidOCPP:1, BUTTON, DEFAULTINVISIBLE|DefaultDisabled|DynamicVisibility|TextChanges, "Goto Generated Source"; - -//Open Visualize -guidopCpp2005CmdSet:cmdVisualize, guidopCpp2005CmdSet:opCppAdditionalGroup, 0x0000, guidVisualize:1, BUTTON, DefaultInvisible|DefaultDisabled|DynamicVisibility|TextChanges, "Visualize File"; - -//Argument List -guidopCpp2005CmdSet:cmdArgumentStart, guidopCpp2005CmdSet:opCppArgumentGroup, 0x0001, guidArgument:1, BUTTON, TextChanges|DynamicItemStart|DynamicVisibility , "Available Arguments"; - - - BUTTONS_END - - // The bitmaps section is used to define the bitmaps that are used for the commands. - BITMAPS_BEGIN - // The bitmap id is defined in a way that is a little bit different from the others: - // the declaration starts with a guid for the bitmap strip, then there is the resource id of the - // bitmap strip containing the bitmaps and then there are the numeric ids of the elements used - // inside a button definition. An important aspect of this declaration is that the element id - // must be the actual index (1-based) of the bitmap inside the bitmap strip. - - // Bitmap Bitmap Index, Bitmap Index, ... - guidopCpp2005CmdSet:IDB_OPCPP_ICON, 1; - guidSolutionBuild:IDB_SOLUTIONBUILD, 1; - guidProjectBuild:IDB_PROJECTBUILD, 1; - guidCleanSolution:IDB_CLEANSOLUTION, 1; - guidProjectSettings:IDB_PROJECTSETTINGS, 1; - guidOOH:IDB_OOH, 1; - guidOCPP:IDB_OCPP, 1; - guidOH:IDB_OH, 1; - guidDOH:IDB_DOH, 1; - guidFeatureManager:IDB_FEATUREMANAGER, 1; - guidopInclude:IDB_OPINCLUDE, 1; - guidArgument:IDB_ARGUMENT, 1; - guidVisualize:IDB_VISUALIZE, 1; - guidStop:IDB_STOP, 1; - - BITMAPS_END - -CMDS_END - -// Within this section you can specify the set of commands defined somewhere else that your -// packages uses; for instance if your package uses the standard ‘Copy’ command, you don’t -// need to define it, because it is defined by the shell, but you have to use this section -// of the CTC file to notify the shell that your package uses it using this section. - -CMDUSED_SECTION - - -CMDUSED_END - -// Inside this section, we have the ability to place menu groups inside some other menu or -// menu / commands inside other groups. -// For instance, it is possible to place one of VisualStudio's menus or commands inside one of our -// groups or one of our groups inside a menu defined somewhere else. -CMDPLACEMENT_SECTION - - // Command Group Priority - - //Add Buttons to the command bar - guidopCpp2005CmdSet:cmdopBuildSolution, guidopCpp2005CmdSet:opCppToolbarGroup, 0x0000; - guidopCpp2005CmdSet:cmdopBuildProject, guidopCpp2005CmdSet:opCppToolbarGroup, 0x0001; - guidopCpp2005CmdSet:cmdopCleanSolution, guidopCpp2005CmdSet:opCppToolbarGroup, 0x0002; - guidopCpp2005CmdSet:cmdStop , guidopCpp2005CmdSet:opCppToolbarGroup, 0x0003; - guidopCpp2005CmdSet:cmdopProjectSettings, guidopCpp2005CmdSet:opCppToolbarGroup, 0x0004; - - //TODO: the note should show 'doh' icon, the original should show 'oh' icon - guidopCpp2005CmdSet:cmdGotoOriginal, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0003; - guidopCpp2005CmdSet:cmdGotoNote, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0004; - guidopCpp2005CmdSet:cmdGotoOOH, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0003; - guidopCpp2005CmdSet:cmdGotoOCPP, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0004; - guidopCpp2005CmdSet:cmdVisualize, guidopCpp2005CmdSet:opCppCodeToolsGroup, 0x0010; - - //Add Buttons to context menus - guidopCpp2005CmdSet:cmdopProjectSettings, guidopCpp2005CmdSet:opCppProjectContextGroup, 0x1000; - -//guidopCpp2005CmdSet:cmdopProjectSettings, guidSHLMainMenu:IDG_VS_CODEWIN_NAVIGATETOLOCATION, 0x1000; -CMDPLACEMENT_END - - -VISIBILITY_SECTION - // Command GUID when visible - - - -VISIBILITY_END - -// This section is where you can associate a command with a keyboard shortcut; this association is -// valid within a specific UI context, that is when the shell is inside a specific mode, e.g. during -// debugging, editing a file or when the user is using a specific designer. -KEYBINDINGS_SECTION - // To define a binding, you have to specify the sequence of keys to press to activate the command - // (keystate); the syntax to use is [:] where the special keys section can be - // empty. The accepted special keys and their representation are: - // Alt - A - // Control - C - // Shift - S - // Windows Key - W - // For example, if you want to define a binding for C the definition will be 'C':C; if the - // binding is C, then the keybinding is 'C':AC. - // - // Notice that Visual Studio has a lot of components and commands, so it can be difficult to find a - // key binding not used by somebody else; if the key bindings are conflicting only one will be used - // and one problem is that the shell will not inform the user that a conflict was found. The only - // way to detect the problem is to start Visual Studio under debugger, try to execute any command - // and look if there is a message in the output window about a duplicated accelerator found. - - // Command when available emulation keystate - -KEYBINDINGS_END diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Guids.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Guids.cs deleted file mode 100644 index b3ba9c7..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Guids.cs +++ /dev/null @@ -1,22 +0,0 @@ -// Guids.cs -// MUST match guids.h -using System; - -namespace opGamesLLC.opCpp2005 -{ - //NOTE: generate GUIDs using uuidgen.exe from the visual studio commandline. - - static class GuidList - { - public const string guidopCpp2005PkgString = "42231b8e-2a34-43c0-8504-96b74d38af4a"; - public const string guidopCpp2005CmdSetString = "55b4a236-8c21-464c-bdf4-e6817502f011"; - - public static readonly Guid guidopCpp2005Pkg = new Guid(guidopCpp2005PkgString); - public static readonly Guid guidopCpp2005CmdSet = new Guid(guidopCpp2005CmdSetString); - - public const string guidVisualStudioCommands = "5efc7975-14bc-11cf-9b2b-00aa00573819"; - - // Guid for storing trial information in the registry. - public static readonly string TrialVersionGuid = "8CC631DB-C479-45e4-8E7A-EDD28A836DE4"; - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Key.snk b/opcplusplus/Addins/opCpp2005/opCpp2005/Key.snk deleted file mode 100644 index 8499d6d..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Key.snk and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Lib/PropertyBag.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Lib/PropertyBag.cs deleted file mode 100644 index 88e190d..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Lib/PropertyBag.cs +++ /dev/null @@ -1,1046 +0,0 @@ -/******************************************************************** - * - * PropertyBag.cs - * -------------- - * Copyright (C) 2002 Tony Allowatt - * Last Update: 12/14/2002 - * - * THE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS", WITHOUT WARRANTY - * OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL THE AUTHOR BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF THIS - * SOFTWARE. - * - * Public types defined in this file: - * ---------------------------------- - * namespace Flobbster.Windows.Forms - * class PropertySpec - * class PropertySpecEventArgs - * delegate PropertySpecEventHandler - * class PropertyBag - * class PropertyBag.PropertySpecCollection - * class PropertyTable - * - ********************************************************************/ - -using System; -using System.Collections; -using System.ComponentModel; -using System.Drawing.Design; - -namespace Flobbster.Windows.Forms -{ - /// - /// Represents a single property in a PropertySpec. - /// - public class PropertySpec - { - private Attribute[] attributes; - private string category; - private object defaultValue; - private string description; - private string editor; - private string name; - private string type; - private string typeConverter; - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - public PropertySpec(string name, string type) : this(name, type, null, null, null) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - public PropertySpec(string name, Type type) : - this(name, type.AssemblyQualifiedName, null, null, null) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - public PropertySpec(string name, string type, string category) : this(name, type, category, null, null) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// - public PropertySpec(string name, Type type, string category) : - this(name, type.AssemblyQualifiedName, category, null, null) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - public PropertySpec(string name, string type, string category, string description) : - this(name, type, category, description, null) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - public PropertySpec(string name, Type type, string category, string description) : - this(name, type.AssemblyQualifiedName, category, description, null) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - public PropertySpec(string name, string type, string category, string description, object defaultValue) - { - this.name = name; - this.type = type; - this.category = category; - this.description = description; - this.defaultValue = defaultValue; - this.attributes = null; - } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - public PropertySpec(string name, Type type, string category, string description, object defaultValue) : - this(name, type.AssemblyQualifiedName, category, description, defaultValue) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The fully qualified name of the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The fully qualified name of the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, string type, string category, string description, object defaultValue, - string editor, string typeConverter) : this(name, type, category, description, defaultValue) - { - this.editor = editor; - this.typeConverter = typeConverter; - } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The fully qualified name of the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The fully qualified name of the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, Type type, string category, string description, object defaultValue, - string editor, string typeConverter) : - this(name, type.AssemblyQualifiedName, category, description, defaultValue, editor, typeConverter) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The Type that represents the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The fully qualified name of the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, string type, string category, string description, object defaultValue, - Type editor, string typeConverter) : - this(name, type, category, description, defaultValue, editor.AssemblyQualifiedName, - typeConverter) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The Type that represents the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The fully qualified name of the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, Type type, string category, string description, object defaultValue, - Type editor, string typeConverter) : - this(name, type.AssemblyQualifiedName, category, description, defaultValue, - editor.AssemblyQualifiedName, typeConverter) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The fully qualified name of the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The Type that represents the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, string type, string category, string description, object defaultValue, - string editor, Type typeConverter) : - this(name, type, category, description, defaultValue, editor, typeConverter.AssemblyQualifiedName) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The fully qualified name of the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The Type that represents the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, Type type, string category, string description, object defaultValue, - string editor, Type typeConverter) : - this(name, type.AssemblyQualifiedName, category, description, defaultValue, editor, - typeConverter.AssemblyQualifiedName) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// The fully qualified name of the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The Type that represents the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The Type that represents the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, string type, string category, string description, object defaultValue, - Type editor, Type typeConverter) : - this(name, type, category, description, defaultValue, editor.AssemblyQualifiedName, - typeConverter.AssemblyQualifiedName) { } - - /// - /// Initializes a new instance of the PropertySpec class. - /// - /// The name of the property displayed in the property grid. - /// A Type that represents the type of the property. - /// The category under which the property is displayed in the - /// property grid. - /// A string that is displayed in the help area of the - /// property grid. - /// The default value of the property, or null if there is - /// no default value. - /// The Type that represents the type of the editor for this - /// property. This type must derive from UITypeEditor. - /// The Type that represents the type of the type - /// converter for this property. This type must derive from TypeConverter. - public PropertySpec(string name, Type type, string category, string description, object defaultValue, - Type editor, Type typeConverter) : - this(name, type.AssemblyQualifiedName, category, description, defaultValue, - editor.AssemblyQualifiedName, typeConverter.AssemblyQualifiedName) { } - - /// - /// Gets or sets a collection of additional Attributes for this property. This can - /// be used to specify attributes beyond those supported intrinsically by the - /// PropertySpec class, such as ReadOnly and Browsable. - /// - public Attribute[] Attributes - { - get { return attributes; } - set { attributes = value; } - } - - /// - /// Gets or sets the category name of this property. - /// - public string Category - { - get { return category; } - set { category = value; } - } - - /// - /// Gets or sets the fully qualified name of the type converter - /// type for this property. - /// - public string ConverterTypeName - { - get { return typeConverter; } - set { typeConverter = value; } - } - - /// - /// Gets or sets the default value of this property. - /// - public object DefaultValue - { - get { return defaultValue; } - set { defaultValue = value; } - } - - /// - /// Gets or sets the help text description of this property. - /// - public string Description - { - get { return description; } - set { description = value; } - } - - /// - /// Gets or sets the fully qualified name of the editor type for - /// this property. - /// - public string EditorTypeName - { - get { return editor; } - set { editor = value; } - } - - /// - /// Gets or sets the name of this property. - /// - public string Name - { - get { return name; } - set { name = value; } - } - - /// - /// Gets or sets the fully qualfied name of the type of this - /// property. - /// - public string TypeName - { - get { return type; } - set { type = value; } - } - } - - /// - /// Provides data for the GetValue and SetValue events of the PropertyBag class. - /// - public class PropertySpecEventArgs : EventArgs - { - private PropertySpec property; - private object val; - - /// - /// Initializes a new instance of the PropertySpecEventArgs class. - /// - /// The PropertySpec that represents the property whose - /// value is being requested or set. - /// The current value of the property. - public PropertySpecEventArgs(PropertySpec property, object val) - { - this.property = property; - this.val = val; - } - - /// - /// Gets the PropertySpec that represents the property whose value is being - /// requested or set. - /// - public PropertySpec Property - { - get { return property; } - } - - /// - /// Gets or sets the current value of the property. - /// - public object Value - { - get { return val; } - set { val = value; } - } - } - - /// - /// Represents the method that will handle the GetValue and SetValue events of the - /// PropertyBag class. - /// - public delegate void PropertySpecEventHandler(object sender, PropertySpecEventArgs e); - - /// - /// Represents a collection of custom properties that can be selected into a - /// PropertyGrid to provide functionality beyond that of the simple reflection - /// normally used to query an object's properties. - /// - public class PropertyBag : ICustomTypeDescriptor - { - #region PropertySpecCollection class definition - /// - /// Encapsulates a collection of PropertySpec objects. - /// - [Serializable] - public class PropertySpecCollection : IList - { - private ArrayList innerArray; - - /// - /// Initializes a new instance of the PropertySpecCollection class. - /// - public PropertySpecCollection() - { - innerArray = new ArrayList(); - } - - /// - /// Gets the number of elements in the PropertySpecCollection. - /// - /// - /// The number of elements contained in the PropertySpecCollection. - /// - public int Count - { - get { return innerArray.Count; } - } - - /// - /// Gets a value indicating whether the PropertySpecCollection has a fixed size. - /// - /// - /// true if the PropertySpecCollection has a fixed size; otherwise, false. - /// - public bool IsFixedSize - { - get { return false; } - } - - /// - /// Gets a value indicating whether the PropertySpecCollection is read-only. - /// - public bool IsReadOnly - { - get { return false; } - } - - /// - /// Gets a value indicating whether access to the collection is synchronized (thread-safe). - /// - /// - /// true if access to the PropertySpecCollection is synchronized (thread-safe); otherwise, false. - /// - public bool IsSynchronized - { - get { return false; } - } - - /// - /// Gets an object that can be used to synchronize access to the collection. - /// - /// - /// An object that can be used to synchronize access to the collection. - /// - object ICollection.SyncRoot - { - get { return null; } - } - - /// - /// Gets or sets the element at the specified index. - /// In C#, this property is the indexer for the PropertySpecCollection class. - /// - /// The zero-based index of the element to get or set. - /// - /// The element at the specified index. - /// - public PropertySpec this[int index] - { - get { return (PropertySpec)innerArray[index]; } - set { innerArray[index] = value; } - } - - /// - /// Adds a PropertySpec to the end of the PropertySpecCollection. - /// - /// The PropertySpec to be added to the end of the PropertySpecCollection. - /// The PropertySpecCollection index at which the value has been added. - public int Add(PropertySpec value) - { - int index = innerArray.Add(value); - - return index; - } - - /// - /// Adds the elements of an array of PropertySpec objects to the end of the PropertySpecCollection. - /// - /// The PropertySpec array whose elements should be added to the end of the - /// PropertySpecCollection. - public void AddRange(PropertySpec[] array) - { - innerArray.AddRange(array); - } - - /// - /// Removes all elements from the PropertySpecCollection. - /// - public void Clear() - { - innerArray.Clear(); - } - - /// - /// Determines whether a PropertySpec is in the PropertySpecCollection. - /// - /// The PropertySpec to locate in the PropertySpecCollection. The element to locate - /// can be a null reference (Nothing in Visual Basic). - /// true if item is found in the PropertySpecCollection; otherwise, false. - public bool Contains(PropertySpec item) - { - return innerArray.Contains(item); - } - - /// - /// Determines whether a PropertySpec with the specified name is in the PropertySpecCollection. - /// - /// The name of the PropertySpec to locate in the PropertySpecCollection. - /// true if item is found in the PropertySpecCollection; otherwise, false. - public bool Contains(string name) - { - foreach(PropertySpec spec in innerArray) - if(spec.Name == name) - return true; - - return false; - } - - /// - /// Copies the entire PropertySpecCollection to a compatible one-dimensional Array, starting at the - /// beginning of the target array. - /// - /// The one-dimensional Array that is the destination of the elements copied - /// from PropertySpecCollection. The Array must have zero-based indexing. - public void CopyTo(PropertySpec[] array) - { - innerArray.CopyTo(array); - } - - /// - /// Copies the PropertySpecCollection or a portion of it to a one-dimensional array. - /// - /// The one-dimensional Array that is the destination of the elements copied - /// from the collection. - /// The zero-based index in array at which copying begins. - public void CopyTo(PropertySpec[] array, int index) - { - innerArray.CopyTo(array, index); - } - - /// - /// Returns an enumerator that can iterate through the PropertySpecCollection. - /// - /// An IEnumerator for the entire PropertySpecCollection. - public IEnumerator GetEnumerator() - { - return innerArray.GetEnumerator(); - } - - /// - /// Searches for the specified PropertySpec and returns the zero-based index of the first - /// occurrence within the entire PropertySpecCollection. - /// - /// The PropertySpec to locate in the PropertySpecCollection. - /// The zero-based index of the first occurrence of value within the entire PropertySpecCollection, - /// if found; otherwise, -1. - public int IndexOf(PropertySpec value) - { - return innerArray.IndexOf(value); - } - - /// - /// Searches for the PropertySpec with the specified name and returns the zero-based index of - /// the first occurrence within the entire PropertySpecCollection. - /// - /// The name of the PropertySpec to locate in the PropertySpecCollection. - /// The zero-based index of the first occurrence of value within the entire PropertySpecCollection, - /// if found; otherwise, -1. - public int IndexOf(string name) - { - int i = 0; - - foreach(PropertySpec spec in innerArray) - { - if(spec.Name == name) - return i; - - i++; - } - - return -1; - } - - /// - /// Inserts a PropertySpec object into the PropertySpecCollection at the specified index. - /// - /// The zero-based index at which value should be inserted. - /// The PropertySpec to insert. - public void Insert(int index, PropertySpec value) - { - innerArray.Insert(index, value); - } - - /// - /// Removes the first occurrence of a specific object from the PropertySpecCollection. - /// - /// The PropertySpec to remove from the PropertySpecCollection. - public void Remove(PropertySpec obj) - { - innerArray.Remove(obj); - } - - /// - /// Removes the property with the specified name from the PropertySpecCollection. - /// - /// The name of the PropertySpec to remove from the PropertySpecCollection. - public void Remove(string name) - { - int index = IndexOf(name); - RemoveAt(index); - } - - /// - /// Removes the object at the specified index of the PropertySpecCollection. - /// - /// The zero-based index of the element to remove. - public void RemoveAt(int index) - { - innerArray.RemoveAt(index); - } - - /// - /// Copies the elements of the PropertySpecCollection to a new PropertySpec array. - /// - /// A PropertySpec array containing copies of the elements of the PropertySpecCollection. - public PropertySpec[] ToArray() - { - return (PropertySpec[])innerArray.ToArray(typeof(PropertySpec)); - } - - #region Explicit interface implementations for ICollection and IList - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - void ICollection.CopyTo(Array array, int index) - { - CopyTo((PropertySpec[])array, index); - } - - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - int IList.Add(object value) - { - return Add((PropertySpec)value); - } - - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - bool IList.Contains(object obj) - { - return Contains((PropertySpec)obj); - } - - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - object IList.this[int index] - { - get - { - return ((PropertySpecCollection)this)[index]; - } - set - { - ((PropertySpecCollection)this)[index] = (PropertySpec)value; - } - } - - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - int IList.IndexOf(object obj) - { - return IndexOf((PropertySpec)obj); - } - - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - void IList.Insert(int index, object value) - { - Insert(index, (PropertySpec)value); - } - - /// - /// This member supports the .NET Framework infrastructure and is not intended to be used directly from your code. - /// - void IList.Remove(object value) - { - Remove((PropertySpec)value); - } - #endregion - } - #endregion - #region PropertySpecDescriptor class definition - private class PropertySpecDescriptor : PropertyDescriptor - { - private PropertyBag bag; - private PropertySpec item; - - public PropertySpecDescriptor(PropertySpec item, PropertyBag bag, string name, Attribute[] attrs) : - base(name, attrs) - { - this.bag = bag; - this.item = item; - } - - public override Type ComponentType - { - get { return item.GetType(); } - } - - public override bool IsReadOnly - { - get { return (Attributes.Matches(ReadOnlyAttribute.Yes)); } - } - - public override Type PropertyType - { - get { return Type.GetType(item.TypeName); } - } - - public override bool CanResetValue(object component) - { - if(item.DefaultValue == null) - return false; - else - return !this.GetValue(component).Equals(item.DefaultValue); - } - - public override object GetValue(object component) - { - // Have the property bag raise an event to get the current value - // of the property. - - PropertySpecEventArgs e = new PropertySpecEventArgs(item, null); - bag.OnGetValue(e); - return e.Value; - } - - public override void ResetValue(object component) - { - SetValue(component, item.DefaultValue); - } - - public override void SetValue(object component, object value) - { - // Have the property bag raise an event to set the current value - // of the property. - - PropertySpecEventArgs e = new PropertySpecEventArgs(item, value); - bag.OnSetValue(e); - } - - public override bool ShouldSerializeValue(object component) - { - object val = this.GetValue(component); - - if(item.DefaultValue == null && val == null) - return false; - else - return !val.Equals(item.DefaultValue); - } - } - #endregion - - private string defaultProperty; - private PropertySpecCollection properties; - - /// - /// Initializes a new instance of the PropertyBag class. - /// - public PropertyBag() - { - defaultProperty = null; - properties = new PropertySpecCollection(); - } - - /// - /// Gets or sets the name of the default property in the collection. - /// - public string DefaultProperty - { - get { return defaultProperty; } - set { defaultProperty = value; } - } - - /// - /// Gets the collection of properties contained within this PropertyBag. - /// - public PropertySpecCollection Properties - { - get { return properties; } - } - - /// - /// Occurs when a PropertyGrid requests the value of a property. - /// - public event PropertySpecEventHandler GetValue; - - /// - /// Occurs when the user changes the value of a property in a PropertyGrid. - /// - public event PropertySpecEventHandler SetValue; - - /// - /// Raises the GetValue event. - /// - /// A PropertySpecEventArgs that contains the event data. - protected virtual void OnGetValue(PropertySpecEventArgs e) - { - if(GetValue != null) - GetValue(this, e); - } - - /// - /// Raises the SetValue event. - /// - /// A PropertySpecEventArgs that contains the event data. - protected virtual void OnSetValue(PropertySpecEventArgs e) - { - if(SetValue != null) - SetValue(this, e); - } - - #region ICustomTypeDescriptor explicit interface definitions - // Most of the functions required by the ICustomTypeDescriptor are - // merely pssed on to the default TypeDescriptor for this type, - // which will do something appropriate. The exceptions are noted - // below. - AttributeCollection ICustomTypeDescriptor.GetAttributes() - { - return TypeDescriptor.GetAttributes(this, true); - } - - string ICustomTypeDescriptor.GetClassName() - { - return TypeDescriptor.GetClassName(this, true); - } - - string ICustomTypeDescriptor.GetComponentName() - { - return TypeDescriptor.GetComponentName(this, true); - } - - TypeConverter ICustomTypeDescriptor.GetConverter() - { - return TypeDescriptor.GetConverter(this, true); - } - - EventDescriptor ICustomTypeDescriptor.GetDefaultEvent() - { - return TypeDescriptor.GetDefaultEvent(this, true); - } - - PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty() - { - // This function searches the property list for the property - // with the same name as the DefaultProperty specified, and - // returns a property descriptor for it. If no property is - // found that matches DefaultProperty, a null reference is - // returned instead. - - PropertySpec propertySpec = null; - if(defaultProperty != null) - { - int index = properties.IndexOf(defaultProperty); - propertySpec = properties[index]; - } - - if(propertySpec != null) - return new PropertySpecDescriptor(propertySpec, this, propertySpec.Name, null); - else - return null; - } - - object ICustomTypeDescriptor.GetEditor(Type editorBaseType) - { - return TypeDescriptor.GetEditor(this, editorBaseType, true); - } - - EventDescriptorCollection ICustomTypeDescriptor.GetEvents() - { - return TypeDescriptor.GetEvents(this, true); - } - - EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes) - { - return TypeDescriptor.GetEvents(this, attributes, true); - } - - PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties() - { - return ((ICustomTypeDescriptor)this).GetProperties(new Attribute[0]); - } - - PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes) - { - // Rather than passing this function on to the default TypeDescriptor, - // which would return the actual properties of PropertyBag, I construct - // a list here that contains property descriptors for the elements of the - // Properties list in the bag. - - ArrayList props = new ArrayList(); - - foreach(PropertySpec property in properties) - { - ArrayList attrs = new ArrayList(); - - // If a category, description, editor, or type converter are specified - // in the PropertySpec, create attributes to define that relationship. - if(property.Category != null) - attrs.Add(new CategoryAttribute(property.Category)); - - if(property.Description != null) - attrs.Add(new DescriptionAttribute(property.Description)); - - if(property.EditorTypeName != null) - attrs.Add(new EditorAttribute(property.EditorTypeName, typeof(UITypeEditor))); - - if(property.ConverterTypeName != null) - attrs.Add(new TypeConverterAttribute(property.ConverterTypeName)); - - // Additionally, append the custom attributes associated with the - // PropertySpec, if any. - if(property.Attributes != null) - attrs.AddRange(property.Attributes); - - Attribute[] attrArray = (Attribute[])attrs.ToArray(typeof(Attribute)); - - // Create a new property descriptor for the property item, and add - // it to the list. - PropertySpecDescriptor pd = new PropertySpecDescriptor(property, - this, property.Name, attrArray); - props.Add(pd); - } - - // Convert the list of PropertyDescriptors to a collection that the - // ICustomTypeDescriptor can use, and return it. - PropertyDescriptor[] propArray = (PropertyDescriptor[])props.ToArray( - typeof(PropertyDescriptor)); - return new PropertyDescriptorCollection(propArray); - } - - object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd) - { - return this; - } - #endregion - } - - /// - /// An extension of PropertyBag that manages a table of property values, in - /// addition to firing events when property values are requested or set. - /// - public class PropertyTable : PropertyBag - { - private Hashtable propValues; - - /// - /// Initializes a new instance of the PropertyTable class. - /// - public PropertyTable() - { - propValues = new Hashtable(); - } - - /// - /// Gets or sets the value of the property with the specified name. - ///

In C#, this property is the indexer of the PropertyTable class.

- ///
- public object this[string key] - { - get { return propValues[key]; } - set { propValues[key] = value; } - } - - /// - /// This member overrides PropertyBag.OnGetValue. - /// - protected override void OnGetValue(PropertySpecEventArgs e) - { - e.Value = propValues[e.Property.Name]; - base.OnGetValue(e); - } - - /// - /// This member overrides PropertyBag.OnSetValue. - /// - protected override void OnSetValue(PropertySpecEventArgs e) - { - propValues[e.Property.Name] = e.Value; - base.OnSetValue(e); - } - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/MyResources.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/MyResources.Designer.cs deleted file mode 100644 index de596fa..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/MyResources.Designer.cs +++ /dev/null @@ -1,77 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace opGamesLLC.opCpp2005 { - 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", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class MyResources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal MyResources() { - } - - /// - /// 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("opGamesLLC.opCpp2005.MyResources", typeof(MyResources).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; - } - } - - internal static System.Drawing.Bitmap addin_logo { - get { - object obj = ResourceManager.GetObject("addin-logo", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap addin_small { - get { - object obj = ResourceManager.GetObject("addin-small", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/MyResources.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/MyResources.resx deleted file mode 100644 index 61e840a..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/MyResources.resx +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - Resources\addin-logo1.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\addin-small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/PkgCmdID.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/PkgCmdID.cs deleted file mode 100644 index ccf753c..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/PkgCmdID.cs +++ /dev/null @@ -1,36 +0,0 @@ -// PkgCmdID.cs -// MUST match PkgCmdID.h -using System; - -namespace opGamesLLC.opCpp2005 -{ - static class PkgCmdIDList - { - //NOTE: mirror these constants in CommandIds.h - public const uint cmdopProjectSettings = 0x100; - public const uint cmdopGlobalSettings = 0x101; - public const uint cmdopBuildSolution = 0x102; - public const uint cmdopBuildProject = 0x103; - public const uint cmdopCleanSolution = 0x104; - public const uint cmdopFeatureManager = 0x105; - - public const uint cmdGotoOriginal = 0x115; - public const uint cmdGotoDefinition = 0x116; - public const uint cmdGotoNote = 0x117; - public const uint cmdOpenInclude = 0x118; - public const uint cmdGotoOOH = 0x119; - public const uint cmdGotoOCPP = 0x120; - - public const uint cmdVisualize = 0x121; - - //public const uint cmdArgumentLabel = 0x122; - - public const uint cmdStop = 0x123; - - - public const uint cmdArgumentStart = 0x300; - public const uint cmdModifiersStart = 0x400; - - public const uint opCppArgumentMenu = 0x1003; - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/AssemblyInfo.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/AssemblyInfo.cs deleted file mode 100644 index 7e8e62b..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Reflection; -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("opC++ Compiler")] -[assembly: AssemblyDescription("opC++ Compiler Visual Studio 2005 Package")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("opGames LLC")] -[assembly: AssemblyProduct("opC++ Compiler")] -[assembly: AssemblyCopyright("Copyright (c) 2008 opGames LLC")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(true)] - -// 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.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/Settings.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/Settings.Designer.cs deleted file mode 100644 index 9b5e1c8..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace opGamesLLC.opCpp2005.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.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/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/Settings.settings b/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/Settings.settings deleted file mode 100644 index 049245f..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Properties/Settings.settings +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/AttributeIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/AttributeIcon.bmp deleted file mode 100644 index bdbdeee..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/AttributeIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/CleanSolution.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/CleanSolution.bmp deleted file mode 100644 index 53ab447..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/CleanSolution.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/DialectIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/DialectIcon.bmp deleted file mode 100644 index 2afdffa..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/DialectIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/GreenIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/GreenIcon.bmp deleted file mode 100644 index e043979..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/GreenIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/Images_32bit.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/Images_32bit.bmp deleted file mode 100644 index 2fa7ab0..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/Images_32bit.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OCPPIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OCPPIcon.bmp deleted file mode 100644 index 51ac994..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OCPPIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OHIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OHIcon.bmp deleted file mode 100644 index 95d94d4..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OHIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OOHIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OOHIcon.bmp deleted file mode 100644 index ac81fbf..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OOHIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon.bmp deleted file mode 100644 index dd59d42..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon.png b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon.png deleted file mode 100644 index 56ff717..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon.png and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon16x16.ico b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon16x16.ico deleted file mode 100644 index 233ac84..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon16x16.ico and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon16x16.png b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon16x16.png deleted file mode 100644 index 9f2ede5..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon16x16.png and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon256.ico b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon256.ico deleted file mode 100644 index 00e8072..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPIcon256.ico and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPSettings.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPSettings.bmp deleted file mode 100644 index 607e71c..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/OpCPPSettings.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/Package.ico b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/Package.ico deleted file mode 100644 index 8d6ba9e..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/Package.ico and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/ProjectBuild.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/ProjectBuild.bmp deleted file mode 100644 index 5512651..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/ProjectBuild.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/SolutionBuild.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/SolutionBuild.bmp deleted file mode 100644 index 38c6987..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/SolutionBuild.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/StopIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/StopIcon.bmp deleted file mode 100644 index e619a8c..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/StopIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/VisualizeIcon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/VisualizeIcon.bmp deleted file mode 100644 index 3eb1668..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/VisualizeIcon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/addin-logo1.png b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/addin-logo1.png deleted file mode 100644 index 453e626..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/addin-logo1.png and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/addin-small.png b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/addin-small.png deleted file mode 100644 index db9d5fb..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/addin-small.png and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/featuresicon.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/featuresicon.bmp deleted file mode 100644 index 0c506aa..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/featuresicon.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/opInclude.bmp b/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/opInclude.bmp deleted file mode 100644 index d8ada2c..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Resources/opInclude.bmp and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Commands.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Commands.cs deleted file mode 100644 index dac2560..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Commands.cs +++ /dev/null @@ -1,866 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Commands.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Command-related stuff. -///**************************************************************** - -using System; -using EnvDTE; -using System.Collections.Generic; -using Extensibility; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.VCProject; -using Microsoft.VisualStudio.VCProjectEngine; -using Microsoft.VisualStudio.VCCodeModel; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.IO; -using System.Windows.Forms; -using System.Text.RegularExpressions; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opCpp2005 - { - /*=== code for locking/unlocking the addin ===*/ - - private bool bAddinLocked = false; - - public void LockAddin() - { - bAddinLocked = true; - } - - public void UnlockAddin() - { - bAddinLocked = false; - } - - // - // All the commands - // - private OleMenuCommand GlobalSettingsCommand; - private OleMenuCommand ProjectSettingsCommand; - private OleMenuCommand BuildSolutionCommand; - private OleMenuCommand BuildProjectCommand; - private OleMenuCommand CleanSolutionCommand; - private OleMenuCommand GotoOriginalCommand; - private OleMenuCommand FeatureManagerCommand; - private OleMenuCommand GotoNoteCommand; - //private OleMenuCommand GotoDefinitionCommand; - private OleMenuCommand OpenIncludeCommand; - private OleMenuCommand GotoOOHCommand; - private OleMenuCommand GotoOCPPCommand; - private OleMenuCommand VisualizeCommand; - private OleMenuCommand StopBuildCommand; - - //TODO: figure out a fast way to make sure statuses are not - // queried in c# for example... -// bool AllCommandsUnavailable() -// { -// if (App() == null) -// return true; -// -// -// -// if () -// { -// -// } -// } - - - // - // Command callbacks - // - - // Called when Global Settings command is executed. - private void GlobalSettingsCallback(object sender, EventArgs e) - { - //don't lockdown global settings... - - GlobalOptionsForm form = new GlobalOptionsForm(); - form.ShowDialog(); - } - - // Called when Project Settings command is executed. - private void ProjectSettingsCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - ProjectOptionsForm form = new ProjectOptionsForm(); - - form.ShowDialog(); - } - - // Called when Feature Manager command is executed. - private void FeatureManagerCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - FeatureManagerForm form = new FeatureManagerForm(); - - form.ShowDialog(); - } - - // Called when opCpp Build Solution command is executed. - private void BuildSolutionCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - HandleBuildSolution(false); - } - - // Called when opCpp Build Project is executed. - private void BuildProjectCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - HandleBuildProject(false); - } - - // Called when opCpp Clean Solution command is executed. - private void CleanSolutionCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - HandleCleanSolution(false); - } - - // Called when opCpp Stop Build command is executed - private void StopBuildCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - //Stop the build if it's going... - if (CurrentThread != null) - { - CurrentThread.Stop(); - CurrentThread = null; - } - - LogCompile("opC++ Build Stopped."); - } - - // - // Command status callbacks - // - - private void ButtonStatus(object sender, EventArgs e) - { - if (bAddinLocked) - { - DisableCompileButtons(); - return; - } - - bool hasOhFiles = ProjectUtility.SolutionHasOhFiles(App().Solution); - - if (IsCompiling() || hasOhFiles == false) - { - DisableCompileButtons(); - } - else - EnableCompileButtons(); - - } - - private void StopStatus(object sender, EventArgs e) - { - if (bAddinLocked) - { - StopBuildCommand.Enabled = false; - return; - } - - if(IsCompiling()) - { - StopBuildCommand.Enabled = true; - } - else - { - StopBuildCommand.Enabled = false; - } - } - - private void DisableCompileButtons() - { - BuildSolutionCommand.Enabled = false; - BuildProjectCommand.Enabled = false; - CleanSolutionCommand.Enabled = false; - } - - private void EnableCompileButtons() - { - BuildSolutionCommand.Enabled = true; - BuildProjectCommand.Enabled = true; - CleanSolutionCommand.Enabled = true; - - } - - private void GlobalSettingsStatus(object sender, EventArgs e) - { - - } - - private void FeatureManagerStatus(object sender, EventArgs e) - { - if (bAddinLocked) - { - FeatureManagerCommand.Enabled = false; - return; - } - -#if DEBUG - bool hasOhFiles = ProjectUtility.SolutionHasOhFiles(App().Solution); - - FeatureManagerCommand.Enabled = hasOhFiles; -#else - FeatureManagerCommand.Enabled = false; -#endif - } - - private void ProjectSettingsStatus(object sender, EventArgs e) - { - if (bAddinLocked) - { - ProjectSettingsCommand.Enabled = false; - return; - } - - bool hasOhFiles = ProjectUtility.SolutionHasOhFiles(App().Solution); - - ProjectSettingsCommand.Enabled = hasOhFiles; - } - - - // Handle No Debug Start (may be called directly or intercepted) - void HandleNoDebugStart(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.NoDebug, SelectionTypes.Solution, bIntercepted)); - } - - // Handle Debug Start (may be called directly or intercepted) - void HandleDebugStart(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Debug, SelectionTypes.Solution, bIntercepted)); - } - - // Handle opCpp Build Solution (may be called directly or intercepted) - void HandleBuildSolution(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Build, SelectionTypes.Solution, bIntercepted)); - } - - // Handle opCpp Build Project (may be called directly or intercepted) - void HandleBuildProject(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Build, SelectionTypes.Project, bIntercepted)); - } - - // Handle opCpp Build Project Only (intercepted) - void HandleBuildProjectOnly(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Build, SelectionTypes.ProjectOnly, bIntercepted)); - } - - // Handle opCpp Rebuild Solution (intercepted) - void HandleRebuildSolution(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Rebuild, SelectionTypes.Solution, bIntercepted)); - } - - // Handle opCpp Rebuild Project (intercepted) - void HandleRebuildProject(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Rebuild, SelectionTypes.Project, bIntercepted)); - } - - // Handle opCpp Rebuild Project Only (intercepted) - void HandleRebuildProjectOnly(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Rebuild, SelectionTypes.ProjectOnly, bIntercepted)); - } - - // Handle opCpp Clean Solution (may be called directly or intercepted) - void HandleCleanSolution(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Clean, SelectionTypes.Solution, bIntercepted)); - } - - // Handle opCpp Clean Project (intercepted) - void HandleCleanProject(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Clean, SelectionTypes.Project, bIntercepted)); - } - - // Handle opCpp Clean Project Only (intercepted) - void HandleCleanProjectOnly(bool bIntercepted) - { - StartCompile(new CompileMode(CompileTypes.Clean, SelectionTypes.ProjectOnly, bIntercepted)); - } - - public enum SelectionTypes - { - None, - Solution, - Project, - ProjectOnly, - } - - public enum CompileTypes - { - None, - Build, - Rebuild, - Clean, - Debug, - NoDebug, - } - - public class CompileMode - { - public CompileMode(CompileTypes action, SelectionTypes selection, bool Intercepted) - { - Selection = selection; - Action = action; - bIntercepted = Intercepted; - } - - public SelectionTypes Selection = SelectionTypes.None; - public CompileTypes Action = CompileTypes.None; - public bool bIntercepted = false; - }; - - bool IsCompiling() - { - return CurrentThread != null; - } - - bool IsVSCompiling() - { - return App().Solution.SolutionBuild.BuildState == vsBuildState.vsBuildStateInProgress; - } - - public struct CommandSetting - { - public Project Project; - public string WorkingDir; - public string ExePath; - public string Arguments; - }; - - //Current Status - private CompileMode CurrentMode; - private opCppThread CurrentThread = null; - - void StartCompile(CompileMode mode) - { - // a compile is running already - if (IsCompiling()) - { - //TODO: should halt compiling really - return; - //CurrentThread.Stop(); - } - - if(mode.bIntercepted) - { - Options options = OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options; - - bool bExtendCommands = options.ExtendCommands.Value; - - if (!bExtendCommands) - return; - } - - if(IsVSCompiling()) - { - //cancel it - App().ExecuteCommand("Build.Cancel", ""); - } - - // activate the output pane... - GetOutputPane().Clear(); - ActivateOutputPane(); - - // ok, lets attempt to start compiling now. - - CurrentThread = null; - PostEvent = ""; - - // no solution loaded - DTE2 app = App(); - Solution solution = app.Solution; - if (solution == null) - return; - - // first save all the open files - this is a global setting - SaveOpenFiles(); - - List Projects; - - // find the selections we need (projects) - if (mode.Selection == SelectionTypes.Solution) - Projects = ProjectUtility.GetSolutionProjects(); - else if (mode.Selection == SelectionTypes.Project) - Projects = ProjectUtility.GetActiveProjects(); - else// if (mode.Selection == SelectionTypes.ProjectOnly) - Projects = ProjectUtility.GetActiveProjectOnly(); - - - // - // Mode Arguments - // - // clean : send it -clean - // rebuild : send it -force - // build : none... - string ModeArguments = ""; - if (mode.Action == CompileTypes.Rebuild) - ModeArguments += "-force"; - else if (mode.Action == CompileTypes.Clean) - ModeArguments += "-clean"; - //else if Debug || NoDebug || Build ... no additional needed - - //TODO: need the global options path - string GlobalArguments = "-dependencies \"" + Paths.GetGlobalOptionsFilename() + "\""; - - //no projects to compile - if (Projects.Count == 0) - return; - - List CommandSettings = new List(); - - int numprojects = Projects.Count; - for (int ip = 0; ip < numprojects; ip++) - { - Project project = Projects[ip]; - - string ActiveConfiguration = ProjectUtility.ProjectActiveConfiguration(project); - - List ohfiles = ProjectUtility.GetOhFiles(project); - - // does it contain active oh files? if not skip it. - ProjectUtility.FilterActiveFiles(ref ohfiles, ActiveConfiguration); - if (ohfiles.Count == 0) - continue; - - // are the project settings set to enable opcpp? - bool bProjectEnabled = true; - if (!bProjectEnabled) - continue; - - //3. do we have .doh files in the project? - List dohfiles = ProjectUtility.GetDohFiles(project); - ProjectUtility.FilterActiveFiles(ref dohfiles, ActiveConfiguration); - // if (dohfiles.Count == 0) - // continue; - - //fetch the project doh files from the global/project doh settings - List ProjectDohFiles = new List(); - // if(ProjectDohFiles.Count + dohfiles.Count == 0) - // { - // //print a message "Project has oh files but no dialect was found or specified" - // continue; - // } - - //now build the settings - CommandSetting setting = new CommandSetting(); - - setting.Project = project; - setting.WorkingDir = StringUtility.RLeft(project.FileName, "\\"); - - //build the oh files list from the arguments - //build the doh files list from the arguments - string ohfilestring = ""; - for (int i = 0; i < ohfiles.Count; i++) - { - VCFile file = ohfiles[i]; - - ohfilestring += '"'; - ohfilestring += file.FullPath; - ohfilestring += '"'; - - if (i + 1 < ohfiles.Count) - ohfilestring += ','; - } - - string dohfilestring = ""; - for (int i = 0; i < dohfiles.Count; i++) - { - VCFile file = dohfiles[i]; - dohfilestring += '"'; - dohfilestring += file.FullPath; - dohfilestring += '"'; - - if (i + 1 < dohfiles.Count) - dohfilestring += ','; - } - - for (int i = 0; i < ProjectDohFiles.Count; i++) - { - dohfilestring += '"'; - dohfilestring += ProjectDohFiles[i]; - dohfilestring += '"'; - - if (i + 1 < ProjectDohFiles.Count) - dohfilestring += ','; - } - - string FileArguments = ""; - - if (ohfilestring.Length > 0) - FileArguments += " -oh " + ohfilestring; - - if (dohfilestring.Length > 0) - FileArguments += " -doh " + dohfilestring; - - // fetch the global + overloaded project arguments - CommandLineInfo info = OptionsManager.GetCommandLineInfo(project); - setting.ExePath = info.ExecutablePath; - - FileArguments += " -dependencies \"" + Paths.GetProjectOptionsFilename(project) + "\""; - - if (setting.ExePath == "") - { - LogCompile("Error: opCpp exe path is undefined, please define in global and/or project settings"); - return; - } - - string ProjectArguments = info.Arguments; - - string MacroArguments = FileArguments + " " + ProjectArguments + " " + ModeArguments + " " + GlobalArguments; - - if (opBeta.IsBeta) - MacroArguments += " -beta"; - - setting.Arguments = Paths.ResolveVisualStudioMacros(project, MacroArguments); - - //verify the macros worked... - Regex findmacros = new Regex("$\\(*.\\)"); - Match result = findmacros.Match(setting.Arguments); - if (result.Success) - { - string foundstring = setting.Arguments.Substring(result.Index, result.Length); - LogCompile("Error: bad macro found in settings - " + foundstring); - return; - } - - CommandSettings.Add(setting); - } - - //no commands to execute - if (CommandSettings.Count == 0) - { -// CurrentMode = null; -// FinishedCompile(false); - return; - } - - //execute commands - CurrentMode = mode; - - CurrentThread = new opCppThread(CommandSettings); - CurrentThread.OnReadLine = LogCompile; - CurrentThread.OnEnd = FinishedCompile; - CurrentThread.Start(); - } - - public void LogCompile(string s) - { - PrintDebugLine(s); - GetOutputPane().OutputString(s + "\n"); - Application.DoEvents(); - } - - //TODO: need to add debug, nodebug catching - void FinishedCompile(bool bErrored) - { - PrintDebugLine("Finished opC++ Build."); - //handle post-build operations - CurrentThread = null; - - EnableCompileButtons(); - - PostEvent = ""; - - if (bErrored) - return; - - if(CurrentMode != null) - { - // if the command was from the toolbar, we can customize the post build event using settings - if (!CurrentMode.bIntercepted) - { - Options options = OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options; - - if (CurrentMode.Action == CompileTypes.Build) - { - if (CurrentMode.Selection == SelectionTypes.Solution) - { - //TODO: grab the command - PostEvent = options.PostBuildSolution.Value; - } - else if (CurrentMode.Selection == SelectionTypes.Project) - { - //TODO: grab the command - PostEvent = options.PostBuildProject.Value; - } - } - else if (CurrentMode.Action == CompileTypes.Clean) - { - //TODO: grab the command - PostEvent = options.PostCleanSolution.Value; - } - } - else if (CurrentMode.Action == CompileTypes.Debug) - { - PostEvent = "Debug.Start"; - } - else if (CurrentMode.Action == CompileTypes.NoDebug) - { - PostEvent = "Debug.StartWithoutDebugging"; - } - else - { - //setup the post-build event - if (CurrentMode.Action == CompileTypes.Build) - { - PostEvent = "Build.Build"; - } - else if (CurrentMode.Action == CompileTypes.Rebuild) - { - PostEvent = "Build.Rebuild"; - } - else if (CurrentMode.Action == CompileTypes.Clean) - { - PostEvent = "Build.Clean"; - } - - if (CurrentMode.Selection == SelectionTypes.Project) - { - PostEvent += "Selection"; - } - else if (CurrentMode.Selection == SelectionTypes.ProjectOnly) - { - PostEvent += "OnlyProject"; - } - else if (CurrentMode.Selection == SelectionTypes.Solution) - { - PostEvent += "Solution"; - } - } - } - - if(PostEvent.Length != 0) - App().ExecuteCommand(PostEvent, ""); - } - - private string PostEvent; - - - - void AfterExecute(string Guid, int ID, object CustomIn, object CustomOut) - { - string commandName = ""; - - try - { - commandName = App().Commands.Item(Guid, ID).Name; - } - catch (Exception) - { - } - - if (commandName != "") - { - if (bAddinLocked) - return; - - if (commandName == PostEvent) - { - //TODO: fix this... do we need to use AfterExecute maybe? - PostEvent = ""; - return; - } - } - - if (commandName != "") - { - PrintDebugLine("CommandEvents, AfterExecute"); - PrintDebugLine("\tCommand name: " + commandName); - PrintDebugLine("\tCommand GUID/ID: " + Guid + ", " + ID.ToString()); - } - } - - bool CompileCommandsUnavailable() - { - if ( App() == null ) - return true; - - Projects projects = App().Solution.Projects; - - foreach( Project p in projects ) - { - VCProject project = p.Object as VCProject; - - if (project != null) - { - string config = ProjectUtility.ProjectActiveConfiguration(p); - - List ohs = ProjectUtility.GetOhFiles(p); - ProjectUtility.FilterActiveFiles(ref ohs, config); - - if (ohs.Count != 0) - return false; - } - } - - return true; - } - - void BeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault) - { - string commandName = ""; - - try - { - commandName = App().Commands.Item(Guid, ID).Name; - } - catch (Exception) - { - } - - if (commandName != "") - { - if (bAddinLocked) - return; - - if (commandName == PostEvent) - { - //TODO: fix this... do we need to use AfterExecute maybe? - //PostEvent = ""; - return; - } - - if (CompileCommandsUnavailable()) - return; - - //our handled events... - - //don't execute in debug mode (for now?) - if (App().Mode == vsIDEMode.vsIDEModeDebug) - return; - - //TODO: where is the interception option??? - - //catch debug.start - if (commandName == "Debug.Start") - { - HandleDebugStart(true); - CancelDefault = true; - } - else if (commandName == "Debug.StartWithoutDebugging") - { - HandleNoDebugStart(true); - CancelDefault = true; - } - else if (commandName == "Build.BuildSolution") - { - HandleBuildSolution(true); - CancelDefault = true; - } - else if (commandName == "Build.BuildSelection") - { - HandleBuildProject(true); - CancelDefault = true; - } - else if (commandName == "Build.BuildOnlyProject") - { - HandleBuildProjectOnly(true); - CancelDefault = true; - } - else if (commandName == "Build.RebuildSolution") - { - HandleRebuildSolution(true); - CancelDefault = true; - } - else if (commandName == "Build.RebuildSelection") - { - HandleRebuildProject(true); - CancelDefault = true; - } - else if (commandName == "Build.RebuildOnlyProject") - { - HandleRebuildProjectOnly(true); - CancelDefault = true; - } - else if (commandName == "Build.CleanSolution") - { - HandleCleanSolution(true); - CancelDefault = true; - } - else if (commandName == "Build.CleanSelection") - { - HandleCleanProject(true); - CancelDefault = true; - } - else if (commandName == "Build.CleanOnlyProject") - { - HandleCleanProjectOnly(true); - CancelDefault = true; - } - - //TODO: ?? batches - } - - if (commandName != "") - { - PrintDebugLine("CommandEvents, BeforeExecute"); - PrintDebugLine("\tCommand name: " + commandName); - PrintDebugLine("\tCommand GUID/ID: " + Guid + ", " + ID.ToString()); - } - } - - // - // Utilities - // - - void SaveOpenFiles() - { - //TODO: get this setting from global options - bool bSaveFiles = true; - if (bSaveFiles) - { - foreach (Document d in App().Documents) - { - if (d.Name.EndsWith(".doh") - || d.Name.EndsWith(".oh")) - { - if (d.Saved == false) - d.Save(d.FullName); - } - } - } - } - }; -} - - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Connect.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Connect.cs deleted file mode 100644 index 873b96d..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Connect.cs and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Log.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Log.cs deleted file mode 100644 index a765850..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Log.cs +++ /dev/null @@ -1,65 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Log.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for logging information. -///**************************************************************** - -using System; -using System.Windows.Forms; -using System.IO; -using EnvDTE80; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opCpp2005 - { - /*=== data ===*/ - - private StreamWriter debugstream = null; - - /*=== utility ===*/ - - public void Log(string s) - { - DebugLog(s); - PrintDebugLine(s); - } - - public void LogException(Exception e) - { - Log("Exception: " + e.Message + "\n" + e.StackTrace); - } - - // This method logs strings. - public void DebugLog(string s) - { - try - { - if (debugstream == null) - { - string path = Paths.GetGlobalOptionsPath() + "opC++.oplog"; - debugstream = new StreamWriter(path); - } - - debugstream.Write(s + "\n"); - debugstream.Flush(); - } - catch(Exception) - { - } - } - - // Prints a line to the console. - public void PrintDebugLine(string s) - { - System.Diagnostics.Debugger.Log(0, "", s + '\n'); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Panes.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Panes.cs deleted file mode 100644 index 1decdd4..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Panes.cs +++ /dev/null @@ -1,86 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Panes.cs -/// Date: 09/19/2007 -/// -/// Description: -/// -/// Output pane code. -///**************************************************************** - -using System; -using EnvDTE; -using EnvDTE80; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opCpp2005 - { - /*=== data ===*/ - - private OutputWindowPane DebugOutputPane; - private OutputWindowPane OutputPane; - private OutputWindowPane BuildOutputPane; - - /*=== utility ===*/ - - // Looks for an output pane by name. - OutputWindowPane FindOutputPane(string name) - { - OutputWindow outputwindow = App().ToolWindows.OutputWindow; - - foreach (OutputWindowPane pane in outputwindow.OutputWindowPanes) - { - if (pane.Name == name) - return pane; - } - - return outputwindow.OutputWindowPanes.Add(name); - } - - void ActivateOutputPane() - { - - Window window = App().Windows.Item(ContextGuids.vsContextGuidOutput); - - if (window != null) - window.Activate(); - - //this brings up the pane, but not the window - GetOutputPane().Activate(); - - - } - - // Gets and caches the opcpp build pane. - OutputWindowPane GetOutputPane() - { - if (OutputPane == null) - OutputPane = FindOutputPane("opC++ Build"); - - return OutputPane; - } - - // Get build output pane. - OutputWindowPane GetBuildOutputPane() - { - if (BuildOutputPane == null) - BuildOutputPane = FindOutputPane("Build"); - - return BuildOutputPane; - } - - // Get debug output pane. - OutputWindowPane GetDebugOutputPane() - { - if (DebugOutputPane == null) - DebugOutputPane = FindOutputPane("opC++ Debug Output"); - - return DebugOutputPane; - } - } -} - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Projects.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Projects.cs deleted file mode 100644 index 12f28cc..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Projects.cs +++ /dev/null @@ -1,389 +0,0 @@ -//*/*************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Projects.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for looking at the solution/project tree. -///**************************************************************** -/// - -using System; -using System.Collections.Generic; -using Microsoft.VisualStudio.VCProjectEngine; -using EnvDTE; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - // Microsoft visual studio project-related methods. - public class ProjectUtility - { - /*=== utility ===*/ - - public static bool SolutionHasOhFiles(Solution solution) - { - Projects projects = solution.Projects; - try - { - - foreach (Project p in projects) - { - if (HasOhFiles(p)) - return true; - } - } - catch (Exception) { } - - return false; - } - -// public class ProjectInfo -// { -// ProjectInfo(BuildDependency d) -// { -// Project = d.Project; -// -// foreach(Project p in d.RequiredProjects as Array) -// { -// Dependencies.Add(p); -// } -// } -// -// public Project Project; -// public List Dependencies; -// }; -// -// private static void CompleteDependencies(ref List projects) -// { -// foreach(ProjectInfo p in projects) -// CompleteDependency(projects, p); -// } -// -// private static void CompleteDependency(List projects, ProjectInfo project) -// { -// foreach (Project depend in project.Dependencies) -// { -// ProjectInfo found = projects.Find( -// delegate(ProjectInfo other) -// { -// if (other.Project == depend) -// return true; -// return false; -// } -// ); -// -// if (found != null) -// { -// CompleteDependency(projects,found); -// -// foreach (Project p in found.Dependencies) -// project.Dependencies.Add(p); -// } -// } -// } - - // This method returns a list of all projects in the current solution. - public static List GetSolutionProjects() - { - List projects = new List(); - try - { - - List dependencies = new List(); - - foreach(BuildDependency b in opCpp2005.App().Solution.SolutionBuild.BuildDependencies) - { - dependencies.Add(b); - } - - // sort by dependency order - dependencies.Sort( - - delegate(BuildDependency a, BuildDependency b) - { - if (a == b) - return 0; - - //if a should go before b - Array req = a.RequiredProjects as Array; - foreach (Project p in req) - { - if (p == b.Project) - return 1;//a < b - } - - //if b should go before a - return -1;//b < a - } - ); - - //build the final list - foreach (BuildDependency b in dependencies) - { - if (b.Project.Kind == VcProjGuid) - projects.Add(b.Project); - } - - } - catch (Exception) { } - - return projects; - } - - public static List GetActiveProjects() - { - //rely on GetSolutionProjects to get the ordered list, - List order = GetSolutionProjects(); - - List projects = new List(); - - Array AllProjects = opCpp2005.App().ActiveSolutionProjects as Array; - - foreach (Project p in AllProjects) - { - if (p.Kind == VcProjGuid) - { - //now add all the dependencies - BuildDependency dep = opCpp2005.App().Solution.SolutionBuild.BuildDependencies.Item(p); - if(dep != null) - { - Array required = dep.RequiredProjects as Array; - foreach(Project dp in required) - { - projects.Add(dp); - } - } - - //add the project - projects.Add(p); - } - } - - //Only want the ordered projects that are in the projects list. - order.RemoveAll( - delegate(Project p) - { - bool found = projects.Exists(delegate(Project match) { return match == p; } ); - if (found) - return false; - return true; - } - ); - - return order; - } - - // This method returns - public static List GetActiveProjectOnly() - { - List projects = new List(); - - Array AllProjects = opCpp2005.App().ActiveSolutionProjects as Array; - - foreach (Project p in AllProjects) - { - if (p.Kind == VcProjGuid) - projects.Add(p); - } - - return projects; - } - - // Given a project, this returns the project name. - public static string GetProjectName(Project p) - { - return p.Name; - } - - // Given a project, returns the full project name (path + name). - public static string GetFullProjectName(Project p) - { - return p.FullName; - } - - // Given a project, returns the full project path (path only). - public static string GetFullProjectPath(Project p) - { - string s = p.FullName; - int i = s.LastIndexOf("\\"); - - return s.Substring(0, i + 1); - } - - // Returns the name of the active solution. - public static string GetSolutionName() - { - string solution = opCpp2005.App().Solution.FileName; - - solution = StringUtility.RRight(solution, "\\"); - solution = StringUtility.RLeft(solution, "."); - - return solution; - } - - // Returns the full name of the active solution. - public static string GetFullSolutionName() - { - return opCpp2005.App().Solution.FileName; - } - - // Returns the full path of the active solution. - public static string GetFullSolutionPath() - { - string path = opCpp2005.App().Solution.FileName; - - path = StringUtility.RLeft(path, "\\"); - - return path + "\\"; - } - - // This method returns a list of project files for the given project. - public static List GetProjectFiles(Project p) - { - List files = new List(); - - RecursiveFiles(p.ProjectItems, ref files); - - return files; - } - - // Get project files, of a certain extension. - public static List GetProjectFiles(Project p, string extension) - { - List files = GetProjectFiles(p); - List outFiles = new List(); - - foreach (VCFile f in files) - { - if (f.Extension == extension) - outFiles.Add(f); - } - - return outFiles; - } - - // Filters out inactive files. - public static void FilterActiveFiles(ref List inoutfiles, string activeconfig) - { - List files = new List(inoutfiles); - inoutfiles.Clear(); - - foreach (VCFile file in files) - { - IVCCollection fileconfigs = file.FileConfigurations as IVCCollection; - foreach (VCFileConfiguration config in fileconfigs) - { - if (config.Name == activeconfig) - { - if (!config.ExcludedFromBuild) - { - inoutfiles.Add(file); - break; - } - } - } - } - } - - // This method recursively finds files in a project. - private static void RecursiveFiles(ProjectItems projectitems, ref List files) - { - if (projectitems == null) - return; - - foreach (ProjectItem projectitem in projectitems) - { - if (projectitem.Kind == EnvDTE.Constants.vsProjectItemKindPhysicalFile) - { - VCFile file = projectitem.Object as VCFile; - - if (file != null) - files.Add(file); - } - - RecursiveFiles(projectitem.ProjectItems, ref files); - } - } - - // This method returns all .doh files in the given project. - public static List GetDohFiles(Project p) - { - return GetProjectFiles(p, ".doh"); - } - - // This method returns all .oh files in the given project. - public static List GetOhFiles(Project p) - { - return GetProjectFiles(p, ".oh"); - } - - // If true, the project has .doh files. - public static bool HasDohFiles(Project p) - { - return GetDohFiles(p).Count > 0; - } - - // If true, the project has .oh files. - public static bool HasOhFiles(Project p) - { - return GetOhFiles(p).Count > 0; - } - - // Returns a list of strings that are the current project's configurations. - public static List GetConfigurations(Project p) - { - List configurations = new List(); - Array a = p.ConfigurationManager.ConfigurationRowNames as Array; - - foreach (string c in a) - configurations.Add(c); - - return configurations; - } - - // Returns a list of strings that are the current project's platforms. - public static List GetPlatforms(Project p) - { - List platforms = new List(); - Array a = p.ConfigurationManager.PlatformNames as Array; - - foreach (string c in a) - { - platforms.Add(c); - } - - return platforms; - } - - // Returns the active configuration name for the project. - public static string GetActiveConfiguration(Project p) - { - return p.ConfigurationManager.ActiveConfiguration.ConfigurationName; - } - - // Returns the active platform name for the project - public static string GetActivePlatform(Project p) - { - return p.ConfigurationManager.ActiveConfiguration.PlatformName; - } - - // Returns the full (config + platform) active configuration name for the project - public static string ProjectActiveConfiguration(Project p) - { - return p.ConfigurationManager.ActiveConfiguration.ConfigurationName - + "|" - + p.ConfigurationManager.ActiveConfiguration.PlatformName; - } - - /*=== data ===*/ - - // Unique guid for .vcproj files. - - private static readonly string VcProjGuid = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"; - }; -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Thread.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Thread.cs deleted file mode 100644 index b2c68cd..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Compiling/Thread.cs +++ /dev/null @@ -1,189 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Thread.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Threading stuff. -///**************************************************************** - -using System; -using System.Threading; -using System.Diagnostics; -using System.Collections.Generic; - -namespace opGamesLLC.opCpp2005 -{ - abstract class WorkerThread - { - /*=== utility ===*/ - - public void Start() - { - if (thread == null) - { - thread = new Thread(new ThreadStart(Run)); - thread.Start(); - } - } - - private void Run() - { - Running(); - } - - public virtual void Running() - { - } - - public virtual void Stop() - { - thread.Abort(); - } - - /*=== data ===*/ - - private Thread thread; - } - - // The opCpp thread. - class opCppThread : WorkerThread - { - /*=== construction ===*/ - - public opCppThread(List commands) - { - Commands = new List(commands); - } - - /*=== utility ===*/ - - public override void Running() - { - bool bErrored = false; - - foreach(opCpp2005.CommandSetting command in Commands) - { - try - { - Options options = OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options; - - // Print out the project that's currently compiling. - if ( !command.Arguments.Contains("-clean") ) - { - string configuration = ProjectUtility.GetActiveConfiguration(command.Project); - string platform = ProjectUtility.GetActivePlatform(command.Project); - string message = "------ opC++ Build started: Project: " + command.Project.Name + ", Configuration: " + configuration + " " + platform + " ------"; - - OnReadLine( message ); - } - - if (options.OutputCommandline.Value)//TODO: hook into global options - { - string argstring = command.Arguments.Replace("-beta", ""); - - OnReadLine("---------------------------------------------"); - OnReadLine("Working Directory = " + command.WorkingDir); - OnReadLine("Path = " + command.ExePath); - OnReadLine("Arguments = " + argstring); - OnReadLine("::::::::::::::::::::::::::::::::::::::::::::;"); - } - - //create a new process - process = new System.Diagnostics.Process(); - - process.StartInfo.WorkingDirectory = command.WorkingDir; - - //this path is from the registry - //NOTE: this should be integrated with the installer - process.StartInfo.FileName = command.ExePath; - process.StartInfo.Arguments = command.Arguments; - process.StartInfo.RedirectStandardOutput = true; - process.StartInfo.UseShellExecute = false; - process.StartInfo.CreateNoWindow = true; - process.StartInfo.ErrorDialog = false; - //process.EnableRaisingEvents = true; - - //process. - process.OutputDataReceived += new DataReceivedEventHandler(a_OutputDataReceived); - - process.Start(); - - //begin async output reading - process.BeginOutputReadLine(); - -// while(!process.HasExited) -// { -// string value; -// while( (value = process.StandardOutput.ReadLine()) != null ) -// OnReadLine(value); -// } - - //while (!process.HasExited) ; - - //wait only 10 seconds (temporary?) - process.WaitForExit(1000 * 10); - - //the second call makes sure the async output is all finished before proceeding. - process.WaitForExit(); - - if (process.HasExited) - { - //success - } - else - { - bErrored = true; - - //check status...this should be temporary! - OnReadLine("Error: opC++ may not have finished in 10 seconds."); - break; - } - - if (process.ExitCode != 0) - { - bErrored = true; - break; - } - } - catch (Exception e) - { - OnReadLine("exception: " + e.Message + "\nStack Trace: " + e.StackTrace); - bErrored = true; - break; - } - } - - OnEnd(bErrored); - } - - public override void Stop() - { - if(!process.HasExited) - process.Kill(); - } - - void a_OutputDataReceived(object sender, DataReceivedEventArgs e) - { - OnReadLine(e.Data); - } - - public delegate void EndThread(bool bErrored); - public delegate void ReadLine(string text); - - //called when the thread is done - public EndThread OnEnd; - - private List Commands; - - //called when we read a new line of text - public ReadLine OnReadLine; - - private Process process; - }; - -} // end namespace vs2005opCpp diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.Designer.cs deleted file mode 100644 index e233368..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.Designer.cs +++ /dev/null @@ -1,180 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class AboutForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm)); - this.btnOk = new System.Windows.Forms.Button(); - this.lnkWebsite = new System.Windows.Forms.LinkLabel(); - this.lblLicense = new System.Windows.Forms.Label(); - this.txtLicense = new System.Windows.Forms.TextBox(); - this.lblCompilerVersion = new System.Windows.Forms.Label(); - this.txtCompilerVersion = new System.Windows.Forms.TextBox(); - this.lblAddinVersion = new System.Windows.Forms.Label(); - this.txtAddinVersion = new System.Windows.Forms.TextBox(); - this.picLogo = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.picLogo)).BeginInit(); - this.SuspendLayout(); - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(775, 284); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 0; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - // - // lnkWebsite - // - this.lnkWebsite.AutoSize = true; - this.lnkWebsite.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lnkWebsite.Location = new System.Drawing.Point(37, 235); - this.lnkWebsite.Name = "lnkWebsite"; - this.lnkWebsite.Size = new System.Drawing.Size(167, 13); - this.lnkWebsite.TabIndex = 4; - this.lnkWebsite.TabStop = true; - this.lnkWebsite.Text = "http://www.opcpp.com"; - this.lnkWebsite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkWebsite_LinkClicked); - // - // lblLicense - // - this.lblLicense.AutoSize = true; - this.lblLicense.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLicense.Location = new System.Drawing.Point(241, 8); - this.lblLicense.Name = "lblLicense"; - this.lblLicense.Size = new System.Drawing.Size(63, 13); - this.lblLicense.TabIndex = 7; - this.lblLicense.Text = "License"; - // - // txtLicense - // - this.txtLicense.BackColor = System.Drawing.Color.White; - this.txtLicense.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtLicense.Location = new System.Drawing.Point(241, 24); - this.txtLicense.Multiline = true; - this.txtLicense.Name = "txtLicense"; - this.txtLicense.ReadOnly = true; - this.txtLicense.Size = new System.Drawing.Size(609, 67); - this.txtLicense.TabIndex = 8; - // - // lblCompilerVersion - // - this.lblCompilerVersion.AutoSize = true; - this.lblCompilerVersion.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblCompilerVersion.Location = new System.Drawing.Point(241, 96); - this.lblCompilerVersion.Name = "lblCompilerVersion"; - this.lblCompilerVersion.Size = new System.Drawing.Size(135, 13); - this.lblCompilerVersion.TabIndex = 10; - this.lblCompilerVersion.Text = "Compiler Version"; - // - // txtCompilerVersion - // - this.txtCompilerVersion.BackColor = System.Drawing.Color.White; - this.txtCompilerVersion.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtCompilerVersion.Location = new System.Drawing.Point(241, 112); - this.txtCompilerVersion.Multiline = true; - this.txtCompilerVersion.Name = "txtCompilerVersion"; - this.txtCompilerVersion.ReadOnly = true; - this.txtCompilerVersion.Size = new System.Drawing.Size(609, 72); - this.txtCompilerVersion.TabIndex = 11; - // - // lblAddinVersion - // - this.lblAddinVersion.AutoSize = true; - this.lblAddinVersion.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblAddinVersion.Location = new System.Drawing.Point(241, 190); - this.lblAddinVersion.Name = "lblAddinVersion"; - this.lblAddinVersion.Size = new System.Drawing.Size(111, 13); - this.lblAddinVersion.TabIndex = 12; - this.lblAddinVersion.Text = "Addin Version"; - // - // txtAddinVersion - // - this.txtAddinVersion.BackColor = System.Drawing.Color.White; - this.txtAddinVersion.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtAddinVersion.Location = new System.Drawing.Point(241, 206); - this.txtAddinVersion.Multiline = true; - this.txtAddinVersion.Name = "txtAddinVersion"; - this.txtAddinVersion.ReadOnly = true; - this.txtAddinVersion.Size = new System.Drawing.Size(609, 67); - this.txtAddinVersion.TabIndex = 13; - // - // picLogo - // - this.picLogo.Image = global::opGamesLLC.opCpp2005.MyResources.addin_logo; - this.picLogo.Location = new System.Drawing.Point(12, 24); - this.picLogo.Name = "picLogo"; - this.picLogo.Size = new System.Drawing.Size(220, 208); - this.picLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.picLogo.TabIndex = 9; - this.picLogo.TabStop = false; - // - // AboutForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(862, 319); - this.Controls.Add(this.txtAddinVersion); - this.Controls.Add(this.lblAddinVersion); - this.Controls.Add(this.txtCompilerVersion); - this.Controls.Add(this.lblCompilerVersion); - this.Controls.Add(this.picLogo); - this.Controls.Add(this.txtLicense); - this.Controls.Add(this.lblLicense); - this.Controls.Add(this.lnkWebsite); - this.Controls.Add(this.btnOk); - this.DoubleBuffered = true; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "AboutForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "About opC++"; - ((System.ComponentModel.ISupportInitialize)(this.picLogo)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnOk; - private System.Windows.Forms.LinkLabel lnkWebsite; - private System.Windows.Forms.Label lblLicense; - private System.Windows.Forms.TextBox txtLicense; - private System.Windows.Forms.PictureBox picLogo; - private System.Windows.Forms.Label lblCompilerVersion; - private System.Windows.Forms.TextBox txtCompilerVersion; - private System.Windows.Forms.Label lblAddinVersion; - private System.Windows.Forms.TextBox txtAddinVersion; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.cs deleted file mode 100644 index cfc1746..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.cs +++ /dev/null @@ -1,85 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: AboutForm.cs -/// Date: 09/23/2007 -/// -/// Description: -/// -/// About dialog class. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.Diagnostics; -using System.Resources; -using System.IO; - -namespace opGamesLLC.opCpp2005 -{ - public partial class AboutForm : Form - { - /*=== construction ===*/ - - public AboutForm() - { - InitializeComponent(); - - // Set the compiler version (we must actually run opcpp with - // -version and grab the standard output). - try - { - Process process = new Process(); - - //NOTE: not using the options file location. - process.StartInfo.FileName = Path.GetFullPath( Paths.GetFullAppPath() + "..\\Release\\opCpp.exe" ); - process.StartInfo.Arguments = " -version"; - - if (opLicenseUtility.FullLicenseFileName != "") - process.StartInfo.Arguments += " -license \"" + opLicenseUtility.FullLicenseFileName + "\""; - - process.StartInfo.RedirectStandardOutput = true; - process.StartInfo.UseShellExecute = false; - process.StartInfo.CreateNoWindow = true; - process.StartInfo.ErrorDialog = false; - - process.Start(); - process.WaitForExit(1000 * 10); - process.WaitForExit(); - - string output = process.StandardOutput.ReadToEnd().Trim(); - - this.txtCompilerVersion.Text = output; - } - catch (Exception) - { - this.txtCompilerVersion.Text = "Unable to query compiler version."; - } - - // Set addin version string. - this.txtAddinVersion.Text = opVersion.GetVersionString(); - } - - /*=== data ===*/ - - public string License - { - set { txtLicense.Text = value; } - } - - /*=== events ===*/ - - // Open our site in a new browser. - private void lnkWebsite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - System.Diagnostics.Process.Start("http://www.opcpp.com"); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.resx deleted file mode 100644 index 8940f45..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AboutForm.resx +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA - CACoDgAAHgsAACAgAAABAAgAqAgAAMYZAAAQEAAAAQAIAGgFAABuIgAAMDAAAAEAIACoJQAA1icAACAg - AAABACAAqBAAAH5NAAAYGAAAAQAgAIgJAAAmXgAAEBAAAAEAIABoBAAArmcAACgAAAAwAAAAYAAAAAEA - BAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA - wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj4d3d3AAAAAAAAAAAAAAAAAAAAAAAAB/////j4iHd3dwAA - AAAAAAAAAAAAAAAAB/////////+PiId3d3AAAAAAAAAAAAAAB4//////////////j4cAAAAAAHd3eHd4 - d3d///////////////cAAAAAB4iIiIiIiI9///////////////cAAAAAB4ZsZkZkZk9v//////////// - //cAAAAACIRmRmxmxm8f//////////////cAAAAACHZGbGZkZG9///d3B3//////hwB3AAAACIxn///4 - ZG9f/4eP/3j////4eP/4cAAACHZG8Hd4bG9v/3iGZ/f////4eGZ/cAAACIZn9wB4Zn8f/3h2x4f////4 - eGxvQAAACHxs9wB///h4iHh2Z4eIj4iIeGRvMAAACIZH9wAAdWd3d398Z/d3dnd3iGZveHdwCHZm9wAH - //h4iIhmRoiI9/iIiMRoiIiACHxm9wAHj/94ZsZsZsZkh/ZGxmZGxkiACIZH9wAH//h4RmRmRmRmiPZG - ZGRkZmeACHbG9wAH//94bGbGRsZs9/ZsZkZmxsiACIRn9wAH//h///92Z///8I//+Gxv//9wCHZs9wB3 - cHN3Q090Z4RzeHdSiGRvB3cACIxm9wB4j49P/3h2x/f////4eEZvcAAACHZH9wB4Zk9//3iGZvf////4 - eGxvUAAACIZm93eIRm8//3h8aIf////4eGZ/YAAACHxsiIiIbG9P/4f//3j/////f//4cAAACIZGZGbG - Rk9///d2F3//////dHdXAAAACHZkZsZkZm9f////////////cAAAAAAAB/bHbGZmbH8v//////////// - cAAAAAAAB3////////h/////////////QAAAAAAAAAd3d3B1JXeP////////////cAAAAAAAAAAAAAeP - ///////////////4cAAAAAAAAAAAAAf///h3B3B3B2eP///4AAAAAAAAAAAAAAeP/4eP//+P//h////3 - AAAAAAAAAAAAAAf//3h2ZmeIZn9f///3AAAAAAAAAAAAAAf//39sdsaIbG8v///3AAAAAAAAAAAAAAj/ - /w9m/4SPdvhY///2AAAAAAAAAAAAAH///39l+IaPdPh3d4/3AAAAAAAAAAAAAH///39m+ISP5IiIh4+H - AAAAAAAAAAAAAH///w9s+IaPdkZkiH+AAAAAAAAAAAAAAA///39n+ISPdoiGeH+AAAAAAAAAAAAAAIdw - dw9k+IaPbPiM6H9wAAAAAAAAAAAAAAAAAH9m/4yPdo/2f39wAAAAAAAAAAAAAAAAAH9kZGaIbGZGeH9w - AAAAAAAAAAAAAAAAAHiHfneIZ3Z2iFZwAAAAAAAAAAAAAAAAAAePj4+I////hgAAAAAAAAAAAAAAAAAA - AAAHd3cHd3d3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/+H////8AAP/4 - AP///wAA//gAAP//AAD/+AAAAf8AAP/4AAAA/wAAwAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAD/ - AACAAAAAAD8AAIAAAAAAHwAAgAAAAAAfAACAwAAAAB8AAIDAAAAAHwAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDgAAAAAQAAgMAAAAADAACAwAAAAB8AAIDAAAAAHwAAgAAAAAAf - AACAAAAAAB8AAIAAAAAAPwAAgAAAAAf/AACAAAAAB/8AAIAAAAAH/wAA4AAAAAf/AAD/gAAAB/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/4AAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAB// - AAD/AAAAH/8AAP8AAAAf/wAA//wAAB//AAD//AAAH/8AAP/8AAAf/wAA//4AAP//AAD//4ID//8AAP// - /////wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAh3d3AAAAAAAAAAAAAAAAAP////iHd3AAAAAAAAAAAAeP////////+HcAAAB4iIiIh/ - /////////3AAAAhmRmZGiP////////9wAAB4ZGRkZoj/+I/////4cAAAeGz4+EaI+HiHj///eIgAAIhm - h3hsiPiGb4//+IZocAB4RoAIj4iH9Gh4/4iGT3AAeGyAB3d3iPZPiHeI9kiIgHhmgAf/iGZGRmT4ZGRm - Zod4xoAH/39GZGxmiGZGxsaHiGaAB/+IiIZoiIiI9miI8HhkgAd3d4eMaHeId4RocAB4xoB/Z4j4hk9/ - //iGyHAAeGb4iGyI+Ifoj///h4iAAIhkZGZGiP93d////3d3AAB4bGZGZPj///////9wAAAAB/iPiI9/ - ////////cAAAAAAAAHd3j////////wAAAAAAAAB//4d3eHeP//gAAAAAAAAAf/iI+PiPf//4AAAAAAAA - AI/3hmZoZoj/9wAAAAAAAACP9/T4z3h3j/cAAAAAAAAA//eGiG9niIf3AAAAAAAAB//39o9vfGaH+AAA - AAAAAAB3h4aIb2j2h/AAAAAAAAAAAAeMiM9njIfwAAAAAAAAAAAA9mZ/bHb2cAAAAAAAAAAAAHeId4h4 - cAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8AAB+AAAAfgAAAHwAAAB8AAAAPAAAABwYA - AAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAAAH+AAAB//AAA//wAAP/8AAD//AAA//wA - AP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A - AAD/AP8A//8AAP///wAAAAgAAAAAAAAAf//4iHAAh3d4////8AB2fkj4j/+HAIaHiId4+HgAdICIZ2eH - ZniGgPh8aI5Wh3aHeIfniHcAhHfI94//eAB453j///8AAAAIiIiP/wAAAAiI6Hj4AAAAD4eIaIgAAAAI - h4jHiAAAAAAIaG54AAAAAACAiAAAAPv/AADwBwAAAAcAAAADAAAAAwAAEAAAABAAAAAAAwAAAAMAAAAP - AADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAAB - AAAAAQAAAAAAAC8vLwAyMjIANTU1ADo6OgA8PDwAQ0NDAElJSQBNTU0AUFBQAFZWVgBZWVkAXV1dAGJi - YgBlZWUAaWlpAGxsbABxcXEAdnZ2AHl5eQB9fX0Ai00BAIxOAACNUAMAjlEFAJBUCACRVgwAk1gPAJRb - EwCWXRYAll4YAJliHgCbZiMAnGYjAJxnJACdaCUAnmooAKBtLQChbzAAonEyAKRzNQCldDcApXU4AKd4 - PQCoej8Ar4ROALCFUACzilYAtItYALaPXgC3kF8AuJNjALqVZgC8mGoAvZpuAL+ccQDCoXgAxaZ/AIGB - gQCFhYUAioqKAI2NjQCSkpIAlZWVAJmZmQCfn58Ao6OjAKWlpQCqqqoAra2tALGxsQC1tbUAurq6AL+/ - vwDGp4AAyq6KAM2ykQDQtpcA07yfANW+ogDWwKQA2MKoANnFqwDaxq4A28iwANzKswDezLYA3824AODR - vQDDw8MAxcXFAMnJyQDNzc0A0dHRANTU1ADZ2dkA3NzcAOXXxQDn28sA6uDSAOvh1ADt49cA7uTZAPDo - 3QDj4+MA5eXlAOnp6QDt7e0A8uviAPPt5QD38u0A8vLyAPX19QD59fIA+vr6AP37+gD+/v4AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAALChA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK - dHBgSEASCwoNEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdHR0dHR0dHR0a1tD - Ow0KCxI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7dHR0dHR0dHR0dHR0dHR0dHBeRz8SCgsQ - EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAASWWh0dHR0dHR0dHR0dHR0dHR0dHR0dHRwaxMAAAAAAAAAAAAA - ChM/Pz8/Pz8/Pz8/PwtDdHR0dHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAJa2FPT09PT09PT09P - UXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0dA0AAAAAAAAAAAA/VhYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dHR0dAsAAAAAAAAAAABHShYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0 - dA0AAAAAAAAAAABHORYWGSEhISEhHhYWGXQKdHR0dD8LCwsLPHR0dHR0dHR0dEgLCwMLOwAAAAAAAABH - ORYWKnR0dHR0VBYWGXQKdHR0Rjt0dHR0O0Z0dHR0dHR0awpwdHR0WRMAAAAAAABHORYWKnAEDQs8VhYW - GXQKdHR0O143ISE3YBN0dHR0dHR0WzxWISErdAoAAAAAAABHORYWKnASAAA7VyEhJXQKdHR0E14yFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXATAAAJb3R0dFsNXllZDWAxFhYvYAtZWV50aFlZQDxU - FhYfdAkAAAAAAABHORYWKXATAAAAAQoKCxALEz8/P2sxFhYvaz8/PxIGCz8/P1tUFhYfdEA/PzwJAABH - ORYWKXATAAAAC3R0dHANblBQT08rFhYqUFBQT24SdFFPUFA2FhYcT1BQT2NDAABHORYWKXATAAAAC3R0 - dGgQYhYWFhYWFhYWFhYWFmI/dBkWFhYWFhYWFhYWFjlHAABHORYWKXATAAAADXR0dGsQYhYWFhYWFhYW - FhYWFmI/dBwWFhYWFhYWFhYWFjlHAABHORYWKXATAAAAE3R0dGsQYyEhISEZFhYZISEhIWM8dCkhISEe - FhYZISEhIUxHAABHORYWKXATAAAAQHBwcHAJa3R0dHQzFhYxdHR0dGsDW3R0dHRUFhYfdHR0dHQNAABH - ORYWKXATAAATCQ0NDQk8CwsKA2AxFhYvYAMKCgtZEAsKCT9QFhYfdAQQDQ0AAABHORYWKXASAAANcWRk - ZHAKdHR0O14xFhYxXxN0dHR0dHR0WTxUFhYfdAoAAAAAAABHORYWKXALAAA7VBYWGXQKdHR0E14zFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXQ/Pz9bVBYWGXQKdHR0O142HBwzYBN0dHR0dHR0WzxW - HBwldAoAAAAAAABHORYWIU9QT09QNxYWGXQKdHR0Rjx0dHR0PER0dHR0dHR0awpwdHR0WxIAAAAAAABH - ORYWFhYWFhYWFhYWGXQKdHR0dDsKCgoKO3R0dHR0dHR0dDsJCw0NEgAAAAAAAABGSxYWFhYWFhYWFhYW - GXQKdHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAAAAANbi0hISEhISEhISEhJXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dA0AAAAAAAAAAAAAAAA/PHB0dHR0dHR0dHR0dFsQdHR0dHR0dHR0dHR0dHR0dHR0dAsA - AAAAAAAAAAAAAAAAABAQEBAQDQMKCgoKCxBrdHR0dHR0dHR0dHR0dHR0dHR0dBAAAAAAAAAAAAAAAAAA - AAAAAAAAAA10dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0azsAAAAAAAAAAAAAAAAAAAAAAAAAAAp0dHR0 - dFsNCwoKCgsTCwsKChJwdHR0dHR0WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAt0dHR0WQtrdHR0dHRZcHR0 - dEgQdHR0dHR0QwAAAAAAAAAAAAAAAAAAAAAAAAAAABJ0dHR0C3A5ISUjJSlmViMlKXQKdHR0dHR0EwAA - AAAAAAAAAAAAAAAAAAAAAAAAAEB0dHR0C3QhFh8fHBZQVBkWJXQKdHR0dHR0DQAAAAAAAAAAAAAAAAAA - AAAAAAAAAEh0dHR0CnQhHnR0ThZQdDMWZ1sJW2h0dHR0CwAAAAAAAAAAAAAAAAAAAAAAAAAAP2B0dHR0 - CnQhHHRITxZQdDMWZ0c8PBASdHR0EAAAAAAAAAAAAAAAAAAAAAAAAAAAEHR0dHR0CnQhHnRIThZQdDMW - TFRPVGc8R3RoPAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R0dHR0CnQhHHRHTxZQdDMWFhYWFjVdO3RbAAAA - AAAAAAAAAAAAAAAAAAAAAAAACmt0dHR0CnQhHnRIThZQdDMWS05LFjNeO3RDAAAAAAAAAAAAAAAAAAAA - AAAAAAAAPBALCQsTBHQhHnRZTxZQdDMWZ29nFjVdO3Q6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - CnQhHHFxTRZQdDEWY3FjFjNeO3QNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXQhGRkZFhZQTxYW - GRkWFjVdE3QLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE2hNLS0tLS9nYS0uLS0uLldGCQsQAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlba2toa2hGXmtqampqakgJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAOzo7EzsAPDo7Ojs6OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA//h/////AAD/+AD///8AAP/4 - AAD//wAA//gAAAH/AAD/+AAAAP8AAMAAAAAA/wAAgAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAA/ - AACAAAAAAB8AAIAAAAAAHwAAgMAAAAAfAACAwAAAAB8AAIDgAAAAAQAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDAAAAAAwAAgMAAAAAfAACAwAAAAB8AAIAAAAAAHwAAgAAAAAAf - AACAAAAAAD8AAIAAAAAH/wAAgAAAAAf/AACAAAAAB/8AAOAAAAAH/wAA/4AAAAf/AAD/gAAAD/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAf/wAA/wAAAB// - AAD/AAAAH/8AAP/8AAAf/wAA//wAAB//AAD//AAAH/8AAP/+AAD//wAA//+CA///AAD///////8AACgA - AAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAVVVVAF9fXwBiYmIAZWVlAG1t - bQBwcHAAdXV1AHh4eAB9fX0AjE4AAI1QAwCOUQUAkFUKAJFWDACTWQ8Ak1kQAJRbEgCVXBUAl18YAJdg - GgCZYh0Am2YjAJ1oJQCeaikAo3EzAKNyNACkczUApXU4AKh5PgCpfEIAtY1bALeRYAC4kmIAwJ5zAMCe - dADDpHwAgoKCAIWFhQCJiYkAjo6OAJKSkgCWlpYAmpqaAJ2dnQChoaEApqamAKurqwCtra0AsrKyALa2 - tgC4uLgAvLy8AMyxjwDPtZUA0biZANbApQDYw6kA2MSqANrGrgDcybEA4dG9AMLCwgDGxsYAycfFAMnJ - yQDOzMgAz8/PANTRzgDZ1M0A3NbOANfU0ADW1tYA2dXQANra2gDe3t4A49TBAOTVwwDk1sQA5tnIAObc - zwDo3MwA49vQAOTd0gDm3tUA4t7ZAOvh1ADs4tUA7ObeAODg4ADl5eUA7ejhAOnp6QDt7e0A9e/pAPHx - 8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLScnJykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF////// - /19IMSkmJycAAAAAAAAAAAAAAAAAAAAAAAAJSF////////////////9aPi0DAAAAAAAACS8xMzEzMTMx - CV3//////////////////ycAAAAAAABSGBUVFRMVFRU+Qf//////////////////LQAAAAAAKToKCgoK - CgoKDUA///9dSEhd////////X0gmAAAAAAApOgoVTExMNwoMPz//SiYxMyZK/////18JMTMtAAAAACk6 - ChcvKQNRCgw/P/8vSRUSSS3/////SjEaEkwpAAAAKToKFy8AAERMTC1BSClJCgpJKEhdX0ozMRUKPSYA - AAApOgoXLQAABigpJiczMVsKClgzMycGMzFdFQo9MzMtACk6ChcvAAAp//8tUhQVEgoKEhMTUj4XFRIM - ChIVEjwpKToKFy0AACf//y1JCgoKCgoKCgpSPg0KCgoKCgoKOi0pOgoXLwAAJl//L0BMTDwKCjpMTEAt - TExMEgo1TExSACk6ChctAAAGLSkGLScDSQoKSQMoLTEpCTEVCj0DAAAAKToKFy8AJlAaHT5B/y9JCgpJ - Lv////9KMRUKPS0AAAApOgoXWjEzUQoMQT7/L0ggIUkv/////1ovIyFWKQAAACk6CgwVFRISCgxBQf9f - CSgoCV///////wMnKQkAAAAAKUwKCgoKCgoKDEE+////////////////JwAAAAAAAAAAJ1JMTExMTExM - LUr///////////////8tAAAAAAAAAAAAAAAAAAEnKSkx/////////////////wAAAAAAAAAAAAAAAAAA - J////0EnKSctLScpM/////9KAAAAAAAAAAAAAAAAAAAp//8+LVFMTFJKTE8tSv///zMAAAAAAAAAAAAA - AAAAADH//ydRChMSFUwMEj5B////LQAAAAAAAAAAAAAAAAAASv//KUwSXz0V/x42CSYv//8nAAAAAAAA - AAAAAAAAAABf//8nTBJBPRX/HiJMTEEt/ycAAAAAAAAAAAAAAAAAKf///ylMD0g9E/8eDRMMNyf/LQAA - AAAAAAAAAAAAAAAAJiYpBT0SSD0U/x42/x03Kf8AAAAAAAAAAAAAAAAAAAAAAAAmTAw4JBReGCA4Fzcn - WgAAAAAAAAAAAAAAAAAAAAAAAABSHRoaH1EaGhoaTAIFAAAAAAAAAAAAAAAAAAAAAAAAAAkpLS0nJi0t - KS0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8A - AB+AAAAfgAAAHwAAAB8AAAAPAAAABwYAAAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAA - AH+AAAB//AAA//wAAP/8AAD//AAA//wAAP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAA - AAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAACNUAMAj1IHAJBVCgCUWxIAnGYjAJ9s - KwCgbCwAo3IzAKRzNgCmdz0Apng9AKl+SACtgUkAr4ROALKJVQC2j14An4dpAKaLaACnjGkAqIxpAKiO - bQC3kWAAs5FmALiSYgC4k2QAupVmALKTawC1lW0Au5ZoALyXagC8mGsAs5dzAMCfdgCXjoUAlpWTAJeX - lwCdmpYAmJiYAKabjgClnI8ApZ2SAKCcmAC/qY0AoqCdAKikngCwpJQAoaGhAKSioQClpaUAqaelAKmp - qQCtra0AsKmhALe3twC5ubkAvru4AL29vQDKrooAy6+MANG9pADDwL0AwsLCAMXEwwDGxsYAzMzMANrS - yQDR0dEA1NTUANra2gDh2c8A4eHhAObm5gDu7u4A8/PzAPb29gD7+/sA/v7+AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAADMAAAAAAAAAAAAAAAAAAC9M - TExHPjYzMwAAAC8TExMTOUxMTExMTEwAAAApAhYPAj5MPj5LTEw+JgAAKQQvJRg9PhwcPkxFExgAACkE - MwBALxQLChMyFAwJFCopBDYATDkWBgYWPRgKBRYtKQQvJREvMxYcL0Q5EhAAACkDIBwCQEgpKEhMSyIo - AAAsGBYWFj5MTExMTEwAAAAAAAAAJD4+QUFBSUxMAAAAAAAAAEREKx88HT5MRAAAAAAAAABLPh9GOxg1 - Pj0AAAAAAAAAOS8dQjsNDy42AAAAAAAAAAAAIRg7Cw0pLwAAAAAAAAAAAAAzADM2AAAAAAAA+/8AAPAH - AAAABwAAAAMAAAADAAAQAAAAEAAAAAADAAAAAwAAAA8AAOAPAADgDwAA4A8AAOAPAAD4DwAA/T8AACgA - AAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEyhQUFN0CAgKxBgYGiRcX - F2AvLy84LS0tEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycn9f// - ////////+Pj4/8jIyP+Xl5f/ampq/z4+Pv8XFxfpAAAAwQAAAJkPDw9wIyMjSS0tLSAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAS0tL///////////////////////////////////////////////////////b29v/rKys/35+ - fv9PT0//ICAg+gsLC9EEBASqBgYGgSEhIVkqKiowMTExCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAcHBwYgICA//////3//////f39/f39/f3//////f39/f39/f3//////f39/f// - //3//////////f////3/////////////////////7+/v/8DAwP+RkZH/ZGRk/zMzM/8YGBjiBgYGugAA - AJIbGxttLy8vGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIXFhYWMRwc - HC8bGxsvGxsbLxsbGy8bGxsvHBwcLxcXFysAAABld3d3/8jIyP319fX//////f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////////f/////////9/////f// - //////////////////+FhYX/ISEhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpKGQAA - AO2Bg4b/nqGm/5mdov+ZnaL/mZ2i/5mdov+ZnaL/mZ2i/5qeov+cn6T/jJCU/4aKjv8XFxf/oqKi//// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////9ycnL/RkZGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAABAQE9f///////PD/69a+/e3awv3t2sL/7drC/e3awv3t2sL/7drC/e3awv/t2sL97drB/erU - uv3/////ERER/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////88PDz/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhI3pKer//nq2f1vJAD/fjkA/X45AP2AOwD/fjkA/X45AP2AOwD/fjkA/YA7 - AP9+OQD9fTgA/XImAP3/////Hx8f/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////8WFhblAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhJRzdLY/86tg/+CPwD/jE4A/4tNAP+JSgD/iUoA/4lK - AP+JSgD/iUoA/4pLAP+MTgD/i00A/344AP//////Hx8f//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/iUsA/YpM - AP2QUwj/jlAE/Y5QBP2OUAT/j1EG/Y5SBf+ISQD9iUsA/X44AP3/////Hx8f/f////3//////f39/f// - //11dXX/HBwc/SUlJf0kJCT/Hh4e/XBwcP3//////f39/f39/f3//////f39/f/////9/f39/f39/f// - ///ExMT9Ghoa/SwsLP8AAADnAAAAwwAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gy - i/+CPwD/iEcA/51qKP///////////////////////////+3j2P9/OgD/i00A/344AP//////Hx8f//// - /////////////6SkpP9fX1///////////////////////19fX/+enp7///////////////////////// - //////////////////8BAQH///////////////////////Dw8P8AAAClAAAAAAAAAAAAAAAAAAAAAAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAA6QsLC70AAADJf4KG//Ljz/96NAD9h0cA/Xs0 - AP3/////Hx8f/f////3//////////VhYWP3v9fz/vpZl/YpKAP2KSwD/uI9b/fr///1PT0///////f39 - /f3//////f39/f/////9/f39/////cbGxv97foL99eTQ/YVDAP+OUQP9kFUK/f////8AAADSAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////CwsLowAAAAAmJiYUi42R//jq - 2P+DPwD9jU8C/oNBAP3/////Gxsb/f////3//////////WNjY/3o7vf/t4xX/YA9AP2CPwD/soVM/fD3 - //1aWlr//////f////3//////f39/f/////////9/////dHR0f92en798eDK/Xw2AP+FRAD9iEcA/f// - //8AAADPAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////EBAQqAAA - AAAAAAAAFhYW///////////9/////f////3e3t7/RUVF/fHx8f2+vr7/0dHR/TMzM/3p7/f/uY9b/YNB - AP2FRAD/tIhR/fH4//0qKir/0tLS/b6+vv3Y2Nj//////ff39/+7u7v9yMjI/Y6Ojv9zdnr98uLM/X86 - AP+ISQD9iksA/f////8AAADYHx8fIxQUFDAVFRUqAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xm - Iv//////Dw8PqAAAAAAAAAAAPz8/JwAAAOYrKyv/Hx8f/xwcHP9KSkr/VFRU/1FSU/+EiIz/f4OI/4CE - if//////t49c/4VDAP+FQwD/s4hS//////+BhYn/f4OI/4SIjP9WV1f/Dg4O/yQkJP+Hio7/gIOI/3yA - hf/h6PH/7N7L/386AP+KSwD/i0wA//////+coKX/lpqf/5yfpP+Ympz/AAAA7QAAAAAZGRlPyM3U/9Gy - i/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAAAAAAMP//////////f////3/////Ly8w/f// - //3o0rb/7drC/e3awv3m18T/pXY6/YZFAP2HRwD/pHI1/ebXxP3t2sL/7drC/ejStv3/////Tk9P/f// - ///r17397dnB/e3awv/n1sH9xqeB/YNBAP+JSgD9i00A/ebYx//r2MD97drC/erVuv////39vb/B/xkZ - GUoZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAACIiIu///////f39/f// - //35+fn/RkhK/f//9v1wIwD/fjkA/X45AP2AOwD/hkUA/YpMAP2MTgD/hkYA/X45AP2AOwD/fjkA/W8i - AP3/+vD/d3p8/f////92LAD9fDcA/YA7AP9+OQD9gj8A/YxOAP+KTAD9iUoA/YA7AP9+OQD9fjkA/XYs - AP/KqH39yc7V/ycnJ1AZGRlPyM3U/9Gyi/+CPwD/iEcA/5xmIv//////Dw8PqAAAAAAAAAAAAAAAAERE - RP/////////////////5+fn/REZJ////+/96MgD/iUoA/4lKAP+JSgD/i0wA/4xOAP+MTgD/i0wA/4lK - AP+JSgD/iUoA/3oyAP///fT/c3V4//////9/OQD/iEgA/4lKAP+JSgD/iksA/4xOAP+MTgD/i00A/4lK - AP+JSgD/iUoA/387AP/PsIj/xsvS/ysrK08ZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAA - AAAAAAAALCwsFHR0dP/////9/////f////35+fn/RUdJ/f///v2BPAD/jlAE/Y5QBP2PUwf/jE4A/YlL - AP2LTAD/i00A/ZBTCP2OUAT/jlAE/YE8AP3///j/fX+B/f////+GSAD9jU4B/Y5QBP+PUgb9jVAF/YpL - AP+KTAD9iksA/Y9UCf+OUAT9jlAE/YVDAP/UtpD9z9TZ/yAgIFMZGRlPyM3U/9Gyi/2CPwD/hkYA/Zxm - Iv3/////Dw8PqAAAAAAAAAAAEhISN6+vr//////9/////f////3/////AwMD/f////3//////////f// - //3/////uJJh/YNBAP2FRAD/tIpX/f////3//////////f////3/////AAAA/d/f3//////9/////f// - ///////96uDS/X86AP+ISQD9jE4C/f//////////////////////////TU1N/zIyMiQZGRlPyM3U/9Gy - i/+CPwD/iEcA/5xmIv//////EBAQqAAAAAAAAAAAAAAAlSwsLf83OTv/NDY4/zg6PP8AAAD/wcHB/yIi - Iv8eHh7/JSUl/wAAAP/y+f//uI9a/4VDAP+FQwD/s4dQ//v///8AAAD/JSUl/x4eHv8aGhr/6enp/z09 - Pf8bGxv/ISEh/wQEBP+GiY7/8eDL/386AP+KSwD/iksA//////8AAAD0CgoKvhEREcMAAADBODg4UAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dg4OpwAAAAATExMHWFla///////////9/////f// - //3/////FhYW/f////3//////////Wpqav3n7vb/uY9b/YNBAP2FRAD/tIhR/e/2//1hYWH//////f// - //3//////////f/////////9/////d/f3/91eHz98uLM/X86AP+ISQD9iksA/f////8AAADNAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAAuBkZGSIAAABLgYWJ//He - yP9vIQD9ezQA/W4gAP3/////Hx8f/f////3//////////V5eXv3o7vb/uI5Y/YI/AP2EQQD/s4ZO/fD3 - //1VVVX//////f39/f3//////f39/f/////9/f39/////crKyv92eX798uHL/X44AP+HRwD9iUkA/f// - //8AAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xnJP//////j5KX/5mc - of+RlZn/2+Lr/+/h0f9/OgD/i00A/344AP//////Hx8f/////////////////1lZWf/x9v7/totV/303 - AP99OAD/sINL//r///9PT0///////////////////////////////////////8TExP99gIT/8eDK/3cv - AP+BPgD/hUUA//////8AAADSAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/h0gA/ZZe - F/3m2Mb/7drB/e3awv3t2sL/6NfB/cepg/+CPwD9iksA/X44AP3/////Hx8f/f////3//////////ZmZ - mf1sbGz//////f////3//////////WxsbP2Tk5P//////f39/f3//////f39/f/////9/f39/////f// - //8PDw/9//////////////////////v7+/8AAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlQys/W/8+w - iP2CPwD/ikwA/YdIAP2AOwD/fjkA/X45AP2AOwD/fjkA/YNBAP+KTAD9iksA/X44AP3/////Hx8f/f// - //3//////f39/f////1jY2P/FBQU/R8fH/0fHx//FBQU/V9fX/3//////v7+/f39/f3//////f39/f// - ///9/f39/f39/f////+Dg4P/AAAA1xsbG9QbGxvVGhoa1wAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAPDw9KxsrQ/9e7mP97NAD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iEkA/3s0 - AP//////Hx8f//////////////////////////////////////////////////////////////////// - //////////////////////////////////94eHj/Ojo6CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAuLi4MS0xN//////6gbSr/i00A/Y5QBP2OUAT/jlAE/Y5QBP2OUAT/jlAE/Y5Q - BP+OUAT9jU8C/YNBAP3/////Gxsb/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////9CQkL/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEgIaHiP////////////////////////////// - /////////////f/////////9/////f////3d3d3/Jycn/f////3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////8aGhroAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vL0kAAACtEhISxBER - EcIRERHCEhISwgwMDL8AAADoJCQk/x8fH/8fHx//Hx8f/xsbG/8xMTH///////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8GBga9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5///////////////9/////f////3//////////f// - //3//////////f////3//////////f////3//////////f////3//////////f39/f3//////f39/f// - ///9/f39/////f////8ICAiTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFxfo//////////////////////// - ///Y2Nj/JSUl/x0dHf8fHx//Hx8f/x8fH/8cHBz/Z2dn/yEhIf8eHh7/Hx8f/xoaGv9DQ0P///////// - /////////////////////////////9fX1/8jIyNqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PT3//////v// - ///9/f39/////dTU1P0EBAT//////f////3//////////f////3/////tbe5/f////3//////////f// - //3ExMT/MzMz/f////3//////f39/f/////9/f39/////aOjo/87Ozs+AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw - MAxra2v//////f/////9/f39/////RsbG/3/////wJpu/YpMAP2OUgX/jlIF/Y5SBf2NUAP//////d7M - tf2FRAD/j1QI/YlJAP3/////Ghoa/f////3//////f39/f/////9/f39/////XJycv9SUlIUAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACEhITOampr//////////////////////x0dHf//////h0YA/4RCAP+KSwD/iUkA/4lJ - AP96MgD/3824/97Ouf99NwD/hUMA/4NBAP//////ICAg/////////////////////////////////0FB - Qf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHlrFxcX//////f/////9/f39/////R8fH/3/////jE0A/YVE - AP3//////////eLTwf1zKAD/3cqz/f////26lmj/dCgA/f////3a3N7/Dw8P/eDg4P319fX//////f// - ///9/f39/////xcXF+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODoL19fX//////f/////9/f39/////R8f - H/3/////jE0A/YNBAP3/////p6uw/eLNtP1zKAD/3cqz/f////2zjFn/dCgA/f////2mq7H/goaK/Xl8 - gf02Nzj/Pz8//f/////+/v79/////wUFBb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKj///////////// - /////////////x8fH///////jE0A/4NBAP//////pait/+PPtf9zKAD/3Mmy//////+zjFn/eTEA/9zJ - sv/s2sX/8d7I/+3Zvv//////a2xt/62trf///////////xUVFZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P - D9D//////f39/f/////9/f39/////R8fH/3/////jE0A/YNBAP3/////pqqv/ePPtf1zKAD/3cqz/f// - //2zjFn/g0EA/XUrAP1zKAD/cykA/XUsAP24jVb/6vD4/VxcXP/////92dnZ/ygoKGkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACwsLP/////////////////////9/////SQkJP3/////jE0A/YNBAP3/////o6es/ePP - tf1zKAD/3cqz/f////2zjFn/ejIA/dfCpv3cyrL/18Ko/XoyAP29lmT/5evz/WBgYP/////9paWl/zw8 - PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGIoAAACuBQUF1BcXF/tHR0f/hoaG/w0NDf//////jE0A/4NC - AP//////t7zB/+HNtP9zKAD/3Mmy//////+zjVr/dCoA///////2/f///////3MoAP+9lmT/5Ory/2Fh - Yf//////dHR0/0lJSRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioqEgAA - AM//////jE0A/YZEAP3//////////d/MuP10KQD/3cqz/f////23kWL/dSoA/f////3//////////XMo - AP29lmT/5Ory/WJiYv/////+QUFB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAoKCsL/////hUQA/YE9AP13LgD/di4A/Xw2AP14MAD/3826/djCqP10KQD/hUQA/Xkw - AP12LgD/eTEA/Xw3AP23jVj/6fD3/Wpqav//////JSUl6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKP/////2r6f/6V1Nv+qfEH/qnxB/6p8QP+ndTb//////+nc - yv+icC//q31C/6p9Qf+qfEH/qn1B/6VxMv/77Nn/0dTX/wAAAMMEBATNBgYGswAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJSREGBgb///////////////////////// - ////////oKGi//r9///////////////////////////////////e4OT/AAAA7QAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTU1MOBQUFggEB - AZUEBASTBAQElAMDA5QAAACSKysrXQcHB4wBAQGUBAQElAQEBJQEBASTAwMDlAAAAJUPDw90AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP/4D////wAA//gAH///AAD/+AAAH/8AAP/wAAAAfwAA4AAAAAB/ - AACAAAAAAH8AAIAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAPwAAAAAAAAAfAAAAAAAAAB8AAACA - AAAAHwAAAMAAAAADAAAAwAAAAAEAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAA - AAAAwAAAAAEAAACAAAAAHwAAAAAAAAAfAAAAAAAAAB8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAA/8AAAAA - AAAH/wAAgAAAAAf/AADAAAAAB/8AAP+AAAAH/wAA/4AAAAf/AAD/gAAAB/8AAP8AAAAH/wAA/wAAAA// - AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/+AAAH/8AAP/8 - AAAf/wAA//wAAB//AAD//AAA//8AAP/+AAH//wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwFAAAALwoK - CgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcH - BzTAwMD/s7Oz/3p6ev9lZWXeSUlJtSMjI44CAgJlBgYGPQ4ODhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAgICWf/////////////////////////////////////s7Oz/vr6+/5CQkP9ra2vvVVVVxjIy - Mp4KCgp1BgYGTQsLCyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYOAgICGQQE - BBgEBAQYBAQEGAAAAA8AAACO8vLy//////////////////////////////////////////////////// - ////////////////////////0dHR/66urv80NDTuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD0/3dPc - 5//Y4e3/1t/r/9bf6//W3+v/1uDr/9Xf6v/AytX/Ojo6//////////////////////////////////// - /////////////////////////////////////////////2NjY8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAB - AnD/////lFAA/5JRAP+TUwL/k1MC/5NTAv+TUwL/k1IB/5BIAP/Z4+7/t7e3//////////////////// - ////////////////////////////////////////////////////////PT09lgAAAAAAAAAAAAAAAAAA - AAAAAAAALC8zjPvp0f98NQD/iEgA/3s0AP97NAD/ezQA/345AP+JSgD/gjwA/9Da5/+9vb3///////// - ///+/v7/0dHR/9HR0f/+/v7//////////////////////////////////////+3t7f8AAAB9AAAAAAAA - AAAAAAAAAAAAAAAAAAArLzOK/evV/303AP+QUwj/////////9///////4dG9/4A7AP+EPwD/0Nrn/729 - vf//////5eXl/0tMTf+/ydT/v8nV/0lKS//j4+P///////////////////////////8zMzP/vsfR/9rj - 7/+rrbD/KSkpRAAAAAAAAAAAAAAAACsuM4r969b/fDYA/55iFv+3w9H/DRATeAAAALb/////bh8A/3Yp - AP/W4O3/vb29//////+RkpP/+v3//4g/AP+IPwD//////4uMjf//////////////////////3d3d/7fA - yv+hYBD/hDwA//////8dICOGAAAAAAAAAAAAAAAAKy4ziv3r1v98NgD/nmEV/7vEz/8AAAAAAAAAVf// - ////9ub////y/4+RlP/W1tb/5OTk/21tb//u8vX/fTQA/300AP/y9Pb/aGlq/97e3v/7+/v//////9bW - 1v+vr6//rbbC/5VVBf95MgD////y/wAAAI8AAAAQCQkJCgAAAAArLjOK/evW/3w2AP+eYRX/u8TP/yYm - JgUAAAAAAAAAoIGDhv9vcnX/e3t7/2lrbP++x9P/ucTQ//////97NAD/fDQA//////+6xNH/vsfT/2Zn - af9ERET/v8jT/7O9yP//////j1EE/3s0AP///vf/1ODw/9rj7/+5vMD/ICAgTysuM4r969b/fDYA/55h - Ff+7xM//KioqBgAAAAAlJSWN//////////+BgoT//////4Y+AP+TUwP/ikoA/4pLAP+KSwD/ikoA/5NT - A/+GPgD//////8/Z5v+STQD/klIB/4xNAP+JSwD/iksA/4lLAP+TUwP/iEEA///54f8yNTmOKy4ziv3r - 1v98NgD/nmEV/7vEz/8pKSkGAAAAAE5OTrn//////////3p8fv////z/bR0A/3s0AP99NwD/jE4A/4xO - AP99NwD/ezQA/20dAP/7+fb/zNfm/3grAP97MwD/ezQA/4pLAP+MTgD/gDsA/3s0AP9vIQD/+eTL/zk8 - QIsrLjOK/evW/3w2AP+eYRX/u8TP/ygoKAYAAAAAZWVl3///////////ra2u/8zNzv//+Oj///7z//Xu - 5P9+OQD/fzoA//Lp3/////T///jo/87O0P9/goX////0///47P//////jE0A/387AP/axq7///////// - 8///////FRYXfCsuM4r969b/fDYA/55hFf+7xM//AAAAABISEhpeYGL/i5Od/4mRm/9SUlL/j4+P/3R2 - ef8oKy//+v///383AP9+NwD//v///yUoLf9ydXj/jY2O/7e3t/9qbXD/TlBT/73J1/+WWAn/ezQA//// - +f8AAAa/KSsvdRUWF28AAAAAKy4ziv3r1v98NgD/nmEV/7O7x/8AAAAXAAAAgv////+fYxb/qm4j/9be - 6P/Hx8f//////6Chov/t8fT/dywA/3csAP/x8/T/mpuc///////////////////////r6+v/sbrF/5BN - AP90KQD///7t/x8iJX4AAAAAAAAAAAAAAAArLzOK/evW/3w2AP+WWxD//////8vV4P/Q3Or//////3gv - AP+AOAD/0Nrn/729vf//////kJGS//Hz9f/Bklj/wJJY//X19v+Ki4z//////////////////////9zc - 3P+ts7r/1q17/7+RV///////FBYYhwAAAAAAAAAAAAAAACwwNIv76NH/fzoA/4lKAP+NTQD/k1MC/5NT - A/+KSQD/iksA/4Q/AP/Q2uf/vb29////////////RUZG/3h+hv94fob/Q0RF//////////////////// - /////////////zU1Nft9g4rmhoyU605PUuBCQkIXAAAAAAAAAAAAAAAAEhQXgv////9uHwD/fTcA/3s0 - AP97NAD/ezQA/3w1AP99NwD/dikA/9bg7f+6urr///////////////////////////////////////// - ////////////////////////V1dXwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIThIiN//// - //////T////2////9/////b///Xp///16f////L/hIaJ/9vb2/////////////////////////////// - //////////////////////////////////9AQECbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAzMzMSFhgadDE0N3sxNDd6IyUocQ8RFeV7foH/bnB0/2dqbf+vr6////////////////////////// - /////////////////////////////////////////////xoaGm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR07f///////////////83Ozv9kZmn/bnBz/21v - cv91d3j/g4OE/2tucf9maGv/srKy///////////////////////4+Pj/ISEhRQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkpL///////////+8vLz/homP//// - +v//9er///Xq/////P/q6+z///bq////9/91d3r/5OTk/////////////////8fHx/8nJycbAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NFMHBwf///////////2Nm - aP////b/axsA/3oxAP92LQD/gT0A//r38v9rGwD/eSoA/9rk8P/MzMz/////////////////lJSU/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAg87+/v//// - ////////bnF0//7z5v93LAD///////nz7/94MgD//////5hjHv/v28L/S1Ja/1xeYf+SkpP///////// - //9wcHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AGL///////////////9ucHT//vTm/3swAP/Q3Ov/8eXX/3kyAP//////lmAa/8Oief////z///3w/9fa - 3P9zc3T//////11dXcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAJSUlj////////////////3V3ev/+9Ob/ezAA/9Th8P/x5df/eTIA//////+ebCv/ejIA/3gw - AP9uIAD/6c6u/29zeP//////QUFBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAkJCR6YGBg221tbf6mpqb/TlBT///67f97MAD/4PD///Xs4f95MgD//////5Zf - GP/cybH//////5lkHv/iyan/cXV7//////8cHBxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOK///1/3IoAP/t39D/x6uG/3s1 - AP//////ikoA/7WOXP/n2cr/iUoA/+HHp/+BhYv//////yEhIUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYHCW3/////oGMW/5td - D/+cXhD/uotQ//////+ZWgv/oWYb/5teD/+cXg/////8/ygrLu1RUVH3KysrHQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9 - Pt61vcf/rLS//662wP+boqr/d3l8/7G5w/+stL7/rLS+/7W9x/9eYWT9NjY2FQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8f////AD///wAAf8AAAB+AAAAfAAAAHwAA - AB8AAAAHAAAABwQAAAECAAAAAgAAAAIAAAACAAAABAAAAQAAAAcAAAAHAAAABwAAAH8AAAB/gAAAf/wA - AH/8AAB/+AAA//gAAP/4AAD/+AAA//gAAP//gAD//4AA///AA///////KAAAABgAAAAwAAAAAQAgAAAA - AABgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCiYAAABWAAAAKgAA - AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrK33//////////9XV1f+pqan/jY2N4WxsbLhFRUWQFRUVZwAA - AEAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA0AAAANAAAAATAx - NKb//////////v////3////+///////////////////////////o6Oj/ubm5/5ycnPJycnLTCwsLDwAA - AAAAAAAAAAAAABgZGTTExsv/2dPN/9XRzP/V0cz/1dHN/8zHwf+hnpz/ra6v/f////////////////39 - /f3//////f39/f///////////////v/////Pz8//AAAAAAAAAAAAAAAAAAAAAGFocafEj03/fDIA/Xou - AP96LgD/ei8A/XswAP/Zt47/lZqg/f////////////////////3//////f39/f///////////v7+/f// - //+SkpLtAAAAAAAAAAAAAAAAAAAAAGtyfKezfzv/hkUA/uzXv//z2r3/1ryY/nYtAP3Vt5L9mJ2j/v// - //2ZmZn9m6Ks/Zujrf6Xl5f9/////v39/f3+/v79/////m5vcf6gqrb8jZGX6h8fHx4AAAAAAAAAAGlw - eqezfzz/l1YF/5Ger+cAAABQ2dna/4MzAP/gwJr/nqOo/f////+co63/qGoe/6ZnGf2cpK7//////f// - ////////7/Dy/bOwqv+FNgD//+fD/wgMElkAAAAAAAAAAGlweqezfzz/llQC/6Krtt0AAAAAUVJUzK+5 - xf+Sl53/aWpr/aKpsv+wwNP/oGcd/55iGP2ywtX/nKOs/Y6Pj/+OkZX/jJWg/djb3f93KQD/7de6/0tX - ZcRaX2akIiIiLWlweqezfzz/llQC/6Stud4AAAAAAAAAWP/////////9pKWn/reDQP27j1j9i00A/YtM - AP67j1j9tYA+/rm8wv3v2sH9soFC/q9/Rv2BPwD9nGck/sOUWf/qxZT/bXJ5rmlweqezfzz/llQC/6Su - ud4AAAAAPz8/if//////////qKip/Yc4AP+IQgD/h0cA/4dIAP2IQgD/hDUA/cnO1f/ev5f/gjcA/YRA - AP+KSwD/g0AA/YtCAP+8gzz/d36HrWlweqezfzz/llQC/6StuN4AAAAALS0vu6uxuf+Tlpr/dHV3/aKs - uP/W6P//n2Ye/51hGf3Y6///oau3/Wxtbv+Pk5n/maWz/fP4/f92KQD/6NO4/6CuwPGxuMHxOzs7WWlw - eqezfzz/l1YE/4+aqN0AAAAAzs/P/8SUW//2483/mp2g/f////+cpK//l1gI/5VTA/2cpa///////f// - ////////8PL0/a2ppP9wHgD/7NCr/wkOFFIAAAAAAAAAAGlxe6ezfzz/i0oA/vP2+v/Kx8T/7+fc/m0e - AP3Ssov9mJ2j/v////2AhIn96tCv/erPrv5+gof9/////v39/f3////98fLz/qupp//ty6D//////woM - D1kAAAAAAAAAAGxzfaq0fTf/eDEA/XYpAP96LgD/dCkA/XcuAP/SsYn/l5yj/f/////p6en/jJCU/4yQ - lf3n5+f//////f///////////////zY3OL4kKS9ZFRcZWAAAAAAAAAAAAAAAAB4gI1z/+e//8ta0//HX - uP/z2br/3sSl/tu/nf3v49T9jY+R/v////3////9/////f////7////9/v7+/v39/f39/f39/////zk5 - OXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDxI0ISUrWCQoLlEAAACKqq60/5aboP+bnqD//////f// - //////////////////3//////////f///////////////w0NDUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAiIiJt//////////+0tLT/maKs/Z+os/+hqrb/iIuP/6OsuP2Chov/2tra/f// - ////////8vLy/w0NDR8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFCZ//////// - //2Xn6r9omEQ/otEAP2EOwD9/fXq/XosAP7mxp/9k5ec/v////3////9wMDA/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enrB//////////+gqbX/hjwA/f////+eaif//////45P - Af32////bHR9/ZeZm///////mpqa9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAChoaHs//////////+hqrb/i0EA/en5//+dZyH//////5NaEf2hbCn/tn88/cW+s//W19r/kJCQyQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYWHeoqKi/srKyv+jrLf/jEMA/vj/ - //2gayj9/////Y1QBP7////9rH5F/sq3nv3Mz9P/cHBwnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACps77xhTkA/8qshf+AOgD/9+/n/3kwAP3Eo3r/kFED/dPB - qP/q7fH/RkZGeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABdYGS6//jl/+nSs//v2b//9PX0//Dav//q1Lf/9+DD/7a2tf8AAABXGBgYIwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNwQHDDkAAwg4AwQGKQEF - CTkDBws4AQQJPBMUFQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPw//wD8AH8AwAAHAAAA - DwAAAA8AAAADAAAAAwAIAAAACAAAAAgAAAAIAAAACAADAAAAAwAAAAcAAAAfAIAAHwDwAB8A8AA/APAA - PwDwAD8A8AA/AP4APwD+AD8A/wD/ACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAALCwsXUpKSn0WFhZRAAAALAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAIaKkMb/////////////////////09PT/7e3t+OPj4+6Z2dnlxQU - FDEAAAAAAAAAAF1gZZDOsIr/vp94/76gev+uj2j/qa60//////////////////////////////////// - //8YGBhHAAAAAAAAAACTkYzJhDQA/82jbP/DlFn/cR0A/8zW4///////rrO6/6yyuP////////////// - //+6vsP/WmFoqwYGBgMAAAAAjYuIxJxSAP9aan+YgYeQxsWQTv/Ax8//xM7a/7OKWP+1jVn/t8HN//// - ///g6fT/mXtU/+m4ef8AAAo+AAAAAI2Kh8SbUQD/dH6KhAAAAC3i6fH/lZaZ/6B/V/+kcjL/pHAw/59/ - V/+Ynqf/nHtU/6t8Qv+eZyD/xKV+/4WDg8KNiofEm1EA/3F6h4QJCgpK/////72/wv+/jUz/mF0W/5Zd - Ff++jUz/yNDb/72LTf+gaib/kFMJ/9yrbP+enZrNjYuIxJxSAP9ZZ3qBUVdepZt+Wf+doqf/l6Oz/7qR - X/+6kV7/jJio/93e3v+tuMX/pYdi/9imaP8ADR1jCAkKC5KNiceDNwD/xKuK/8Smf/9zHAD/0dvo//3/ - //+LgnX/i4J2//P09v///////////4qCef/Jva7/CQsOGgAAAABxdXmr5Ld+/8+hZf++kFX/u4xR/7rA - yP////////////////////////////////8YGRtCAAAAAAAAAAAAAAAAAAAAAAgOFjMBBw8iiI+X+9HX - 3//AxMn/v8XN/8THy/+4vsX/9vb2////////////AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX1 - 9f/c4OT/vKOE/7B8O//ZybT/toJD/7S7xP//////6urq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB7/////xcvT/7J/QP/y9/3/yaqD/7eLVf+oqa3/xMbI/9DR0fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAGBgY75ubm/6yyuv+5iEv/5uvz/82xjf+mdjn/sn8//7Gllv++wMPNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAt8MaR/7yIRv/lyaX/qm8l/76HQv+7tKr/cXJ0oAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFGTXBaYGh8QkdNc1lha3tcY2yAISIlNAAAAAAAAAAAAAAAAAAA - AAAAAAAA8H8AANADAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAcAAIAHAADgDwAAwA8AAMAP - AADwDwAA+B8AAA== - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.Designer.cs deleted file mode 100644 index 2369498..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.Designer.cs +++ /dev/null @@ -1,129 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class AddinLockedForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AddinLockedForm)); - this.btnOk = new System.Windows.Forms.Button(); - this.btnUnlock = new System.Windows.Forms.Button(); - this.lnkWebsite = new System.Windows.Forms.LinkLabel(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.picLogo = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.picLogo)).BeginInit(); - this.SuspendLayout(); - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(430, 105); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 2; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - // - // btnUnlock - // - this.btnUnlock.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnUnlock.Location = new System.Drawing.Point(349, 105); - this.btnUnlock.Name = "btnUnlock"; - this.btnUnlock.Size = new System.Drawing.Size(75, 23); - this.btnUnlock.TabIndex = 3; - this.btnUnlock.Text = "Unlock"; - this.btnUnlock.UseVisualStyleBackColor = true; - this.btnUnlock.Click += new System.EventHandler(this.btnUnlock_Click); - // - // lnkWebsite - // - this.lnkWebsite.AutoSize = true; - this.lnkWebsite.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lnkWebsite.Location = new System.Drawing.Point(139, 111); - this.lnkWebsite.Name = "lnkWebsite"; - this.lnkWebsite.Size = new System.Drawing.Size(111, 13); - this.lnkWebsite.TabIndex = 9; - this.lnkWebsite.TabStop = true; - this.lnkWebsite.Text = "www.opcpp.com"; - this.lnkWebsite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkWebsite_LinkClicked); - // - // textBox1 - // - this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.textBox1.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.textBox1.Location = new System.Drawing.Point(142, 12); - this.textBox1.Multiline = true; - this.textBox1.Name = "textBox1"; - this.textBox1.ReadOnly = true; - this.textBox1.Size = new System.Drawing.Size(364, 63); - this.textBox1.TabIndex = 10; - this.textBox1.Text = "The trial period for the opC++ Addin has expired. To unlock, please purchase a l" + - "icense key and enter it into the unlock dialog below."; - // - // picLogo - // - this.picLogo.Image = global::opGamesLLC.opCpp2005.MyResources.addin_small; - this.picLogo.Location = new System.Drawing.Point(12, 12); - this.picLogo.Name = "picLogo"; - this.picLogo.Size = new System.Drawing.Size(121, 114); - this.picLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.picLogo.TabIndex = 0; - this.picLogo.TabStop = false; - // - // AddinLockedForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(517, 140); - this.Controls.Add(this.textBox1); - this.Controls.Add(this.lnkWebsite); - this.Controls.Add(this.btnUnlock); - this.Controls.Add(this.btnOk); - this.Controls.Add(this.picLogo); - this.DoubleBuffered = true; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "AddinLockedForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Addin Locked"; - ((System.ComponentModel.ISupportInitialize)(this.picLogo)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.PictureBox picLogo; - private System.Windows.Forms.Button btnOk; - private System.Windows.Forms.Button btnUnlock; - private System.Windows.Forms.LinkLabel lnkWebsite; - private System.Windows.Forms.TextBox textBox1; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.cs deleted file mode 100644 index 19772cd..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.cs +++ /dev/null @@ -1,50 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: AddinLockedForm.cs -/// Date: 09/28/2007 -/// -/// Description: -/// -/// Form shown when the addin goes into lockdown. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class AddinLockedForm : Form - { - /*=== construction ===*/ - - public AddinLockedForm() - { - InitializeComponent(); - } - - /*=== events ===*/ - - // Fired when the unlock button is clicked. - private void btnUnlock_Click(object sender, EventArgs e) - { - UnlockForm form = new UnlockForm(); - - if (form.ShowDialog() == DialogResult.OK) - this.Close(); - } - - // Opens our website when the link is clicked. - private void lnkWebsite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - System.Diagnostics.Process.Start("http://www.opcpp.com"); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.resx deleted file mode 100644 index 8940f45..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/AddinLockedForm.resx +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA - CACoDgAAHgsAACAgAAABAAgAqAgAAMYZAAAQEAAAAQAIAGgFAABuIgAAMDAAAAEAIACoJQAA1icAACAg - AAABACAAqBAAAH5NAAAYGAAAAQAgAIgJAAAmXgAAEBAAAAEAIABoBAAArmcAACgAAAAwAAAAYAAAAAEA - BAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA - wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj4d3d3AAAAAAAAAAAAAAAAAAAAAAAAB/////j4iHd3dwAA - AAAAAAAAAAAAAAAAB/////////+PiId3d3AAAAAAAAAAAAAAB4//////////////j4cAAAAAAHd3eHd4 - d3d///////////////cAAAAAB4iIiIiIiI9///////////////cAAAAAB4ZsZkZkZk9v//////////// - //cAAAAACIRmRmxmxm8f//////////////cAAAAACHZGbGZkZG9///d3B3//////hwB3AAAACIxn///4 - ZG9f/4eP/3j////4eP/4cAAACHZG8Hd4bG9v/3iGZ/f////4eGZ/cAAACIZn9wB4Zn8f/3h2x4f////4 - eGxvQAAACHxs9wB///h4iHh2Z4eIj4iIeGRvMAAACIZH9wAAdWd3d398Z/d3dnd3iGZveHdwCHZm9wAH - //h4iIhmRoiI9/iIiMRoiIiACHxm9wAHj/94ZsZsZsZkh/ZGxmZGxkiACIZH9wAH//h4RmRmRmRmiPZG - ZGRkZmeACHbG9wAH//94bGbGRsZs9/ZsZkZmxsiACIRn9wAH//h///92Z///8I//+Gxv//9wCHZs9wB3 - cHN3Q090Z4RzeHdSiGRvB3cACIxm9wB4j49P/3h2x/f////4eEZvcAAACHZH9wB4Zk9//3iGZvf////4 - eGxvUAAACIZm93eIRm8//3h8aIf////4eGZ/YAAACHxsiIiIbG9P/4f//3j/////f//4cAAACIZGZGbG - Rk9///d2F3//////dHdXAAAACHZkZsZkZm9f////////////cAAAAAAAB/bHbGZmbH8v//////////// - cAAAAAAAB3////////h/////////////QAAAAAAAAAd3d3B1JXeP////////////cAAAAAAAAAAAAAeP - ///////////////4cAAAAAAAAAAAAAf///h3B3B3B2eP///4AAAAAAAAAAAAAAeP/4eP//+P//h////3 - AAAAAAAAAAAAAAf//3h2ZmeIZn9f///3AAAAAAAAAAAAAAf//39sdsaIbG8v///3AAAAAAAAAAAAAAj/ - /w9m/4SPdvhY///2AAAAAAAAAAAAAH///39l+IaPdPh3d4/3AAAAAAAAAAAAAH///39m+ISP5IiIh4+H - AAAAAAAAAAAAAH///w9s+IaPdkZkiH+AAAAAAAAAAAAAAA///39n+ISPdoiGeH+AAAAAAAAAAAAAAIdw - dw9k+IaPbPiM6H9wAAAAAAAAAAAAAAAAAH9m/4yPdo/2f39wAAAAAAAAAAAAAAAAAH9kZGaIbGZGeH9w - AAAAAAAAAAAAAAAAAHiHfneIZ3Z2iFZwAAAAAAAAAAAAAAAAAAePj4+I////hgAAAAAAAAAAAAAAAAAA - AAAHd3cHd3d3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/+H////8AAP/4 - AP///wAA//gAAP//AAD/+AAAAf8AAP/4AAAA/wAAwAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAD/ - AACAAAAAAD8AAIAAAAAAHwAAgAAAAAAfAACAwAAAAB8AAIDAAAAAHwAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDgAAAAAQAAgMAAAAADAACAwAAAAB8AAIDAAAAAHwAAgAAAAAAf - AACAAAAAAB8AAIAAAAAAPwAAgAAAAAf/AACAAAAAB/8AAIAAAAAH/wAA4AAAAAf/AAD/gAAAB/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/4AAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAB// - AAD/AAAAH/8AAP8AAAAf/wAA//wAAB//AAD//AAAH/8AAP/8AAAf/wAA//4AAP//AAD//4ID//8AAP// - /////wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAh3d3AAAAAAAAAAAAAAAAAP////iHd3AAAAAAAAAAAAeP////////+HcAAAB4iIiIh/ - /////////3AAAAhmRmZGiP////////9wAAB4ZGRkZoj/+I/////4cAAAeGz4+EaI+HiHj///eIgAAIhm - h3hsiPiGb4//+IZocAB4RoAIj4iH9Gh4/4iGT3AAeGyAB3d3iPZPiHeI9kiIgHhmgAf/iGZGRmT4ZGRm - Zod4xoAH/39GZGxmiGZGxsaHiGaAB/+IiIZoiIiI9miI8HhkgAd3d4eMaHeId4RocAB4xoB/Z4j4hk9/ - //iGyHAAeGb4iGyI+Ifoj///h4iAAIhkZGZGiP93d////3d3AAB4bGZGZPj///////9wAAAAB/iPiI9/ - ////////cAAAAAAAAHd3j////////wAAAAAAAAB//4d3eHeP//gAAAAAAAAAf/iI+PiPf//4AAAAAAAA - AI/3hmZoZoj/9wAAAAAAAACP9/T4z3h3j/cAAAAAAAAA//eGiG9niIf3AAAAAAAAB//39o9vfGaH+AAA - AAAAAAB3h4aIb2j2h/AAAAAAAAAAAAeMiM9njIfwAAAAAAAAAAAA9mZ/bHb2cAAAAAAAAAAAAHeId4h4 - cAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8AAB+AAAAfgAAAHwAAAB8AAAAPAAAABwYA - AAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAAAH+AAAB//AAA//wAAP/8AAD//AAA//wA - AP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A - AAD/AP8A//8AAP///wAAAAgAAAAAAAAAf//4iHAAh3d4////8AB2fkj4j/+HAIaHiId4+HgAdICIZ2eH - ZniGgPh8aI5Wh3aHeIfniHcAhHfI94//eAB453j///8AAAAIiIiP/wAAAAiI6Hj4AAAAD4eIaIgAAAAI - h4jHiAAAAAAIaG54AAAAAACAiAAAAPv/AADwBwAAAAcAAAADAAAAAwAAEAAAABAAAAAAAwAAAAMAAAAP - AADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAAB - AAAAAQAAAAAAAC8vLwAyMjIANTU1ADo6OgA8PDwAQ0NDAElJSQBNTU0AUFBQAFZWVgBZWVkAXV1dAGJi - YgBlZWUAaWlpAGxsbABxcXEAdnZ2AHl5eQB9fX0Ai00BAIxOAACNUAMAjlEFAJBUCACRVgwAk1gPAJRb - EwCWXRYAll4YAJliHgCbZiMAnGYjAJxnJACdaCUAnmooAKBtLQChbzAAonEyAKRzNQCldDcApXU4AKd4 - PQCoej8Ar4ROALCFUACzilYAtItYALaPXgC3kF8AuJNjALqVZgC8mGoAvZpuAL+ccQDCoXgAxaZ/AIGB - gQCFhYUAioqKAI2NjQCSkpIAlZWVAJmZmQCfn58Ao6OjAKWlpQCqqqoAra2tALGxsQC1tbUAurq6AL+/ - vwDGp4AAyq6KAM2ykQDQtpcA07yfANW+ogDWwKQA2MKoANnFqwDaxq4A28iwANzKswDezLYA3824AODR - vQDDw8MAxcXFAMnJyQDNzc0A0dHRANTU1ADZ2dkA3NzcAOXXxQDn28sA6uDSAOvh1ADt49cA7uTZAPDo - 3QDj4+MA5eXlAOnp6QDt7e0A8uviAPPt5QD38u0A8vLyAPX19QD59fIA+vr6AP37+gD+/v4AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAALChA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK - dHBgSEASCwoNEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdHR0dHR0dHR0a1tD - Ow0KCxI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7dHR0dHR0dHR0dHR0dHR0dHBeRz8SCgsQ - EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAASWWh0dHR0dHR0dHR0dHR0dHR0dHR0dHRwaxMAAAAAAAAAAAAA - ChM/Pz8/Pz8/Pz8/PwtDdHR0dHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAJa2FPT09PT09PT09P - UXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0dA0AAAAAAAAAAAA/VhYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dHR0dAsAAAAAAAAAAABHShYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0 - dA0AAAAAAAAAAABHORYWGSEhISEhHhYWGXQKdHR0dD8LCwsLPHR0dHR0dHR0dEgLCwMLOwAAAAAAAABH - ORYWKnR0dHR0VBYWGXQKdHR0Rjt0dHR0O0Z0dHR0dHR0awpwdHR0WRMAAAAAAABHORYWKnAEDQs8VhYW - GXQKdHR0O143ISE3YBN0dHR0dHR0WzxWISErdAoAAAAAAABHORYWKnASAAA7VyEhJXQKdHR0E14yFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXATAAAJb3R0dFsNXllZDWAxFhYvYAtZWV50aFlZQDxU - FhYfdAkAAAAAAABHORYWKXATAAAAAQoKCxALEz8/P2sxFhYvaz8/PxIGCz8/P1tUFhYfdEA/PzwJAABH - ORYWKXATAAAAC3R0dHANblBQT08rFhYqUFBQT24SdFFPUFA2FhYcT1BQT2NDAABHORYWKXATAAAAC3R0 - dGgQYhYWFhYWFhYWFhYWFmI/dBkWFhYWFhYWFhYWFjlHAABHORYWKXATAAAADXR0dGsQYhYWFhYWFhYW - FhYWFmI/dBwWFhYWFhYWFhYWFjlHAABHORYWKXATAAAAE3R0dGsQYyEhISEZFhYZISEhIWM8dCkhISEe - FhYZISEhIUxHAABHORYWKXATAAAAQHBwcHAJa3R0dHQzFhYxdHR0dGsDW3R0dHRUFhYfdHR0dHQNAABH - ORYWKXATAAATCQ0NDQk8CwsKA2AxFhYvYAMKCgtZEAsKCT9QFhYfdAQQDQ0AAABHORYWKXASAAANcWRk - ZHAKdHR0O14xFhYxXxN0dHR0dHR0WTxUFhYfdAoAAAAAAABHORYWKXALAAA7VBYWGXQKdHR0E14zFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXQ/Pz9bVBYWGXQKdHR0O142HBwzYBN0dHR0dHR0WzxW - HBwldAoAAAAAAABHORYWIU9QT09QNxYWGXQKdHR0Rjx0dHR0PER0dHR0dHR0awpwdHR0WxIAAAAAAABH - ORYWFhYWFhYWFhYWGXQKdHR0dDsKCgoKO3R0dHR0dHR0dDsJCw0NEgAAAAAAAABGSxYWFhYWFhYWFhYW - GXQKdHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAAAAANbi0hISEhISEhISEhJXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dA0AAAAAAAAAAAAAAAA/PHB0dHR0dHR0dHR0dFsQdHR0dHR0dHR0dHR0dHR0dHR0dAsA - AAAAAAAAAAAAAAAAABAQEBAQDQMKCgoKCxBrdHR0dHR0dHR0dHR0dHR0dHR0dBAAAAAAAAAAAAAAAAAA - AAAAAAAAAA10dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0azsAAAAAAAAAAAAAAAAAAAAAAAAAAAp0dHR0 - dFsNCwoKCgsTCwsKChJwdHR0dHR0WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAt0dHR0WQtrdHR0dHRZcHR0 - dEgQdHR0dHR0QwAAAAAAAAAAAAAAAAAAAAAAAAAAABJ0dHR0C3A5ISUjJSlmViMlKXQKdHR0dHR0EwAA - AAAAAAAAAAAAAAAAAAAAAAAAAEB0dHR0C3QhFh8fHBZQVBkWJXQKdHR0dHR0DQAAAAAAAAAAAAAAAAAA - AAAAAAAAAEh0dHR0CnQhHnR0ThZQdDMWZ1sJW2h0dHR0CwAAAAAAAAAAAAAAAAAAAAAAAAAAP2B0dHR0 - CnQhHHRITxZQdDMWZ0c8PBASdHR0EAAAAAAAAAAAAAAAAAAAAAAAAAAAEHR0dHR0CnQhHnRIThZQdDMW - TFRPVGc8R3RoPAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R0dHR0CnQhHHRHTxZQdDMWFhYWFjVdO3RbAAAA - AAAAAAAAAAAAAAAAAAAAAAAACmt0dHR0CnQhHnRIThZQdDMWS05LFjNeO3RDAAAAAAAAAAAAAAAAAAAA - AAAAAAAAPBALCQsTBHQhHnRZTxZQdDMWZ29nFjVdO3Q6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - CnQhHHFxTRZQdDEWY3FjFjNeO3QNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXQhGRkZFhZQTxYW - GRkWFjVdE3QLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE2hNLS0tLS9nYS0uLS0uLldGCQsQAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlba2toa2hGXmtqampqakgJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAOzo7EzsAPDo7Ojs6OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA//h/////AAD/+AD///8AAP/4 - AAD//wAA//gAAAH/AAD/+AAAAP8AAMAAAAAA/wAAgAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAA/ - AACAAAAAAB8AAIAAAAAAHwAAgMAAAAAfAACAwAAAAB8AAIDgAAAAAQAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDAAAAAAwAAgMAAAAAfAACAwAAAAB8AAIAAAAAAHwAAgAAAAAAf - AACAAAAAAD8AAIAAAAAH/wAAgAAAAAf/AACAAAAAB/8AAOAAAAAH/wAA/4AAAAf/AAD/gAAAD/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAf/wAA/wAAAB// - AAD/AAAAH/8AAP/8AAAf/wAA//wAAB//AAD//AAAH/8AAP/+AAD//wAA//+CA///AAD///////8AACgA - AAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAVVVVAF9fXwBiYmIAZWVlAG1t - bQBwcHAAdXV1AHh4eAB9fX0AjE4AAI1QAwCOUQUAkFUKAJFWDACTWQ8Ak1kQAJRbEgCVXBUAl18YAJdg - GgCZYh0Am2YjAJ1oJQCeaikAo3EzAKNyNACkczUApXU4AKh5PgCpfEIAtY1bALeRYAC4kmIAwJ5zAMCe - dADDpHwAgoKCAIWFhQCJiYkAjo6OAJKSkgCWlpYAmpqaAJ2dnQChoaEApqamAKurqwCtra0AsrKyALa2 - tgC4uLgAvLy8AMyxjwDPtZUA0biZANbApQDYw6kA2MSqANrGrgDcybEA4dG9AMLCwgDGxsYAycfFAMnJ - yQDOzMgAz8/PANTRzgDZ1M0A3NbOANfU0ADW1tYA2dXQANra2gDe3t4A49TBAOTVwwDk1sQA5tnIAObc - zwDo3MwA49vQAOTd0gDm3tUA4t7ZAOvh1ADs4tUA7ObeAODg4ADl5eUA7ejhAOnp6QDt7e0A9e/pAPHx - 8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLScnJykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF////// - /19IMSkmJycAAAAAAAAAAAAAAAAAAAAAAAAJSF////////////////9aPi0DAAAAAAAACS8xMzEzMTMx - CV3//////////////////ycAAAAAAABSGBUVFRMVFRU+Qf//////////////////LQAAAAAAKToKCgoK - CgoKDUA///9dSEhd////////X0gmAAAAAAApOgoVTExMNwoMPz//SiYxMyZK/////18JMTMtAAAAACk6 - ChcvKQNRCgw/P/8vSRUSSS3/////SjEaEkwpAAAAKToKFy8AAERMTC1BSClJCgpJKEhdX0ozMRUKPSYA - AAApOgoXLQAABigpJiczMVsKClgzMycGMzFdFQo9MzMtACk6ChcvAAAp//8tUhQVEgoKEhMTUj4XFRIM - ChIVEjwpKToKFy0AACf//y1JCgoKCgoKCgpSPg0KCgoKCgoKOi0pOgoXLwAAJl//L0BMTDwKCjpMTEAt - TExMEgo1TExSACk6ChctAAAGLSkGLScDSQoKSQMoLTEpCTEVCj0DAAAAKToKFy8AJlAaHT5B/y9JCgpJ - Lv////9KMRUKPS0AAAApOgoXWjEzUQoMQT7/L0ggIUkv/////1ovIyFWKQAAACk6CgwVFRISCgxBQf9f - CSgoCV///////wMnKQkAAAAAKUwKCgoKCgoKDEE+////////////////JwAAAAAAAAAAJ1JMTExMTExM - LUr///////////////8tAAAAAAAAAAAAAAAAAAEnKSkx/////////////////wAAAAAAAAAAAAAAAAAA - J////0EnKSctLScpM/////9KAAAAAAAAAAAAAAAAAAAp//8+LVFMTFJKTE8tSv///zMAAAAAAAAAAAAA - AAAAADH//ydRChMSFUwMEj5B////LQAAAAAAAAAAAAAAAAAASv//KUwSXz0V/x42CSYv//8nAAAAAAAA - AAAAAAAAAABf//8nTBJBPRX/HiJMTEEt/ycAAAAAAAAAAAAAAAAAKf///ylMD0g9E/8eDRMMNyf/LQAA - AAAAAAAAAAAAAAAAJiYpBT0SSD0U/x42/x03Kf8AAAAAAAAAAAAAAAAAAAAAAAAmTAw4JBReGCA4Fzcn - WgAAAAAAAAAAAAAAAAAAAAAAAABSHRoaH1EaGhoaTAIFAAAAAAAAAAAAAAAAAAAAAAAAAAkpLS0nJi0t - KS0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8A - AB+AAAAfgAAAHwAAAB8AAAAPAAAABwYAAAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAA - AH+AAAB//AAA//wAAP/8AAD//AAA//wAAP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAA - AAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAACNUAMAj1IHAJBVCgCUWxIAnGYjAJ9s - KwCgbCwAo3IzAKRzNgCmdz0Apng9AKl+SACtgUkAr4ROALKJVQC2j14An4dpAKaLaACnjGkAqIxpAKiO - bQC3kWAAs5FmALiSYgC4k2QAupVmALKTawC1lW0Au5ZoALyXagC8mGsAs5dzAMCfdgCXjoUAlpWTAJeX - lwCdmpYAmJiYAKabjgClnI8ApZ2SAKCcmAC/qY0AoqCdAKikngCwpJQAoaGhAKSioQClpaUAqaelAKmp - qQCtra0AsKmhALe3twC5ubkAvru4AL29vQDKrooAy6+MANG9pADDwL0AwsLCAMXEwwDGxsYAzMzMANrS - yQDR0dEA1NTUANra2gDh2c8A4eHhAObm5gDu7u4A8/PzAPb29gD7+/sA/v7+AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAADMAAAAAAAAAAAAAAAAAAC9M - TExHPjYzMwAAAC8TExMTOUxMTExMTEwAAAApAhYPAj5MPj5LTEw+JgAAKQQvJRg9PhwcPkxFExgAACkE - MwBALxQLChMyFAwJFCopBDYATDkWBgYWPRgKBRYtKQQvJREvMxYcL0Q5EhAAACkDIBwCQEgpKEhMSyIo - AAAsGBYWFj5MTExMTEwAAAAAAAAAJD4+QUFBSUxMAAAAAAAAAEREKx88HT5MRAAAAAAAAABLPh9GOxg1 - Pj0AAAAAAAAAOS8dQjsNDy42AAAAAAAAAAAAIRg7Cw0pLwAAAAAAAAAAAAAzADM2AAAAAAAA+/8AAPAH - AAAABwAAAAMAAAADAAAQAAAAEAAAAAADAAAAAwAAAA8AAOAPAADgDwAA4A8AAOAPAAD4DwAA/T8AACgA - AAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEyhQUFN0CAgKxBgYGiRcX - F2AvLy84LS0tEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycn9f// - ////////+Pj4/8jIyP+Xl5f/ampq/z4+Pv8XFxfpAAAAwQAAAJkPDw9wIyMjSS0tLSAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAS0tL///////////////////////////////////////////////////////b29v/rKys/35+ - fv9PT0//ICAg+gsLC9EEBASqBgYGgSEhIVkqKiowMTExCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAcHBwYgICA//////3//////f39/f39/f3//////f39/f39/f3//////f39/f// - //3//////////f////3/////////////////////7+/v/8DAwP+RkZH/ZGRk/zMzM/8YGBjiBgYGugAA - AJIbGxttLy8vGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIXFhYWMRwc - HC8bGxsvGxsbLxsbGy8bGxsvHBwcLxcXFysAAABld3d3/8jIyP319fX//////f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////////f/////////9/////f// - //////////////////+FhYX/ISEhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpKGQAA - AO2Bg4b/nqGm/5mdov+ZnaL/mZ2i/5mdov+ZnaL/mZ2i/5qeov+cn6T/jJCU/4aKjv8XFxf/oqKi//// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////9ycnL/RkZGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAABAQE9f///////PD/69a+/e3awv3t2sL/7drC/e3awv3t2sL/7drC/e3awv/t2sL97drB/erU - uv3/////ERER/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////88PDz/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhI3pKer//nq2f1vJAD/fjkA/X45AP2AOwD/fjkA/X45AP2AOwD/fjkA/YA7 - AP9+OQD9fTgA/XImAP3/////Hx8f/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////8WFhblAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhJRzdLY/86tg/+CPwD/jE4A/4tNAP+JSgD/iUoA/4lK - AP+JSgD/iUoA/4pLAP+MTgD/i00A/344AP//////Hx8f//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/iUsA/YpM - AP2QUwj/jlAE/Y5QBP2OUAT/j1EG/Y5SBf+ISQD9iUsA/X44AP3/////Hx8f/f////3//////f39/f// - //11dXX/HBwc/SUlJf0kJCT/Hh4e/XBwcP3//////f39/f39/f3//////f39/f/////9/f39/f39/f// - ///ExMT9Ghoa/SwsLP8AAADnAAAAwwAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gy - i/+CPwD/iEcA/51qKP///////////////////////////+3j2P9/OgD/i00A/344AP//////Hx8f//// - /////////////6SkpP9fX1///////////////////////19fX/+enp7///////////////////////// - //////////////////8BAQH///////////////////////Dw8P8AAAClAAAAAAAAAAAAAAAAAAAAAAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAA6QsLC70AAADJf4KG//Ljz/96NAD9h0cA/Xs0 - AP3/////Hx8f/f////3//////////VhYWP3v9fz/vpZl/YpKAP2KSwD/uI9b/fr///1PT0///////f39 - /f3//////f39/f/////9/f39/////cbGxv97foL99eTQ/YVDAP+OUQP9kFUK/f////8AAADSAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////CwsLowAAAAAmJiYUi42R//jq - 2P+DPwD9jU8C/oNBAP3/////Gxsb/f////3//////////WNjY/3o7vf/t4xX/YA9AP2CPwD/soVM/fD3 - //1aWlr//////f////3//////f39/f/////////9/////dHR0f92en798eDK/Xw2AP+FRAD9iEcA/f// - //8AAADPAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////EBAQqAAA - AAAAAAAAFhYW///////////9/////f////3e3t7/RUVF/fHx8f2+vr7/0dHR/TMzM/3p7/f/uY9b/YNB - AP2FRAD/tIhR/fH4//0qKir/0tLS/b6+vv3Y2Nj//////ff39/+7u7v9yMjI/Y6Ojv9zdnr98uLM/X86 - AP+ISQD9iksA/f////8AAADYHx8fIxQUFDAVFRUqAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xm - Iv//////Dw8PqAAAAAAAAAAAPz8/JwAAAOYrKyv/Hx8f/xwcHP9KSkr/VFRU/1FSU/+EiIz/f4OI/4CE - if//////t49c/4VDAP+FQwD/s4hS//////+BhYn/f4OI/4SIjP9WV1f/Dg4O/yQkJP+Hio7/gIOI/3yA - hf/h6PH/7N7L/386AP+KSwD/i0wA//////+coKX/lpqf/5yfpP+Ympz/AAAA7QAAAAAZGRlPyM3U/9Gy - i/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAAAAAAMP//////////f////3/////Ly8w/f// - //3o0rb/7drC/e3awv3m18T/pXY6/YZFAP2HRwD/pHI1/ebXxP3t2sL/7drC/ejStv3/////Tk9P/f// - ///r17397dnB/e3awv/n1sH9xqeB/YNBAP+JSgD9i00A/ebYx//r2MD97drC/erVuv////39vb/B/xkZ - GUoZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAACIiIu///////f39/f// - //35+fn/RkhK/f//9v1wIwD/fjkA/X45AP2AOwD/hkUA/YpMAP2MTgD/hkYA/X45AP2AOwD/fjkA/W8i - AP3/+vD/d3p8/f////92LAD9fDcA/YA7AP9+OQD9gj8A/YxOAP+KTAD9iUoA/YA7AP9+OQD9fjkA/XYs - AP/KqH39yc7V/ycnJ1AZGRlPyM3U/9Gyi/+CPwD/iEcA/5xmIv//////Dw8PqAAAAAAAAAAAAAAAAERE - RP/////////////////5+fn/REZJ////+/96MgD/iUoA/4lKAP+JSgD/i0wA/4xOAP+MTgD/i0wA/4lK - AP+JSgD/iUoA/3oyAP///fT/c3V4//////9/OQD/iEgA/4lKAP+JSgD/iksA/4xOAP+MTgD/i00A/4lK - AP+JSgD/iUoA/387AP/PsIj/xsvS/ysrK08ZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAA - AAAAAAAALCwsFHR0dP/////9/////f////35+fn/RUdJ/f///v2BPAD/jlAE/Y5QBP2PUwf/jE4A/YlL - AP2LTAD/i00A/ZBTCP2OUAT/jlAE/YE8AP3///j/fX+B/f////+GSAD9jU4B/Y5QBP+PUgb9jVAF/YpL - AP+KTAD9iksA/Y9UCf+OUAT9jlAE/YVDAP/UtpD9z9TZ/yAgIFMZGRlPyM3U/9Gyi/2CPwD/hkYA/Zxm - Iv3/////Dw8PqAAAAAAAAAAAEhISN6+vr//////9/////f////3/////AwMD/f////3//////////f// - //3/////uJJh/YNBAP2FRAD/tIpX/f////3//////////f////3/////AAAA/d/f3//////9/////f// - ///////96uDS/X86AP+ISQD9jE4C/f//////////////////////////TU1N/zIyMiQZGRlPyM3U/9Gy - i/+CPwD/iEcA/5xmIv//////EBAQqAAAAAAAAAAAAAAAlSwsLf83OTv/NDY4/zg6PP8AAAD/wcHB/yIi - Iv8eHh7/JSUl/wAAAP/y+f//uI9a/4VDAP+FQwD/s4dQ//v///8AAAD/JSUl/x4eHv8aGhr/6enp/z09 - Pf8bGxv/ISEh/wQEBP+GiY7/8eDL/386AP+KSwD/iksA//////8AAAD0CgoKvhEREcMAAADBODg4UAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dg4OpwAAAAATExMHWFla///////////9/////f// - //3/////FhYW/f////3//////////Wpqav3n7vb/uY9b/YNBAP2FRAD/tIhR/e/2//1hYWH//////f// - //3//////////f/////////9/////d/f3/91eHz98uLM/X86AP+ISQD9iksA/f////8AAADNAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAAuBkZGSIAAABLgYWJ//He - yP9vIQD9ezQA/W4gAP3/////Hx8f/f////3//////////V5eXv3o7vb/uI5Y/YI/AP2EQQD/s4ZO/fD3 - //1VVVX//////f39/f3//////f39/f/////9/f39/////crKyv92eX798uHL/X44AP+HRwD9iUkA/f// - //8AAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xnJP//////j5KX/5mc - of+RlZn/2+Lr/+/h0f9/OgD/i00A/344AP//////Hx8f/////////////////1lZWf/x9v7/totV/303 - AP99OAD/sINL//r///9PT0///////////////////////////////////////8TExP99gIT/8eDK/3cv - AP+BPgD/hUUA//////8AAADSAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/h0gA/ZZe - F/3m2Mb/7drB/e3awv3t2sL/6NfB/cepg/+CPwD9iksA/X44AP3/////Hx8f/f////3//////////ZmZ - mf1sbGz//////f////3//////////WxsbP2Tk5P//////f39/f3//////f39/f/////9/f39/////f// - //8PDw/9//////////////////////v7+/8AAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlQys/W/8+w - iP2CPwD/ikwA/YdIAP2AOwD/fjkA/X45AP2AOwD/fjkA/YNBAP+KTAD9iksA/X44AP3/////Hx8f/f// - //3//////f39/f////1jY2P/FBQU/R8fH/0fHx//FBQU/V9fX/3//////v7+/f39/f3//////f39/f// - ///9/f39/f39/f////+Dg4P/AAAA1xsbG9QbGxvVGhoa1wAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAPDw9KxsrQ/9e7mP97NAD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iEkA/3s0 - AP//////Hx8f//////////////////////////////////////////////////////////////////// - //////////////////////////////////94eHj/Ojo6CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAuLi4MS0xN//////6gbSr/i00A/Y5QBP2OUAT/jlAE/Y5QBP2OUAT/jlAE/Y5Q - BP+OUAT9jU8C/YNBAP3/////Gxsb/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////9CQkL/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEgIaHiP////////////////////////////// - /////////////f/////////9/////f////3d3d3/Jycn/f////3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////8aGhroAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vL0kAAACtEhISxBER - EcIRERHCEhISwgwMDL8AAADoJCQk/x8fH/8fHx//Hx8f/xsbG/8xMTH///////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8GBga9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5///////////////9/////f////3//////////f// - //3//////////f////3//////////f////3//////////f////3//////////f39/f3//////f39/f// - ///9/f39/////f////8ICAiTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFxfo//////////////////////// - ///Y2Nj/JSUl/x0dHf8fHx//Hx8f/x8fH/8cHBz/Z2dn/yEhIf8eHh7/Hx8f/xoaGv9DQ0P///////// - /////////////////////////////9fX1/8jIyNqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PT3//////v// - ///9/f39/////dTU1P0EBAT//////f////3//////////f////3/////tbe5/f////3//////////f// - //3ExMT/MzMz/f////3//////f39/f/////9/f39/////aOjo/87Ozs+AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw - MAxra2v//////f/////9/f39/////RsbG/3/////wJpu/YpMAP2OUgX/jlIF/Y5SBf2NUAP//////d7M - tf2FRAD/j1QI/YlJAP3/////Ghoa/f////3//////f39/f/////9/f39/////XJycv9SUlIUAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACEhITOampr//////////////////////x0dHf//////h0YA/4RCAP+KSwD/iUkA/4lJ - AP96MgD/3824/97Ouf99NwD/hUMA/4NBAP//////ICAg/////////////////////////////////0FB - Qf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHlrFxcX//////f/////9/f39/////R8fH/3/////jE0A/YVE - AP3//////////eLTwf1zKAD/3cqz/f////26lmj/dCgA/f////3a3N7/Dw8P/eDg4P319fX//////f// - ///9/f39/////xcXF+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODoL19fX//////f/////9/f39/////R8f - H/3/////jE0A/YNBAP3/////p6uw/eLNtP1zKAD/3cqz/f////2zjFn/dCgA/f////2mq7H/goaK/Xl8 - gf02Nzj/Pz8//f/////+/v79/////wUFBb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKj///////////// - /////////////x8fH///////jE0A/4NBAP//////pait/+PPtf9zKAD/3Mmy//////+zjFn/eTEA/9zJ - sv/s2sX/8d7I/+3Zvv//////a2xt/62trf///////////xUVFZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P - D9D//////f39/f/////9/f39/////R8fH/3/////jE0A/YNBAP3/////pqqv/ePPtf1zKAD/3cqz/f// - //2zjFn/g0EA/XUrAP1zKAD/cykA/XUsAP24jVb/6vD4/VxcXP/////92dnZ/ygoKGkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACwsLP/////////////////////9/////SQkJP3/////jE0A/YNBAP3/////o6es/ePP - tf1zKAD/3cqz/f////2zjFn/ejIA/dfCpv3cyrL/18Ko/XoyAP29lmT/5evz/WBgYP/////9paWl/zw8 - PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGIoAAACuBQUF1BcXF/tHR0f/hoaG/w0NDf//////jE0A/4NC - AP//////t7zB/+HNtP9zKAD/3Mmy//////+zjVr/dCoA///////2/f///////3MoAP+9lmT/5Ory/2Fh - Yf//////dHR0/0lJSRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioqEgAA - AM//////jE0A/YZEAP3//////////d/MuP10KQD/3cqz/f////23kWL/dSoA/f////3//////////XMo - AP29lmT/5Ory/WJiYv/////+QUFB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAoKCsL/////hUQA/YE9AP13LgD/di4A/Xw2AP14MAD/3826/djCqP10KQD/hUQA/Xkw - AP12LgD/eTEA/Xw3AP23jVj/6fD3/Wpqav//////JSUl6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKP/////2r6f/6V1Nv+qfEH/qnxB/6p8QP+ndTb//////+nc - yv+icC//q31C/6p9Qf+qfEH/qn1B/6VxMv/77Nn/0dTX/wAAAMMEBATNBgYGswAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJSREGBgb///////////////////////// - ////////oKGi//r9///////////////////////////////////e4OT/AAAA7QAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTU1MOBQUFggEB - AZUEBASTBAQElAMDA5QAAACSKysrXQcHB4wBAQGUBAQElAQEBJQEBASTAwMDlAAAAJUPDw90AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP/4D////wAA//gAH///AAD/+AAAH/8AAP/wAAAAfwAA4AAAAAB/ - AACAAAAAAH8AAIAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAPwAAAAAAAAAfAAAAAAAAAB8AAACA - AAAAHwAAAMAAAAADAAAAwAAAAAEAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAA - AAAAwAAAAAEAAACAAAAAHwAAAAAAAAAfAAAAAAAAAB8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAA/8AAAAA - AAAH/wAAgAAAAAf/AADAAAAAB/8AAP+AAAAH/wAA/4AAAAf/AAD/gAAAB/8AAP8AAAAH/wAA/wAAAA// - AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/+AAAH/8AAP/8 - AAAf/wAA//wAAB//AAD//AAA//8AAP/+AAH//wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwFAAAALwoK - CgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcH - BzTAwMD/s7Oz/3p6ev9lZWXeSUlJtSMjI44CAgJlBgYGPQ4ODhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAgICWf/////////////////////////////////////s7Oz/vr6+/5CQkP9ra2vvVVVVxjIy - Mp4KCgp1BgYGTQsLCyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYOAgICGQQE - BBgEBAQYBAQEGAAAAA8AAACO8vLy//////////////////////////////////////////////////// - ////////////////////////0dHR/66urv80NDTuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD0/3dPc - 5//Y4e3/1t/r/9bf6//W3+v/1uDr/9Xf6v/AytX/Ojo6//////////////////////////////////// - /////////////////////////////////////////////2NjY8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAB - AnD/////lFAA/5JRAP+TUwL/k1MC/5NTAv+TUwL/k1IB/5BIAP/Z4+7/t7e3//////////////////// - ////////////////////////////////////////////////////////PT09lgAAAAAAAAAAAAAAAAAA - AAAAAAAALC8zjPvp0f98NQD/iEgA/3s0AP97NAD/ezQA/345AP+JSgD/gjwA/9Da5/+9vb3///////// - ///+/v7/0dHR/9HR0f/+/v7//////////////////////////////////////+3t7f8AAAB9AAAAAAAA - AAAAAAAAAAAAAAAAAAArLzOK/evV/303AP+QUwj/////////9///////4dG9/4A7AP+EPwD/0Nrn/729 - vf//////5eXl/0tMTf+/ydT/v8nV/0lKS//j4+P///////////////////////////8zMzP/vsfR/9rj - 7/+rrbD/KSkpRAAAAAAAAAAAAAAAACsuM4r969b/fDYA/55iFv+3w9H/DRATeAAAALb/////bh8A/3Yp - AP/W4O3/vb29//////+RkpP/+v3//4g/AP+IPwD//////4uMjf//////////////////////3d3d/7fA - yv+hYBD/hDwA//////8dICOGAAAAAAAAAAAAAAAAKy4ziv3r1v98NgD/nmEV/7vEz/8AAAAAAAAAVf// - ////9ub////y/4+RlP/W1tb/5OTk/21tb//u8vX/fTQA/300AP/y9Pb/aGlq/97e3v/7+/v//////9bW - 1v+vr6//rbbC/5VVBf95MgD////y/wAAAI8AAAAQCQkJCgAAAAArLjOK/evW/3w2AP+eYRX/u8TP/yYm - JgUAAAAAAAAAoIGDhv9vcnX/e3t7/2lrbP++x9P/ucTQ//////97NAD/fDQA//////+6xNH/vsfT/2Zn - af9ERET/v8jT/7O9yP//////j1EE/3s0AP///vf/1ODw/9rj7/+5vMD/ICAgTysuM4r969b/fDYA/55h - Ff+7xM//KioqBgAAAAAlJSWN//////////+BgoT//////4Y+AP+TUwP/ikoA/4pLAP+KSwD/ikoA/5NT - A/+GPgD//////8/Z5v+STQD/klIB/4xNAP+JSwD/iksA/4lLAP+TUwP/iEEA///54f8yNTmOKy4ziv3r - 1v98NgD/nmEV/7vEz/8pKSkGAAAAAE5OTrn//////////3p8fv////z/bR0A/3s0AP99NwD/jE4A/4xO - AP99NwD/ezQA/20dAP/7+fb/zNfm/3grAP97MwD/ezQA/4pLAP+MTgD/gDsA/3s0AP9vIQD/+eTL/zk8 - QIsrLjOK/evW/3w2AP+eYRX/u8TP/ygoKAYAAAAAZWVl3///////////ra2u/8zNzv//+Oj///7z//Xu - 5P9+OQD/fzoA//Lp3/////T///jo/87O0P9/goX////0///47P//////jE0A/387AP/axq7///////// - 8///////FRYXfCsuM4r969b/fDYA/55hFf+7xM//AAAAABISEhpeYGL/i5Od/4mRm/9SUlL/j4+P/3R2 - ef8oKy//+v///383AP9+NwD//v///yUoLf9ydXj/jY2O/7e3t/9qbXD/TlBT/73J1/+WWAn/ezQA//// - +f8AAAa/KSsvdRUWF28AAAAAKy4ziv3r1v98NgD/nmEV/7O7x/8AAAAXAAAAgv////+fYxb/qm4j/9be - 6P/Hx8f//////6Chov/t8fT/dywA/3csAP/x8/T/mpuc///////////////////////r6+v/sbrF/5BN - AP90KQD///7t/x8iJX4AAAAAAAAAAAAAAAArLzOK/evW/3w2AP+WWxD//////8vV4P/Q3Or//////3gv - AP+AOAD/0Nrn/729vf//////kJGS//Hz9f/Bklj/wJJY//X19v+Ki4z//////////////////////9zc - 3P+ts7r/1q17/7+RV///////FBYYhwAAAAAAAAAAAAAAACwwNIv76NH/fzoA/4lKAP+NTQD/k1MC/5NT - A/+KSQD/iksA/4Q/AP/Q2uf/vb29////////////RUZG/3h+hv94fob/Q0RF//////////////////// - /////////////zU1Nft9g4rmhoyU605PUuBCQkIXAAAAAAAAAAAAAAAAEhQXgv////9uHwD/fTcA/3s0 - AP97NAD/ezQA/3w1AP99NwD/dikA/9bg7f+6urr///////////////////////////////////////// - ////////////////////////V1dXwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIThIiN//// - //////T////2////9/////b///Xp///16f////L/hIaJ/9vb2/////////////////////////////// - //////////////////////////////////9AQECbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAzMzMSFhgadDE0N3sxNDd6IyUocQ8RFeV7foH/bnB0/2dqbf+vr6////////////////////////// - /////////////////////////////////////////////xoaGm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR07f///////////////83Ozv9kZmn/bnBz/21v - cv91d3j/g4OE/2tucf9maGv/srKy///////////////////////4+Pj/ISEhRQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkpL///////////+8vLz/homP//// - +v//9er///Xq/////P/q6+z///bq////9/91d3r/5OTk/////////////////8fHx/8nJycbAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NFMHBwf///////////2Nm - aP////b/axsA/3oxAP92LQD/gT0A//r38v9rGwD/eSoA/9rk8P/MzMz/////////////////lJSU/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAg87+/v//// - ////////bnF0//7z5v93LAD///////nz7/94MgD//////5hjHv/v28L/S1Ja/1xeYf+SkpP///////// - //9wcHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AGL///////////////9ucHT//vTm/3swAP/Q3Ov/8eXX/3kyAP//////lmAa/8Oief////z///3w/9fa - 3P9zc3T//////11dXcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAJSUlj////////////////3V3ev/+9Ob/ezAA/9Th8P/x5df/eTIA//////+ebCv/ejIA/3gw - AP9uIAD/6c6u/29zeP//////QUFBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAkJCR6YGBg221tbf6mpqb/TlBT///67f97MAD/4PD///Xs4f95MgD//////5Zf - GP/cybH//////5lkHv/iyan/cXV7//////8cHBxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOK///1/3IoAP/t39D/x6uG/3s1 - AP//////ikoA/7WOXP/n2cr/iUoA/+HHp/+BhYv//////yEhIUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYHCW3/////oGMW/5td - D/+cXhD/uotQ//////+ZWgv/oWYb/5teD/+cXg/////8/ygrLu1RUVH3KysrHQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9 - Pt61vcf/rLS//662wP+boqr/d3l8/7G5w/+stL7/rLS+/7W9x/9eYWT9NjY2FQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8f////AD///wAAf8AAAB+AAAAfAAAAHwAA - AB8AAAAHAAAABwQAAAECAAAAAgAAAAIAAAACAAAABAAAAQAAAAcAAAAHAAAABwAAAH8AAAB/gAAAf/wA - AH/8AAB/+AAA//gAAP/4AAD/+AAA//gAAP//gAD//4AA///AA///////KAAAABgAAAAwAAAAAQAgAAAA - AABgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCiYAAABWAAAAKgAA - AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrK33//////////9XV1f+pqan/jY2N4WxsbLhFRUWQFRUVZwAA - AEAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA0AAAANAAAAATAx - NKb//////////v////3////+///////////////////////////o6Oj/ubm5/5ycnPJycnLTCwsLDwAA - AAAAAAAAAAAAABgZGTTExsv/2dPN/9XRzP/V0cz/1dHN/8zHwf+hnpz/ra6v/f////////////////39 - /f3//////f39/f///////////////v/////Pz8//AAAAAAAAAAAAAAAAAAAAAGFocafEj03/fDIA/Xou - AP96LgD/ei8A/XswAP/Zt47/lZqg/f////////////////////3//////f39/f///////////v7+/f// - //+SkpLtAAAAAAAAAAAAAAAAAAAAAGtyfKezfzv/hkUA/uzXv//z2r3/1ryY/nYtAP3Vt5L9mJ2j/v// - //2ZmZn9m6Ks/Zujrf6Xl5f9/////v39/f3+/v79/////m5vcf6gqrb8jZGX6h8fHx4AAAAAAAAAAGlw - eqezfzz/l1YF/5Ger+cAAABQ2dna/4MzAP/gwJr/nqOo/f////+co63/qGoe/6ZnGf2cpK7//////f// - ////////7/Dy/bOwqv+FNgD//+fD/wgMElkAAAAAAAAAAGlweqezfzz/llQC/6Krtt0AAAAAUVJUzK+5 - xf+Sl53/aWpr/aKpsv+wwNP/oGcd/55iGP2ywtX/nKOs/Y6Pj/+OkZX/jJWg/djb3f93KQD/7de6/0tX - ZcRaX2akIiIiLWlweqezfzz/llQC/6Stud4AAAAAAAAAWP/////////9pKWn/reDQP27j1j9i00A/YtM - AP67j1j9tYA+/rm8wv3v2sH9soFC/q9/Rv2BPwD9nGck/sOUWf/qxZT/bXJ5rmlweqezfzz/llQC/6Su - ud4AAAAAPz8/if//////////qKip/Yc4AP+IQgD/h0cA/4dIAP2IQgD/hDUA/cnO1f/ev5f/gjcA/YRA - AP+KSwD/g0AA/YtCAP+8gzz/d36HrWlweqezfzz/llQC/6StuN4AAAAALS0vu6uxuf+Tlpr/dHV3/aKs - uP/W6P//n2Ye/51hGf3Y6///oau3/Wxtbv+Pk5n/maWz/fP4/f92KQD/6NO4/6CuwPGxuMHxOzs7WWlw - eqezfzz/l1YE/4+aqN0AAAAAzs/P/8SUW//2483/mp2g/f////+cpK//l1gI/5VTA/2cpa///////f// - ////////8PL0/a2ppP9wHgD/7NCr/wkOFFIAAAAAAAAAAGlxe6ezfzz/i0oA/vP2+v/Kx8T/7+fc/m0e - AP3Ssov9mJ2j/v////2AhIn96tCv/erPrv5+gof9/////v39/f3////98fLz/qupp//ty6D//////woM - D1kAAAAAAAAAAGxzfaq0fTf/eDEA/XYpAP96LgD/dCkA/XcuAP/SsYn/l5yj/f/////p6en/jJCU/4yQ - lf3n5+f//////f///////////////zY3OL4kKS9ZFRcZWAAAAAAAAAAAAAAAAB4gI1z/+e//8ta0//HX - uP/z2br/3sSl/tu/nf3v49T9jY+R/v////3////9/////f////7////9/v7+/v39/f39/f39/////zk5 - OXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDxI0ISUrWCQoLlEAAACKqq60/5aboP+bnqD//////f// - //////////////////3//////////f///////////////w0NDUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAiIiJt//////////+0tLT/maKs/Z+os/+hqrb/iIuP/6OsuP2Chov/2tra/f// - ////////8vLy/w0NDR8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFCZ//////// - //2Xn6r9omEQ/otEAP2EOwD9/fXq/XosAP7mxp/9k5ec/v////3////9wMDA/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enrB//////////+gqbX/hjwA/f////+eaif//////45P - Af32////bHR9/ZeZm///////mpqa9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAChoaHs//////////+hqrb/i0EA/en5//+dZyH//////5NaEf2hbCn/tn88/cW+s//W19r/kJCQyQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYWHeoqKi/srKyv+jrLf/jEMA/vj/ - //2gayj9/////Y1QBP7////9rH5F/sq3nv3Mz9P/cHBwnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACps77xhTkA/8qshf+AOgD/9+/n/3kwAP3Eo3r/kFED/dPB - qP/q7fH/RkZGeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABdYGS6//jl/+nSs//v2b//9PX0//Dav//q1Lf/9+DD/7a2tf8AAABXGBgYIwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNwQHDDkAAwg4AwQGKQEF - CTkDBws4AQQJPBMUFQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPw//wD8AH8AwAAHAAAA - DwAAAA8AAAADAAAAAwAIAAAACAAAAAgAAAAIAAAACAADAAAAAwAAAAcAAAAfAIAAHwDwAB8A8AA/APAA - PwDwAD8A8AA/AP4APwD+AD8A/wD/ACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAALCwsXUpKSn0WFhZRAAAALAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAIaKkMb/////////////////////09PT/7e3t+OPj4+6Z2dnlxQU - FDEAAAAAAAAAAF1gZZDOsIr/vp94/76gev+uj2j/qa60//////////////////////////////////// - //8YGBhHAAAAAAAAAACTkYzJhDQA/82jbP/DlFn/cR0A/8zW4///////rrO6/6yyuP////////////// - //+6vsP/WmFoqwYGBgMAAAAAjYuIxJxSAP9aan+YgYeQxsWQTv/Ax8//xM7a/7OKWP+1jVn/t8HN//// - ///g6fT/mXtU/+m4ef8AAAo+AAAAAI2Kh8SbUQD/dH6KhAAAAC3i6fH/lZaZ/6B/V/+kcjL/pHAw/59/ - V/+Ynqf/nHtU/6t8Qv+eZyD/xKV+/4WDg8KNiofEm1EA/3F6h4QJCgpK/////72/wv+/jUz/mF0W/5Zd - Ff++jUz/yNDb/72LTf+gaib/kFMJ/9yrbP+enZrNjYuIxJxSAP9ZZ3qBUVdepZt+Wf+doqf/l6Oz/7qR - X/+6kV7/jJio/93e3v+tuMX/pYdi/9imaP8ADR1jCAkKC5KNiceDNwD/xKuK/8Smf/9zHAD/0dvo//3/ - //+LgnX/i4J2//P09v///////////4qCef/Jva7/CQsOGgAAAABxdXmr5Ld+/8+hZf++kFX/u4xR/7rA - yP////////////////////////////////8YGRtCAAAAAAAAAAAAAAAAAAAAAAgOFjMBBw8iiI+X+9HX - 3//AxMn/v8XN/8THy/+4vsX/9vb2////////////AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX1 - 9f/c4OT/vKOE/7B8O//ZybT/toJD/7S7xP//////6urq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB7/////xcvT/7J/QP/y9/3/yaqD/7eLVf+oqa3/xMbI/9DR0fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAGBgY75ubm/6yyuv+5iEv/5uvz/82xjf+mdjn/sn8//7Gllv++wMPNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAt8MaR/7yIRv/lyaX/qm8l/76HQv+7tKr/cXJ0oAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFGTXBaYGh8QkdNc1lha3tcY2yAISIlNAAAAAAAAAAAAAAAAAAA - AAAAAAAA8H8AANADAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAcAAIAHAADgDwAAwA8AAMAP - AADwDwAA+B8AAA== - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/CustomEditors.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/CustomEditors.cs deleted file mode 100644 index 2bb749c..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/CustomEditors.cs +++ /dev/null @@ -1,327 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: CustomEditors.cs -/// Date: 09/19/2007 -/// -/// Description: -/// -/// Some C# editor subclasses. -///**************************************************************** - -using System; -using System.Windows.Forms; -using System.Windows.Forms.Design; -using System.Drawing.Design; -using System.ComponentModel; -using System.Collections.Generic; -using System.Drawing; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// FindExecutableEditor - ///========================================== - - // This find file editor is used to find the location of opCpp.exe only. - public class FindExecutableEditor : UITypeEditor - { - /*=== overrides ===*/ - - // Tells the designer what kind of editing style this editor uses. - public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) - { - return UITypeEditorEditStyle.Modal; - } - - // This method fires when the user wishes to edit a value. - public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) - { - StringOption option = (StringOption) value; - OpenFileDialog form = new OpenFileDialog(); - - form.Title = "Find opCpp.exe"; - form.Filter = "opC++ Executable (opCpp.exe) | opCpp.exe"; - - if (form.ShowDialog() == DialogResult.OK) - option.Value = form.FileName; - - return option; - } - }; - - ///========================================== - /// FindLicenseEditor - ///========================================== - - // This find file editor is used to find the location of opCpp.oplicense only. - public class FindLicenseEditor : UITypeEditor - { - /*=== overrides ===*/ - - // Tells the designer what kind of editing style this editor uses. - public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) - { - return UITypeEditorEditStyle.Modal; - } - - // This method fires when the user wishes to edit a value. - public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) - { - StringOption option = (StringOption) value; - OpenFileDialog form = new OpenFileDialog(); - - form.Title = "Find opC++.oplicense"; - form.Filter = "opC++ License (opC++.oplicense) | opC++.oplicense"; - - if (form.ShowDialog() == DialogResult.OK) - option.Value = form.FileName; - - return option; - } - }; - - ///========================================== - /// StringListEditor - ///========================================== - - // This editor will pop up a dialog for populating strings. - public abstract class StringListEditor : UITypeEditor - { - /*=== virtuals ===*/ - - // Override this to initialize the dialog. - protected virtual void InitializeDialog(StringListForm form) - { - - } - - // Override this to initialize the strings added (via some dialog). - public virtual List GetNewStrings() - { - List strings = new List(); - - return strings; - } - - /*=== overrides ===*/ - - // Tells the designer what kind of editing style this editor uses. - public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) - { - return UITypeEditorEditStyle.Modal; - } - - // This method fires when the user wishes to edit a value. - public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) - { - StringListOption option = (StringListOption) value; - StringListForm form = new StringListForm(); - - InitializeDialog(form); - - form.Editor = this; - form.AddFiles(option.StringList); - - if (form.ShowDialog() == DialogResult.OK) - { - option.StringList = form.Strings; - - return option; - } - - return option; - } - }; - - ///========================================== - /// OhFilesEditor - ///========================================== - - public class OhFilesEditor : StringListEditor - { - /*=== overrides ===*/ - - // Override this to initialize the dialog. - protected override void InitializeDialog(StringListForm form) - { - form.Text = "Additional Header Files"; - } - - // Override this to initialize the strings added (via some dialog). - public override List GetNewStrings() - { - List strings = new List(); - OpenFileDialog form = new OpenFileDialog(); - - form.Title = "Find Header Files"; - form.Filter = "Header Files (*.oh)|*.oh|All Files (*.*)|*.*"; - form.Multiselect = true; - - if (form.ShowDialog() == DialogResult.OK) - { - string[] files = form.FileNames; - - foreach (string s in files) - strings.Add(s); - } - - return strings; - } - }; - - ///========================================== - /// DohFilesEditor - ///========================================== - - public class DohFilesEditor : StringListEditor - { - /*=== overrides ===*/ - - // Override this to initialize the dialog. - protected override void InitializeDialog(StringListForm form) - { - form.Text = "Additional Dialect Files"; - } - - // Override this to initialize the strings added (via some dialog). - public override List GetNewStrings() - { - List strings = new List(); - OpenFileDialog form = new OpenFileDialog(); - - form.Title = "Find Dialect Files"; - form.Filter = "Dialect Files (*.doh)|*.doh|All Files (*.*)|*.*"; - form.Multiselect = true; - - if (form.ShowDialog() == DialogResult.OK) - { - string[] files = form.FileNames; - - foreach (string s in files) - strings.Add(s); - } - - return strings; - } - }; - - ///========================================== - /// DependencyFilesEditor - ///========================================== - - public class DependencyFilesEditor : StringListEditor - { - /*=== overrides ===*/ - - // Override this to initialize the dialog. - protected override void InitializeDialog(StringListForm form) - { - form.Text = "Additional Dependencies"; - } - - // Override this to initialize the strings added (via some dialog). - public override List GetNewStrings() - { - List strings = new List(); - OpenFileDialog form = new OpenFileDialog(); - - form.Title = "Find Dependencies"; - form.Filter = "All Files (*.*)|*.*"; - form.Multiselect = true; - - if (form.ShowDialog() == DialogResult.OK) - { - string[] files = form.FileNames; - - foreach (string s in files) - strings.Add(s); - } - - return strings; - } - }; - - ///========================================== - /// IncludeDirectoriesEditor - ///========================================== - - public class IncludeDirectoriesEditor : StringListEditor - { - /*=== overrides ===*/ - - // Override this to initialize the dialog. - protected override void InitializeDialog(StringListForm form) - { - form.Text = "Additional Include Directories"; - } - - // Override this to initialize the strings added (via some dialog). - public override List GetNewStrings() - { - List strings = new List(); - FolderBrowserDialog form = new FolderBrowserDialog(); - - if (form.ShowDialog() == DialogResult.OK) - strings.Add(form.SelectedPath); - - return strings; - } - }; - - ///========================================== - /// OhCompileDirectories - ///========================================== - - public class OhCompileDirectories : StringListEditor - { - /*=== overrides ===*/ - - // Override this to initialize the dialog. - protected override void InitializeDialog(StringListForm form) - { - form.Text = "Header Compile Directories"; - } - - // Override this to initialize the strings added (via some dialog). - public override List GetNewStrings() - { - List strings = new List(); - FolderBrowserDialog form = new FolderBrowserDialog(); - - if (form.ShowDialog() == DialogResult.OK) - strings.Add(form.SelectedPath); - - return strings; - } - }; - - ///========================================== - /// FeatureDirectoriesEditor - ///========================================== - - public class FeatureDirectoriesEditor : StringListEditor - { - /*=== overrides ===*/ - - // Override this to initialize the dialog. - protected override void InitializeDialog(StringListForm form) - { - form.Text = "Additional Feature Directories"; - } - - // Override this to initialize the strings added (via some dialog). - public override List GetNewStrings() - { - List strings = new List(); - FolderBrowserDialog form = new FolderBrowserDialog(); - - if (form.ShowDialog() == DialogResult.OK) - strings.Add(form.SelectedPath); - - return strings; - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.Designer.cs deleted file mode 100644 index 29816be..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.Designer.cs +++ /dev/null @@ -1,81 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class FeatureManagerForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FeatureManagerForm)); - this.btnCancel = new System.Windows.Forms.Button(); - this.btnOk = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(222, 174); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 0; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(141, 174); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 1; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - // - // FeatureManagerForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(309, 209); - this.Controls.Add(this.btnOk); - this.Controls.Add(this.btnCancel); - this.DoubleBuffered = true; - this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FeatureManagerForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Feature Manager"; - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Button btnOk; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.cs deleted file mode 100644 index 08fa0cf..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.cs +++ /dev/null @@ -1,31 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: FeatureManagerForm.cs -/// Date: 09/26/2007 -/// -/// Description: -/// -/// Feature manager form class. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class FeatureManagerForm : Form - { - public FeatureManagerForm() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.resx deleted file mode 100644 index 71e0ce2..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/FeatureManagerForm.resx +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAMAEBAQAAEABAAoAQAANgAAABAQAAABAAgAaAUAAF4BAAAQEAAAAQAgAGgEAADGBgAAKAAAABAA - AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA - AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAgAAAAAAAAAf/+IiHAAh3d4//// - 8AB8fMj4j/+HAIyIiIh4+IcAd4CIfIyHyHiMgPiMiIjsh4aHh4jniIgAjIjI94j/dwCI6Oj///8AAAAI - iIiP/wAAAAj4eHj4AAAAD4eIyIgAAAAIiIiIiAAAAAAI6OeHAAAAAACAiAAAAPv/AADwBwAAAAcAAAAD - AAAAAwAAEAAAABAAAAAAAwAAAAMAAAAPAADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAEAAAACAA - AAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAANEYJADSHCgA2zw3AOJSOwDpaD8A6nJNAPB+ - RADma1cA63ZTAOt3VADmcl4A7H1bAN9ibADEa3cA5HpnAOFrdQDicX0A5nt6APaMPAD3kEIAyIF+AM6K - fADFmH4A745sAOiBfQDuk3UA75d+APqtagD1p38A+7V3AJiYmACklosArpaXAKCYmACwmZgApqKfALKi - mgC4pZgAoaGhAKaioQCvpaEAqampALqppgC3t7cAvb29AN2FgQDTnIAA15KZAOmHgADvmYEAwqieAOim - gwDyo4YA5LWOAOm1iQD8v4cA7qOeAMK8ugDnqK4A9bmiAP3DhwD8w4gA+MKVAMfBvwD8zaUAwsLCAMbG - xgDR0dEA1NTUANra2gDm1c8A69bVAOHh4QDm5uYA9vb2APv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAKgAAAAAAAAAAAAAAAAAAJ0xMTElC - LCoqAAAAJw4ODg4tTExMTExMTAAAACECEA0BQkxCQktMTEIfAAAjAyciEi1CLi5CTEYVGQAAIwQqAEIo - FgsLFicWDwgWIiUFLABMOhsKChtAMgwGGyglBycfFycqNDQnRi0vHQAAJRQ2NxNCSiYmSUxLICYAACQ+ - Pj0+QkxMTExMTAAAAAAAAAAfQEJDREJMTEwAAAAAAAAAREQwETsRQkxEAAAAAAAAAExDMUg5GStCQgAA - AAAAAAAtJzVHPBgaMywAAAAAAAAAAAA/OEEcHiYnAAAAAAAAAAAAACoAKioAAAAAAAD7/wAA8AcAAAAH - AAAAAwAAAAMAABAAAAAQAAAAAAMAAAADAAAADwAA4A8AAOAPAADgDwAA4A8AAPgPAAD9PwAAKAAAABAA - AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqamp/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoaGh//v7 - +//7+/v/+/v7/+Hh4f/CwsL/t7e3/6mpqf+pqan/AAAAAAAAAAAAAAAAoaGh/8Rrd//Ea3f/xGt3/8Rr - d/+9vb3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/wAAAAAAAAAAAAAAAK6Wl//SHCj/4Wt1/99i - bP/RGCT/xsbG//v7+//CwsL/wsLC//b29v/7+/v/+/v7/8LCwv+YmJj/AAAAAAAAAACwmZj/2zw3/6Gh - of+gmJj/5nt6/729vf/CwsL/3YWB/92Fgf/CwsL/+/v7/9ra2v/IgX7/6IF9/wAAAAAAAAAAsJmY/+JS - O/+pqan/AAAAAMbGxv+moqH/zop8/+ZyXv/mcl7/zop8/6aiof/Oinz/5Hpn/+ZrV//Oinz/oJiY/7Ki - mv/paD//t7e3/wAAAAD7+/v/wry6/++Xfv/rd1T/63ZT/++Xfv/Hwb//75mB/+x9W//qck3/75d+/6+l - of+yopr/8H5E/6Ghof+YmJj/xZh+/6Ghof+pqan/6KaD/+img/+hoaH/2tra/729vf/TnID/9ad//wAA - AAAAAAAAsqKa//eQQv/ktY7/6bWJ//aMPP/Gxsb/5ubm/7ilmP+4pZj/5ubm//v7+//29vb/pJaL/7il - mP8AAAAAAAAAAKain//8w4j//MOI//3Dh//8w4j/wsLC//v7+//7+/v/+/v7//v7+//7+/v/+/v7/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJj/x8G//8bGxv/Gxsb/0dHR/8bGxv/29vb/+/v7//v7 - +/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NTU/9TU1P/Xkpn/4nF9/+eorv/icX3/wsLC//v7 - +//U1NT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/Gxsb/6YeA/+vW1f/uo57/6IF9/7qp - pv/CwsL/wsLC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9vb3/oaGh//Kjhv/m1c//9bmi/++O - bP/uk3X/wqie/7e3t/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4wpX//L+H//zN - pf/6rWr/+7V3/7ilmP+hoaH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmp - qf8AAAAAqamp/6mpqf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7/wAA8AcAAAAHAAAAAwAAAAMAABAA - AAAQAAAAAAMAAAADAAAADwAA4A8AAOAPAADgDwAA4A8AAPgPAAD9PwAA - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.Designer.cs deleted file mode 100644 index 4a13609..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.Designer.cs +++ /dev/null @@ -1,138 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class GlobalOptionsForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GlobalOptionsForm)); - this.btnOk = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.btnAbout = new System.Windows.Forms.Button(); - this.btnDefaults = new System.Windows.Forms.Button(); - this.btnUnlock = new System.Windows.Forms.Button(); - this.propertyGrid = new opGamesLLC.opCpp2005.GlobalOptionsPropertyGrid(); - this.SuspendLayout(); - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(426, 420); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 0; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - this.btnOk.Click += new System.EventHandler(this.btnOk_Click); - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(507, 420); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 1; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // btnAbout - // - this.btnAbout.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnAbout.Location = new System.Drawing.Point(12, 420); - this.btnAbout.Name = "btnAbout"; - this.btnAbout.Size = new System.Drawing.Size(90, 23); - this.btnAbout.TabIndex = 3; - this.btnAbout.Text = "About opC++"; - this.btnAbout.UseVisualStyleBackColor = true; - this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click); - // - // btnDefaults - // - this.btnDefaults.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnDefaults.Location = new System.Drawing.Point(189, 420); - this.btnDefaults.Name = "btnDefaults"; - this.btnDefaults.Size = new System.Drawing.Size(75, 23); - this.btnDefaults.TabIndex = 5; - this.btnDefaults.Text = "Defaults"; - this.btnDefaults.UseVisualStyleBackColor = true; - this.btnDefaults.Click += new System.EventHandler(this.btnDefaults_Click); - // - // btnUnlock - // - this.btnUnlock.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnUnlock.Location = new System.Drawing.Point(108, 420); - this.btnUnlock.Name = "btnUnlock"; - this.btnUnlock.Size = new System.Drawing.Size(75, 23); - this.btnUnlock.TabIndex = 6; - this.btnUnlock.Text = "Unlock"; - this.btnUnlock.UseVisualStyleBackColor = true; - this.btnUnlock.Click += new System.EventHandler(this.btnUnlock_Click); - // - // propertyGrid - // - this.propertyGrid.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.propertyGrid.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.propertyGrid.Location = new System.Drawing.Point(12, 12); - this.propertyGrid.Name = "propertyGrid"; - this.propertyGrid.Size = new System.Drawing.Size(570, 402); - this.propertyGrid.TabIndex = 4; - // - // GlobalOptionsForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(594, 455); - this.Controls.Add(this.btnUnlock); - this.Controls.Add(this.btnDefaults); - this.Controls.Add(this.propertyGrid); - this.Controls.Add(this.btnAbout); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOk); - this.DoubleBuffered = true; - this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "GlobalOptionsForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "opC++ Global Settings"; - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button btnOk; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Button btnAbout; - private GlobalOptionsPropertyGrid propertyGrid; - private System.Windows.Forms.Button btnDefaults; - private System.Windows.Forms.Button btnUnlock; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.cs deleted file mode 100644 index ac989f4..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.cs +++ /dev/null @@ -1,86 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: GlobalOptionsForm.cs -/// Date: 09/23/2007 -/// -/// Description: -/// -/// The form for changing global options. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace opGamesLLC.opCpp2005 -{ - // This is the global options dialog class. - public partial class GlobalOptionsForm : Form - { - /*=== construction ===*/ - - public GlobalOptionsForm() - { - InitializeComponent(); - - // Initialize the property grid. - this.propertyGrid.RefreshGrid(); - } - - /*=== events ===*/ - - // When Ok button is clicked, save the global options. - private void btnOk_Click(object sender, EventArgs e) - { - this.propertyGrid.Save(); - } - - // Launch the about dialog. - private void btnAbout_Click(object sender, EventArgs e) - { - AboutForm form = new AboutForm(); - string license = opLicenseUtility.FullLicenseFileName; - string message = ""; - StreamReader r = null; - - try - { - r = new StreamReader(license); - - message = r.ReadToEnd(); - r.Close(); - } - catch (Exception) - { - message = "The opC++ license file '" + license + "' is either " + - "missing or corrupted."; - } - - form.License = message; - form.ShowDialog(); - } - - // When defaults button is clicked, reset globals to their defaults. - private void btnDefaults_Click(object sender, EventArgs e) - { - this.propertyGrid.Defaults(); - this.propertyGrid.RefreshGrid(); - } - - // Fired when the user clicks the unlock button. - private void btnUnlock_Click(object sender, EventArgs e) - { - UnlockForm form = new UnlockForm(); - - form.ShowDialog(); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.resx deleted file mode 100644 index 8940f45..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/GlobalOptionsForm.resx +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA - CACoDgAAHgsAACAgAAABAAgAqAgAAMYZAAAQEAAAAQAIAGgFAABuIgAAMDAAAAEAIACoJQAA1icAACAg - AAABACAAqBAAAH5NAAAYGAAAAQAgAIgJAAAmXgAAEBAAAAEAIABoBAAArmcAACgAAAAwAAAAYAAAAAEA - BAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA - wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj4d3d3AAAAAAAAAAAAAAAAAAAAAAAAB/////j4iHd3dwAA - AAAAAAAAAAAAAAAAB/////////+PiId3d3AAAAAAAAAAAAAAB4//////////////j4cAAAAAAHd3eHd4 - d3d///////////////cAAAAAB4iIiIiIiI9///////////////cAAAAAB4ZsZkZkZk9v//////////// - //cAAAAACIRmRmxmxm8f//////////////cAAAAACHZGbGZkZG9///d3B3//////hwB3AAAACIxn///4 - ZG9f/4eP/3j////4eP/4cAAACHZG8Hd4bG9v/3iGZ/f////4eGZ/cAAACIZn9wB4Zn8f/3h2x4f////4 - eGxvQAAACHxs9wB///h4iHh2Z4eIj4iIeGRvMAAACIZH9wAAdWd3d398Z/d3dnd3iGZveHdwCHZm9wAH - //h4iIhmRoiI9/iIiMRoiIiACHxm9wAHj/94ZsZsZsZkh/ZGxmZGxkiACIZH9wAH//h4RmRmRmRmiPZG - ZGRkZmeACHbG9wAH//94bGbGRsZs9/ZsZkZmxsiACIRn9wAH//h///92Z///8I//+Gxv//9wCHZs9wB3 - cHN3Q090Z4RzeHdSiGRvB3cACIxm9wB4j49P/3h2x/f////4eEZvcAAACHZH9wB4Zk9//3iGZvf////4 - eGxvUAAACIZm93eIRm8//3h8aIf////4eGZ/YAAACHxsiIiIbG9P/4f//3j/////f//4cAAACIZGZGbG - Rk9///d2F3//////dHdXAAAACHZkZsZkZm9f////////////cAAAAAAAB/bHbGZmbH8v//////////// - cAAAAAAAB3////////h/////////////QAAAAAAAAAd3d3B1JXeP////////////cAAAAAAAAAAAAAeP - ///////////////4cAAAAAAAAAAAAAf///h3B3B3B2eP///4AAAAAAAAAAAAAAeP/4eP//+P//h////3 - AAAAAAAAAAAAAAf//3h2ZmeIZn9f///3AAAAAAAAAAAAAAf//39sdsaIbG8v///3AAAAAAAAAAAAAAj/ - /w9m/4SPdvhY///2AAAAAAAAAAAAAH///39l+IaPdPh3d4/3AAAAAAAAAAAAAH///39m+ISP5IiIh4+H - AAAAAAAAAAAAAH///w9s+IaPdkZkiH+AAAAAAAAAAAAAAA///39n+ISPdoiGeH+AAAAAAAAAAAAAAIdw - dw9k+IaPbPiM6H9wAAAAAAAAAAAAAAAAAH9m/4yPdo/2f39wAAAAAAAAAAAAAAAAAH9kZGaIbGZGeH9w - AAAAAAAAAAAAAAAAAHiHfneIZ3Z2iFZwAAAAAAAAAAAAAAAAAAePj4+I////hgAAAAAAAAAAAAAAAAAA - AAAHd3cHd3d3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/+H////8AAP/4 - AP///wAA//gAAP//AAD/+AAAAf8AAP/4AAAA/wAAwAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAD/ - AACAAAAAAD8AAIAAAAAAHwAAgAAAAAAfAACAwAAAAB8AAIDAAAAAHwAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDgAAAAAQAAgMAAAAADAACAwAAAAB8AAIDAAAAAHwAAgAAAAAAf - AACAAAAAAB8AAIAAAAAAPwAAgAAAAAf/AACAAAAAB/8AAIAAAAAH/wAA4AAAAAf/AAD/gAAAB/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/4AAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAB// - AAD/AAAAH/8AAP8AAAAf/wAA//wAAB//AAD//AAAH/8AAP/8AAAf/wAA//4AAP//AAD//4ID//8AAP// - /////wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAh3d3AAAAAAAAAAAAAAAAAP////iHd3AAAAAAAAAAAAeP////////+HcAAAB4iIiIh/ - /////////3AAAAhmRmZGiP////////9wAAB4ZGRkZoj/+I/////4cAAAeGz4+EaI+HiHj///eIgAAIhm - h3hsiPiGb4//+IZocAB4RoAIj4iH9Gh4/4iGT3AAeGyAB3d3iPZPiHeI9kiIgHhmgAf/iGZGRmT4ZGRm - Zod4xoAH/39GZGxmiGZGxsaHiGaAB/+IiIZoiIiI9miI8HhkgAd3d4eMaHeId4RocAB4xoB/Z4j4hk9/ - //iGyHAAeGb4iGyI+Ifoj///h4iAAIhkZGZGiP93d////3d3AAB4bGZGZPj///////9wAAAAB/iPiI9/ - ////////cAAAAAAAAHd3j////////wAAAAAAAAB//4d3eHeP//gAAAAAAAAAf/iI+PiPf//4AAAAAAAA - AI/3hmZoZoj/9wAAAAAAAACP9/T4z3h3j/cAAAAAAAAA//eGiG9niIf3AAAAAAAAB//39o9vfGaH+AAA - AAAAAAB3h4aIb2j2h/AAAAAAAAAAAAeMiM9njIfwAAAAAAAAAAAA9mZ/bHb2cAAAAAAAAAAAAHeId4h4 - cAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8AAB+AAAAfgAAAHwAAAB8AAAAPAAAABwYA - AAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAAAH+AAAB//AAA//wAAP/8AAD//AAA//wA - AP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A - AAD/AP8A//8AAP///wAAAAgAAAAAAAAAf//4iHAAh3d4////8AB2fkj4j/+HAIaHiId4+HgAdICIZ2eH - ZniGgPh8aI5Wh3aHeIfniHcAhHfI94//eAB453j///8AAAAIiIiP/wAAAAiI6Hj4AAAAD4eIaIgAAAAI - h4jHiAAAAAAIaG54AAAAAACAiAAAAPv/AADwBwAAAAcAAAADAAAAAwAAEAAAABAAAAAAAwAAAAMAAAAP - AADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAAB - AAAAAQAAAAAAAC8vLwAyMjIANTU1ADo6OgA8PDwAQ0NDAElJSQBNTU0AUFBQAFZWVgBZWVkAXV1dAGJi - YgBlZWUAaWlpAGxsbABxcXEAdnZ2AHl5eQB9fX0Ai00BAIxOAACNUAMAjlEFAJBUCACRVgwAk1gPAJRb - EwCWXRYAll4YAJliHgCbZiMAnGYjAJxnJACdaCUAnmooAKBtLQChbzAAonEyAKRzNQCldDcApXU4AKd4 - PQCoej8Ar4ROALCFUACzilYAtItYALaPXgC3kF8AuJNjALqVZgC8mGoAvZpuAL+ccQDCoXgAxaZ/AIGB - gQCFhYUAioqKAI2NjQCSkpIAlZWVAJmZmQCfn58Ao6OjAKWlpQCqqqoAra2tALGxsQC1tbUAurq6AL+/ - vwDGp4AAyq6KAM2ykQDQtpcA07yfANW+ogDWwKQA2MKoANnFqwDaxq4A28iwANzKswDezLYA3824AODR - vQDDw8MAxcXFAMnJyQDNzc0A0dHRANTU1ADZ2dkA3NzcAOXXxQDn28sA6uDSAOvh1ADt49cA7uTZAPDo - 3QDj4+MA5eXlAOnp6QDt7e0A8uviAPPt5QD38u0A8vLyAPX19QD59fIA+vr6AP37+gD+/v4AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAALChA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK - dHBgSEASCwoNEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdHR0dHR0dHR0a1tD - Ow0KCxI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7dHR0dHR0dHR0dHR0dHR0dHBeRz8SCgsQ - EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAASWWh0dHR0dHR0dHR0dHR0dHR0dHR0dHRwaxMAAAAAAAAAAAAA - ChM/Pz8/Pz8/Pz8/PwtDdHR0dHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAJa2FPT09PT09PT09P - UXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0dA0AAAAAAAAAAAA/VhYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dHR0dAsAAAAAAAAAAABHShYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0 - dA0AAAAAAAAAAABHORYWGSEhISEhHhYWGXQKdHR0dD8LCwsLPHR0dHR0dHR0dEgLCwMLOwAAAAAAAABH - ORYWKnR0dHR0VBYWGXQKdHR0Rjt0dHR0O0Z0dHR0dHR0awpwdHR0WRMAAAAAAABHORYWKnAEDQs8VhYW - GXQKdHR0O143ISE3YBN0dHR0dHR0WzxWISErdAoAAAAAAABHORYWKnASAAA7VyEhJXQKdHR0E14yFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXATAAAJb3R0dFsNXllZDWAxFhYvYAtZWV50aFlZQDxU - FhYfdAkAAAAAAABHORYWKXATAAAAAQoKCxALEz8/P2sxFhYvaz8/PxIGCz8/P1tUFhYfdEA/PzwJAABH - ORYWKXATAAAAC3R0dHANblBQT08rFhYqUFBQT24SdFFPUFA2FhYcT1BQT2NDAABHORYWKXATAAAAC3R0 - dGgQYhYWFhYWFhYWFhYWFmI/dBkWFhYWFhYWFhYWFjlHAABHORYWKXATAAAADXR0dGsQYhYWFhYWFhYW - FhYWFmI/dBwWFhYWFhYWFhYWFjlHAABHORYWKXATAAAAE3R0dGsQYyEhISEZFhYZISEhIWM8dCkhISEe - FhYZISEhIUxHAABHORYWKXATAAAAQHBwcHAJa3R0dHQzFhYxdHR0dGsDW3R0dHRUFhYfdHR0dHQNAABH - ORYWKXATAAATCQ0NDQk8CwsKA2AxFhYvYAMKCgtZEAsKCT9QFhYfdAQQDQ0AAABHORYWKXASAAANcWRk - ZHAKdHR0O14xFhYxXxN0dHR0dHR0WTxUFhYfdAoAAAAAAABHORYWKXALAAA7VBYWGXQKdHR0E14zFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXQ/Pz9bVBYWGXQKdHR0O142HBwzYBN0dHR0dHR0WzxW - HBwldAoAAAAAAABHORYWIU9QT09QNxYWGXQKdHR0Rjx0dHR0PER0dHR0dHR0awpwdHR0WxIAAAAAAABH - ORYWFhYWFhYWFhYWGXQKdHR0dDsKCgoKO3R0dHR0dHR0dDsJCw0NEgAAAAAAAABGSxYWFhYWFhYWFhYW - GXQKdHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAAAAANbi0hISEhISEhISEhJXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dA0AAAAAAAAAAAAAAAA/PHB0dHR0dHR0dHR0dFsQdHR0dHR0dHR0dHR0dHR0dHR0dAsA - AAAAAAAAAAAAAAAAABAQEBAQDQMKCgoKCxBrdHR0dHR0dHR0dHR0dHR0dHR0dBAAAAAAAAAAAAAAAAAA - AAAAAAAAAA10dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0azsAAAAAAAAAAAAAAAAAAAAAAAAAAAp0dHR0 - dFsNCwoKCgsTCwsKChJwdHR0dHR0WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAt0dHR0WQtrdHR0dHRZcHR0 - dEgQdHR0dHR0QwAAAAAAAAAAAAAAAAAAAAAAAAAAABJ0dHR0C3A5ISUjJSlmViMlKXQKdHR0dHR0EwAA - AAAAAAAAAAAAAAAAAAAAAAAAAEB0dHR0C3QhFh8fHBZQVBkWJXQKdHR0dHR0DQAAAAAAAAAAAAAAAAAA - AAAAAAAAAEh0dHR0CnQhHnR0ThZQdDMWZ1sJW2h0dHR0CwAAAAAAAAAAAAAAAAAAAAAAAAAAP2B0dHR0 - CnQhHHRITxZQdDMWZ0c8PBASdHR0EAAAAAAAAAAAAAAAAAAAAAAAAAAAEHR0dHR0CnQhHnRIThZQdDMW - TFRPVGc8R3RoPAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R0dHR0CnQhHHRHTxZQdDMWFhYWFjVdO3RbAAAA - AAAAAAAAAAAAAAAAAAAAAAAACmt0dHR0CnQhHnRIThZQdDMWS05LFjNeO3RDAAAAAAAAAAAAAAAAAAAA - AAAAAAAAPBALCQsTBHQhHnRZTxZQdDMWZ29nFjVdO3Q6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - CnQhHHFxTRZQdDEWY3FjFjNeO3QNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXQhGRkZFhZQTxYW - GRkWFjVdE3QLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE2hNLS0tLS9nYS0uLS0uLldGCQsQAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlba2toa2hGXmtqampqakgJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAOzo7EzsAPDo7Ojs6OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA//h/////AAD/+AD///8AAP/4 - AAD//wAA//gAAAH/AAD/+AAAAP8AAMAAAAAA/wAAgAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAA/ - AACAAAAAAB8AAIAAAAAAHwAAgMAAAAAfAACAwAAAAB8AAIDgAAAAAQAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDAAAAAAwAAgMAAAAAfAACAwAAAAB8AAIAAAAAAHwAAgAAAAAAf - AACAAAAAAD8AAIAAAAAH/wAAgAAAAAf/AACAAAAAB/8AAOAAAAAH/wAA/4AAAAf/AAD/gAAAD/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAf/wAA/wAAAB// - AAD/AAAAH/8AAP/8AAAf/wAA//wAAB//AAD//AAAH/8AAP/+AAD//wAA//+CA///AAD///////8AACgA - AAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAVVVVAF9fXwBiYmIAZWVlAG1t - bQBwcHAAdXV1AHh4eAB9fX0AjE4AAI1QAwCOUQUAkFUKAJFWDACTWQ8Ak1kQAJRbEgCVXBUAl18YAJdg - GgCZYh0Am2YjAJ1oJQCeaikAo3EzAKNyNACkczUApXU4AKh5PgCpfEIAtY1bALeRYAC4kmIAwJ5zAMCe - dADDpHwAgoKCAIWFhQCJiYkAjo6OAJKSkgCWlpYAmpqaAJ2dnQChoaEApqamAKurqwCtra0AsrKyALa2 - tgC4uLgAvLy8AMyxjwDPtZUA0biZANbApQDYw6kA2MSqANrGrgDcybEA4dG9AMLCwgDGxsYAycfFAMnJ - yQDOzMgAz8/PANTRzgDZ1M0A3NbOANfU0ADW1tYA2dXQANra2gDe3t4A49TBAOTVwwDk1sQA5tnIAObc - zwDo3MwA49vQAOTd0gDm3tUA4t7ZAOvh1ADs4tUA7ObeAODg4ADl5eUA7ejhAOnp6QDt7e0A9e/pAPHx - 8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLScnJykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF////// - /19IMSkmJycAAAAAAAAAAAAAAAAAAAAAAAAJSF////////////////9aPi0DAAAAAAAACS8xMzEzMTMx - CV3//////////////////ycAAAAAAABSGBUVFRMVFRU+Qf//////////////////LQAAAAAAKToKCgoK - CgoKDUA///9dSEhd////////X0gmAAAAAAApOgoVTExMNwoMPz//SiYxMyZK/////18JMTMtAAAAACk6 - ChcvKQNRCgw/P/8vSRUSSS3/////SjEaEkwpAAAAKToKFy8AAERMTC1BSClJCgpJKEhdX0ozMRUKPSYA - AAApOgoXLQAABigpJiczMVsKClgzMycGMzFdFQo9MzMtACk6ChcvAAAp//8tUhQVEgoKEhMTUj4XFRIM - ChIVEjwpKToKFy0AACf//y1JCgoKCgoKCgpSPg0KCgoKCgoKOi0pOgoXLwAAJl//L0BMTDwKCjpMTEAt - TExMEgo1TExSACk6ChctAAAGLSkGLScDSQoKSQMoLTEpCTEVCj0DAAAAKToKFy8AJlAaHT5B/y9JCgpJ - Lv////9KMRUKPS0AAAApOgoXWjEzUQoMQT7/L0ggIUkv/////1ovIyFWKQAAACk6CgwVFRISCgxBQf9f - CSgoCV///////wMnKQkAAAAAKUwKCgoKCgoKDEE+////////////////JwAAAAAAAAAAJ1JMTExMTExM - LUr///////////////8tAAAAAAAAAAAAAAAAAAEnKSkx/////////////////wAAAAAAAAAAAAAAAAAA - J////0EnKSctLScpM/////9KAAAAAAAAAAAAAAAAAAAp//8+LVFMTFJKTE8tSv///zMAAAAAAAAAAAAA - AAAAADH//ydRChMSFUwMEj5B////LQAAAAAAAAAAAAAAAAAASv//KUwSXz0V/x42CSYv//8nAAAAAAAA - AAAAAAAAAABf//8nTBJBPRX/HiJMTEEt/ycAAAAAAAAAAAAAAAAAKf///ylMD0g9E/8eDRMMNyf/LQAA - AAAAAAAAAAAAAAAAJiYpBT0SSD0U/x42/x03Kf8AAAAAAAAAAAAAAAAAAAAAAAAmTAw4JBReGCA4Fzcn - WgAAAAAAAAAAAAAAAAAAAAAAAABSHRoaH1EaGhoaTAIFAAAAAAAAAAAAAAAAAAAAAAAAAAkpLS0nJi0t - KS0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8A - AB+AAAAfgAAAHwAAAB8AAAAPAAAABwYAAAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAA - AH+AAAB//AAA//wAAP/8AAD//AAA//wAAP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAA - AAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAACNUAMAj1IHAJBVCgCUWxIAnGYjAJ9s - KwCgbCwAo3IzAKRzNgCmdz0Apng9AKl+SACtgUkAr4ROALKJVQC2j14An4dpAKaLaACnjGkAqIxpAKiO - bQC3kWAAs5FmALiSYgC4k2QAupVmALKTawC1lW0Au5ZoALyXagC8mGsAs5dzAMCfdgCXjoUAlpWTAJeX - lwCdmpYAmJiYAKabjgClnI8ApZ2SAKCcmAC/qY0AoqCdAKikngCwpJQAoaGhAKSioQClpaUAqaelAKmp - qQCtra0AsKmhALe3twC5ubkAvru4AL29vQDKrooAy6+MANG9pADDwL0AwsLCAMXEwwDGxsYAzMzMANrS - yQDR0dEA1NTUANra2gDh2c8A4eHhAObm5gDu7u4A8/PzAPb29gD7+/sA/v7+AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAADMAAAAAAAAAAAAAAAAAAC9M - TExHPjYzMwAAAC8TExMTOUxMTExMTEwAAAApAhYPAj5MPj5LTEw+JgAAKQQvJRg9PhwcPkxFExgAACkE - MwBALxQLChMyFAwJFCopBDYATDkWBgYWPRgKBRYtKQQvJREvMxYcL0Q5EhAAACkDIBwCQEgpKEhMSyIo - AAAsGBYWFj5MTExMTEwAAAAAAAAAJD4+QUFBSUxMAAAAAAAAAEREKx88HT5MRAAAAAAAAABLPh9GOxg1 - Pj0AAAAAAAAAOS8dQjsNDy42AAAAAAAAAAAAIRg7Cw0pLwAAAAAAAAAAAAAzADM2AAAAAAAA+/8AAPAH - AAAABwAAAAMAAAADAAAQAAAAEAAAAAADAAAAAwAAAA8AAOAPAADgDwAA4A8AAOAPAAD4DwAA/T8AACgA - AAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEyhQUFN0CAgKxBgYGiRcX - F2AvLy84LS0tEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycn9f// - ////////+Pj4/8jIyP+Xl5f/ampq/z4+Pv8XFxfpAAAAwQAAAJkPDw9wIyMjSS0tLSAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAS0tL///////////////////////////////////////////////////////b29v/rKys/35+ - fv9PT0//ICAg+gsLC9EEBASqBgYGgSEhIVkqKiowMTExCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAcHBwYgICA//////3//////f39/f39/f3//////f39/f39/f3//////f39/f// - //3//////////f////3/////////////////////7+/v/8DAwP+RkZH/ZGRk/zMzM/8YGBjiBgYGugAA - AJIbGxttLy8vGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIXFhYWMRwc - HC8bGxsvGxsbLxsbGy8bGxsvHBwcLxcXFysAAABld3d3/8jIyP319fX//////f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////////f/////////9/////f// - //////////////////+FhYX/ISEhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpKGQAA - AO2Bg4b/nqGm/5mdov+ZnaL/mZ2i/5mdov+ZnaL/mZ2i/5qeov+cn6T/jJCU/4aKjv8XFxf/oqKi//// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////9ycnL/RkZGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAABAQE9f///////PD/69a+/e3awv3t2sL/7drC/e3awv3t2sL/7drC/e3awv/t2sL97drB/erU - uv3/////ERER/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////88PDz/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhI3pKer//nq2f1vJAD/fjkA/X45AP2AOwD/fjkA/X45AP2AOwD/fjkA/YA7 - AP9+OQD9fTgA/XImAP3/////Hx8f/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////8WFhblAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhJRzdLY/86tg/+CPwD/jE4A/4tNAP+JSgD/iUoA/4lK - AP+JSgD/iUoA/4pLAP+MTgD/i00A/344AP//////Hx8f//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/iUsA/YpM - AP2QUwj/jlAE/Y5QBP2OUAT/j1EG/Y5SBf+ISQD9iUsA/X44AP3/////Hx8f/f////3//////f39/f// - //11dXX/HBwc/SUlJf0kJCT/Hh4e/XBwcP3//////f39/f39/f3//////f39/f/////9/f39/f39/f// - ///ExMT9Ghoa/SwsLP8AAADnAAAAwwAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gy - i/+CPwD/iEcA/51qKP///////////////////////////+3j2P9/OgD/i00A/344AP//////Hx8f//// - /////////////6SkpP9fX1///////////////////////19fX/+enp7///////////////////////// - //////////////////8BAQH///////////////////////Dw8P8AAAClAAAAAAAAAAAAAAAAAAAAAAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAA6QsLC70AAADJf4KG//Ljz/96NAD9h0cA/Xs0 - AP3/////Hx8f/f////3//////////VhYWP3v9fz/vpZl/YpKAP2KSwD/uI9b/fr///1PT0///////f39 - /f3//////f39/f/////9/f39/////cbGxv97foL99eTQ/YVDAP+OUQP9kFUK/f////8AAADSAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////CwsLowAAAAAmJiYUi42R//jq - 2P+DPwD9jU8C/oNBAP3/////Gxsb/f////3//////////WNjY/3o7vf/t4xX/YA9AP2CPwD/soVM/fD3 - //1aWlr//////f////3//////f39/f/////////9/////dHR0f92en798eDK/Xw2AP+FRAD9iEcA/f// - //8AAADPAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////EBAQqAAA - AAAAAAAAFhYW///////////9/////f////3e3t7/RUVF/fHx8f2+vr7/0dHR/TMzM/3p7/f/uY9b/YNB - AP2FRAD/tIhR/fH4//0qKir/0tLS/b6+vv3Y2Nj//////ff39/+7u7v9yMjI/Y6Ojv9zdnr98uLM/X86 - AP+ISQD9iksA/f////8AAADYHx8fIxQUFDAVFRUqAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xm - Iv//////Dw8PqAAAAAAAAAAAPz8/JwAAAOYrKyv/Hx8f/xwcHP9KSkr/VFRU/1FSU/+EiIz/f4OI/4CE - if//////t49c/4VDAP+FQwD/s4hS//////+BhYn/f4OI/4SIjP9WV1f/Dg4O/yQkJP+Hio7/gIOI/3yA - hf/h6PH/7N7L/386AP+KSwD/i0wA//////+coKX/lpqf/5yfpP+Ympz/AAAA7QAAAAAZGRlPyM3U/9Gy - i/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAAAAAAMP//////////f////3/////Ly8w/f// - //3o0rb/7drC/e3awv3m18T/pXY6/YZFAP2HRwD/pHI1/ebXxP3t2sL/7drC/ejStv3/////Tk9P/f// - ///r17397dnB/e3awv/n1sH9xqeB/YNBAP+JSgD9i00A/ebYx//r2MD97drC/erVuv////39vb/B/xkZ - GUoZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAACIiIu///////f39/f// - //35+fn/RkhK/f//9v1wIwD/fjkA/X45AP2AOwD/hkUA/YpMAP2MTgD/hkYA/X45AP2AOwD/fjkA/W8i - AP3/+vD/d3p8/f////92LAD9fDcA/YA7AP9+OQD9gj8A/YxOAP+KTAD9iUoA/YA7AP9+OQD9fjkA/XYs - AP/KqH39yc7V/ycnJ1AZGRlPyM3U/9Gyi/+CPwD/iEcA/5xmIv//////Dw8PqAAAAAAAAAAAAAAAAERE - RP/////////////////5+fn/REZJ////+/96MgD/iUoA/4lKAP+JSgD/i0wA/4xOAP+MTgD/i0wA/4lK - AP+JSgD/iUoA/3oyAP///fT/c3V4//////9/OQD/iEgA/4lKAP+JSgD/iksA/4xOAP+MTgD/i00A/4lK - AP+JSgD/iUoA/387AP/PsIj/xsvS/ysrK08ZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAA - AAAAAAAALCwsFHR0dP/////9/////f////35+fn/RUdJ/f///v2BPAD/jlAE/Y5QBP2PUwf/jE4A/YlL - AP2LTAD/i00A/ZBTCP2OUAT/jlAE/YE8AP3///j/fX+B/f////+GSAD9jU4B/Y5QBP+PUgb9jVAF/YpL - AP+KTAD9iksA/Y9UCf+OUAT9jlAE/YVDAP/UtpD9z9TZ/yAgIFMZGRlPyM3U/9Gyi/2CPwD/hkYA/Zxm - Iv3/////Dw8PqAAAAAAAAAAAEhISN6+vr//////9/////f////3/////AwMD/f////3//////////f// - //3/////uJJh/YNBAP2FRAD/tIpX/f////3//////////f////3/////AAAA/d/f3//////9/////f// - ///////96uDS/X86AP+ISQD9jE4C/f//////////////////////////TU1N/zIyMiQZGRlPyM3U/9Gy - i/+CPwD/iEcA/5xmIv//////EBAQqAAAAAAAAAAAAAAAlSwsLf83OTv/NDY4/zg6PP8AAAD/wcHB/yIi - Iv8eHh7/JSUl/wAAAP/y+f//uI9a/4VDAP+FQwD/s4dQ//v///8AAAD/JSUl/x4eHv8aGhr/6enp/z09 - Pf8bGxv/ISEh/wQEBP+GiY7/8eDL/386AP+KSwD/iksA//////8AAAD0CgoKvhEREcMAAADBODg4UAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dg4OpwAAAAATExMHWFla///////////9/////f// - //3/////FhYW/f////3//////////Wpqav3n7vb/uY9b/YNBAP2FRAD/tIhR/e/2//1hYWH//////f// - //3//////////f/////////9/////d/f3/91eHz98uLM/X86AP+ISQD9iksA/f////8AAADNAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAAuBkZGSIAAABLgYWJ//He - yP9vIQD9ezQA/W4gAP3/////Hx8f/f////3//////////V5eXv3o7vb/uI5Y/YI/AP2EQQD/s4ZO/fD3 - //1VVVX//////f39/f3//////f39/f/////9/f39/////crKyv92eX798uHL/X44AP+HRwD9iUkA/f// - //8AAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xnJP//////j5KX/5mc - of+RlZn/2+Lr/+/h0f9/OgD/i00A/344AP//////Hx8f/////////////////1lZWf/x9v7/totV/303 - AP99OAD/sINL//r///9PT0///////////////////////////////////////8TExP99gIT/8eDK/3cv - AP+BPgD/hUUA//////8AAADSAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/h0gA/ZZe - F/3m2Mb/7drB/e3awv3t2sL/6NfB/cepg/+CPwD9iksA/X44AP3/////Hx8f/f////3//////////ZmZ - mf1sbGz//////f////3//////////WxsbP2Tk5P//////f39/f3//////f39/f/////9/f39/////f// - //8PDw/9//////////////////////v7+/8AAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlQys/W/8+w - iP2CPwD/ikwA/YdIAP2AOwD/fjkA/X45AP2AOwD/fjkA/YNBAP+KTAD9iksA/X44AP3/////Hx8f/f// - //3//////f39/f////1jY2P/FBQU/R8fH/0fHx//FBQU/V9fX/3//////v7+/f39/f3//////f39/f// - ///9/f39/f39/f////+Dg4P/AAAA1xsbG9QbGxvVGhoa1wAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAPDw9KxsrQ/9e7mP97NAD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iEkA/3s0 - AP//////Hx8f//////////////////////////////////////////////////////////////////// - //////////////////////////////////94eHj/Ojo6CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAuLi4MS0xN//////6gbSr/i00A/Y5QBP2OUAT/jlAE/Y5QBP2OUAT/jlAE/Y5Q - BP+OUAT9jU8C/YNBAP3/////Gxsb/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////9CQkL/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEgIaHiP////////////////////////////// - /////////////f/////////9/////f////3d3d3/Jycn/f////3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////8aGhroAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vL0kAAACtEhISxBER - EcIRERHCEhISwgwMDL8AAADoJCQk/x8fH/8fHx//Hx8f/xsbG/8xMTH///////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8GBga9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5///////////////9/////f////3//////////f// - //3//////////f////3//////////f////3//////////f////3//////////f39/f3//////f39/f// - ///9/f39/////f////8ICAiTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFxfo//////////////////////// - ///Y2Nj/JSUl/x0dHf8fHx//Hx8f/x8fH/8cHBz/Z2dn/yEhIf8eHh7/Hx8f/xoaGv9DQ0P///////// - /////////////////////////////9fX1/8jIyNqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PT3//////v// - ///9/f39/////dTU1P0EBAT//////f////3//////////f////3/////tbe5/f////3//////////f// - //3ExMT/MzMz/f////3//////f39/f/////9/f39/////aOjo/87Ozs+AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw - MAxra2v//////f/////9/f39/////RsbG/3/////wJpu/YpMAP2OUgX/jlIF/Y5SBf2NUAP//////d7M - tf2FRAD/j1QI/YlJAP3/////Ghoa/f////3//////f39/f/////9/f39/////XJycv9SUlIUAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACEhITOampr//////////////////////x0dHf//////h0YA/4RCAP+KSwD/iUkA/4lJ - AP96MgD/3824/97Ouf99NwD/hUMA/4NBAP//////ICAg/////////////////////////////////0FB - Qf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHlrFxcX//////f/////9/f39/////R8fH/3/////jE0A/YVE - AP3//////////eLTwf1zKAD/3cqz/f////26lmj/dCgA/f////3a3N7/Dw8P/eDg4P319fX//////f// - ///9/f39/////xcXF+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODoL19fX//////f/////9/f39/////R8f - H/3/////jE0A/YNBAP3/////p6uw/eLNtP1zKAD/3cqz/f////2zjFn/dCgA/f////2mq7H/goaK/Xl8 - gf02Nzj/Pz8//f/////+/v79/////wUFBb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKj///////////// - /////////////x8fH///////jE0A/4NBAP//////pait/+PPtf9zKAD/3Mmy//////+zjFn/eTEA/9zJ - sv/s2sX/8d7I/+3Zvv//////a2xt/62trf///////////xUVFZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P - D9D//////f39/f/////9/f39/////R8fH/3/////jE0A/YNBAP3/////pqqv/ePPtf1zKAD/3cqz/f// - //2zjFn/g0EA/XUrAP1zKAD/cykA/XUsAP24jVb/6vD4/VxcXP/////92dnZ/ygoKGkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACwsLP/////////////////////9/////SQkJP3/////jE0A/YNBAP3/////o6es/ePP - tf1zKAD/3cqz/f////2zjFn/ejIA/dfCpv3cyrL/18Ko/XoyAP29lmT/5evz/WBgYP/////9paWl/zw8 - PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGIoAAACuBQUF1BcXF/tHR0f/hoaG/w0NDf//////jE0A/4NC - AP//////t7zB/+HNtP9zKAD/3Mmy//////+zjVr/dCoA///////2/f///////3MoAP+9lmT/5Ory/2Fh - Yf//////dHR0/0lJSRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioqEgAA - AM//////jE0A/YZEAP3//////////d/MuP10KQD/3cqz/f////23kWL/dSoA/f////3//////////XMo - AP29lmT/5Ory/WJiYv/////+QUFB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAoKCsL/////hUQA/YE9AP13LgD/di4A/Xw2AP14MAD/3826/djCqP10KQD/hUQA/Xkw - AP12LgD/eTEA/Xw3AP23jVj/6fD3/Wpqav//////JSUl6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKP/////2r6f/6V1Nv+qfEH/qnxB/6p8QP+ndTb//////+nc - yv+icC//q31C/6p9Qf+qfEH/qn1B/6VxMv/77Nn/0dTX/wAAAMMEBATNBgYGswAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJSREGBgb///////////////////////// - ////////oKGi//r9///////////////////////////////////e4OT/AAAA7QAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTU1MOBQUFggEB - AZUEBASTBAQElAMDA5QAAACSKysrXQcHB4wBAQGUBAQElAQEBJQEBASTAwMDlAAAAJUPDw90AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP/4D////wAA//gAH///AAD/+AAAH/8AAP/wAAAAfwAA4AAAAAB/ - AACAAAAAAH8AAIAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAPwAAAAAAAAAfAAAAAAAAAB8AAACA - AAAAHwAAAMAAAAADAAAAwAAAAAEAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAA - AAAAwAAAAAEAAACAAAAAHwAAAAAAAAAfAAAAAAAAAB8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAA/8AAAAA - AAAH/wAAgAAAAAf/AADAAAAAB/8AAP+AAAAH/wAA/4AAAAf/AAD/gAAAB/8AAP8AAAAH/wAA/wAAAA// - AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/+AAAH/8AAP/8 - AAAf/wAA//wAAB//AAD//AAA//8AAP/+AAH//wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwFAAAALwoK - CgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcH - BzTAwMD/s7Oz/3p6ev9lZWXeSUlJtSMjI44CAgJlBgYGPQ4ODhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAgICWf/////////////////////////////////////s7Oz/vr6+/5CQkP9ra2vvVVVVxjIy - Mp4KCgp1BgYGTQsLCyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYOAgICGQQE - BBgEBAQYBAQEGAAAAA8AAACO8vLy//////////////////////////////////////////////////// - ////////////////////////0dHR/66urv80NDTuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD0/3dPc - 5//Y4e3/1t/r/9bf6//W3+v/1uDr/9Xf6v/AytX/Ojo6//////////////////////////////////// - /////////////////////////////////////////////2NjY8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAB - AnD/////lFAA/5JRAP+TUwL/k1MC/5NTAv+TUwL/k1IB/5BIAP/Z4+7/t7e3//////////////////// - ////////////////////////////////////////////////////////PT09lgAAAAAAAAAAAAAAAAAA - AAAAAAAALC8zjPvp0f98NQD/iEgA/3s0AP97NAD/ezQA/345AP+JSgD/gjwA/9Da5/+9vb3///////// - ///+/v7/0dHR/9HR0f/+/v7//////////////////////////////////////+3t7f8AAAB9AAAAAAAA - AAAAAAAAAAAAAAAAAAArLzOK/evV/303AP+QUwj/////////9///////4dG9/4A7AP+EPwD/0Nrn/729 - vf//////5eXl/0tMTf+/ydT/v8nV/0lKS//j4+P///////////////////////////8zMzP/vsfR/9rj - 7/+rrbD/KSkpRAAAAAAAAAAAAAAAACsuM4r969b/fDYA/55iFv+3w9H/DRATeAAAALb/////bh8A/3Yp - AP/W4O3/vb29//////+RkpP/+v3//4g/AP+IPwD//////4uMjf//////////////////////3d3d/7fA - yv+hYBD/hDwA//////8dICOGAAAAAAAAAAAAAAAAKy4ziv3r1v98NgD/nmEV/7vEz/8AAAAAAAAAVf// - ////9ub////y/4+RlP/W1tb/5OTk/21tb//u8vX/fTQA/300AP/y9Pb/aGlq/97e3v/7+/v//////9bW - 1v+vr6//rbbC/5VVBf95MgD////y/wAAAI8AAAAQCQkJCgAAAAArLjOK/evW/3w2AP+eYRX/u8TP/yYm - JgUAAAAAAAAAoIGDhv9vcnX/e3t7/2lrbP++x9P/ucTQ//////97NAD/fDQA//////+6xNH/vsfT/2Zn - af9ERET/v8jT/7O9yP//////j1EE/3s0AP///vf/1ODw/9rj7/+5vMD/ICAgTysuM4r969b/fDYA/55h - Ff+7xM//KioqBgAAAAAlJSWN//////////+BgoT//////4Y+AP+TUwP/ikoA/4pLAP+KSwD/ikoA/5NT - A/+GPgD//////8/Z5v+STQD/klIB/4xNAP+JSwD/iksA/4lLAP+TUwP/iEEA///54f8yNTmOKy4ziv3r - 1v98NgD/nmEV/7vEz/8pKSkGAAAAAE5OTrn//////////3p8fv////z/bR0A/3s0AP99NwD/jE4A/4xO - AP99NwD/ezQA/20dAP/7+fb/zNfm/3grAP97MwD/ezQA/4pLAP+MTgD/gDsA/3s0AP9vIQD/+eTL/zk8 - QIsrLjOK/evW/3w2AP+eYRX/u8TP/ygoKAYAAAAAZWVl3///////////ra2u/8zNzv//+Oj///7z//Xu - 5P9+OQD/fzoA//Lp3/////T///jo/87O0P9/goX////0///47P//////jE0A/387AP/axq7///////// - 8///////FRYXfCsuM4r969b/fDYA/55hFf+7xM//AAAAABISEhpeYGL/i5Od/4mRm/9SUlL/j4+P/3R2 - ef8oKy//+v///383AP9+NwD//v///yUoLf9ydXj/jY2O/7e3t/9qbXD/TlBT/73J1/+WWAn/ezQA//// - +f8AAAa/KSsvdRUWF28AAAAAKy4ziv3r1v98NgD/nmEV/7O7x/8AAAAXAAAAgv////+fYxb/qm4j/9be - 6P/Hx8f//////6Chov/t8fT/dywA/3csAP/x8/T/mpuc///////////////////////r6+v/sbrF/5BN - AP90KQD///7t/x8iJX4AAAAAAAAAAAAAAAArLzOK/evW/3w2AP+WWxD//////8vV4P/Q3Or//////3gv - AP+AOAD/0Nrn/729vf//////kJGS//Hz9f/Bklj/wJJY//X19v+Ki4z//////////////////////9zc - 3P+ts7r/1q17/7+RV///////FBYYhwAAAAAAAAAAAAAAACwwNIv76NH/fzoA/4lKAP+NTQD/k1MC/5NT - A/+KSQD/iksA/4Q/AP/Q2uf/vb29////////////RUZG/3h+hv94fob/Q0RF//////////////////// - /////////////zU1Nft9g4rmhoyU605PUuBCQkIXAAAAAAAAAAAAAAAAEhQXgv////9uHwD/fTcA/3s0 - AP97NAD/ezQA/3w1AP99NwD/dikA/9bg7f+6urr///////////////////////////////////////// - ////////////////////////V1dXwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIThIiN//// - //////T////2////9/////b///Xp///16f////L/hIaJ/9vb2/////////////////////////////// - //////////////////////////////////9AQECbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAzMzMSFhgadDE0N3sxNDd6IyUocQ8RFeV7foH/bnB0/2dqbf+vr6////////////////////////// - /////////////////////////////////////////////xoaGm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR07f///////////////83Ozv9kZmn/bnBz/21v - cv91d3j/g4OE/2tucf9maGv/srKy///////////////////////4+Pj/ISEhRQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkpL///////////+8vLz/homP//// - +v//9er///Xq/////P/q6+z///bq////9/91d3r/5OTk/////////////////8fHx/8nJycbAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NFMHBwf///////////2Nm - aP////b/axsA/3oxAP92LQD/gT0A//r38v9rGwD/eSoA/9rk8P/MzMz/////////////////lJSU/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAg87+/v//// - ////////bnF0//7z5v93LAD///////nz7/94MgD//////5hjHv/v28L/S1Ja/1xeYf+SkpP///////// - //9wcHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AGL///////////////9ucHT//vTm/3swAP/Q3Ov/8eXX/3kyAP//////lmAa/8Oief////z///3w/9fa - 3P9zc3T//////11dXcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAJSUlj////////////////3V3ev/+9Ob/ezAA/9Th8P/x5df/eTIA//////+ebCv/ejIA/3gw - AP9uIAD/6c6u/29zeP//////QUFBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAkJCR6YGBg221tbf6mpqb/TlBT///67f97MAD/4PD///Xs4f95MgD//////5Zf - GP/cybH//////5lkHv/iyan/cXV7//////8cHBxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOK///1/3IoAP/t39D/x6uG/3s1 - AP//////ikoA/7WOXP/n2cr/iUoA/+HHp/+BhYv//////yEhIUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYHCW3/////oGMW/5td - D/+cXhD/uotQ//////+ZWgv/oWYb/5teD/+cXg/////8/ygrLu1RUVH3KysrHQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9 - Pt61vcf/rLS//662wP+boqr/d3l8/7G5w/+stL7/rLS+/7W9x/9eYWT9NjY2FQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8f////AD///wAAf8AAAB+AAAAfAAAAHwAA - AB8AAAAHAAAABwQAAAECAAAAAgAAAAIAAAACAAAABAAAAQAAAAcAAAAHAAAABwAAAH8AAAB/gAAAf/wA - AH/8AAB/+AAA//gAAP/4AAD/+AAA//gAAP//gAD//4AA///AA///////KAAAABgAAAAwAAAAAQAgAAAA - AABgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCiYAAABWAAAAKgAA - AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrK33//////////9XV1f+pqan/jY2N4WxsbLhFRUWQFRUVZwAA - AEAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA0AAAANAAAAATAx - NKb//////////v////3////+///////////////////////////o6Oj/ubm5/5ycnPJycnLTCwsLDwAA - AAAAAAAAAAAAABgZGTTExsv/2dPN/9XRzP/V0cz/1dHN/8zHwf+hnpz/ra6v/f////////////////39 - /f3//////f39/f///////////////v/////Pz8//AAAAAAAAAAAAAAAAAAAAAGFocafEj03/fDIA/Xou - AP96LgD/ei8A/XswAP/Zt47/lZqg/f////////////////////3//////f39/f///////////v7+/f// - //+SkpLtAAAAAAAAAAAAAAAAAAAAAGtyfKezfzv/hkUA/uzXv//z2r3/1ryY/nYtAP3Vt5L9mJ2j/v// - //2ZmZn9m6Ks/Zujrf6Xl5f9/////v39/f3+/v79/////m5vcf6gqrb8jZGX6h8fHx4AAAAAAAAAAGlw - eqezfzz/l1YF/5Ger+cAAABQ2dna/4MzAP/gwJr/nqOo/f////+co63/qGoe/6ZnGf2cpK7//////f// - ////////7/Dy/bOwqv+FNgD//+fD/wgMElkAAAAAAAAAAGlweqezfzz/llQC/6Krtt0AAAAAUVJUzK+5 - xf+Sl53/aWpr/aKpsv+wwNP/oGcd/55iGP2ywtX/nKOs/Y6Pj/+OkZX/jJWg/djb3f93KQD/7de6/0tX - ZcRaX2akIiIiLWlweqezfzz/llQC/6Stud4AAAAAAAAAWP/////////9pKWn/reDQP27j1j9i00A/YtM - AP67j1j9tYA+/rm8wv3v2sH9soFC/q9/Rv2BPwD9nGck/sOUWf/qxZT/bXJ5rmlweqezfzz/llQC/6Su - ud4AAAAAPz8/if//////////qKip/Yc4AP+IQgD/h0cA/4dIAP2IQgD/hDUA/cnO1f/ev5f/gjcA/YRA - AP+KSwD/g0AA/YtCAP+8gzz/d36HrWlweqezfzz/llQC/6StuN4AAAAALS0vu6uxuf+Tlpr/dHV3/aKs - uP/W6P//n2Ye/51hGf3Y6///oau3/Wxtbv+Pk5n/maWz/fP4/f92KQD/6NO4/6CuwPGxuMHxOzs7WWlw - eqezfzz/l1YE/4+aqN0AAAAAzs/P/8SUW//2483/mp2g/f////+cpK//l1gI/5VTA/2cpa///////f// - ////////8PL0/a2ppP9wHgD/7NCr/wkOFFIAAAAAAAAAAGlxe6ezfzz/i0oA/vP2+v/Kx8T/7+fc/m0e - AP3Ssov9mJ2j/v////2AhIn96tCv/erPrv5+gof9/////v39/f3////98fLz/qupp//ty6D//////woM - D1kAAAAAAAAAAGxzfaq0fTf/eDEA/XYpAP96LgD/dCkA/XcuAP/SsYn/l5yj/f/////p6en/jJCU/4yQ - lf3n5+f//////f///////////////zY3OL4kKS9ZFRcZWAAAAAAAAAAAAAAAAB4gI1z/+e//8ta0//HX - uP/z2br/3sSl/tu/nf3v49T9jY+R/v////3////9/////f////7////9/v7+/v39/f39/f39/////zk5 - OXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDxI0ISUrWCQoLlEAAACKqq60/5aboP+bnqD//////f// - //////////////////3//////////f///////////////w0NDUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAiIiJt//////////+0tLT/maKs/Z+os/+hqrb/iIuP/6OsuP2Chov/2tra/f// - ////////8vLy/w0NDR8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFCZ//////// - //2Xn6r9omEQ/otEAP2EOwD9/fXq/XosAP7mxp/9k5ec/v////3////9wMDA/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enrB//////////+gqbX/hjwA/f////+eaif//////45P - Af32////bHR9/ZeZm///////mpqa9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAChoaHs//////////+hqrb/i0EA/en5//+dZyH//////5NaEf2hbCn/tn88/cW+s//W19r/kJCQyQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYWHeoqKi/srKyv+jrLf/jEMA/vj/ - //2gayj9/////Y1QBP7////9rH5F/sq3nv3Mz9P/cHBwnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACps77xhTkA/8qshf+AOgD/9+/n/3kwAP3Eo3r/kFED/dPB - qP/q7fH/RkZGeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABdYGS6//jl/+nSs//v2b//9PX0//Dav//q1Lf/9+DD/7a2tf8AAABXGBgYIwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNwQHDDkAAwg4AwQGKQEF - CTkDBws4AQQJPBMUFQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPw//wD8AH8AwAAHAAAA - DwAAAA8AAAADAAAAAwAIAAAACAAAAAgAAAAIAAAACAADAAAAAwAAAAcAAAAfAIAAHwDwAB8A8AA/APAA - PwDwAD8A8AA/AP4APwD+AD8A/wD/ACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAALCwsXUpKSn0WFhZRAAAALAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAIaKkMb/////////////////////09PT/7e3t+OPj4+6Z2dnlxQU - FDEAAAAAAAAAAF1gZZDOsIr/vp94/76gev+uj2j/qa60//////////////////////////////////// - //8YGBhHAAAAAAAAAACTkYzJhDQA/82jbP/DlFn/cR0A/8zW4///////rrO6/6yyuP////////////// - //+6vsP/WmFoqwYGBgMAAAAAjYuIxJxSAP9aan+YgYeQxsWQTv/Ax8//xM7a/7OKWP+1jVn/t8HN//// - ///g6fT/mXtU/+m4ef8AAAo+AAAAAI2Kh8SbUQD/dH6KhAAAAC3i6fH/lZaZ/6B/V/+kcjL/pHAw/59/ - V/+Ynqf/nHtU/6t8Qv+eZyD/xKV+/4WDg8KNiofEm1EA/3F6h4QJCgpK/////72/wv+/jUz/mF0W/5Zd - Ff++jUz/yNDb/72LTf+gaib/kFMJ/9yrbP+enZrNjYuIxJxSAP9ZZ3qBUVdepZt+Wf+doqf/l6Oz/7qR - X/+6kV7/jJio/93e3v+tuMX/pYdi/9imaP8ADR1jCAkKC5KNiceDNwD/xKuK/8Smf/9zHAD/0dvo//3/ - //+LgnX/i4J2//P09v///////////4qCef/Jva7/CQsOGgAAAABxdXmr5Ld+/8+hZf++kFX/u4xR/7rA - yP////////////////////////////////8YGRtCAAAAAAAAAAAAAAAAAAAAAAgOFjMBBw8iiI+X+9HX - 3//AxMn/v8XN/8THy/+4vsX/9vb2////////////AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX1 - 9f/c4OT/vKOE/7B8O//ZybT/toJD/7S7xP//////6urq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB7/////xcvT/7J/QP/y9/3/yaqD/7eLVf+oqa3/xMbI/9DR0fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAGBgY75ubm/6yyuv+5iEv/5uvz/82xjf+mdjn/sn8//7Gllv++wMPNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAt8MaR/7yIRv/lyaX/qm8l/76HQv+7tKr/cXJ0oAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFGTXBaYGh8QkdNc1lha3tcY2yAISIlNAAAAAAAAAAAAAAAAAAA - AAAAAAAA8H8AANADAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAcAAIAHAADgDwAAwA8AAMAP - AADwDwAA+B8AAA== - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.Designer.cs deleted file mode 100644 index 488eb2b..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.Designer.cs +++ /dev/null @@ -1,94 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class InputBoxForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(InputBoxForm)); - this.btnOk = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.txtInput = new System.Windows.Forms.TextBox(); - this.SuspendLayout(); - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(177, 39); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 0; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(258, 39); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 1; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // txtInput - // - this.txtInput.Location = new System.Drawing.Point(12, 12); - this.txtInput.Name = "txtInput"; - this.txtInput.Size = new System.Drawing.Size(321, 20); - this.txtInput.TabIndex = 3; - this.txtInput.WordWrap = false; - // - // InputBoxForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(345, 74); - this.Controls.Add(this.txtInput); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOk); - this.DoubleBuffered = true; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "InputBoxForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Input "; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnOk; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.TextBox txtInput; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.cs deleted file mode 100644 index f25d337..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.cs +++ /dev/null @@ -1,52 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: InputBoxForm.cs -/// Date: 09/25/2007 -/// -/// Description: -/// -/// Class for getting input from the user (a string). -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class InputBoxForm : Form - { - /*=== construction ===*/ - - public InputBoxForm() - { - InitializeComponent(); - - // Give the input box the focus. - txtInput.Focus(); - } - - /*=== data ===*/ - - // The text in the input text box. - - public string Input - { - get - { - return txtInput.Text; - } - set - { - txtInput.Text = value; - } - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.resx deleted file mode 100644 index 71e0ce2..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/InputBoxForm.resx +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAMAEBAQAAEABAAoAQAANgAAABAQAAABAAgAaAUAAF4BAAAQEAAAAQAgAGgEAADGBgAAKAAAABAA - AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA - AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAgAAAAAAAAAf/+IiHAAh3d4//// - 8AB8fMj4j/+HAIyIiIh4+IcAd4CIfIyHyHiMgPiMiIjsh4aHh4jniIgAjIjI94j/dwCI6Oj///8AAAAI - iIiP/wAAAAj4eHj4AAAAD4eIyIgAAAAIiIiIiAAAAAAI6OeHAAAAAACAiAAAAPv/AADwBwAAAAcAAAAD - AAAAAwAAEAAAABAAAAAAAwAAAAMAAAAPAADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAEAAAACAA - AAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAANEYJADSHCgA2zw3AOJSOwDpaD8A6nJNAPB+ - RADma1cA63ZTAOt3VADmcl4A7H1bAN9ibADEa3cA5HpnAOFrdQDicX0A5nt6APaMPAD3kEIAyIF+AM6K - fADFmH4A745sAOiBfQDuk3UA75d+APqtagD1p38A+7V3AJiYmACklosArpaXAKCYmACwmZgApqKfALKi - mgC4pZgAoaGhAKaioQCvpaEAqampALqppgC3t7cAvb29AN2FgQDTnIAA15KZAOmHgADvmYEAwqieAOim - gwDyo4YA5LWOAOm1iQD8v4cA7qOeAMK8ugDnqK4A9bmiAP3DhwD8w4gA+MKVAMfBvwD8zaUAwsLCAMbG - xgDR0dEA1NTUANra2gDm1c8A69bVAOHh4QDm5uYA9vb2APv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAKgAAAAAAAAAAAAAAAAAAJ0xMTElC - LCoqAAAAJw4ODg4tTExMTExMTAAAACECEA0BQkxCQktMTEIfAAAjAyciEi1CLi5CTEYVGQAAIwQqAEIo - FgsLFicWDwgWIiUFLABMOhsKChtAMgwGGyglBycfFycqNDQnRi0vHQAAJRQ2NxNCSiYmSUxLICYAACQ+ - Pj0+QkxMTExMTAAAAAAAAAAfQEJDREJMTEwAAAAAAAAAREQwETsRQkxEAAAAAAAAAExDMUg5GStCQgAA - AAAAAAAtJzVHPBgaMywAAAAAAAAAAAA/OEEcHiYnAAAAAAAAAAAAACoAKioAAAAAAAD7/wAA8AcAAAAH - AAAAAwAAAAMAABAAAAAQAAAAAAMAAAADAAAADwAA4A8AAOAPAADgDwAA4A8AAPgPAAD9PwAAKAAAABAA - AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqamp/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoaGh//v7 - +//7+/v/+/v7/+Hh4f/CwsL/t7e3/6mpqf+pqan/AAAAAAAAAAAAAAAAoaGh/8Rrd//Ea3f/xGt3/8Rr - d/+9vb3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/wAAAAAAAAAAAAAAAK6Wl//SHCj/4Wt1/99i - bP/RGCT/xsbG//v7+//CwsL/wsLC//b29v/7+/v/+/v7/8LCwv+YmJj/AAAAAAAAAACwmZj/2zw3/6Gh - of+gmJj/5nt6/729vf/CwsL/3YWB/92Fgf/CwsL/+/v7/9ra2v/IgX7/6IF9/wAAAAAAAAAAsJmY/+JS - O/+pqan/AAAAAMbGxv+moqH/zop8/+ZyXv/mcl7/zop8/6aiof/Oinz/5Hpn/+ZrV//Oinz/oJiY/7Ki - mv/paD//t7e3/wAAAAD7+/v/wry6/++Xfv/rd1T/63ZT/++Xfv/Hwb//75mB/+x9W//qck3/75d+/6+l - of+yopr/8H5E/6Ghof+YmJj/xZh+/6Ghof+pqan/6KaD/+img/+hoaH/2tra/729vf/TnID/9ad//wAA - AAAAAAAAsqKa//eQQv/ktY7/6bWJ//aMPP/Gxsb/5ubm/7ilmP+4pZj/5ubm//v7+//29vb/pJaL/7il - mP8AAAAAAAAAAKain//8w4j//MOI//3Dh//8w4j/wsLC//v7+//7+/v/+/v7//v7+//7+/v/+/v7/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJj/x8G//8bGxv/Gxsb/0dHR/8bGxv/29vb/+/v7//v7 - +/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NTU/9TU1P/Xkpn/4nF9/+eorv/icX3/wsLC//v7 - +//U1NT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/Gxsb/6YeA/+vW1f/uo57/6IF9/7qp - pv/CwsL/wsLC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9vb3/oaGh//Kjhv/m1c//9bmi/++O - bP/uk3X/wqie/7e3t/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4wpX//L+H//zN - pf/6rWr/+7V3/7ilmP+hoaH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmp - qf8AAAAAqamp/6mpqf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7/wAA8AcAAAAHAAAAAwAAAAMAABAA - AAAQAAAAAAMAAAADAAAADwAA4A8AAOAPAADgDwAA4A8AAPgPAAD9PwAA - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/OptionsPropertyGrid.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/OptionsPropertyGrid.cs deleted file mode 100644 index 89d5f63..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/OptionsPropertyGrid.cs +++ /dev/null @@ -1,396 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: OptionsPropertyGrid.cs -/// Date: 09/23/2007 -/// -/// Description: -/// -/// Contains the special property grid that reflects the global/project options. -///**************************************************************** - -using System; -using System.Reflection; -using System.Windows.Forms; -using System.ComponentModel; -using Flobbster.Windows.Forms; -using System.Collections.Generic; -using EnvDTE; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// OptionsPropertyGrid - ///========================================== - - // Abstract class representing an options property grid. - // You should inherit from this to create property grid classes. - public abstract class OptionsPropertyGrid : PropertyGrid - { - /*=== construction ===*/ - - public OptionsPropertyGrid() : base() - { - bag = new PropertyBag(); - - // Setup the event handlers. - bag.GetValue += new PropertySpecEventHandler(this.GetValue); - bag.SetValue += new PropertySpecEventHandler(this.SetValue); - } - - /*=== virtuals ===*/ - - // Override this method to save options. - public virtual void Save() - { - - } - - // Override this method to set options to their defaults. - public virtual void Defaults() - { - - } - - // Called when a value is needed. - protected virtual void GetValue(object sender, PropertySpecEventArgs e) - { - - } - - // Called when a value is changed. - protected virtual void SetValue(object sender, PropertySpecEventArgs e) - { - - } - - /*=== data ===*/ - - // The property bag. - - protected PropertyBag bag; - }; - - ///========================================== - /// GlobalOptionsPropertyGrid - ///========================================== - - // This is the property grid control for global options. - public class GlobalOptionsPropertyGrid : OptionsPropertyGrid - { - /*=== data ===*/ - - Options aOptions = null; - Options gOptions = null; - - /*=== construction ===*/ - - public GlobalOptionsPropertyGrid() : base() - { - aOptions = new Options(); - gOptions = new Options(OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options); - } - - /*=== utility ===*/ - - // This method refreshes the property grid. - public void RefreshGrid() - { - bag.Properties.Clear(); - - /*=== Setup the property bag. ===*/ - - FieldInfo[] oFields; - Type oType = typeof(Options); - - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - // Loop through all the fields in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // If the current field is not an option, ignore it. - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionInfo info = new OptionInfo(attrs); - - // Ignore options that shouldn't show up in the global options dialog. - if (!info.IsGlobal) - continue; - - OptionBase aOption = (OptionBase) oFields[i].GetValue(aOptions); - OptionBase gOption = (OptionBase) oFields[i].GetValue(gOptions); - PropertySpec ps = new PropertySpec(info.Name, gOption.GetOptionType()); - - ps.Category = info.Category; - ps.Description = info.Description; - ps.EditorTypeName = info.EditorType; - ps.ConverterTypeName = info.GlobalTypeConverter; - ps.DefaultValue = aOption; - - bag.Properties.Add(ps); - } - - // Set the selected object to be the bag. - this.SelectedObject = bag; - } - - /*=== overrides ===*/ - - // Override this method to set options to their defaults. - public override void Defaults() - { - gOptions = new Options(); - } - - // Override this method to save options. - public override void Save() - { - OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options = new Options(gOptions); - OptionsManager.GetGlobalOptions().Save(); - } - - // Called when a value is needed. - protected override void GetValue(object sender, PropertySpecEventArgs e) - { - FieldInfo[] oFields; - Type oType = typeof(Options); - - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - // Loop through all the fields in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // If the current field is not an option, ignore it. - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionNameAttribute oname = (OptionNameAttribute) AttributeUtility.GetAttribute(attrs); - string name = (oname != null) ? oname.OptionName : ""; - - if (e.Property.Name == name) - { - e.Value = oFields[i].GetValue(gOptions); - - return; - } - } - } - - // Called when a value is changed. - protected override void SetValue(object sender, PropertySpecEventArgs e) - { - FieldInfo[] oFields; - Type oType = typeof(Options); - - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - // Loop through all the fields in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // If the current field is not an option, ignore it. - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionNameAttribute oname = (OptionNameAttribute) AttributeUtility.GetAttribute(attrs); - string name = (oname != null) ? oname.OptionName : ""; - - if (e.Property.Name == name) - { - oFields[i].SetValue(gOptions, e.Value); - - return; - } - } - } - }; - - ///========================================== - /// ProjectOptionsPropertyGrid - ///========================================== - - public class ProjectOptionsPropertyGrid : OptionsPropertyGrid - { - /*=== data ===*/ - - private Options gOptions = null; - private Options pOptions = null; - private ProjectOptionsSet ProjectOptions = null; - private Project project = null; - private string Configuration = ""; - private string Platform = ""; - - /*=== construction ===*/ - - public ProjectOptionsPropertyGrid() : base() - { - - } - - /*=== utility ===*/ - - // Call this to initialize settings. - public virtual void Initialize(Project p) - { - project = p; - gOptions = new Options(OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options); - ProjectOptions = new ProjectOptionsSet(project); - - /*=== add the existing options ===*/ - - List options = OptionsManager.GetProjectOptions(p).Options; - - foreach (OptionsElement oe in options) - { - OptionsElement newOE = new OptionsElement(); - newOE.Configuration = oe.Configuration; - newOE.Platform = oe.Platform; - newOE.Options = new Options(oe.Options); - - ProjectOptions.AddConfiguration(newOE); - } - } - - // This method refreshes the property grid. - public void RefreshGrid(string configuration, string platform) - { - // If we don't have a project yet, don't run this method. - if (project == null) - return; - - bag.Properties.Clear(); - - Configuration = configuration; - Platform = platform; - - // Setup the new configuration. If it doesn't exist, add it. - pOptions = ProjectOptions.GetNewConfiguration(Configuration, Platform).Options; - - /*=== Setup the property bag. ===*/ - - FieldInfo[] oFields; - Type oType = typeof(Options); - - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - // Loop through all the fields in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // If the current field is not an option, ignore it. - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionInfo info = new OptionInfo(attrs); - - // Ignore options that shouldn't show up in the project options dialog. - if (!info.IsProject) - continue; - - OptionBase gOption = (OptionBase) oFields[i].GetValue(gOptions); - OptionBase pOption = (OptionBase) oFields[i].GetValue(pOptions); - PropertySpec ps = new PropertySpec(info.Name, pOption.GetOptionType()); - - ps.Category = info.Category; - ps.Description = info.Description; - ps.EditorTypeName = info.EditorType; - ps.ConverterTypeName = info.ProjectTypeConverter; - ps.DefaultValue = gOption; - - bag.Properties.Add(ps); - } - - // Set the selected object to be the bag. - this.SelectedObject = bag; - } - - /*=== overrides ===*/ - - // Override this method to set options to their defaults. - public override void Defaults() - { - pOptions.SetDefaults(); - } - - // Override this method to save options. - public override void Save() - { - /*=== update the global project options, then save ===*/ - - List options = ProjectOptions.Options; - ProjectOptionsSet optionsSet = OptionsManager.GetProjectOptions(project); - - foreach (OptionsElement oe in options) - optionsSet.GetNewConfiguration(oe.Configuration, oe.Platform).Options = new Options(oe.Options); - - optionsSet.Save(); - } - - // Called when a value is needed. - protected override void GetValue(object sender, PropertySpecEventArgs e) - { - if (project == null) - return; - - FieldInfo[] oFields; - Type oType = typeof(Options); - - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - // Loop through all the fields in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // If the current field is not an option, ignore it. - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionNameAttribute oname = (OptionNameAttribute) AttributeUtility.GetAttribute(attrs); - string name = (oname != null) ? oname.OptionName : ""; - - if (e.Property.Name == name) - { - e.Value = oFields[i].GetValue(pOptions); - - return; - } - } - } - - // Called when a value is changed. - protected override void SetValue(object sender, PropertySpecEventArgs e) - { - if (project == null) - return; - - FieldInfo[] oFields; - Type oType = typeof(Options); - - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - // Loop through all the fields in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // If the current field is not an option, ignore it. - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionNameAttribute oname = (OptionNameAttribute) AttributeUtility.GetAttribute(attrs); - string name = (oname != null) ? oname.OptionName : ""; - - if (e.Property.Name == name) - { - oFields[i].SetValue(pOptions, e.Value); - - return; - } - } - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.Designer.cs deleted file mode 100644 index b0d8750..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.Designer.cs +++ /dev/null @@ -1,167 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class ProjectOptionsForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProjectOptionsForm)); - this.btnCancel = new System.Windows.Forms.Button(); - this.btnOk = new System.Windows.Forms.Button(); - this.lblConfiguration = new System.Windows.Forms.Label(); - this.lblPlatform = new System.Windows.Forms.Label(); - this.comboConfigurations = new System.Windows.Forms.ComboBox(); - this.comboPlatforms = new System.Windows.Forms.ComboBox(); - this.btnDefaults = new System.Windows.Forms.Button(); - this.propertyGrid = new opGamesLLC.opCpp2005.ProjectOptionsPropertyGrid(); - this.SuspendLayout(); - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(545, 442); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 0; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(464, 442); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 1; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - this.btnOk.Click += new System.EventHandler(this.btnOk_Click); - // - // lblConfiguration - // - this.lblConfiguration.AutoSize = true; - this.lblConfiguration.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.lblConfiguration.Location = new System.Drawing.Point(12, 9); - this.lblConfiguration.Name = "lblConfiguration"; - this.lblConfiguration.Size = new System.Drawing.Size(111, 13); - this.lblConfiguration.TabIndex = 3; - this.lblConfiguration.Text = "Configuration"; - // - // lblPlatform - // - this.lblPlatform.AutoSize = true; - this.lblPlatform.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.lblPlatform.Location = new System.Drawing.Point(328, 9); - this.lblPlatform.Name = "lblPlatform"; - this.lblPlatform.Size = new System.Drawing.Size(71, 13); - this.lblPlatform.TabIndex = 4; - this.lblPlatform.Text = "Platform"; - // - // comboConfigurations - // - this.comboConfigurations.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboConfigurations.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.comboConfigurations.Location = new System.Drawing.Point(129, 5); - this.comboConfigurations.MaxDropDownItems = 10; - this.comboConfigurations.Name = "comboConfigurations"; - this.comboConfigurations.Size = new System.Drawing.Size(190, 21); - this.comboConfigurations.Sorted = true; - this.comboConfigurations.TabIndex = 5; - this.comboConfigurations.SelectedIndexChanged += new System.EventHandler(this.comboConfigurations_SelectedIndexChanged); - // - // comboPlatforms - // - this.comboPlatforms.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboPlatforms.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.comboPlatforms.Location = new System.Drawing.Point(405, 5); - this.comboPlatforms.MaxDropDownItems = 10; - this.comboPlatforms.Name = "comboPlatforms"; - this.comboPlatforms.Size = new System.Drawing.Size(190, 21); - this.comboPlatforms.Sorted = true; - this.comboPlatforms.TabIndex = 6; - this.comboPlatforms.SelectedIndexChanged += new System.EventHandler(this.comboPlatforms_SelectedIndexChanged); - // - // btnDefaults - // - this.btnDefaults.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnDefaults.Location = new System.Drawing.Point(12, 442); - this.btnDefaults.Name = "btnDefaults"; - this.btnDefaults.Size = new System.Drawing.Size(75, 23); - this.btnDefaults.TabIndex = 7; - this.btnDefaults.Text = "Defaults"; - this.btnDefaults.UseVisualStyleBackColor = true; - this.btnDefaults.Click += new System.EventHandler(this.btnDefaults_Click); - // - // propertyGrid - // - this.propertyGrid.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.propertyGrid.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.propertyGrid.Location = new System.Drawing.Point(12, 35); - this.propertyGrid.Name = "propertyGrid"; - this.propertyGrid.Size = new System.Drawing.Size(608, 401); - this.propertyGrid.TabIndex = 2; - // - // ProjectOptionsForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(632, 477); - this.Controls.Add(this.btnDefaults); - this.Controls.Add(this.comboPlatforms); - this.Controls.Add(this.comboConfigurations); - this.Controls.Add(this.lblPlatform); - this.Controls.Add(this.lblConfiguration); - this.Controls.Add(this.propertyGrid); - this.Controls.Add(this.btnOk); - this.Controls.Add(this.btnCancel); - this.DoubleBuffered = true; - this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ProjectOptionsForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "opC++ Project Settings"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Button btnOk; - private ProjectOptionsPropertyGrid propertyGrid; - private System.Windows.Forms.Label lblConfiguration; - private System.Windows.Forms.Label lblPlatform; - private System.Windows.Forms.ComboBox comboConfigurations; - private System.Windows.Forms.ComboBox comboPlatforms; - private System.Windows.Forms.Button btnDefaults; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.cs deleted file mode 100644 index 5530ac9..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.cs +++ /dev/null @@ -1,92 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: ProjectOptionsForm.cs -/// Date: 09/25/2007 -/// -/// Description: -/// -/// The form for the project options. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using EnvDTE; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// ProjectOptionsForm - ///========================================== - - // Form class for project options. - public partial class ProjectOptionsForm : Form - { - /*=== construction ===*/ - - public ProjectOptionsForm() - { - InitializeComponent(); - - /*=== Grab the current project. ===*/ - - List projects = ProjectUtility.GetActiveProjectOnly(); - Project project = projects[0]; - - this.Text = project.Name + " : " + this.Text; - - /*=== Populate the combo boxes. ===*/ - - List configurations = ProjectUtility.GetConfigurations(project); - List platforms = ProjectUtility.GetPlatforms(project); - - foreach (string s in configurations) - comboConfigurations.Items.Add(s); - - foreach (string s in platforms) - comboPlatforms.Items.Add(s); - - comboConfigurations.SelectedItem = ProjectUtility.GetActiveConfiguration(project); - comboPlatforms.SelectedItem = ProjectUtility.GetActivePlatform(project); - - /*=== Setup the property grid. ===*/ - - this.propertyGrid.Initialize(project); - this.propertyGrid.RefreshGrid((string) comboConfigurations.SelectedItem, (string) comboPlatforms.SelectedItem); - } - - /*=== events ===*/ - - // When Ok button is clicked, save the project options. - private void btnOk_Click(object sender, EventArgs e) - { - this.propertyGrid.Save(); - } - - // Fired when the configuration is changed. - private void comboConfigurations_SelectedIndexChanged(object sender, EventArgs e) - { - this.propertyGrid.RefreshGrid((string) comboConfigurations.SelectedItem, (string) comboPlatforms.SelectedItem); - } - - // Fired when the platform is changed. - private void comboPlatforms_SelectedIndexChanged(object sender, EventArgs e) - { - this.propertyGrid.RefreshGrid((string) comboConfigurations.SelectedItem, (string) comboPlatforms.SelectedItem); - } - - // Fired when the defaults button is clicked. - private void btnDefaults_Click(object sender, EventArgs e) - { - propertyGrid.Defaults(); - propertyGrid.RefreshGrid((string) comboConfigurations.SelectedItem, (string) comboPlatforms.SelectedItem); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.resx deleted file mode 100644 index 9cc7816..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/ProjectOptionsForm.resx +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAMAEBAQAAEABAAoAQAANgAAABAQAAABAAgAaAUAAF4BAAAQEAAAAQAgAGgEAADGBgAAKAAAABAA - AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA - AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAIhwAAAAAAAAj/+IeHAAAACP//// - 8AAAAI+IiP+AAAAA+MjH/4AAAACM+Px4gAAACMj2+MeAAAAI+IyI/IAAAAiOdo74gAAACI/3+IcAAAAI - +Pj+jwAAAAj4iIj4AAAAD///j/gAAAAHiP//+AAAAAAAh4eHAAAAAAAAAAAAAPH/AADwBwAA8AcAAPAH - AADwBwAA8AcAAOAHAADgBwAA4AcAAOAPAADgDwAA4A8AAOAPAADgDwAA/A8AAP//AAAoAAAAEAAAACAA - AAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAANguKwCjYB4ArG0tALd9PwDZPEcA20ZRAN1S - XADhVEQA4FhVAOdkRwDlaVsA53VoAOJsdADmd3UAwo1SAPeWTwDFl2cAyp9xAO+HYgDqhXkAzaR2AKGh - oQClpaUAqKioALCwsAC7u7sAvLy8AMyVigDJko0A3JGBAOyUigDTrYAA2raMAM2klgDfqZYA2LueAPar - hADrn6kAxKqmAMu5rwDAv78A7KKsAO+vtADxtrUA8LS8APrBlwD9zp4A3cSrAPjFqgD+0qUA4cqyAOPN - tgDm0rwA/tiwAMDAwADExMQAyMjIANHR0QDd2tgA3NzcAPXLygD718UA+93NAPfZ3QD94cwA/OHTAP7o - 0gDz6d4A/+/eAOjo6ADz6+IA9u3jAPzu7gD/8OIA//PmAPfx6gD58u4A9PT0APzy8wD69vEA//n0APj4 - +AD++PkA//7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAZGBgAAAAAAAAAAAAAAAAAG///TjoY - FxcXAAAAAAAAADf//////////wAAAAAAAAA5/y0mKkD//zwAAAAAAAAARisGDQUHT/83AAAAAAAAACwJ - TTBJAQ49NwAAAAAAAB0MH0cC/xQLCCcAAAAAAAAeTTMkAzM1TQodAAAAAAAAI0QSEQQVIEcTIgAAAAAA - ACg+QkwP/z8xJQAAAAAAAAA3US5PIf8QQTwAAAAAAAAAOv9KNkMvMv8bAAAAAAAAAP///1FFSv//GwAA - AAAAAAAWGzz//////xsAAAAAAAAAAAAAFxcXGBgXAAAAAAAAAAAAAAAAAAAAAAAAAADx/wAA8AcAAPAH - AADwBwAA8AcAAPAHAADgBwAA4AcAAOAHAADgDwAA4A8AAOAPAADgDwAA4A8AAPwPAAD//wAAKAAAABAA - AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpaWmGeXl5pWNj - Y45KSkpvLCwsNAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApKSku/// - ////////9PT0/9DQ0P+mpqbvlJSU2IaGhr9xcXGqTk5OPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALS0 - tNX//////////////////////////////////////////1RUVFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAvExMTs/vj5//C0vP/rn6n/7KKs//fZ3f///////////9zc3PwAAAAXAAAAAAAAAAAAAAAAAAAAAAAA - AAAfHx8x6Ojo/++vtP/bRlH/4mx0/9k8R//dUlz//PLz//////+8vLzgAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAX1NTY/G2tf/gWFX/+vLu/93Eq//87u7/2C4r/+Z3df/1y8r/rq2txgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAK1YT6XndWj/7JSK//Pr4v+jYB7//////+qFef/laVv/4VRE/6+KhbkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADXgG3b+PPu/+HKsv/Yu57/rG0t/+PNtv/m0rz/+vPu/+dkR/+6bl65AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA256I4PPp3v/Kn3H/xZdn/7d9P//NpHb/062A//bt4//vh2L/rmxVnQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL+pnc7718X//OHT//fx6v/CjVL///////vdzf/4xar/9quE/2JQ - R2IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3t7fe//n0//rBl//69vH/2raM///9/P/3lk///eHM/93a - 2PwAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0tLS9f//////8OL//tiw//7o0v/9zp7//tKl//// - /v+zs7PiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0NDRfj4+P/////////////69P//797///Pm//// - /v//////qampxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQUFyWlpbmurq6+dzc3P////////////// - /////////////5ycnKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABs8PDxNS0tLgWRk - ZJZ7e3uoi4uLwJeXl9Vra2uWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAA8AMAAPADAADgAwAA4AcAAOAH - AADgBwAA4AcAAOAHAADgBwAA4AcAAMAPAADADwAAwA8AAPAPAAD//wAA - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.Designer.cs deleted file mode 100644 index e74184c..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.Designer.cs +++ /dev/null @@ -1,125 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class StringListForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(StringListForm)); - this.btnCancel = new System.Windows.Forms.Button(); - this.btnOk = new System.Windows.Forms.Button(); - this.btnAdd = new System.Windows.Forms.Button(); - this.btnRemove = new System.Windows.Forms.Button(); - this.lstStrings = new System.Windows.Forms.ListBox(); - this.SuspendLayout(); - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(745, 451); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 0; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(664, 451); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 1; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - // - // btnAdd - // - this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnAdd.Location = new System.Drawing.Point(745, 12); - this.btnAdd.Name = "btnAdd"; - this.btnAdd.Size = new System.Drawing.Size(75, 23); - this.btnAdd.TabIndex = 3; - this.btnAdd.Text = "Add"; - this.btnAdd.UseVisualStyleBackColor = true; - this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); - // - // btnRemove - // - this.btnRemove.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnRemove.Location = new System.Drawing.Point(745, 41); - this.btnRemove.Name = "btnRemove"; - this.btnRemove.Size = new System.Drawing.Size(75, 23); - this.btnRemove.TabIndex = 4; - this.btnRemove.Text = "Remove"; - this.btnRemove.UseVisualStyleBackColor = true; - this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); - // - // lstStrings - // - this.lstStrings.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lstStrings.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (0))); - this.lstStrings.FormattingEnabled = true; - this.lstStrings.Location = new System.Drawing.Point(12, 12); - this.lstStrings.Name = "lstStrings"; - this.lstStrings.Size = new System.Drawing.Size(727, 420); - this.lstStrings.Sorted = true; - this.lstStrings.TabIndex = 2; - // - // StringListForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(832, 486); - this.Controls.Add(this.btnRemove); - this.Controls.Add(this.btnAdd); - this.Controls.Add(this.lstStrings); - this.Controls.Add(this.btnOk); - this.Controls.Add(this.btnCancel); - this.DoubleBuffered = true; - this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "StringListForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Find Files"; - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Button btnOk; - private System.Windows.Forms.ListBox lstStrings; - private System.Windows.Forms.Button btnAdd; - private System.Windows.Forms.Button btnRemove; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.cs deleted file mode 100644 index 9673c3d..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.cs +++ /dev/null @@ -1,260 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: FindFiles.cs -/// Date: 09/24/2007 -/// -/// Description: -/// -/// Contains a class for finding a list of strings. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// FindFilesForm - ///========================================== - - public partial class StringListForm : Form - { - /*=== construction ===*/ - - public StringListForm() - { - InitializeComponent(); - Initialize(); - } - - /*=== utility ===*/ - - // Initialization code. - private void Initialize() - { - /*=== Initialize the form. ===*/ - - this.Resize += new System.EventHandler(this.form_Resize); - this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.form_MouseDown); - - /*=== Initialize the list box. ===*/ - - lstStrings.Focus(); - - this.lstStrings.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstStrings_MouseDown); - this.lstStrings.DoubleClick += new System.EventHandler(this.lstStrings_DoubleClick); - this.lstStrings.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lstStrings_KeyDown); - - /*=== Initialize the edit box. ===*/ - - editBox = new TextBox(); - editBox.Location = new Point(0, 0); - editBox.Size = new Size(0, 0); - editBox.Text = ""; - editBox.BackColor = Color.Beige; - editBox.BorderStyle = BorderStyle.FixedSingle; - editBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.editBox_KeyDown); - editBox.Hide(); - - lstStrings.Controls.AddRange(new System.Windows.Forms.Control[] { editBox }); - } - - // Adds some strings to the dialog. - public void AddFiles(List _strings) - { - foreach (string s in _strings) - { - strings.Add(s); - lstStrings.Items.Add(s); - } - - if (strings.Count > 0) - lstStrings.SelectedIndex = 0; - else - btnRemove.Enabled = false; - } - - // Initializes and shows the edit box. - private void ShowEditBox() - { - int index = lstStrings.SelectedIndex; - - if (!editBox.Visible && index > -1) - { - Rectangle rect = lstStrings.GetItemRectangle(index); - Point loc = lstStrings.Location; - string itemText = (string) lstStrings.SelectedItem; - editBox.Location = new Point(rect.X, rect.Y); - editBox.Size = new Size(rect.Width, rect.Height); - editBox.Text = itemText; - editBox.Show(); - - editBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.editBox_KeyDown); - - editBox.Focus(); - editBox.SelectAll(); - - LastIndex = index; - } - } - - // Hides the edit box and resets the data. - private void HideEditBox() - { - if (editBox.Visible) - { - string oldText = (string) lstStrings.Items[LastIndex]; - string newText = editBox.Text; - - strings.Remove(oldText); - strings.Add(newText); - - editBox.Hide(); - - lstStrings.Items[LastIndex] = newText; - } - } - - /*=== data ===*/ - - // A reference to the StringListEditor object. - - StringListEditor editor = null; - - public StringListEditor Editor - { - get { return editor; } - set { editor = value; } - } - - // The list of strings. - - private List strings = new List(); - - public List Strings - { - get { return strings; } - } - - // The editbox for entering path names. - - private TextBox editBox; - - // The last index being edited. - - private int LastIndex; - - /*=== events ===*/ - - // Event fired when add button is clicked. - private void btnAdd_Click(object sender, EventArgs e) - { - HideEditBox(); - - List _strings = Editor.GetNewStrings(); - int size = _strings.Count; - - if (size > 0) - { - string f = _strings[0]; - - strings.Add(f); - lstStrings.SelectedIndex = lstStrings.Items.Add(f); - - for (int i = 1; i < size; i++) - { - f = _strings[i]; - - strings.Add(f); - lstStrings.Items.Add(f); - } - - btnRemove.Enabled = true; - } - } - - // Event fired when remove button is clicked. - private void btnRemove_Click(object sender, EventArgs e) - { - HideEditBox(); - - int index = lstStrings.SelectedIndex; - - if (index > -1) - { - string s = (string) lstStrings.SelectedItem; - - strings.Remove(s); - lstStrings.Items.RemoveAt(index); - - int size = lstStrings.Items.Count; - - if (size > 0) - { - if (index < size) - lstStrings.SelectedIndex = index; - else - lstStrings.SelectedIndex = --index; - } - else - btnRemove.Enabled = false; - } - } - - // Event fired when the user double clicks the list box. - private void lstStrings_DoubleClick(object sender, EventArgs e) - { - ShowEditBox(); - } - - // Event fired when the user presses a key in the list box. - private void lstStrings_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyData == Keys.F2 || e.KeyData == Keys.Enter) - ShowEditBox(); - } - - // Event fired when the user clicks in the list box. - private void lstStrings_MouseDown(object sender, MouseEventArgs e) - { - int index = lstStrings.SelectedIndex; - - if (editBox.Visible && index > -1) - { - // Only close the edit box if we clicked off of the edit box - // elsewhere on the list box. - Rectangle rect = editBox.Bounds; - - if (!rect.Contains(e.Location)) - HideEditBox(); - } - } - - // Event fired when the user hits a key in the edit box. - private void editBox_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyData == Keys.Enter) - HideEditBox(); - } - - // Event fired when the form is resized. - private void form_Resize(object sender, EventArgs e) - { - HideEditBox(); - } - - // Event fired when the mouse is clicked on the form. - private void form_MouseDown(object sender, MouseEventArgs e) - { - HideEditBox(); - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.resx deleted file mode 100644 index 71e0ce2..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/StringListForm.resx +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAMAEBAQAAEABAAoAQAANgAAABAQAAABAAgAaAUAAF4BAAAQEAAAAQAgAGgEAADGBgAAKAAAABAA - AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA - AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAgAAAAAAAAAf/+IiHAAh3d4//// - 8AB8fMj4j/+HAIyIiIh4+IcAd4CIfIyHyHiMgPiMiIjsh4aHh4jniIgAjIjI94j/dwCI6Oj///8AAAAI - iIiP/wAAAAj4eHj4AAAAD4eIyIgAAAAIiIiIiAAAAAAI6OeHAAAAAACAiAAAAPv/AADwBwAAAAcAAAAD - AAAAAwAAEAAAABAAAAAAAwAAAAMAAAAPAADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAEAAAACAA - AAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAANEYJADSHCgA2zw3AOJSOwDpaD8A6nJNAPB+ - RADma1cA63ZTAOt3VADmcl4A7H1bAN9ibADEa3cA5HpnAOFrdQDicX0A5nt6APaMPAD3kEIAyIF+AM6K - fADFmH4A745sAOiBfQDuk3UA75d+APqtagD1p38A+7V3AJiYmACklosArpaXAKCYmACwmZgApqKfALKi - mgC4pZgAoaGhAKaioQCvpaEAqampALqppgC3t7cAvb29AN2FgQDTnIAA15KZAOmHgADvmYEAwqieAOim - gwDyo4YA5LWOAOm1iQD8v4cA7qOeAMK8ugDnqK4A9bmiAP3DhwD8w4gA+MKVAMfBvwD8zaUAwsLCAMbG - xgDR0dEA1NTUANra2gDm1c8A69bVAOHh4QDm5uYA9vb2APv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAKgAAAAAAAAAAAAAAAAAAJ0xMTElC - LCoqAAAAJw4ODg4tTExMTExMTAAAACECEA0BQkxCQktMTEIfAAAjAyciEi1CLi5CTEYVGQAAIwQqAEIo - FgsLFicWDwgWIiUFLABMOhsKChtAMgwGGyglBycfFycqNDQnRi0vHQAAJRQ2NxNCSiYmSUxLICYAACQ+ - Pj0+QkxMTExMTAAAAAAAAAAfQEJDREJMTEwAAAAAAAAAREQwETsRQkxEAAAAAAAAAExDMUg5GStCQgAA - AAAAAAAtJzVHPBgaMywAAAAAAAAAAAA/OEEcHiYnAAAAAAAAAAAAACoAKioAAAAAAAD7/wAA8AcAAAAH - AAAAAwAAAAMAABAAAAAQAAAAAAMAAAADAAAADwAA4A8AAOAPAADgDwAA4A8AAPgPAAD9PwAAKAAAABAA - AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqamp/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoaGh//v7 - +//7+/v/+/v7/+Hh4f/CwsL/t7e3/6mpqf+pqan/AAAAAAAAAAAAAAAAoaGh/8Rrd//Ea3f/xGt3/8Rr - d/+9vb3/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/wAAAAAAAAAAAAAAAK6Wl//SHCj/4Wt1/99i - bP/RGCT/xsbG//v7+//CwsL/wsLC//b29v/7+/v/+/v7/8LCwv+YmJj/AAAAAAAAAACwmZj/2zw3/6Gh - of+gmJj/5nt6/729vf/CwsL/3YWB/92Fgf/CwsL/+/v7/9ra2v/IgX7/6IF9/wAAAAAAAAAAsJmY/+JS - O/+pqan/AAAAAMbGxv+moqH/zop8/+ZyXv/mcl7/zop8/6aiof/Oinz/5Hpn/+ZrV//Oinz/oJiY/7Ki - mv/paD//t7e3/wAAAAD7+/v/wry6/++Xfv/rd1T/63ZT/++Xfv/Hwb//75mB/+x9W//qck3/75d+/6+l - of+yopr/8H5E/6Ghof+YmJj/xZh+/6Ghof+pqan/6KaD/+img/+hoaH/2tra/729vf/TnID/9ad//wAA - AAAAAAAAsqKa//eQQv/ktY7/6bWJ//aMPP/Gxsb/5ubm/7ilmP+4pZj/5ubm//v7+//29vb/pJaL/7il - mP8AAAAAAAAAAKain//8w4j//MOI//3Dh//8w4j/wsLC//v7+//7+/v/+/v7//v7+//7+/v/+/v7/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJj/x8G//8bGxv/Gxsb/0dHR/8bGxv/29vb/+/v7//v7 - +/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1NTU/9TU1P/Xkpn/4nF9/+eorv/icX3/wsLC//v7 - +//U1NT/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb29v/Gxsb/6YeA/+vW1f/uo57/6IF9/7qp - pv/CwsL/wsLC/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9vb3/oaGh//Kjhv/m1c//9bmi/++O - bP/uk3X/wqie/7e3t/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4wpX//L+H//zN - pf/6rWr/+7V3/7ilmP+hoaH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmp - qf8AAAAAqamp/6mpqf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7/wAA8AcAAAAHAAAAAwAAAAMAABAA - AAAQAAAAAAMAAAADAAAADwAA4A8AAOAPAADgDwAA4A8AAPgPAAD9PwAA - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.Designer.cs deleted file mode 100644 index 955fd7c..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.Designer.cs +++ /dev/null @@ -1,177 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class TrialVersionForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TrialVersionForm)); - this.btnOk = new System.Windows.Forms.Button(); - this.lnkWebsite = new System.Windows.Forms.LinkLabel(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.txt1 = new System.Windows.Forms.TextBox(); - this.txtRunsRemaining = new System.Windows.Forms.TextBox(); - this.txt3 = new System.Windows.Forms.TextBox(); - this.btnUnlock = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); - // - // btnOk - // - this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOk.Location = new System.Drawing.Point(541, 129); - this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 23); - this.btnOk.TabIndex = 1; - this.btnOk.Text = "Ok"; - this.btnOk.UseVisualStyleBackColor = true; - // - // lnkWebsite - // - this.lnkWebsite.AutoSize = true; - this.lnkWebsite.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lnkWebsite.Location = new System.Drawing.Point(18, 130); - this.lnkWebsite.Name = "lnkWebsite"; - this.lnkWebsite.Size = new System.Drawing.Size(111, 13); - this.lnkWebsite.TabIndex = 8; - this.lnkWebsite.TabStop = true; - this.lnkWebsite.Text = "www.opcpp.com"; - this.lnkWebsite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkWebsite_LinkClicked); - // - // pictureBox1 - // - this.pictureBox1.Image = global::opGamesLLC.opCpp2005.MyResources.addin_small; - this.pictureBox1.Location = new System.Drawing.Point(12, 12); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(121, 114); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.pictureBox1.TabIndex = 9; - this.pictureBox1.TabStop = false; - // - // txt1 - // - this.txt1.BackColor = System.Drawing.SystemColors.Control; - this.txt1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txt1.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txt1.Location = new System.Drawing.Point(138, 55); - this.txt1.Multiline = true; - this.txt1.Name = "txt1"; - this.txt1.ReadOnly = true; - this.txt1.Size = new System.Drawing.Size(436, 33); - this.txt1.TabIndex = 10; - this.txt1.Text = "You are currently running the trial version of opC++"; - // - // txtRunsRemaining - // - this.txtRunsRemaining.BackColor = System.Drawing.SystemColors.Control; - this.txtRunsRemaining.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txtRunsRemaining.Font = new System.Drawing.Font("Lucida Console", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtRunsRemaining.Location = new System.Drawing.Point(412, 12); - this.txtRunsRemaining.Name = "txtRunsRemaining"; - this.txtRunsRemaining.ReadOnly = true; - this.txtRunsRemaining.Size = new System.Drawing.Size(52, 27); - this.txtRunsRemaining.TabIndex = 11; - this.txtRunsRemaining.Text = "#"; - // - // txt3 - // - this.txt3.BackColor = System.Drawing.SystemColors.Control; - this.txt3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.txt3.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txt3.Location = new System.Drawing.Point(138, 92); - this.txt3.Multiline = true; - this.txt3.Name = "txt3"; - this.txt3.ReadOnly = true; - this.txt3.Size = new System.Drawing.Size(478, 34); - this.txt3.TabIndex = 13; - this.txt3.Text = "To unlock, please purchase a license and enter it into the unlock dialog below."; - // - // btnUnlock - // - this.btnUnlock.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnUnlock.Location = new System.Drawing.Point(460, 129); - this.btnUnlock.Name = "btnUnlock"; - this.btnUnlock.Size = new System.Drawing.Size(75, 23); - this.btnUnlock.TabIndex = 14; - this.btnUnlock.Text = "Unlock"; - this.btnUnlock.UseVisualStyleBackColor = true; - this.btnUnlock.Click += new System.EventHandler(this.btnUnlock_Click); - // - // textBox1 - // - this.textBox1.BackColor = System.Drawing.SystemColors.Control; - this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.textBox1.Font = new System.Drawing.Font("Lucida Console", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.textBox1.Location = new System.Drawing.Point(139, 12); - this.textBox1.Multiline = true; - this.textBox1.Name = "textBox1"; - this.textBox1.ReadOnly = true; - this.textBox1.Size = new System.Drawing.Size(343, 42); - this.textBox1.TabIndex = 15; - this.textBox1.Text = "Runs Remaining : "; - // - // TrialVersionForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.Control; - this.ClientSize = new System.Drawing.Size(628, 164); - this.Controls.Add(this.btnOk); - this.Controls.Add(this.btnUnlock); - this.Controls.Add(this.txt3); - this.Controls.Add(this.txtRunsRemaining); - this.Controls.Add(this.txt1); - this.Controls.Add(this.pictureBox1); - this.Controls.Add(this.lnkWebsite); - this.Controls.Add(this.textBox1); - this.DoubleBuffered = true; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "TrialVersionForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Trial Version"; - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnOk; - private System.Windows.Forms.LinkLabel lnkWebsite; - private System.Windows.Forms.PictureBox pictureBox1; - private System.Windows.Forms.TextBox txt1; - private System.Windows.Forms.TextBox txtRunsRemaining; - private System.Windows.Forms.TextBox txt3; - private System.Windows.Forms.Button btnUnlock; - private System.Windows.Forms.TextBox textBox1; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.cs deleted file mode 100644 index f585017..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.cs +++ /dev/null @@ -1,58 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: TrialVersionForm.cs -/// Date: 09/28/2007 -/// -/// Description: -/// -/// This form tells the user they're in trial mode. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class TrialVersionForm : Form - { - /*=== construction ===*/ - - public TrialVersionForm() - { - InitializeComponent(); - } - - /*=== data ===*/ - - public string RunsRemaining - { - set { txtRunsRemaining.Text = value; } - } - - /*=== events ===*/ - - // Fired when the user clicks on our website link. - private void lnkWebsite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - System.Diagnostics.Process.Start("http://www.opcpp.com"); - } - - // Fired when the unlock button is clicked. - private void btnUnlock_Click(object sender, EventArgs e) - { - UnlockForm form = new UnlockForm(); - - if (form.ShowDialog() == DialogResult.OK) - this.Close(); - } - - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.resx deleted file mode 100644 index 8940f45..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/TrialVersionForm.resx +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA - CACoDgAAHgsAACAgAAABAAgAqAgAAMYZAAAQEAAAAQAIAGgFAABuIgAAMDAAAAEAIACoJQAA1icAACAg - AAABACAAqBAAAH5NAAAYGAAAAQAgAIgJAAAmXgAAEBAAAAEAIABoBAAArmcAACgAAAAwAAAAYAAAAAEA - BAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA - wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj4d3d3AAAAAAAAAAAAAAAAAAAAAAAAB/////j4iHd3dwAA - AAAAAAAAAAAAAAAAB/////////+PiId3d3AAAAAAAAAAAAAAB4//////////////j4cAAAAAAHd3eHd4 - d3d///////////////cAAAAAB4iIiIiIiI9///////////////cAAAAAB4ZsZkZkZk9v//////////// - //cAAAAACIRmRmxmxm8f//////////////cAAAAACHZGbGZkZG9///d3B3//////hwB3AAAACIxn///4 - ZG9f/4eP/3j////4eP/4cAAACHZG8Hd4bG9v/3iGZ/f////4eGZ/cAAACIZn9wB4Zn8f/3h2x4f////4 - eGxvQAAACHxs9wB///h4iHh2Z4eIj4iIeGRvMAAACIZH9wAAdWd3d398Z/d3dnd3iGZveHdwCHZm9wAH - //h4iIhmRoiI9/iIiMRoiIiACHxm9wAHj/94ZsZsZsZkh/ZGxmZGxkiACIZH9wAH//h4RmRmRmRmiPZG - ZGRkZmeACHbG9wAH//94bGbGRsZs9/ZsZkZmxsiACIRn9wAH//h///92Z///8I//+Gxv//9wCHZs9wB3 - cHN3Q090Z4RzeHdSiGRvB3cACIxm9wB4j49P/3h2x/f////4eEZvcAAACHZH9wB4Zk9//3iGZvf////4 - eGxvUAAACIZm93eIRm8//3h8aIf////4eGZ/YAAACHxsiIiIbG9P/4f//3j/////f//4cAAACIZGZGbG - Rk9///d2F3//////dHdXAAAACHZkZsZkZm9f////////////cAAAAAAAB/bHbGZmbH8v//////////// - cAAAAAAAB3////////h/////////////QAAAAAAAAAd3d3B1JXeP////////////cAAAAAAAAAAAAAeP - ///////////////4cAAAAAAAAAAAAAf///h3B3B3B2eP///4AAAAAAAAAAAAAAeP/4eP//+P//h////3 - AAAAAAAAAAAAAAf//3h2ZmeIZn9f///3AAAAAAAAAAAAAAf//39sdsaIbG8v///3AAAAAAAAAAAAAAj/ - /w9m/4SPdvhY///2AAAAAAAAAAAAAH///39l+IaPdPh3d4/3AAAAAAAAAAAAAH///39m+ISP5IiIh4+H - AAAAAAAAAAAAAH///w9s+IaPdkZkiH+AAAAAAAAAAAAAAA///39n+ISPdoiGeH+AAAAAAAAAAAAAAIdw - dw9k+IaPbPiM6H9wAAAAAAAAAAAAAAAAAH9m/4yPdo/2f39wAAAAAAAAAAAAAAAAAH9kZGaIbGZGeH9w - AAAAAAAAAAAAAAAAAHiHfneIZ3Z2iFZwAAAAAAAAAAAAAAAAAAePj4+I////hgAAAAAAAAAAAAAAAAAA - AAAHd3cHd3d3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/+H////8AAP/4 - AP///wAA//gAAP//AAD/+AAAAf8AAP/4AAAA/wAAwAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAD/ - AACAAAAAAD8AAIAAAAAAHwAAgAAAAAAfAACAwAAAAB8AAIDAAAAAHwAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDgAAAAAQAAgMAAAAADAACAwAAAAB8AAIDAAAAAHwAAgAAAAAAf - AACAAAAAAB8AAIAAAAAAPwAAgAAAAAf/AACAAAAAB/8AAIAAAAAH/wAA4AAAAAf/AAD/gAAAB/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/4AAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAB// - AAD/AAAAH/8AAP8AAAAf/wAA//wAAB//AAD//AAAH/8AAP/8AAAf/wAA//4AAP//AAD//4ID//8AAP// - /////wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAh3d3AAAAAAAAAAAAAAAAAP////iHd3AAAAAAAAAAAAeP////////+HcAAAB4iIiIh/ - /////////3AAAAhmRmZGiP////////9wAAB4ZGRkZoj/+I/////4cAAAeGz4+EaI+HiHj///eIgAAIhm - h3hsiPiGb4//+IZocAB4RoAIj4iH9Gh4/4iGT3AAeGyAB3d3iPZPiHeI9kiIgHhmgAf/iGZGRmT4ZGRm - Zod4xoAH/39GZGxmiGZGxsaHiGaAB/+IiIZoiIiI9miI8HhkgAd3d4eMaHeId4RocAB4xoB/Z4j4hk9/ - //iGyHAAeGb4iGyI+Ifoj///h4iAAIhkZGZGiP93d////3d3AAB4bGZGZPj///////9wAAAAB/iPiI9/ - ////////cAAAAAAAAHd3j////////wAAAAAAAAB//4d3eHeP//gAAAAAAAAAf/iI+PiPf//4AAAAAAAA - AI/3hmZoZoj/9wAAAAAAAACP9/T4z3h3j/cAAAAAAAAA//eGiG9niIf3AAAAAAAAB//39o9vfGaH+AAA - AAAAAAB3h4aIb2j2h/AAAAAAAAAAAAeMiM9njIfwAAAAAAAAAAAA9mZ/bHb2cAAAAAAAAAAAAHeId4h4 - cAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8AAB+AAAAfgAAAHwAAAB8AAAAPAAAABwYA - AAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAAAH+AAAB//AAA//wAAP/8AAD//AAA//wA - AP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A - AAD/AP8A//8AAP///wAAAAgAAAAAAAAAf//4iHAAh3d4////8AB2fkj4j/+HAIaHiId4+HgAdICIZ2eH - ZniGgPh8aI5Wh3aHeIfniHcAhHfI94//eAB453j///8AAAAIiIiP/wAAAAiI6Hj4AAAAD4eIaIgAAAAI - h4jHiAAAAAAIaG54AAAAAACAiAAAAPv/AADwBwAAAAcAAAADAAAAAwAAEAAAABAAAAAAAwAAAAMAAAAP - AADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAAB - AAAAAQAAAAAAAC8vLwAyMjIANTU1ADo6OgA8PDwAQ0NDAElJSQBNTU0AUFBQAFZWVgBZWVkAXV1dAGJi - YgBlZWUAaWlpAGxsbABxcXEAdnZ2AHl5eQB9fX0Ai00BAIxOAACNUAMAjlEFAJBUCACRVgwAk1gPAJRb - EwCWXRYAll4YAJliHgCbZiMAnGYjAJxnJACdaCUAnmooAKBtLQChbzAAonEyAKRzNQCldDcApXU4AKd4 - PQCoej8Ar4ROALCFUACzilYAtItYALaPXgC3kF8AuJNjALqVZgC8mGoAvZpuAL+ccQDCoXgAxaZ/AIGB - gQCFhYUAioqKAI2NjQCSkpIAlZWVAJmZmQCfn58Ao6OjAKWlpQCqqqoAra2tALGxsQC1tbUAurq6AL+/ - vwDGp4AAyq6KAM2ykQDQtpcA07yfANW+ogDWwKQA2MKoANnFqwDaxq4A28iwANzKswDezLYA3824AODR - vQDDw8MAxcXFAMnJyQDNzc0A0dHRANTU1ADZ2dkA3NzcAOXXxQDn28sA6uDSAOvh1ADt49cA7uTZAPDo - 3QDj4+MA5eXlAOnp6QDt7e0A8uviAPPt5QD38u0A8vLyAPX19QD59fIA+vr6AP37+gD+/v4AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAALChA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK - dHBgSEASCwoNEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdHR0dHR0dHR0a1tD - Ow0KCxI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7dHR0dHR0dHR0dHR0dHR0dHBeRz8SCgsQ - EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAASWWh0dHR0dHR0dHR0dHR0dHR0dHR0dHRwaxMAAAAAAAAAAAAA - ChM/Pz8/Pz8/Pz8/PwtDdHR0dHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAJa2FPT09PT09PT09P - UXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0dA0AAAAAAAAAAAA/VhYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dHR0dAsAAAAAAAAAAABHShYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0 - dA0AAAAAAAAAAABHORYWGSEhISEhHhYWGXQKdHR0dD8LCwsLPHR0dHR0dHR0dEgLCwMLOwAAAAAAAABH - ORYWKnR0dHR0VBYWGXQKdHR0Rjt0dHR0O0Z0dHR0dHR0awpwdHR0WRMAAAAAAABHORYWKnAEDQs8VhYW - GXQKdHR0O143ISE3YBN0dHR0dHR0WzxWISErdAoAAAAAAABHORYWKnASAAA7VyEhJXQKdHR0E14yFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXATAAAJb3R0dFsNXllZDWAxFhYvYAtZWV50aFlZQDxU - FhYfdAkAAAAAAABHORYWKXATAAAAAQoKCxALEz8/P2sxFhYvaz8/PxIGCz8/P1tUFhYfdEA/PzwJAABH - ORYWKXATAAAAC3R0dHANblBQT08rFhYqUFBQT24SdFFPUFA2FhYcT1BQT2NDAABHORYWKXATAAAAC3R0 - dGgQYhYWFhYWFhYWFhYWFmI/dBkWFhYWFhYWFhYWFjlHAABHORYWKXATAAAADXR0dGsQYhYWFhYWFhYW - FhYWFmI/dBwWFhYWFhYWFhYWFjlHAABHORYWKXATAAAAE3R0dGsQYyEhISEZFhYZISEhIWM8dCkhISEe - FhYZISEhIUxHAABHORYWKXATAAAAQHBwcHAJa3R0dHQzFhYxdHR0dGsDW3R0dHRUFhYfdHR0dHQNAABH - ORYWKXATAAATCQ0NDQk8CwsKA2AxFhYvYAMKCgtZEAsKCT9QFhYfdAQQDQ0AAABHORYWKXASAAANcWRk - ZHAKdHR0O14xFhYxXxN0dHR0dHR0WTxUFhYfdAoAAAAAAABHORYWKXALAAA7VBYWGXQKdHR0E14zFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXQ/Pz9bVBYWGXQKdHR0O142HBwzYBN0dHR0dHR0WzxW - HBwldAoAAAAAAABHORYWIU9QT09QNxYWGXQKdHR0Rjx0dHR0PER0dHR0dHR0awpwdHR0WxIAAAAAAABH - ORYWFhYWFhYWFhYWGXQKdHR0dDsKCgoKO3R0dHR0dHR0dDsJCw0NEgAAAAAAAABGSxYWFhYWFhYWFhYW - GXQKdHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAAAAANbi0hISEhISEhISEhJXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dA0AAAAAAAAAAAAAAAA/PHB0dHR0dHR0dHR0dFsQdHR0dHR0dHR0dHR0dHR0dHR0dAsA - AAAAAAAAAAAAAAAAABAQEBAQDQMKCgoKCxBrdHR0dHR0dHR0dHR0dHR0dHR0dBAAAAAAAAAAAAAAAAAA - AAAAAAAAAA10dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0azsAAAAAAAAAAAAAAAAAAAAAAAAAAAp0dHR0 - dFsNCwoKCgsTCwsKChJwdHR0dHR0WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAt0dHR0WQtrdHR0dHRZcHR0 - dEgQdHR0dHR0QwAAAAAAAAAAAAAAAAAAAAAAAAAAABJ0dHR0C3A5ISUjJSlmViMlKXQKdHR0dHR0EwAA - AAAAAAAAAAAAAAAAAAAAAAAAAEB0dHR0C3QhFh8fHBZQVBkWJXQKdHR0dHR0DQAAAAAAAAAAAAAAAAAA - AAAAAAAAAEh0dHR0CnQhHnR0ThZQdDMWZ1sJW2h0dHR0CwAAAAAAAAAAAAAAAAAAAAAAAAAAP2B0dHR0 - CnQhHHRITxZQdDMWZ0c8PBASdHR0EAAAAAAAAAAAAAAAAAAAAAAAAAAAEHR0dHR0CnQhHnRIThZQdDMW - TFRPVGc8R3RoPAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R0dHR0CnQhHHRHTxZQdDMWFhYWFjVdO3RbAAAA - AAAAAAAAAAAAAAAAAAAAAAAACmt0dHR0CnQhHnRIThZQdDMWS05LFjNeO3RDAAAAAAAAAAAAAAAAAAAA - AAAAAAAAPBALCQsTBHQhHnRZTxZQdDMWZ29nFjVdO3Q6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - CnQhHHFxTRZQdDEWY3FjFjNeO3QNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXQhGRkZFhZQTxYW - GRkWFjVdE3QLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE2hNLS0tLS9nYS0uLS0uLldGCQsQAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlba2toa2hGXmtqampqakgJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAOzo7EzsAPDo7Ojs6OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA//h/////AAD/+AD///8AAP/4 - AAD//wAA//gAAAH/AAD/+AAAAP8AAMAAAAAA/wAAgAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAA/ - AACAAAAAAB8AAIAAAAAAHwAAgMAAAAAfAACAwAAAAB8AAIDgAAAAAQAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDAAAAAAwAAgMAAAAAfAACAwAAAAB8AAIAAAAAAHwAAgAAAAAAf - AACAAAAAAD8AAIAAAAAH/wAAgAAAAAf/AACAAAAAB/8AAOAAAAAH/wAA/4AAAAf/AAD/gAAAD/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAf/wAA/wAAAB// - AAD/AAAAH/8AAP/8AAAf/wAA//wAAB//AAD//AAAH/8AAP/+AAD//wAA//+CA///AAD///////8AACgA - AAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAVVVVAF9fXwBiYmIAZWVlAG1t - bQBwcHAAdXV1AHh4eAB9fX0AjE4AAI1QAwCOUQUAkFUKAJFWDACTWQ8Ak1kQAJRbEgCVXBUAl18YAJdg - GgCZYh0Am2YjAJ1oJQCeaikAo3EzAKNyNACkczUApXU4AKh5PgCpfEIAtY1bALeRYAC4kmIAwJ5zAMCe - dADDpHwAgoKCAIWFhQCJiYkAjo6OAJKSkgCWlpYAmpqaAJ2dnQChoaEApqamAKurqwCtra0AsrKyALa2 - tgC4uLgAvLy8AMyxjwDPtZUA0biZANbApQDYw6kA2MSqANrGrgDcybEA4dG9AMLCwgDGxsYAycfFAMnJ - yQDOzMgAz8/PANTRzgDZ1M0A3NbOANfU0ADW1tYA2dXQANra2gDe3t4A49TBAOTVwwDk1sQA5tnIAObc - zwDo3MwA49vQAOTd0gDm3tUA4t7ZAOvh1ADs4tUA7ObeAODg4ADl5eUA7ejhAOnp6QDt7e0A9e/pAPHx - 8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLScnJykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF////// - /19IMSkmJycAAAAAAAAAAAAAAAAAAAAAAAAJSF////////////////9aPi0DAAAAAAAACS8xMzEzMTMx - CV3//////////////////ycAAAAAAABSGBUVFRMVFRU+Qf//////////////////LQAAAAAAKToKCgoK - CgoKDUA///9dSEhd////////X0gmAAAAAAApOgoVTExMNwoMPz//SiYxMyZK/////18JMTMtAAAAACk6 - ChcvKQNRCgw/P/8vSRUSSS3/////SjEaEkwpAAAAKToKFy8AAERMTC1BSClJCgpJKEhdX0ozMRUKPSYA - AAApOgoXLQAABigpJiczMVsKClgzMycGMzFdFQo9MzMtACk6ChcvAAAp//8tUhQVEgoKEhMTUj4XFRIM - ChIVEjwpKToKFy0AACf//y1JCgoKCgoKCgpSPg0KCgoKCgoKOi0pOgoXLwAAJl//L0BMTDwKCjpMTEAt - TExMEgo1TExSACk6ChctAAAGLSkGLScDSQoKSQMoLTEpCTEVCj0DAAAAKToKFy8AJlAaHT5B/y9JCgpJ - Lv////9KMRUKPS0AAAApOgoXWjEzUQoMQT7/L0ggIUkv/////1ovIyFWKQAAACk6CgwVFRISCgxBQf9f - CSgoCV///////wMnKQkAAAAAKUwKCgoKCgoKDEE+////////////////JwAAAAAAAAAAJ1JMTExMTExM - LUr///////////////8tAAAAAAAAAAAAAAAAAAEnKSkx/////////////////wAAAAAAAAAAAAAAAAAA - J////0EnKSctLScpM/////9KAAAAAAAAAAAAAAAAAAAp//8+LVFMTFJKTE8tSv///zMAAAAAAAAAAAAA - AAAAADH//ydRChMSFUwMEj5B////LQAAAAAAAAAAAAAAAAAASv//KUwSXz0V/x42CSYv//8nAAAAAAAA - AAAAAAAAAABf//8nTBJBPRX/HiJMTEEt/ycAAAAAAAAAAAAAAAAAKf///ylMD0g9E/8eDRMMNyf/LQAA - AAAAAAAAAAAAAAAAJiYpBT0SSD0U/x42/x03Kf8AAAAAAAAAAAAAAAAAAAAAAAAmTAw4JBReGCA4Fzcn - WgAAAAAAAAAAAAAAAAAAAAAAAABSHRoaH1EaGhoaTAIFAAAAAAAAAAAAAAAAAAAAAAAAAAkpLS0nJi0t - KS0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8A - AB+AAAAfgAAAHwAAAB8AAAAPAAAABwYAAAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAA - AH+AAAB//AAA//wAAP/8AAD//AAA//wAAP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAA - AAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAACNUAMAj1IHAJBVCgCUWxIAnGYjAJ9s - KwCgbCwAo3IzAKRzNgCmdz0Apng9AKl+SACtgUkAr4ROALKJVQC2j14An4dpAKaLaACnjGkAqIxpAKiO - bQC3kWAAs5FmALiSYgC4k2QAupVmALKTawC1lW0Au5ZoALyXagC8mGsAs5dzAMCfdgCXjoUAlpWTAJeX - lwCdmpYAmJiYAKabjgClnI8ApZ2SAKCcmAC/qY0AoqCdAKikngCwpJQAoaGhAKSioQClpaUAqaelAKmp - qQCtra0AsKmhALe3twC5ubkAvru4AL29vQDKrooAy6+MANG9pADDwL0AwsLCAMXEwwDGxsYAzMzMANrS - yQDR0dEA1NTUANra2gDh2c8A4eHhAObm5gDu7u4A8/PzAPb29gD7+/sA/v7+AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAADMAAAAAAAAAAAAAAAAAAC9M - TExHPjYzMwAAAC8TExMTOUxMTExMTEwAAAApAhYPAj5MPj5LTEw+JgAAKQQvJRg9PhwcPkxFExgAACkE - MwBALxQLChMyFAwJFCopBDYATDkWBgYWPRgKBRYtKQQvJREvMxYcL0Q5EhAAACkDIBwCQEgpKEhMSyIo - AAAsGBYWFj5MTExMTEwAAAAAAAAAJD4+QUFBSUxMAAAAAAAAAEREKx88HT5MRAAAAAAAAABLPh9GOxg1 - Pj0AAAAAAAAAOS8dQjsNDy42AAAAAAAAAAAAIRg7Cw0pLwAAAAAAAAAAAAAzADM2AAAAAAAA+/8AAPAH - AAAABwAAAAMAAAADAAAQAAAAEAAAAAADAAAAAwAAAA8AAOAPAADgDwAA4A8AAOAPAAD4DwAA/T8AACgA - AAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEyhQUFN0CAgKxBgYGiRcX - F2AvLy84LS0tEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycn9f// - ////////+Pj4/8jIyP+Xl5f/ampq/z4+Pv8XFxfpAAAAwQAAAJkPDw9wIyMjSS0tLSAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAS0tL///////////////////////////////////////////////////////b29v/rKys/35+ - fv9PT0//ICAg+gsLC9EEBASqBgYGgSEhIVkqKiowMTExCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAcHBwYgICA//////3//////f39/f39/f3//////f39/f39/f3//////f39/f// - //3//////////f////3/////////////////////7+/v/8DAwP+RkZH/ZGRk/zMzM/8YGBjiBgYGugAA - AJIbGxttLy8vGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIXFhYWMRwc - HC8bGxsvGxsbLxsbGy8bGxsvHBwcLxcXFysAAABld3d3/8jIyP319fX//////f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////////f/////////9/////f// - //////////////////+FhYX/ISEhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpKGQAA - AO2Bg4b/nqGm/5mdov+ZnaL/mZ2i/5mdov+ZnaL/mZ2i/5qeov+cn6T/jJCU/4aKjv8XFxf/oqKi//// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////9ycnL/RkZGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAABAQE9f///////PD/69a+/e3awv3t2sL/7drC/e3awv3t2sL/7drC/e3awv/t2sL97drB/erU - uv3/////ERER/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////88PDz/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhI3pKer//nq2f1vJAD/fjkA/X45AP2AOwD/fjkA/X45AP2AOwD/fjkA/YA7 - AP9+OQD9fTgA/XImAP3/////Hx8f/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////8WFhblAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhJRzdLY/86tg/+CPwD/jE4A/4tNAP+JSgD/iUoA/4lK - AP+JSgD/iUoA/4pLAP+MTgD/i00A/344AP//////Hx8f//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/iUsA/YpM - AP2QUwj/jlAE/Y5QBP2OUAT/j1EG/Y5SBf+ISQD9iUsA/X44AP3/////Hx8f/f////3//////f39/f// - //11dXX/HBwc/SUlJf0kJCT/Hh4e/XBwcP3//////f39/f39/f3//////f39/f/////9/f39/f39/f// - ///ExMT9Ghoa/SwsLP8AAADnAAAAwwAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gy - i/+CPwD/iEcA/51qKP///////////////////////////+3j2P9/OgD/i00A/344AP//////Hx8f//// - /////////////6SkpP9fX1///////////////////////19fX/+enp7///////////////////////// - //////////////////8BAQH///////////////////////Dw8P8AAAClAAAAAAAAAAAAAAAAAAAAAAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAA6QsLC70AAADJf4KG//Ljz/96NAD9h0cA/Xs0 - AP3/////Hx8f/f////3//////////VhYWP3v9fz/vpZl/YpKAP2KSwD/uI9b/fr///1PT0///////f39 - /f3//////f39/f/////9/f39/////cbGxv97foL99eTQ/YVDAP+OUQP9kFUK/f////8AAADSAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////CwsLowAAAAAmJiYUi42R//jq - 2P+DPwD9jU8C/oNBAP3/////Gxsb/f////3//////////WNjY/3o7vf/t4xX/YA9AP2CPwD/soVM/fD3 - //1aWlr//////f////3//////f39/f/////////9/////dHR0f92en798eDK/Xw2AP+FRAD9iEcA/f// - //8AAADPAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////EBAQqAAA - AAAAAAAAFhYW///////////9/////f////3e3t7/RUVF/fHx8f2+vr7/0dHR/TMzM/3p7/f/uY9b/YNB - AP2FRAD/tIhR/fH4//0qKir/0tLS/b6+vv3Y2Nj//////ff39/+7u7v9yMjI/Y6Ojv9zdnr98uLM/X86 - AP+ISQD9iksA/f////8AAADYHx8fIxQUFDAVFRUqAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xm - Iv//////Dw8PqAAAAAAAAAAAPz8/JwAAAOYrKyv/Hx8f/xwcHP9KSkr/VFRU/1FSU/+EiIz/f4OI/4CE - if//////t49c/4VDAP+FQwD/s4hS//////+BhYn/f4OI/4SIjP9WV1f/Dg4O/yQkJP+Hio7/gIOI/3yA - hf/h6PH/7N7L/386AP+KSwD/i0wA//////+coKX/lpqf/5yfpP+Ympz/AAAA7QAAAAAZGRlPyM3U/9Gy - i/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAAAAAAMP//////////f////3/////Ly8w/f// - //3o0rb/7drC/e3awv3m18T/pXY6/YZFAP2HRwD/pHI1/ebXxP3t2sL/7drC/ejStv3/////Tk9P/f// - ///r17397dnB/e3awv/n1sH9xqeB/YNBAP+JSgD9i00A/ebYx//r2MD97drC/erVuv////39vb/B/xkZ - GUoZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAACIiIu///////f39/f// - //35+fn/RkhK/f//9v1wIwD/fjkA/X45AP2AOwD/hkUA/YpMAP2MTgD/hkYA/X45AP2AOwD/fjkA/W8i - AP3/+vD/d3p8/f////92LAD9fDcA/YA7AP9+OQD9gj8A/YxOAP+KTAD9iUoA/YA7AP9+OQD9fjkA/XYs - AP/KqH39yc7V/ycnJ1AZGRlPyM3U/9Gyi/+CPwD/iEcA/5xmIv//////Dw8PqAAAAAAAAAAAAAAAAERE - RP/////////////////5+fn/REZJ////+/96MgD/iUoA/4lKAP+JSgD/i0wA/4xOAP+MTgD/i0wA/4lK - AP+JSgD/iUoA/3oyAP///fT/c3V4//////9/OQD/iEgA/4lKAP+JSgD/iksA/4xOAP+MTgD/i00A/4lK - AP+JSgD/iUoA/387AP/PsIj/xsvS/ysrK08ZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAA - AAAAAAAALCwsFHR0dP/////9/////f////35+fn/RUdJ/f///v2BPAD/jlAE/Y5QBP2PUwf/jE4A/YlL - AP2LTAD/i00A/ZBTCP2OUAT/jlAE/YE8AP3///j/fX+B/f////+GSAD9jU4B/Y5QBP+PUgb9jVAF/YpL - AP+KTAD9iksA/Y9UCf+OUAT9jlAE/YVDAP/UtpD9z9TZ/yAgIFMZGRlPyM3U/9Gyi/2CPwD/hkYA/Zxm - Iv3/////Dw8PqAAAAAAAAAAAEhISN6+vr//////9/////f////3/////AwMD/f////3//////////f// - //3/////uJJh/YNBAP2FRAD/tIpX/f////3//////////f////3/////AAAA/d/f3//////9/////f// - ///////96uDS/X86AP+ISQD9jE4C/f//////////////////////////TU1N/zIyMiQZGRlPyM3U/9Gy - i/+CPwD/iEcA/5xmIv//////EBAQqAAAAAAAAAAAAAAAlSwsLf83OTv/NDY4/zg6PP8AAAD/wcHB/yIi - Iv8eHh7/JSUl/wAAAP/y+f//uI9a/4VDAP+FQwD/s4dQ//v///8AAAD/JSUl/x4eHv8aGhr/6enp/z09 - Pf8bGxv/ISEh/wQEBP+GiY7/8eDL/386AP+KSwD/iksA//////8AAAD0CgoKvhEREcMAAADBODg4UAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dg4OpwAAAAATExMHWFla///////////9/////f// - //3/////FhYW/f////3//////////Wpqav3n7vb/uY9b/YNBAP2FRAD/tIhR/e/2//1hYWH//////f// - //3//////////f/////////9/////d/f3/91eHz98uLM/X86AP+ISQD9iksA/f////8AAADNAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAAuBkZGSIAAABLgYWJ//He - yP9vIQD9ezQA/W4gAP3/////Hx8f/f////3//////////V5eXv3o7vb/uI5Y/YI/AP2EQQD/s4ZO/fD3 - //1VVVX//////f39/f3//////f39/f/////9/f39/////crKyv92eX798uHL/X44AP+HRwD9iUkA/f// - //8AAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xnJP//////j5KX/5mc - of+RlZn/2+Lr/+/h0f9/OgD/i00A/344AP//////Hx8f/////////////////1lZWf/x9v7/totV/303 - AP99OAD/sINL//r///9PT0///////////////////////////////////////8TExP99gIT/8eDK/3cv - AP+BPgD/hUUA//////8AAADSAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/h0gA/ZZe - F/3m2Mb/7drB/e3awv3t2sL/6NfB/cepg/+CPwD9iksA/X44AP3/////Hx8f/f////3//////////ZmZ - mf1sbGz//////f////3//////////WxsbP2Tk5P//////f39/f3//////f39/f/////9/f39/////f// - //8PDw/9//////////////////////v7+/8AAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlQys/W/8+w - iP2CPwD/ikwA/YdIAP2AOwD/fjkA/X45AP2AOwD/fjkA/YNBAP+KTAD9iksA/X44AP3/////Hx8f/f// - //3//////f39/f////1jY2P/FBQU/R8fH/0fHx//FBQU/V9fX/3//////v7+/f39/f3//////f39/f// - ///9/f39/f39/f////+Dg4P/AAAA1xsbG9QbGxvVGhoa1wAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAPDw9KxsrQ/9e7mP97NAD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iEkA/3s0 - AP//////Hx8f//////////////////////////////////////////////////////////////////// - //////////////////////////////////94eHj/Ojo6CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAuLi4MS0xN//////6gbSr/i00A/Y5QBP2OUAT/jlAE/Y5QBP2OUAT/jlAE/Y5Q - BP+OUAT9jU8C/YNBAP3/////Gxsb/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////9CQkL/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEgIaHiP////////////////////////////// - /////////////f/////////9/////f////3d3d3/Jycn/f////3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////8aGhroAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vL0kAAACtEhISxBER - EcIRERHCEhISwgwMDL8AAADoJCQk/x8fH/8fHx//Hx8f/xsbG/8xMTH///////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8GBga9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5///////////////9/////f////3//////////f// - //3//////////f////3//////////f////3//////////f////3//////////f39/f3//////f39/f// - ///9/f39/////f////8ICAiTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFxfo//////////////////////// - ///Y2Nj/JSUl/x0dHf8fHx//Hx8f/x8fH/8cHBz/Z2dn/yEhIf8eHh7/Hx8f/xoaGv9DQ0P///////// - /////////////////////////////9fX1/8jIyNqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PT3//////v// - ///9/f39/////dTU1P0EBAT//////f////3//////////f////3/////tbe5/f////3//////////f// - //3ExMT/MzMz/f////3//////f39/f/////9/f39/////aOjo/87Ozs+AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw - MAxra2v//////f/////9/f39/////RsbG/3/////wJpu/YpMAP2OUgX/jlIF/Y5SBf2NUAP//////d7M - tf2FRAD/j1QI/YlJAP3/////Ghoa/f////3//////f39/f/////9/f39/////XJycv9SUlIUAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACEhITOampr//////////////////////x0dHf//////h0YA/4RCAP+KSwD/iUkA/4lJ - AP96MgD/3824/97Ouf99NwD/hUMA/4NBAP//////ICAg/////////////////////////////////0FB - Qf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHlrFxcX//////f/////9/f39/////R8fH/3/////jE0A/YVE - AP3//////////eLTwf1zKAD/3cqz/f////26lmj/dCgA/f////3a3N7/Dw8P/eDg4P319fX//////f// - ///9/f39/////xcXF+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODoL19fX//////f/////9/f39/////R8f - H/3/////jE0A/YNBAP3/////p6uw/eLNtP1zKAD/3cqz/f////2zjFn/dCgA/f////2mq7H/goaK/Xl8 - gf02Nzj/Pz8//f/////+/v79/////wUFBb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKj///////////// - /////////////x8fH///////jE0A/4NBAP//////pait/+PPtf9zKAD/3Mmy//////+zjFn/eTEA/9zJ - sv/s2sX/8d7I/+3Zvv//////a2xt/62trf///////////xUVFZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P - D9D//////f39/f/////9/f39/////R8fH/3/////jE0A/YNBAP3/////pqqv/ePPtf1zKAD/3cqz/f// - //2zjFn/g0EA/XUrAP1zKAD/cykA/XUsAP24jVb/6vD4/VxcXP/////92dnZ/ygoKGkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACwsLP/////////////////////9/////SQkJP3/////jE0A/YNBAP3/////o6es/ePP - tf1zKAD/3cqz/f////2zjFn/ejIA/dfCpv3cyrL/18Ko/XoyAP29lmT/5evz/WBgYP/////9paWl/zw8 - PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGIoAAACuBQUF1BcXF/tHR0f/hoaG/w0NDf//////jE0A/4NC - AP//////t7zB/+HNtP9zKAD/3Mmy//////+zjVr/dCoA///////2/f///////3MoAP+9lmT/5Ory/2Fh - Yf//////dHR0/0lJSRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioqEgAA - AM//////jE0A/YZEAP3//////////d/MuP10KQD/3cqz/f////23kWL/dSoA/f////3//////////XMo - AP29lmT/5Ory/WJiYv/////+QUFB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAoKCsL/////hUQA/YE9AP13LgD/di4A/Xw2AP14MAD/3826/djCqP10KQD/hUQA/Xkw - AP12LgD/eTEA/Xw3AP23jVj/6fD3/Wpqav//////JSUl6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKP/////2r6f/6V1Nv+qfEH/qnxB/6p8QP+ndTb//////+nc - yv+icC//q31C/6p9Qf+qfEH/qn1B/6VxMv/77Nn/0dTX/wAAAMMEBATNBgYGswAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJSREGBgb///////////////////////// - ////////oKGi//r9///////////////////////////////////e4OT/AAAA7QAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTU1MOBQUFggEB - AZUEBASTBAQElAMDA5QAAACSKysrXQcHB4wBAQGUBAQElAQEBJQEBASTAwMDlAAAAJUPDw90AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP/4D////wAA//gAH///AAD/+AAAH/8AAP/wAAAAfwAA4AAAAAB/ - AACAAAAAAH8AAIAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAPwAAAAAAAAAfAAAAAAAAAB8AAACA - AAAAHwAAAMAAAAADAAAAwAAAAAEAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAA - AAAAwAAAAAEAAACAAAAAHwAAAAAAAAAfAAAAAAAAAB8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAA/8AAAAA - AAAH/wAAgAAAAAf/AADAAAAAB/8AAP+AAAAH/wAA/4AAAAf/AAD/gAAAB/8AAP8AAAAH/wAA/wAAAA// - AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/+AAAH/8AAP/8 - AAAf/wAA//wAAB//AAD//AAA//8AAP/+AAH//wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwFAAAALwoK - CgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcH - BzTAwMD/s7Oz/3p6ev9lZWXeSUlJtSMjI44CAgJlBgYGPQ4ODhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAgICWf/////////////////////////////////////s7Oz/vr6+/5CQkP9ra2vvVVVVxjIy - Mp4KCgp1BgYGTQsLCyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYOAgICGQQE - BBgEBAQYBAQEGAAAAA8AAACO8vLy//////////////////////////////////////////////////// - ////////////////////////0dHR/66urv80NDTuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD0/3dPc - 5//Y4e3/1t/r/9bf6//W3+v/1uDr/9Xf6v/AytX/Ojo6//////////////////////////////////// - /////////////////////////////////////////////2NjY8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAB - AnD/////lFAA/5JRAP+TUwL/k1MC/5NTAv+TUwL/k1IB/5BIAP/Z4+7/t7e3//////////////////// - ////////////////////////////////////////////////////////PT09lgAAAAAAAAAAAAAAAAAA - AAAAAAAALC8zjPvp0f98NQD/iEgA/3s0AP97NAD/ezQA/345AP+JSgD/gjwA/9Da5/+9vb3///////// - ///+/v7/0dHR/9HR0f/+/v7//////////////////////////////////////+3t7f8AAAB9AAAAAAAA - AAAAAAAAAAAAAAAAAAArLzOK/evV/303AP+QUwj/////////9///////4dG9/4A7AP+EPwD/0Nrn/729 - vf//////5eXl/0tMTf+/ydT/v8nV/0lKS//j4+P///////////////////////////8zMzP/vsfR/9rj - 7/+rrbD/KSkpRAAAAAAAAAAAAAAAACsuM4r969b/fDYA/55iFv+3w9H/DRATeAAAALb/////bh8A/3Yp - AP/W4O3/vb29//////+RkpP/+v3//4g/AP+IPwD//////4uMjf//////////////////////3d3d/7fA - yv+hYBD/hDwA//////8dICOGAAAAAAAAAAAAAAAAKy4ziv3r1v98NgD/nmEV/7vEz/8AAAAAAAAAVf// - ////9ub////y/4+RlP/W1tb/5OTk/21tb//u8vX/fTQA/300AP/y9Pb/aGlq/97e3v/7+/v//////9bW - 1v+vr6//rbbC/5VVBf95MgD////y/wAAAI8AAAAQCQkJCgAAAAArLjOK/evW/3w2AP+eYRX/u8TP/yYm - JgUAAAAAAAAAoIGDhv9vcnX/e3t7/2lrbP++x9P/ucTQ//////97NAD/fDQA//////+6xNH/vsfT/2Zn - af9ERET/v8jT/7O9yP//////j1EE/3s0AP///vf/1ODw/9rj7/+5vMD/ICAgTysuM4r969b/fDYA/55h - Ff+7xM//KioqBgAAAAAlJSWN//////////+BgoT//////4Y+AP+TUwP/ikoA/4pLAP+KSwD/ikoA/5NT - A/+GPgD//////8/Z5v+STQD/klIB/4xNAP+JSwD/iksA/4lLAP+TUwP/iEEA///54f8yNTmOKy4ziv3r - 1v98NgD/nmEV/7vEz/8pKSkGAAAAAE5OTrn//////////3p8fv////z/bR0A/3s0AP99NwD/jE4A/4xO - AP99NwD/ezQA/20dAP/7+fb/zNfm/3grAP97MwD/ezQA/4pLAP+MTgD/gDsA/3s0AP9vIQD/+eTL/zk8 - QIsrLjOK/evW/3w2AP+eYRX/u8TP/ygoKAYAAAAAZWVl3///////////ra2u/8zNzv//+Oj///7z//Xu - 5P9+OQD/fzoA//Lp3/////T///jo/87O0P9/goX////0///47P//////jE0A/387AP/axq7///////// - 8///////FRYXfCsuM4r969b/fDYA/55hFf+7xM//AAAAABISEhpeYGL/i5Od/4mRm/9SUlL/j4+P/3R2 - ef8oKy//+v///383AP9+NwD//v///yUoLf9ydXj/jY2O/7e3t/9qbXD/TlBT/73J1/+WWAn/ezQA//// - +f8AAAa/KSsvdRUWF28AAAAAKy4ziv3r1v98NgD/nmEV/7O7x/8AAAAXAAAAgv////+fYxb/qm4j/9be - 6P/Hx8f//////6Chov/t8fT/dywA/3csAP/x8/T/mpuc///////////////////////r6+v/sbrF/5BN - AP90KQD///7t/x8iJX4AAAAAAAAAAAAAAAArLzOK/evW/3w2AP+WWxD//////8vV4P/Q3Or//////3gv - AP+AOAD/0Nrn/729vf//////kJGS//Hz9f/Bklj/wJJY//X19v+Ki4z//////////////////////9zc - 3P+ts7r/1q17/7+RV///////FBYYhwAAAAAAAAAAAAAAACwwNIv76NH/fzoA/4lKAP+NTQD/k1MC/5NT - A/+KSQD/iksA/4Q/AP/Q2uf/vb29////////////RUZG/3h+hv94fob/Q0RF//////////////////// - /////////////zU1Nft9g4rmhoyU605PUuBCQkIXAAAAAAAAAAAAAAAAEhQXgv////9uHwD/fTcA/3s0 - AP97NAD/ezQA/3w1AP99NwD/dikA/9bg7f+6urr///////////////////////////////////////// - ////////////////////////V1dXwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIThIiN//// - //////T////2////9/////b///Xp///16f////L/hIaJ/9vb2/////////////////////////////// - //////////////////////////////////9AQECbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAzMzMSFhgadDE0N3sxNDd6IyUocQ8RFeV7foH/bnB0/2dqbf+vr6////////////////////////// - /////////////////////////////////////////////xoaGm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR07f///////////////83Ozv9kZmn/bnBz/21v - cv91d3j/g4OE/2tucf9maGv/srKy///////////////////////4+Pj/ISEhRQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkpL///////////+8vLz/homP//// - +v//9er///Xq/////P/q6+z///bq////9/91d3r/5OTk/////////////////8fHx/8nJycbAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NFMHBwf///////////2Nm - aP////b/axsA/3oxAP92LQD/gT0A//r38v9rGwD/eSoA/9rk8P/MzMz/////////////////lJSU/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAg87+/v//// - ////////bnF0//7z5v93LAD///////nz7/94MgD//////5hjHv/v28L/S1Ja/1xeYf+SkpP///////// - //9wcHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AGL///////////////9ucHT//vTm/3swAP/Q3Ov/8eXX/3kyAP//////lmAa/8Oief////z///3w/9fa - 3P9zc3T//////11dXcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAJSUlj////////////////3V3ev/+9Ob/ezAA/9Th8P/x5df/eTIA//////+ebCv/ejIA/3gw - AP9uIAD/6c6u/29zeP//////QUFBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAkJCR6YGBg221tbf6mpqb/TlBT///67f97MAD/4PD///Xs4f95MgD//////5Zf - GP/cybH//////5lkHv/iyan/cXV7//////8cHBxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOK///1/3IoAP/t39D/x6uG/3s1 - AP//////ikoA/7WOXP/n2cr/iUoA/+HHp/+BhYv//////yEhIUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYHCW3/////oGMW/5td - D/+cXhD/uotQ//////+ZWgv/oWYb/5teD/+cXg/////8/ygrLu1RUVH3KysrHQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9 - Pt61vcf/rLS//662wP+boqr/d3l8/7G5w/+stL7/rLS+/7W9x/9eYWT9NjY2FQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8f////AD///wAAf8AAAB+AAAAfAAAAHwAA - AB8AAAAHAAAABwQAAAECAAAAAgAAAAIAAAACAAAABAAAAQAAAAcAAAAHAAAABwAAAH8AAAB/gAAAf/wA - AH/8AAB/+AAA//gAAP/4AAD/+AAA//gAAP//gAD//4AA///AA///////KAAAABgAAAAwAAAAAQAgAAAA - AABgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCiYAAABWAAAAKgAA - AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrK33//////////9XV1f+pqan/jY2N4WxsbLhFRUWQFRUVZwAA - AEAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA0AAAANAAAAATAx - NKb//////////v////3////+///////////////////////////o6Oj/ubm5/5ycnPJycnLTCwsLDwAA - AAAAAAAAAAAAABgZGTTExsv/2dPN/9XRzP/V0cz/1dHN/8zHwf+hnpz/ra6v/f////////////////39 - /f3//////f39/f///////////////v/////Pz8//AAAAAAAAAAAAAAAAAAAAAGFocafEj03/fDIA/Xou - AP96LgD/ei8A/XswAP/Zt47/lZqg/f////////////////////3//////f39/f///////////v7+/f// - //+SkpLtAAAAAAAAAAAAAAAAAAAAAGtyfKezfzv/hkUA/uzXv//z2r3/1ryY/nYtAP3Vt5L9mJ2j/v// - //2ZmZn9m6Ks/Zujrf6Xl5f9/////v39/f3+/v79/////m5vcf6gqrb8jZGX6h8fHx4AAAAAAAAAAGlw - eqezfzz/l1YF/5Ger+cAAABQ2dna/4MzAP/gwJr/nqOo/f////+co63/qGoe/6ZnGf2cpK7//////f// - ////////7/Dy/bOwqv+FNgD//+fD/wgMElkAAAAAAAAAAGlweqezfzz/llQC/6Krtt0AAAAAUVJUzK+5 - xf+Sl53/aWpr/aKpsv+wwNP/oGcd/55iGP2ywtX/nKOs/Y6Pj/+OkZX/jJWg/djb3f93KQD/7de6/0tX - ZcRaX2akIiIiLWlweqezfzz/llQC/6Stud4AAAAAAAAAWP/////////9pKWn/reDQP27j1j9i00A/YtM - AP67j1j9tYA+/rm8wv3v2sH9soFC/q9/Rv2BPwD9nGck/sOUWf/qxZT/bXJ5rmlweqezfzz/llQC/6Su - ud4AAAAAPz8/if//////////qKip/Yc4AP+IQgD/h0cA/4dIAP2IQgD/hDUA/cnO1f/ev5f/gjcA/YRA - AP+KSwD/g0AA/YtCAP+8gzz/d36HrWlweqezfzz/llQC/6StuN4AAAAALS0vu6uxuf+Tlpr/dHV3/aKs - uP/W6P//n2Ye/51hGf3Y6///oau3/Wxtbv+Pk5n/maWz/fP4/f92KQD/6NO4/6CuwPGxuMHxOzs7WWlw - eqezfzz/l1YE/4+aqN0AAAAAzs/P/8SUW//2483/mp2g/f////+cpK//l1gI/5VTA/2cpa///////f// - ////////8PL0/a2ppP9wHgD/7NCr/wkOFFIAAAAAAAAAAGlxe6ezfzz/i0oA/vP2+v/Kx8T/7+fc/m0e - AP3Ssov9mJ2j/v////2AhIn96tCv/erPrv5+gof9/////v39/f3////98fLz/qupp//ty6D//////woM - D1kAAAAAAAAAAGxzfaq0fTf/eDEA/XYpAP96LgD/dCkA/XcuAP/SsYn/l5yj/f/////p6en/jJCU/4yQ - lf3n5+f//////f///////////////zY3OL4kKS9ZFRcZWAAAAAAAAAAAAAAAAB4gI1z/+e//8ta0//HX - uP/z2br/3sSl/tu/nf3v49T9jY+R/v////3////9/////f////7////9/v7+/v39/f39/f39/////zk5 - OXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDxI0ISUrWCQoLlEAAACKqq60/5aboP+bnqD//////f// - //////////////////3//////////f///////////////w0NDUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAiIiJt//////////+0tLT/maKs/Z+os/+hqrb/iIuP/6OsuP2Chov/2tra/f// - ////////8vLy/w0NDR8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFCZ//////// - //2Xn6r9omEQ/otEAP2EOwD9/fXq/XosAP7mxp/9k5ec/v////3////9wMDA/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enrB//////////+gqbX/hjwA/f////+eaif//////45P - Af32////bHR9/ZeZm///////mpqa9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAChoaHs//////////+hqrb/i0EA/en5//+dZyH//////5NaEf2hbCn/tn88/cW+s//W19r/kJCQyQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYWHeoqKi/srKyv+jrLf/jEMA/vj/ - //2gayj9/////Y1QBP7////9rH5F/sq3nv3Mz9P/cHBwnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACps77xhTkA/8qshf+AOgD/9+/n/3kwAP3Eo3r/kFED/dPB - qP/q7fH/RkZGeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABdYGS6//jl/+nSs//v2b//9PX0//Dav//q1Lf/9+DD/7a2tf8AAABXGBgYIwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNwQHDDkAAwg4AwQGKQEF - CTkDBws4AQQJPBMUFQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPw//wD8AH8AwAAHAAAA - DwAAAA8AAAADAAAAAwAIAAAACAAAAAgAAAAIAAAACAADAAAAAwAAAAcAAAAfAIAAHwDwAB8A8AA/APAA - PwDwAD8A8AA/AP4APwD+AD8A/wD/ACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAALCwsXUpKSn0WFhZRAAAALAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAIaKkMb/////////////////////09PT/7e3t+OPj4+6Z2dnlxQU - FDEAAAAAAAAAAF1gZZDOsIr/vp94/76gev+uj2j/qa60//////////////////////////////////// - //8YGBhHAAAAAAAAAACTkYzJhDQA/82jbP/DlFn/cR0A/8zW4///////rrO6/6yyuP////////////// - //+6vsP/WmFoqwYGBgMAAAAAjYuIxJxSAP9aan+YgYeQxsWQTv/Ax8//xM7a/7OKWP+1jVn/t8HN//// - ///g6fT/mXtU/+m4ef8AAAo+AAAAAI2Kh8SbUQD/dH6KhAAAAC3i6fH/lZaZ/6B/V/+kcjL/pHAw/59/ - V/+Ynqf/nHtU/6t8Qv+eZyD/xKV+/4WDg8KNiofEm1EA/3F6h4QJCgpK/////72/wv+/jUz/mF0W/5Zd - Ff++jUz/yNDb/72LTf+gaib/kFMJ/9yrbP+enZrNjYuIxJxSAP9ZZ3qBUVdepZt+Wf+doqf/l6Oz/7qR - X/+6kV7/jJio/93e3v+tuMX/pYdi/9imaP8ADR1jCAkKC5KNiceDNwD/xKuK/8Smf/9zHAD/0dvo//3/ - //+LgnX/i4J2//P09v///////////4qCef/Jva7/CQsOGgAAAABxdXmr5Ld+/8+hZf++kFX/u4xR/7rA - yP////////////////////////////////8YGRtCAAAAAAAAAAAAAAAAAAAAAAgOFjMBBw8iiI+X+9HX - 3//AxMn/v8XN/8THy/+4vsX/9vb2////////////AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX1 - 9f/c4OT/vKOE/7B8O//ZybT/toJD/7S7xP//////6urq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB7/////xcvT/7J/QP/y9/3/yaqD/7eLVf+oqa3/xMbI/9DR0fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAGBgY75ubm/6yyuv+5iEv/5uvz/82xjf+mdjn/sn8//7Gllv++wMPNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAt8MaR/7yIRv/lyaX/qm8l/76HQv+7tKr/cXJ0oAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFGTXBaYGh8QkdNc1lha3tcY2yAISIlNAAAAAAAAAAAAAAAAAAA - AAAAAAAA8H8AANADAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAcAAIAHAADgDwAAwA8AAMAP - AADwDwAA+B8AAA== - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.Designer.cs deleted file mode 100644 index d0cc691..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.Designer.cs +++ /dev/null @@ -1,157 +0,0 @@ -namespace opGamesLLC.opCpp2005 -{ - partial class UnlockForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UnlockForm)); - this.btnUnlock = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.lblName = new System.Windows.Forms.Label(); - this.lblLicenseId = new System.Windows.Forms.Label(); - this.lblSerial = new System.Windows.Forms.Label(); - this.txtName = new System.Windows.Forms.TextBox(); - this.txtLicenseId = new System.Windows.Forms.TextBox(); - this.txtSerial = new System.Windows.Forms.TextBox(); - this.SuspendLayout(); - // - // btnUnlock - // - this.btnUnlock.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnUnlock.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnUnlock.Location = new System.Drawing.Point(279, 90); - this.btnUnlock.Name = "btnUnlock"; - this.btnUnlock.Size = new System.Drawing.Size(75, 23); - this.btnUnlock.TabIndex = 0; - this.btnUnlock.Text = "Unlock"; - this.btnUnlock.UseVisualStyleBackColor = true; - this.btnUnlock.Click += new System.EventHandler(this.btnUnlock_Click); - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(360, 90); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 1; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // lblName - // - this.lblName.AutoSize = true; - this.lblName.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblName.Location = new System.Drawing.Point(12, 12); - this.lblName.Name = "lblName"; - this.lblName.Size = new System.Drawing.Size(39, 13); - this.lblName.TabIndex = 2; - this.lblName.Text = "Name"; - // - // lblLicenseId - // - this.lblLicenseId.AutoSize = true; - this.lblLicenseId.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLicenseId.Location = new System.Drawing.Point(12, 39); - this.lblLicenseId.Name = "lblLicenseId"; - this.lblLicenseId.Size = new System.Drawing.Size(87, 13); - this.lblLicenseId.TabIndex = 3; - this.lblLicenseId.Text = "License Id"; - // - // lblSerial - // - this.lblSerial.AutoSize = true; - this.lblSerial.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblSerial.Location = new System.Drawing.Point(12, 66); - this.lblSerial.Name = "lblSerial"; - this.lblSerial.Size = new System.Drawing.Size(55, 13); - this.lblSerial.TabIndex = 4; - this.lblSerial.Text = "Serial"; - // - // txtName - // - this.txtName.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtName.Location = new System.Drawing.Point(108, 5); - this.txtName.Name = "txtName"; - this.txtName.Size = new System.Drawing.Size(327, 20); - this.txtName.TabIndex = 5; - // - // txtLicenseId - // - this.txtLicenseId.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtLicenseId.Location = new System.Drawing.Point(108, 32); - this.txtLicenseId.Name = "txtLicenseId"; - this.txtLicenseId.Size = new System.Drawing.Size(327, 20); - this.txtLicenseId.TabIndex = 6; - // - // txtSerial - // - this.txtSerial.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txtSerial.Location = new System.Drawing.Point(108, 59); - this.txtSerial.Name = "txtSerial"; - this.txtSerial.Size = new System.Drawing.Size(327, 20); - this.txtSerial.TabIndex = 7; - // - // UnlockForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.Control; - this.ClientSize = new System.Drawing.Size(447, 125); - this.Controls.Add(this.txtSerial); - this.Controls.Add(this.txtLicenseId); - this.Controls.Add(this.txtName); - this.Controls.Add(this.lblSerial); - this.Controls.Add(this.lblLicenseId); - this.Controls.Add(this.lblName); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnUnlock); - this.DoubleBuffered = true; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "UnlockForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Unlock opC++ Addin"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnUnlock; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Label lblName; - private System.Windows.Forms.Label lblLicenseId; - private System.Windows.Forms.Label lblSerial; - private System.Windows.Forms.TextBox txtName; - private System.Windows.Forms.TextBox txtLicenseId; - private System.Windows.Forms.TextBox txtSerial; - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.cs deleted file mode 100644 index 82ef74d..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.cs +++ /dev/null @@ -1,88 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: UnlockForm.cs -/// Date: 09/28/2007 -/// -/// Description: -/// -/// Form to unlock the opCpp addin. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class UnlockForm : Form - { - /*=== construction ===*/ - - public UnlockForm() - { - InitializeComponent(); - - // Set the focus to the name text box. - txtName.Focus(); - - // Dim the unlock button. - btnUnlock.Enabled = false; - - // Setup event handlers for the text boxes. - txtName.TextChanged += new EventHandler(this.txtName_TextChanged); - txtLicenseId.TextChanged += new EventHandler(this.txtLicenseId_TextChanged); - txtSerial.TextChanged += new EventHandler(this.txtSerial_TextChanged); - } - - /*=== events ===*/ - - // Fired when text is changed in the 'Name' text box. - private void txtName_TextChanged(object sender, EventArgs e) - { - if (opLicenseUtility.IsValidLicenseCombination(txtName.Text, txtLicenseId.Text, txtSerial.Text)) - btnUnlock.Enabled = true; - else - btnUnlock.Enabled = false; - } - - // Fired when text is changed in the 'License Id' text box. - private void txtLicenseId_TextChanged(object sender, EventArgs e) - { - if (opLicenseUtility.IsValidLicenseCombination(txtName.Text, txtLicenseId.Text, txtSerial.Text)) - btnUnlock.Enabled = true; - else - btnUnlock.Enabled = false; - } - - // Fired when text is changed in the 'Serial' text box. - private void txtSerial_TextChanged(object sender, EventArgs e) - { - if (opLicenseUtility.IsValidLicenseCombination(txtName.Text, txtLicenseId.Text, txtSerial.Text)) - btnUnlock.Enabled = true; - else - btnUnlock.Enabled = false; - } - - // Fired when the unlock button is clicked. - private void btnUnlock_Click(object sender, EventArgs e) - { - if (!opLicenseUtility.GenerateLicenseFile(txtName.Text, txtLicenseId.Text, txtSerial.Text)) - MessageBox.Show("Unable to generate the license file '" + opLicenseUtility.FullLicenseFileName + "'."); - else - { - this.Close(); - - opCpp2005.GetInstance().UnlockAddin(); - - MessageBox.Show("The opC++ addin has been successfully unlocked."); - } - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.resx deleted file mode 100644 index 8940f45..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Components/UnlockForm.resx +++ /dev/null @@ -1,587 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA - CACoDgAAHgsAACAgAAABAAgAqAgAAMYZAAAQEAAAAQAIAGgFAABuIgAAMDAAAAEAIACoJQAA1icAACAg - AAABACAAqBAAAH5NAAAYGAAAAQAgAIgJAAAmXgAAEBAAAAEAIABoBAAArmcAACgAAAAwAAAAYAAAAAEA - BAAAAAAAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA - wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj4d3d3AAAAAAAAAAAAAAAAAAAAAAAAB/////j4iHd3dwAA - AAAAAAAAAAAAAAAAB/////////+PiId3d3AAAAAAAAAAAAAAB4//////////////j4cAAAAAAHd3eHd4 - d3d///////////////cAAAAAB4iIiIiIiI9///////////////cAAAAAB4ZsZkZkZk9v//////////// - //cAAAAACIRmRmxmxm8f//////////////cAAAAACHZGbGZkZG9///d3B3//////hwB3AAAACIxn///4 - ZG9f/4eP/3j////4eP/4cAAACHZG8Hd4bG9v/3iGZ/f////4eGZ/cAAACIZn9wB4Zn8f/3h2x4f////4 - eGxvQAAACHxs9wB///h4iHh2Z4eIj4iIeGRvMAAACIZH9wAAdWd3d398Z/d3dnd3iGZveHdwCHZm9wAH - //h4iIhmRoiI9/iIiMRoiIiACHxm9wAHj/94ZsZsZsZkh/ZGxmZGxkiACIZH9wAH//h4RmRmRmRmiPZG - ZGRkZmeACHbG9wAH//94bGbGRsZs9/ZsZkZmxsiACIRn9wAH//h///92Z///8I//+Gxv//9wCHZs9wB3 - cHN3Q090Z4RzeHdSiGRvB3cACIxm9wB4j49P/3h2x/f////4eEZvcAAACHZH9wB4Zk9//3iGZvf////4 - eGxvUAAACIZm93eIRm8//3h8aIf////4eGZ/YAAACHxsiIiIbG9P/4f//3j/////f//4cAAACIZGZGbG - Rk9///d2F3//////dHdXAAAACHZkZsZkZm9f////////////cAAAAAAAB/bHbGZmbH8v//////////// - cAAAAAAAB3////////h/////////////QAAAAAAAAAd3d3B1JXeP////////////cAAAAAAAAAAAAAeP - ///////////////4cAAAAAAAAAAAAAf///h3B3B3B2eP///4AAAAAAAAAAAAAAeP/4eP//+P//h////3 - AAAAAAAAAAAAAAf//3h2ZmeIZn9f///3AAAAAAAAAAAAAAf//39sdsaIbG8v///3AAAAAAAAAAAAAAj/ - /w9m/4SPdvhY///2AAAAAAAAAAAAAH///39l+IaPdPh3d4/3AAAAAAAAAAAAAH///39m+ISP5IiIh4+H - AAAAAAAAAAAAAH///w9s+IaPdkZkiH+AAAAAAAAAAAAAAA///39n+ISPdoiGeH+AAAAAAAAAAAAAAIdw - dw9k+IaPbPiM6H9wAAAAAAAAAAAAAAAAAH9m/4yPdo/2f39wAAAAAAAAAAAAAAAAAH9kZGaIbGZGeH9w - AAAAAAAAAAAAAAAAAHiHfneIZ3Z2iFZwAAAAAAAAAAAAAAAAAAePj4+I////hgAAAAAAAAAAAAAAAAAA - AAAHd3cHd3d3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD/+H////8AAP/4 - AP///wAA//gAAP//AAD/+AAAAf8AAP/4AAAA/wAAwAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAD/ - AACAAAAAAD8AAIAAAAAAHwAAgAAAAAAfAACAwAAAAB8AAIDAAAAAHwAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDgAAAAAQAAgMAAAAADAACAwAAAAB8AAIDAAAAAHwAAgAAAAAAf - AACAAAAAAB8AAIAAAAAAPwAAgAAAAAf/AACAAAAAB/8AAIAAAAAH/wAA4AAAAAf/AAD/gAAAB/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/4AAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAB// - AAD/AAAAH/8AAP8AAAAf/wAA//wAAB//AAD//AAAH/8AAP/8AAAf/wAA//4AAP//AAD//4ID//8AAP// - /////wAAKAAAACAAAABAAAAAAQAEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACA - gACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAh3d3AAAAAAAAAAAAAAAAAP////iHd3AAAAAAAAAAAAeP////////+HcAAAB4iIiIh/ - /////////3AAAAhmRmZGiP////////9wAAB4ZGRkZoj/+I/////4cAAAeGz4+EaI+HiHj///eIgAAIhm - h3hsiPiGb4//+IZocAB4RoAIj4iH9Gh4/4iGT3AAeGyAB3d3iPZPiHeI9kiIgHhmgAf/iGZGRmT4ZGRm - Zod4xoAH/39GZGxmiGZGxsaHiGaAB/+IiIZoiIiI9miI8HhkgAd3d4eMaHeId4RocAB4xoB/Z4j4hk9/ - //iGyHAAeGb4iGyI+Ifoj///h4iAAIhkZGZGiP93d////3d3AAB4bGZGZPj///////9wAAAAB/iPiI9/ - ////////cAAAAAAAAHd3j////////wAAAAAAAAB//4d3eHeP//gAAAAAAAAAf/iI+PiPf//4AAAAAAAA - AI/3hmZoZoj/9wAAAAAAAACP9/T4z3h3j/cAAAAAAAAA//eGiG9niIf3AAAAAAAAB//39o9vfGaH+AAA - AAAAAAB3h4aIb2j2h/AAAAAAAAAAAAeMiM9njIfwAAAAAAAAAAAA9mZ/bHb2cAAAAAAAAAAAAHeId4h4 - cAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8AAB+AAAAfgAAAHwAAAB8AAAAPAAAABwYA - AAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAAAH+AAAB//AAA//wAAP/8AAD//AAA//wA - AP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAAAAAgAAAAAQAEAAAAAACAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A - AAD/AP8A//8AAP///wAAAAgAAAAAAAAAf//4iHAAh3d4////8AB2fkj4j/+HAIaHiId4+HgAdICIZ2eH - ZniGgPh8aI5Wh3aHeIfniHcAhHfI94//eAB453j///8AAAAIiIiP/wAAAAiI6Hj4AAAAD4eIaIgAAAAI - h4jHiAAAAAAIaG54AAAAAACAiAAAAPv/AADwBwAAAAcAAAADAAAAAwAAEAAAABAAAAAAAwAAAAMAAAAP - AADgDwAA4A8AAOAPAADgDwAA+A8AAP0/AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAJAAAAAAAAAAAAAAAB - AAAAAQAAAAAAAC8vLwAyMjIANTU1ADo6OgA8PDwAQ0NDAElJSQBNTU0AUFBQAFZWVgBZWVkAXV1dAGJi - YgBlZWUAaWlpAGxsbABxcXEAdnZ2AHl5eQB9fX0Ai00BAIxOAACNUAMAjlEFAJBUCACRVgwAk1gPAJRb - EwCWXRYAll4YAJliHgCbZiMAnGYjAJxnJACdaCUAnmooAKBtLQChbzAAonEyAKRzNQCldDcApXU4AKd4 - PQCoej8Ar4ROALCFUACzilYAtItYALaPXgC3kF8AuJNjALqVZgC8mGoAvZpuAL+ccQDCoXgAxaZ/AIGB - gQCFhYUAioqKAI2NjQCSkpIAlZWVAJmZmQCfn58Ao6OjAKWlpQCqqqoAra2tALGxsQC1tbUAurq6AL+/ - vwDGp4AAyq6KAM2ykQDQtpcA07yfANW+ogDWwKQA2MKoANnFqwDaxq4A28iwANzKswDezLYA3824AODR - vQDDw8MAxcXFAMnJyQDNzc0A0dHRANTU1ADZ2dkA3NzcAOXXxQDn28sA6uDSAOvh1ADt49cA7uTZAPDo - 3QDj4+MA5eXlAOnp6QDt7e0A8uviAPPt5QD38u0A8vLyAPX19QD59fIA+vr6AP37+gD+/v4AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAALChA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK - dHBgSEASCwoNEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdHR0dHR0dHR0a1tD - Ow0KCxI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7dHR0dHR0dHR0dHR0dHR0dHBeRz8SCgsQ - EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAASWWh0dHR0dHR0dHR0dHR0dHR0dHR0dHRwaxMAAAAAAAAAAAAA - ChM/Pz8/Pz8/Pz8/PwtDdHR0dHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAJa2FPT09PT09PT09P - UXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0dA0AAAAAAAAAAAA/VhYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dHR0dAsAAAAAAAAAAABHShYWFhYWFhYWFhYWGXQKdHR0dHR0dHR0dHR0dHR0dHR0dHR0 - dA0AAAAAAAAAAABHORYWGSEhISEhHhYWGXQKdHR0dD8LCwsLPHR0dHR0dHR0dEgLCwMLOwAAAAAAAABH - ORYWKnR0dHR0VBYWGXQKdHR0Rjt0dHR0O0Z0dHR0dHR0awpwdHR0WRMAAAAAAABHORYWKnAEDQs8VhYW - GXQKdHR0O143ISE3YBN0dHR0dHR0WzxWISErdAoAAAAAAABHORYWKnASAAA7VyEhJXQKdHR0E14yFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXATAAAJb3R0dFsNXllZDWAxFhYvYAtZWV50aFlZQDxU - FhYfdAkAAAAAAABHORYWKXATAAAAAQoKCxALEz8/P2sxFhYvaz8/PxIGCz8/P1tUFhYfdEA/PzwJAABH - ORYWKXATAAAAC3R0dHANblBQT08rFhYqUFBQT24SdFFPUFA2FhYcT1BQT2NDAABHORYWKXATAAAAC3R0 - dGgQYhYWFhYWFhYWFhYWFmI/dBkWFhYWFhYWFhYWFjlHAABHORYWKXATAAAADXR0dGsQYhYWFhYWFhYW - FhYWFmI/dBwWFhYWFhYWFhYWFjlHAABHORYWKXATAAAAE3R0dGsQYyEhISEZFhYZISEhIWM8dCkhISEe - FhYZISEhIUxHAABHORYWKXATAAAAQHBwcHAJa3R0dHQzFhYxdHR0dGsDW3R0dHRUFhYfdHR0dHQNAABH - ORYWKXATAAATCQ0NDQk8CwsKA2AxFhYvYAMKCgtZEAsKCT9QFhYfdAQQDQ0AAABHORYWKXASAAANcWRk - ZHAKdHR0O14xFhYxXxN0dHR0dHR0WTxUFhYfdAoAAAAAAABHORYWKXALAAA7VBYWGXQKdHR0E14zFhYv - YBN0dHR0dHR0WzxUFhYfdAoAAAAAAABHORYWKXQ/Pz9bVBYWGXQKdHR0O142HBwzYBN0dHR0dHR0WzxW - HBwldAoAAAAAAABHORYWIU9QT09QNxYWGXQKdHR0Rjx0dHR0PER0dHR0dHR0awpwdHR0WxIAAAAAAABH - ORYWFhYWFhYWFhYWGXQKdHR0dDsKCgoKO3R0dHR0dHR0dDsJCw0NEgAAAAAAAABGSxYWFhYWFhYWFhYW - GXQKdHR0dHR0dHR0dHR0dHR0dHR0dBMAAAAAAAAAAAAAAAANbi0hISEhISEhISEhJXQKdHR0dHR0dHR0 - dHR0dHR0dHR0dA0AAAAAAAAAAAAAAAA/PHB0dHR0dHR0dHR0dFsQdHR0dHR0dHR0dHR0dHR0dHR0dAsA - AAAAAAAAAAAAAAAAABAQEBAQDQMKCgoKCxBrdHR0dHR0dHR0dHR0dHR0dHR0dBAAAAAAAAAAAAAAAAAA - AAAAAAAAAA10dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0azsAAAAAAAAAAAAAAAAAAAAAAAAAAAp0dHR0 - dFsNCwoKCgsTCwsKChJwdHR0dHR0WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAt0dHR0WQtrdHR0dHRZcHR0 - dEgQdHR0dHR0QwAAAAAAAAAAAAAAAAAAAAAAAAAAABJ0dHR0C3A5ISUjJSlmViMlKXQKdHR0dHR0EwAA - AAAAAAAAAAAAAAAAAAAAAAAAAEB0dHR0C3QhFh8fHBZQVBkWJXQKdHR0dHR0DQAAAAAAAAAAAAAAAAAA - AAAAAAAAAEh0dHR0CnQhHnR0ThZQdDMWZ1sJW2h0dHR0CwAAAAAAAAAAAAAAAAAAAAAAAAAAP2B0dHR0 - CnQhHHRITxZQdDMWZ0c8PBASdHR0EAAAAAAAAAAAAAAAAAAAAAAAAAAAEHR0dHR0CnQhHnRIThZQdDMW - TFRPVGc8R3RoPAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R0dHR0CnQhHHRHTxZQdDMWFhYWFjVdO3RbAAAA - AAAAAAAAAAAAAAAAAAAAAAAACmt0dHR0CnQhHnRIThZQdDMWS05LFjNeO3RDAAAAAAAAAAAAAAAAAAAA - AAAAAAAAPBALCQsTBHQhHnRZTxZQdDMWZ29nFjVdO3Q6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - CnQhHHFxTRZQdDEWY3FjFjNeO3QNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXQhGRkZFhZQTxYW - GRkWFjVdE3QLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE2hNLS0tLS9nYS0uLS0uLldGCQsQAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlba2toa2hGXmtqampqakgJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAOzo7EzsAPDo7Ojs6OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA//h/////AAD/+AD///8AAP/4 - AAD//wAA//gAAAH/AAD/+AAAAP8AAMAAAAAA/wAAgAAAAAD/AACAAAAAAP8AAIAAAAAA/wAAgAAAAAA/ - AACAAAAAAB8AAIAAAAAAHwAAgMAAAAAfAACAwAAAAB8AAIDgAAAAAQAAgOAAAAABAACA4AAAAAEAAIDg - AAAAAQAAgOAAAAABAACA4AAAAAEAAIDAAAAAAwAAgMAAAAAfAACAwAAAAB8AAIAAAAAAHwAAgAAAAAAf - AACAAAAAAD8AAIAAAAAH/wAAgAAAAAf/AACAAAAAB/8AAOAAAAAH/wAA/4AAAAf/AAD/gAAAD/8AAP+A - AAAP/wAA/4AAAA//AAD/gAAAD/8AAP+AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAf/wAA/wAAAB// - AAD/AAAAH/8AAP/8AAAf/wAA//wAAB//AAD//AAAH/8AAP/+AAD//wAA//+CA///AAD///////8AACgA - AAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAABAAAAAAAAVVVVAF9fXwBiYmIAZWVlAG1t - bQBwcHAAdXV1AHh4eAB9fX0AjE4AAI1QAwCOUQUAkFUKAJFWDACTWQ8Ak1kQAJRbEgCVXBUAl18YAJdg - GgCZYh0Am2YjAJ1oJQCeaikAo3EzAKNyNACkczUApXU4AKh5PgCpfEIAtY1bALeRYAC4kmIAwJ5zAMCe - dADDpHwAgoKCAIWFhQCJiYkAjo6OAJKSkgCWlpYAmpqaAJ2dnQChoaEApqamAKurqwCtra0AsrKyALa2 - tgC4uLgAvLy8AMyxjwDPtZUA0biZANbApQDYw6kA2MSqANrGrgDcybEA4dG9AMLCwgDGxsYAycfFAMnJ - yQDOzMgAz8/PANTRzgDZ1M0A3NbOANfU0ADW1tYA2dXQANra2gDe3t4A49TBAOTVwwDk1sQA5tnIAObc - zwDo3MwA49vQAOTd0gDm3tUA4t7ZAOvh1ADs4tUA7ObeAODg4ADl5eUA7ejhAOnp6QDt7e0A9e/pAPHx - 8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLScnJykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF////// - /19IMSkmJycAAAAAAAAAAAAAAAAAAAAAAAAJSF////////////////9aPi0DAAAAAAAACS8xMzEzMTMx - CV3//////////////////ycAAAAAAABSGBUVFRMVFRU+Qf//////////////////LQAAAAAAKToKCgoK - CgoKDUA///9dSEhd////////X0gmAAAAAAApOgoVTExMNwoMPz//SiYxMyZK/////18JMTMtAAAAACk6 - ChcvKQNRCgw/P/8vSRUSSS3/////SjEaEkwpAAAAKToKFy8AAERMTC1BSClJCgpJKEhdX0ozMRUKPSYA - AAApOgoXLQAABigpJiczMVsKClgzMycGMzFdFQo9MzMtACk6ChcvAAAp//8tUhQVEgoKEhMTUj4XFRIM - ChIVEjwpKToKFy0AACf//y1JCgoKCgoKCgpSPg0KCgoKCgoKOi0pOgoXLwAAJl//L0BMTDwKCjpMTEAt - TExMEgo1TExSACk6ChctAAAGLSkGLScDSQoKSQMoLTEpCTEVCj0DAAAAKToKFy8AJlAaHT5B/y9JCgpJ - Lv////9KMRUKPS0AAAApOgoXWjEzUQoMQT7/L0ggIUkv/////1ovIyFWKQAAACk6CgwVFRISCgxBQf9f - CSgoCV///////wMnKQkAAAAAKUwKCgoKCgoKDEE+////////////////JwAAAAAAAAAAJ1JMTExMTExM - LUr///////////////8tAAAAAAAAAAAAAAAAAAEnKSkx/////////////////wAAAAAAAAAAAAAAAAAA - J////0EnKSctLScpM/////9KAAAAAAAAAAAAAAAAAAAp//8+LVFMTFJKTE8tSv///zMAAAAAAAAAAAAA - AAAAADH//ydRChMSFUwMEj5B////LQAAAAAAAAAAAAAAAAAASv//KUwSXz0V/x42CSYv//8nAAAAAAAA - AAAAAAAAAABf//8nTBJBPRX/HiJMTEEt/ycAAAAAAAAAAAAAAAAAKf///ylMD0g9E/8eDRMMNyf/LQAA - AAAAAAAAAAAAAAAAJiYpBT0SSD0U/x42/x03Kf8AAAAAAAAAAAAAAAAAAAAAAAAmTAw4JBReGCA4Fzcn - WgAAAAAAAAAAAAAAAAAAAAAAAABSHRoaH1EaGhoaTAIFAAAAAAAAAAAAAAAAAAAAAAAAAAkpLS0nJi0t - KS0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////gf///4AD//8A - AB+AAAAfgAAAHwAAAB8AAAAPAAAABwYAAAcGAAABBgAAAAYAAAAGAAABBgAABwQAAAcAAAAHAAAADwAA - AH+AAAB//AAA//wAAP/8AAD//AAA//wAAP/8AAD/+AAA//wAAf//gAH//8AB///AB///////KAAAABAA - AAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAACNUAMAj1IHAJBVCgCUWxIAnGYjAJ9s - KwCgbCwAo3IzAKRzNgCmdz0Apng9AKl+SACtgUkAr4ROALKJVQC2j14An4dpAKaLaACnjGkAqIxpAKiO - bQC3kWAAs5FmALiSYgC4k2QAupVmALKTawC1lW0Au5ZoALyXagC8mGsAs5dzAMCfdgCXjoUAlpWTAJeX - lwCdmpYAmJiYAKabjgClnI8ApZ2SAKCcmAC/qY0AoqCdAKikngCwpJQAoaGhAKSioQClpaUAqaelAKmp - qQCtra0AsKmhALe3twC5ubkAvru4AL29vQDKrooAy6+MANG9pADDwL0AwsLCAMXEwwDGxsYAzMzMANrS - yQDR0dEA1NTUANra2gDh2c8A4eHhAObm5gDu7u4A8/PzAPb29gD7+/sA/v7+AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAADMAAAAAAAAAAAAAAAAAAC9M - TExHPjYzMwAAAC8TExMTOUxMTExMTEwAAAApAhYPAj5MPj5LTEw+JgAAKQQvJRg9PhwcPkxFExgAACkE - MwBALxQLChMyFAwJFCopBDYATDkWBgYWPRgKBRYtKQQvJREvMxYcL0Q5EhAAACkDIBwCQEgpKEhMSyIo - AAAsGBYWFj5MTExMTEwAAAAAAAAAJD4+QUFBSUxMAAAAAAAAAEREKx88HT5MRAAAAAAAAABLPh9GOxg1 - Pj0AAAAAAAAAOS8dQjsNDy42AAAAAAAAAAAAIRg7Cw0pLwAAAAAAAAAAAAAzADM2AAAAAAAA+/8AAPAH - AAAABwAAAAMAAAADAAAQAAAAEAAAAAADAAAAAwAAAA8AAOAPAADgDwAA4A8AAOAPAAD4DwAA/T8AACgA - AAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEyhQUFN0CAgKxBgYGiRcX - F2AvLy84LS0tEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJycn9f// - ////////+Pj4/8jIyP+Xl5f/ampq/z4+Pv8XFxfpAAAAwQAAAJkPDw9wIyMjSS0tLSAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAS0tL///////////////////////////////////////////////////////b29v/rKys/35+ - fv9PT0//ICAg+gsLC9EEBASqBgYGgSEhIVkqKiowMTExCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAcHBwYgICA//////3//////f39/f39/f3//////f39/f39/f3//////f39/f// - //3//////////f////3/////////////////////7+/v/8DAwP+RkZH/ZGRk/zMzM/8YGBjiBgYGugAA - AJIbGxttLy8vGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIXFhYWMRwc - HC8bGxsvGxsbLxsbGy8bGxsvHBwcLxcXFysAAABld3d3/8jIyP319fX//////f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////////f/////////9/////f// - //////////////////+FhYX/ISEhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkpKGQAA - AO2Bg4b/nqGm/5mdov+ZnaL/mZ2i/5mdov+ZnaL/mZ2i/5qeov+cn6T/jJCU/4aKjv8XFxf/oqKi//// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////9ycnL/RkZGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAABAQE9f///////PD/69a+/e3awv3t2sL/7drC/e3awv3t2sL/7drC/e3awv/t2sL97drB/erU - uv3/////ERER/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////88PDz/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhI3pKer//nq2f1vJAD/fjkA/X45AP2AOwD/fjkA/X45AP2AOwD/fjkA/YA7 - AP9+OQD9fTgA/XImAP3/////Hx8f/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f/////9/f39/f39/f////8WFhblAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhJRzdLY/86tg/+CPwD/jE4A/4tNAP+JSgD/iUoA/4lK - AP+JSgD/iUoA/4pLAP+MTgD/i00A/344AP//////Hx8f//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/iUsA/YpM - AP2QUwj/jlAE/Y5QBP2OUAT/j1EG/Y5SBf+ISQD9iUsA/X44AP3/////Hx8f/f////3//////f39/f// - //11dXX/HBwc/SUlJf0kJCT/Hh4e/XBwcP3//////f39/f39/f3//////f39/f/////9/f39/f39/f// - ///ExMT9Ghoa/SwsLP8AAADnAAAAwwAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gy - i/+CPwD/iEcA/51qKP///////////////////////////+3j2P9/OgD/i00A/344AP//////Hx8f//// - /////////////6SkpP9fX1///////////////////////19fX/+enp7///////////////////////// - //////////////////8BAQH///////////////////////Dw8P8AAAClAAAAAAAAAAAAAAAAAAAAAAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAA6QsLC70AAADJf4KG//Ljz/96NAD9h0cA/Xs0 - AP3/////Hx8f/f////3//////////VhYWP3v9fz/vpZl/YpKAP2KSwD/uI9b/fr///1PT0///////f39 - /f3//////f39/f/////9/f39/////cbGxv97foL99eTQ/YVDAP+OUQP9kFUK/f////8AAADSAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////CwsLowAAAAAmJiYUi42R//jq - 2P+DPwD9jU8C/oNBAP3/////Gxsb/f////3//////////WNjY/3o7vf/t4xX/YA9AP2CPwD/soVM/fD3 - //1aWlr//////f////3//////f39/f/////////9/////dHR0f92en798eDK/Xw2AP+FRAD9iEcA/f// - //8AAADPAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////EBAQqAAA - AAAAAAAAFhYW///////////9/////f////3e3t7/RUVF/fHx8f2+vr7/0dHR/TMzM/3p7/f/uY9b/YNB - AP2FRAD/tIhR/fH4//0qKir/0tLS/b6+vv3Y2Nj//////ff39/+7u7v9yMjI/Y6Ojv9zdnr98uLM/X86 - AP+ISQD9iksA/f////8AAADYHx8fIxQUFDAVFRUqAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xm - Iv//////Dw8PqAAAAAAAAAAAPz8/JwAAAOYrKyv/Hx8f/xwcHP9KSkr/VFRU/1FSU/+EiIz/f4OI/4CE - if//////t49c/4VDAP+FQwD/s4hS//////+BhYn/f4OI/4SIjP9WV1f/Dg4O/yQkJP+Hio7/gIOI/3yA - hf/h6PH/7N7L/386AP+KSwD/i0wA//////+coKX/lpqf/5yfpP+Ympz/AAAA7QAAAAAZGRlPyM3U/9Gy - i/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAAAAAAMP//////////f////3/////Ly8w/f// - //3o0rb/7drC/e3awv3m18T/pXY6/YZFAP2HRwD/pHI1/ebXxP3t2sL/7drC/ejStv3/////Tk9P/f// - ///r17397dnB/e3awv/n1sH9xqeB/YNBAP+JSgD9i00A/ebYx//r2MD97drC/erVuv////39vb/B/xkZ - GUoZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAAAAAAAAAAAAAAACIiIu///////f39/f// - //35+fn/RkhK/f//9v1wIwD/fjkA/X45AP2AOwD/hkUA/YpMAP2MTgD/hkYA/X45AP2AOwD/fjkA/W8i - AP3/+vD/d3p8/f////92LAD9fDcA/YA7AP9+OQD9gj8A/YxOAP+KTAD9iUoA/YA7AP9+OQD9fjkA/XYs - AP/KqH39yc7V/ycnJ1AZGRlPyM3U/9Gyi/+CPwD/iEcA/5xmIv//////Dw8PqAAAAAAAAAAAAAAAAERE - RP/////////////////5+fn/REZJ////+/96MgD/iUoA/4lKAP+JSgD/i0wA/4xOAP+MTgD/i0wA/4lK - AP+JSgD/iUoA/3oyAP///fT/c3V4//////9/OQD/iEgA/4lKAP+JSgD/iksA/4xOAP+MTgD/i00A/4lK - AP+JSgD/iUoA/387AP/PsIj/xsvS/ysrK08ZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dw8PqAAA - AAAAAAAALCwsFHR0dP/////9/////f////35+fn/RUdJ/f///v2BPAD/jlAE/Y5QBP2PUwf/jE4A/YlL - AP2LTAD/i00A/ZBTCP2OUAT/jlAE/YE8AP3///j/fX+B/f////+GSAD9jU4B/Y5QBP+PUgb9jVAF/YpL - AP+KTAD9iksA/Y9UCf+OUAT9jlAE/YVDAP/UtpD9z9TZ/yAgIFMZGRlPyM3U/9Gyi/2CPwD/hkYA/Zxm - Iv3/////Dw8PqAAAAAAAAAAAEhISN6+vr//////9/////f////3/////AwMD/f////3//////////f// - //3/////uJJh/YNBAP2FRAD/tIpX/f////3//////////f////3/////AAAA/d/f3//////9/////f// - ///////96uDS/X86AP+ISQD9jE4C/f//////////////////////////TU1N/zIyMiQZGRlPyM3U/9Gy - i/+CPwD/iEcA/5xmIv//////EBAQqAAAAAAAAAAAAAAAlSwsLf83OTv/NDY4/zg6PP8AAAD/wcHB/yIi - Iv8eHh7/JSUl/wAAAP/y+f//uI9a/4VDAP+FQwD/s4dQ//v///8AAAD/JSUl/x4eHv8aGhr/6enp/z09 - Pf8bGxv/ISEh/wQEBP+GiY7/8eDL/386AP+KSwD/iksA//////8AAAD0CgoKvhEREcMAAADBODg4UAAA - AAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////Dg4OpwAAAAATExMHWFla///////////9/////f// - //3/////FhYW/f////3//////////Wpqav3n7vb/uY9b/YNBAP2FRAD/tIhR/e/2//1hYWH//////f// - //3//////////f/////////9/////d/f3/91eHz98uLM/X86AP+ISQD9iksA/f////8AAADNAAAAAAAA - AAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/2CPwD/hkYA/ZxmIv3/////AAAAuBkZGSIAAABLgYWJ//He - yP9vIQD9ezQA/W4gAP3/////Hx8f/f////3//////////V5eXv3o7vb/uI5Y/YI/AP2EQQD/s4ZO/fD3 - //1VVVX//////f39/f3//////f39/f/////9/f39/////crKyv92eX798uHL/X44AP+HRwD9iUkA/f// - //8AAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlPyM3U/9Gyi/+CPwD/iEcA/5xnJP//////j5KX/5mc - of+RlZn/2+Lr/+/h0f9/OgD/i00A/344AP//////Hx8f/////////////////1lZWf/x9v7/totV/303 - AP99OAD/sINL//r///9PT0///////////////////////////////////////8TExP99gIT/8eDK/3cv - AP+BPgD/hUUA//////8AAADSAAAAAAAAAAAAAAAAAAAAAAAAAAAaGhpPyM3U/9Gyi/2CPwD/h0gA/ZZe - F/3m2Mb/7drB/e3awv3t2sL/6NfB/cepg/+CPwD9iksA/X44AP3/////Hx8f/f////3//////////ZmZ - mf1sbGz//////f////3//////////WxsbP2Tk5P//////f39/f3//////f39/f/////9/f39/////f// - //8PDw/9//////////////////////v7+/8AAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAZGRlQys/W/8+w - iP2CPwD/ikwA/YdIAP2AOwD/fjkA/X45AP2AOwD/fjkA/YNBAP+KTAD9iksA/X44AP3/////Hx8f/f// - //3//////f39/f////1jY2P/FBQU/R8fH/0fHx//FBQU/V9fX/3//////v7+/f39/f3//////f39/f// - ///9/f39/f39/f////+Dg4P/AAAA1xsbG9QbGxvVGhoa1wAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAPDw9KxsrQ/9e7mP97NAD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iUoA/4lKAP+JSgD/iEkA/3s0 - AP//////Hx8f//////////////////////////////////////////////////////////////////// - //////////////////////////////////94eHj/Ojo6CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAuLi4MS0xN//////6gbSr/i00A/Y5QBP2OUAT/jlAE/Y5QBP2OUAT/jlAE/Y5Q - BP+OUAT9jU8C/YNBAP3/////Gxsb/f////3//////f39/f39/f3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////9CQkL/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEgIaHiP////////////////////////////// - /////////////f/////////9/////f////3d3d3/Jycn/f////3//////f39/f39/f3//////f39/f39 - /f3//////f39/f39/f3//////f39/f39/f3//////f39/f/////9/f39/f39/f////8aGhroAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8vL0kAAACtEhISxBER - EcIRERHCEhISwgwMDL8AAADoJCQk/x8fH/8fHx//Hx8f/xsbG/8xMTH///////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //8GBga9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5///////////////9/////f////3//////////f// - //3//////////f////3//////////f////3//////////f////3//////////f39/f3//////f39/f// - ///9/f39/////f////8ICAiTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFxfo//////////////////////// - ///Y2Nj/JSUl/x0dHf8fHx//Hx8f/x8fH/8cHBz/Z2dn/yEhIf8eHh7/Hx8f/xoaGv9DQ0P///////// - /////////////////////////////9fX1/8jIyNqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PT3//////v// - ///9/f39/////dTU1P0EBAT//////f////3//////////f////3/////tbe5/f////3//////////f// - //3ExMT/MzMz/f////3//////f39/f/////9/f39/////aOjo/87Ozs+AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw - MAxra2v//////f/////9/f39/////RsbG/3/////wJpu/YpMAP2OUgX/jlIF/Y5SBf2NUAP//////d7M - tf2FRAD/j1QI/YlJAP3/////Ghoa/f////3//////f39/f/////9/f39/////XJycv9SUlIUAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACEhITOampr//////////////////////x0dHf//////h0YA/4RCAP+KSwD/iUkA/4lJ - AP96MgD/3824/97Ouf99NwD/hUMA/4NBAP//////ICAg/////////////////////////////////0FB - Qf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHlrFxcX//////f/////9/f39/////R8fH/3/////jE0A/YVE - AP3//////////eLTwf1zKAD/3cqz/f////26lmj/dCgA/f////3a3N7/Dw8P/eDg4P319fX//////f// - ///9/f39/////xcXF+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODoL19fX//////f/////9/f39/////R8f - H/3/////jE0A/YNBAP3/////p6uw/eLNtP1zKAD/3cqz/f////2zjFn/dCgA/f////2mq7H/goaK/Xl8 - gf02Nzj/Pz8//f/////+/v79/////wUFBb8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKj///////////// - /////////////x8fH///////jE0A/4NBAP//////pait/+PPtf9zKAD/3Mmy//////+zjFn/eTEA/9zJ - sv/s2sX/8d7I/+3Zvv//////a2xt/62trf///////////xUVFZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P - D9D//////f39/f/////9/f39/////R8fH/3/////jE0A/YNBAP3/////pqqv/ePPtf1zKAD/3cqz/f// - //2zjFn/g0EA/XUrAP1zKAD/cykA/XUsAP24jVb/6vD4/VxcXP/////92dnZ/ygoKGkAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAACwsLP/////////////////////9/////SQkJP3/////jE0A/YNBAP3/////o6es/ePP - tf1zKAD/3cqz/f////2zjFn/ejIA/dfCpv3cyrL/18Ko/XoyAP29lmT/5evz/WBgYP/////9paWl/zw8 - PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGIoAAACuBQUF1BcXF/tHR0f/hoaG/w0NDf//////jE0A/4NC - AP//////t7zB/+HNtP9zKAD/3Mmy//////+zjVr/dCoA///////2/f///////3MoAP+9lmT/5Ory/2Fh - Yf//////dHR0/0lJSRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioqEgAA - AM//////jE0A/YZEAP3//////////d/MuP10KQD/3cqz/f////23kWL/dSoA/f////3//////////XMo - AP29lmT/5Ory/WJiYv/////+QUFB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAoKCsL/////hUQA/YE9AP13LgD/di4A/Xw2AP14MAD/3826/djCqP10KQD/hUQA/Xkw - AP12LgD/eTEA/Xw3AP23jVj/6fD3/Wpqav//////JSUl6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKP/////2r6f/6V1Nv+qfEH/qnxB/6p8QP+ndTb//////+nc - yv+icC//q31C/6p9Qf+qfEH/qn1B/6VxMv/77Nn/0dTX/wAAAMMEBATNBgYGswAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElJSREGBgb///////////////////////// - ////////oKGi//r9///////////////////////////////////e4OT/AAAA7QAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTU1MOBQUFggEB - AZUEBASTBAQElAMDA5QAAACSKysrXQcHB4wBAQGUBAQElAQEBJQEBASTAwMDlAAAAJUPDw90AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD///////8AAP/4D////wAA//gAH///AAD/+AAAH/8AAP/wAAAAfwAA4AAAAAB/ - AACAAAAAAH8AAIAAAAAA/wAAAAAAAAD/AAAAAAAAAP8AAAAAAAAAPwAAAAAAAAAfAAAAAAAAAB8AAACA - AAAAHwAAAMAAAAADAAAAwAAAAAEAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADAAAAAAAAAAMAAAAAA - AAAAwAAAAAEAAACAAAAAHwAAAAAAAAAfAAAAAAAAAB8AAAAAAAAAHwAAAAAAAAA/AAAAAAAAA/8AAAAA - AAAH/wAAgAAAAAf/AADAAAAAB/8AAP+AAAAH/wAA/4AAAAf/AAD/gAAAB/8AAP8AAAAH/wAA/wAAAA// - AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/AAAAD/8AAP8AAAAP/wAA/wAAAA//AAD/+AAAH/8AAP/8 - AAAf/wAA//wAAB//AAD//AAA//8AAP/+AAH//wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwFAAAALwoK - CgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcH - BzTAwMD/s7Oz/3p6ev9lZWXeSUlJtSMjI44CAgJlBgYGPQ4ODhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAgICWf/////////////////////////////////////s7Oz/vr6+/5CQkP9ra2vvVVVVxjIy - Mp4KCgp1BgYGTQsLCyYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYOAgICGQQE - BBgEBAQYBAQEGAAAAA8AAACO8vLy//////////////////////////////////////////////////// - ////////////////////////0dHR/66urv80NDTuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD0/3dPc - 5//Y4e3/1t/r/9bf6//W3+v/1uDr/9Xf6v/AytX/Ojo6//////////////////////////////////// - /////////////////////////////////////////////2NjY8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAB - AnD/////lFAA/5JRAP+TUwL/k1MC/5NTAv+TUwL/k1IB/5BIAP/Z4+7/t7e3//////////////////// - ////////////////////////////////////////////////////////PT09lgAAAAAAAAAAAAAAAAAA - AAAAAAAALC8zjPvp0f98NQD/iEgA/3s0AP97NAD/ezQA/345AP+JSgD/gjwA/9Da5/+9vb3///////// - ///+/v7/0dHR/9HR0f/+/v7//////////////////////////////////////+3t7f8AAAB9AAAAAAAA - AAAAAAAAAAAAAAAAAAArLzOK/evV/303AP+QUwj/////////9///////4dG9/4A7AP+EPwD/0Nrn/729 - vf//////5eXl/0tMTf+/ydT/v8nV/0lKS//j4+P///////////////////////////8zMzP/vsfR/9rj - 7/+rrbD/KSkpRAAAAAAAAAAAAAAAACsuM4r969b/fDYA/55iFv+3w9H/DRATeAAAALb/////bh8A/3Yp - AP/W4O3/vb29//////+RkpP/+v3//4g/AP+IPwD//////4uMjf//////////////////////3d3d/7fA - yv+hYBD/hDwA//////8dICOGAAAAAAAAAAAAAAAAKy4ziv3r1v98NgD/nmEV/7vEz/8AAAAAAAAAVf// - ////9ub////y/4+RlP/W1tb/5OTk/21tb//u8vX/fTQA/300AP/y9Pb/aGlq/97e3v/7+/v//////9bW - 1v+vr6//rbbC/5VVBf95MgD////y/wAAAI8AAAAQCQkJCgAAAAArLjOK/evW/3w2AP+eYRX/u8TP/yYm - JgUAAAAAAAAAoIGDhv9vcnX/e3t7/2lrbP++x9P/ucTQ//////97NAD/fDQA//////+6xNH/vsfT/2Zn - af9ERET/v8jT/7O9yP//////j1EE/3s0AP///vf/1ODw/9rj7/+5vMD/ICAgTysuM4r969b/fDYA/55h - Ff+7xM//KioqBgAAAAAlJSWN//////////+BgoT//////4Y+AP+TUwP/ikoA/4pLAP+KSwD/ikoA/5NT - A/+GPgD//////8/Z5v+STQD/klIB/4xNAP+JSwD/iksA/4lLAP+TUwP/iEEA///54f8yNTmOKy4ziv3r - 1v98NgD/nmEV/7vEz/8pKSkGAAAAAE5OTrn//////////3p8fv////z/bR0A/3s0AP99NwD/jE4A/4xO - AP99NwD/ezQA/20dAP/7+fb/zNfm/3grAP97MwD/ezQA/4pLAP+MTgD/gDsA/3s0AP9vIQD/+eTL/zk8 - QIsrLjOK/evW/3w2AP+eYRX/u8TP/ygoKAYAAAAAZWVl3///////////ra2u/8zNzv//+Oj///7z//Xu - 5P9+OQD/fzoA//Lp3/////T///jo/87O0P9/goX////0///47P//////jE0A/387AP/axq7///////// - 8///////FRYXfCsuM4r969b/fDYA/55hFf+7xM//AAAAABISEhpeYGL/i5Od/4mRm/9SUlL/j4+P/3R2 - ef8oKy//+v///383AP9+NwD//v///yUoLf9ydXj/jY2O/7e3t/9qbXD/TlBT/73J1/+WWAn/ezQA//// - +f8AAAa/KSsvdRUWF28AAAAAKy4ziv3r1v98NgD/nmEV/7O7x/8AAAAXAAAAgv////+fYxb/qm4j/9be - 6P/Hx8f//////6Chov/t8fT/dywA/3csAP/x8/T/mpuc///////////////////////r6+v/sbrF/5BN - AP90KQD///7t/x8iJX4AAAAAAAAAAAAAAAArLzOK/evW/3w2AP+WWxD//////8vV4P/Q3Or//////3gv - AP+AOAD/0Nrn/729vf//////kJGS//Hz9f/Bklj/wJJY//X19v+Ki4z//////////////////////9zc - 3P+ts7r/1q17/7+RV///////FBYYhwAAAAAAAAAAAAAAACwwNIv76NH/fzoA/4lKAP+NTQD/k1MC/5NT - A/+KSQD/iksA/4Q/AP/Q2uf/vb29////////////RUZG/3h+hv94fob/Q0RF//////////////////// - /////////////zU1Nft9g4rmhoyU605PUuBCQkIXAAAAAAAAAAAAAAAAEhQXgv////9uHwD/fTcA/3s0 - AP97NAD/ezQA/3w1AP99NwD/dikA/9bg7f+6urr///////////////////////////////////////// - ////////////////////////V1dXwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIThIiN//// - //////T////2////9/////b///Xp///16f////L/hIaJ/9vb2/////////////////////////////// - //////////////////////////////////9AQECbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAzMzMSFhgadDE0N3sxNDd6IyUocQ8RFeV7foH/bnB0/2dqbf+vr6////////////////////////// - /////////////////////////////////////////////xoaGm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR07f///////////////83Ozv9kZmn/bnBz/21v - cv91d3j/g4OE/2tucf9maGv/srKy///////////////////////4+Pj/ISEhRQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkpL///////////+8vLz/homP//// - +v//9er///Xq/////P/q6+z///bq////9/91d3r/5OTk/////////////////8fHx/8nJycbAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NFMHBwf///////////2Nm - aP////b/axsA/3oxAP92LQD/gT0A//r38v9rGwD/eSoA/9rk8P/MzMz/////////////////lJSU/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAg87+/v//// - ////////bnF0//7z5v93LAD///////nz7/94MgD//////5hjHv/v28L/S1Ja/1xeYf+SkpP///////// - //9wcHDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AGL///////////////9ucHT//vTm/3swAP/Q3Ov/8eXX/3kyAP//////lmAa/8Oief////z///3w/9fa - 3P9zc3T//////11dXcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAJSUlj////////////////3V3ev/+9Ob/ezAA/9Th8P/x5df/eTIA//////+ebCv/ejIA/3gw - AP9uIAD/6c6u/29zeP//////QUFBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAkJCR6YGBg221tbf6mpqb/TlBT///67f97MAD/4PD///Xs4f95MgD//////5Zf - GP/cybH//////5lkHv/iyan/cXV7//////8cHBxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOK///1/3IoAP/t39D/x6uG/3s1 - AP//////ikoA/7WOXP/n2cr/iUoA/+HHp/+BhYv//////yEhIUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYHCW3/////oGMW/5td - D/+cXhD/uotQ//////+ZWgv/oWYb/5teD/+cXg/////8/ygrLu1RUVH3KysrHQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9 - Pt61vcf/rLS//662wP+boqr/d3l8/7G5w/+stL7/rLS+/7W9x/9eYWT9NjY2FQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8f////AD///wAAf8AAAB+AAAAfAAAAHwAA - AB8AAAAHAAAABwQAAAECAAAAAgAAAAIAAAACAAAABAAAAQAAAAcAAAAHAAAABwAAAH8AAAB/gAAAf/wA - AH/8AAB/+AAA//gAAP/4AAD/+AAA//gAAP//gAD//4AA///AA///////KAAAABgAAAAwAAAAAQAgAAAA - AABgCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCiYAAABWAAAAKgAA - AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrK33//////////9XV1f+pqan/jY2N4WxsbLhFRUWQFRUVZwAA - AEAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA0AAAANAAAAATAx - NKb//////////v////3////+///////////////////////////o6Oj/ubm5/5ycnPJycnLTCwsLDwAA - AAAAAAAAAAAAABgZGTTExsv/2dPN/9XRzP/V0cz/1dHN/8zHwf+hnpz/ra6v/f////////////////39 - /f3//////f39/f///////////////v/////Pz8//AAAAAAAAAAAAAAAAAAAAAGFocafEj03/fDIA/Xou - AP96LgD/ei8A/XswAP/Zt47/lZqg/f////////////////////3//////f39/f///////////v7+/f// - //+SkpLtAAAAAAAAAAAAAAAAAAAAAGtyfKezfzv/hkUA/uzXv//z2r3/1ryY/nYtAP3Vt5L9mJ2j/v// - //2ZmZn9m6Ks/Zujrf6Xl5f9/////v39/f3+/v79/////m5vcf6gqrb8jZGX6h8fHx4AAAAAAAAAAGlw - eqezfzz/l1YF/5Ger+cAAABQ2dna/4MzAP/gwJr/nqOo/f////+co63/qGoe/6ZnGf2cpK7//////f// - ////////7/Dy/bOwqv+FNgD//+fD/wgMElkAAAAAAAAAAGlweqezfzz/llQC/6Krtt0AAAAAUVJUzK+5 - xf+Sl53/aWpr/aKpsv+wwNP/oGcd/55iGP2ywtX/nKOs/Y6Pj/+OkZX/jJWg/djb3f93KQD/7de6/0tX - ZcRaX2akIiIiLWlweqezfzz/llQC/6Stud4AAAAAAAAAWP/////////9pKWn/reDQP27j1j9i00A/YtM - AP67j1j9tYA+/rm8wv3v2sH9soFC/q9/Rv2BPwD9nGck/sOUWf/qxZT/bXJ5rmlweqezfzz/llQC/6Su - ud4AAAAAPz8/if//////////qKip/Yc4AP+IQgD/h0cA/4dIAP2IQgD/hDUA/cnO1f/ev5f/gjcA/YRA - AP+KSwD/g0AA/YtCAP+8gzz/d36HrWlweqezfzz/llQC/6StuN4AAAAALS0vu6uxuf+Tlpr/dHV3/aKs - uP/W6P//n2Ye/51hGf3Y6///oau3/Wxtbv+Pk5n/maWz/fP4/f92KQD/6NO4/6CuwPGxuMHxOzs7WWlw - eqezfzz/l1YE/4+aqN0AAAAAzs/P/8SUW//2483/mp2g/f////+cpK//l1gI/5VTA/2cpa///////f// - ////////8PL0/a2ppP9wHgD/7NCr/wkOFFIAAAAAAAAAAGlxe6ezfzz/i0oA/vP2+v/Kx8T/7+fc/m0e - AP3Ssov9mJ2j/v////2AhIn96tCv/erPrv5+gof9/////v39/f3////98fLz/qupp//ty6D//////woM - D1kAAAAAAAAAAGxzfaq0fTf/eDEA/XYpAP96LgD/dCkA/XcuAP/SsYn/l5yj/f/////p6en/jJCU/4yQ - lf3n5+f//////f///////////////zY3OL4kKS9ZFRcZWAAAAAAAAAAAAAAAAB4gI1z/+e//8ta0//HX - uP/z2br/3sSl/tu/nf3v49T9jY+R/v////3////9/////f////7////9/v7+/v39/f39/f39/////zk5 - OXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANDxI0ISUrWCQoLlEAAACKqq60/5aboP+bnqD//////f// - //////////////////3//////////f///////////////w0NDUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAiIiJt//////////+0tLT/maKs/Z+os/+hqrb/iIuP/6OsuP2Chov/2tra/f// - ////////8vLy/w0NDR8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFCZ//////// - //2Xn6r9omEQ/otEAP2EOwD9/fXq/XosAP7mxp/9k5ec/v////3////9wMDA/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6enrB//////////+gqbX/hjwA/f////+eaif//////45P - Af32////bHR9/ZeZm///////mpqa9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAChoaHs//////////+hqrb/i0EA/en5//+dZyH//////5NaEf2hbCn/tn88/cW+s//W19r/kJCQyQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhYWHeoqKi/srKyv+jrLf/jEMA/vj/ - //2gayj9/////Y1QBP7////9rH5F/sq3nv3Mz9P/cHBwnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACps77xhTkA/8qshf+AOgD/9+/n/3kwAP3Eo3r/kFED/dPB - qP/q7fH/RkZGeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AABdYGS6//jl/+nSs//v2b//9PX0//Dav//q1Lf/9+DD/7a2tf8AAABXGBgYIwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFNwQHDDkAAwg4AwQGKQEF - CTkDBws4AQQJPBMUFQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPw//wD8AH8AwAAHAAAA - DwAAAA8AAAADAAAAAwAIAAAACAAAAAgAAAAIAAAACAADAAAAAwAAAAcAAAAfAIAAHwDwAB8A8AA/APAA - PwDwAD8A8AA/AP4APwD+AD8A/wD/ACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAALCwsXUpKSn0WFhZRAAAALAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAIaKkMb/////////////////////09PT/7e3t+OPj4+6Z2dnlxQU - FDEAAAAAAAAAAF1gZZDOsIr/vp94/76gev+uj2j/qa60//////////////////////////////////// - //8YGBhHAAAAAAAAAACTkYzJhDQA/82jbP/DlFn/cR0A/8zW4///////rrO6/6yyuP////////////// - //+6vsP/WmFoqwYGBgMAAAAAjYuIxJxSAP9aan+YgYeQxsWQTv/Ax8//xM7a/7OKWP+1jVn/t8HN//// - ///g6fT/mXtU/+m4ef8AAAo+AAAAAI2Kh8SbUQD/dH6KhAAAAC3i6fH/lZaZ/6B/V/+kcjL/pHAw/59/ - V/+Ynqf/nHtU/6t8Qv+eZyD/xKV+/4WDg8KNiofEm1EA/3F6h4QJCgpK/////72/wv+/jUz/mF0W/5Zd - Ff++jUz/yNDb/72LTf+gaib/kFMJ/9yrbP+enZrNjYuIxJxSAP9ZZ3qBUVdepZt+Wf+doqf/l6Oz/7qR - X/+6kV7/jJio/93e3v+tuMX/pYdi/9imaP8ADR1jCAkKC5KNiceDNwD/xKuK/8Smf/9zHAD/0dvo//3/ - //+LgnX/i4J2//P09v///////////4qCef/Jva7/CQsOGgAAAABxdXmr5Ld+/8+hZf++kFX/u4xR/7rA - yP////////////////////////////////8YGRtCAAAAAAAAAAAAAAAAAAAAAAgOFjMBBw8iiI+X+9HX - 3//AxMn/v8XN/8THy/+4vsX/9vb2////////////AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX1 - 9f/c4OT/vKOE/7B8O//ZybT/toJD/7S7xP//////6urq/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB7/////xcvT/7J/QP/y9/3/yaqD/7eLVf+oqa3/xMbI/9DR0fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAGBgY75ubm/6yyuv+5iEv/5uvz/82xjf+mdjn/sn8//7Gllv++wMPNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAt8MaR/7yIRv/lyaX/qm8l/76HQv+7tKr/cXJ0oAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFGTXBaYGh8QkdNc1lha3tcY2yAISIlNAAAAAAAAAAAAAAAAAAA - AAAAAAAA8H8AANADAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAcAAIAHAADgDwAAwA8AAMAP - AADwDwAA+B8AAA== - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/Arguments.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/Arguments.cs deleted file mode 100644 index 2c9b59e..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/Arguments.cs +++ /dev/null @@ -1,220 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Arguments.cs -/// Date: 10/17/2007 -/// -/// Description: -/// -/// Arguments Code File -///**************************************************************** - -using System; -using EnvDTE; -using System.Collections.Generic; -using Extensibility; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.VCProject; -using Microsoft.VisualStudio.VCProjectEngine; -using Microsoft.VisualStudio.VCCodeModel; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.IO; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - partial class opCpp2005 - { - OleMenuCommand[] ArgumentCommands; - List Arguments = new List(); - - OleMenuCommand ArgumentLabelCommand; - - - - void ArgumentLabelStatus(object sender, EventArgs e) - { - OleMenuCommand command = sender as OleMenuCommand; - - try - { - if (DocumentCommandsUnavailable()) - throw new Exception(); - - UpdateArguments(); - - if (Arguments.Count > 0) - { - command.Visible = true; - - return; - } - - } - catch(Exception) {} - - command.Visible = false; - } - - void ArgumentLabelCallback(object sender, EventArgs e) - { - - } - - - - void ArgumentStatus(object sender, EventArgs e) - { - OleMenuCommand command = sender as OleMenuCommand; - - try - { - //figure out the index based on the command id - int id = command.CommandID.ID; - int index = id - (int)PkgCmdIDList.cmdArgumentStart; - - if (index < Arguments.Count) - { - command.Text = Arguments[index]; - - command.Visible = true; - return; - } - } - catch (Exception) { } - - command.Visible = false; - } - - void ArgumentCallback(object sender, EventArgs e) - { - OleMenuCommand command = sender as OleMenuCommand; - - try - { - //figure out the index based on the command id - int id = command.CommandID.ID; - int index = id - (int)PkgCmdIDList.cmdArgumentStart; - - if (index < Arguments.Count) - { - string text = ""; - if (NoteArguments.Length > 0 - && NoteArguments[0] != "") - text += ","; - - text += Arguments[index]; - - ArgumentEnd.Insert(text); - - return; - } - } - catch (Exception) { } - } - - bool UpdateXml(ref string path) - { - bool result = IsGeneratedFileAvailable(".xml", ref path); - - if (!result) - return false; - - if(path == XmlPath) - { - DateTime Timestamp = System.IO.File.GetLastWriteTime(path); - if (XmlTimestamp == Timestamp) - return true; - } - - XmlTimestamp = System.IO.File.GetLastWriteTime(path); - XmlPath = path; - - XmlFile.Reload(path); - - return true; - } - - DateTime XmlTimestamp; - string XmlPath; - XmlDialectLoader XmlFile = new XmlDialectLoader(); - - //these are available if status is visible... - EditPoint ArgumentEnd = null; - string[] NoteArguments = null; - - void UpdateArguments() - { - Document doc = App().ActiveDocument; - - //whats the xml file's path? - string xmlpath = ""; - bool available = UpdateXml(ref xmlpath); - - if(!available) - { - Arguments.Clear(); - return; - } - - TextDocument text = (TextDocument)doc.Object(""); - VirtualPoint currentpoint = text.Selection.ActivePoint; - - EditPoint point = currentpoint.CreateEditPoint(); - point.EndOfLine(); - - EditPoint endfound = null; - TextRanges found = null; - - Arguments.Clear(); - - bool result = point.FindPattern("note[ \t]+{.*}\\({.*}\\)", (int)(vsFindOptions.vsFindOptionsBackwards | vsFindOptions.vsFindOptionsRegularExpression), ref endfound, ref found); - - if(result) - { - TextRange fullmatch = found.Item(1); - TextRange pathmatch = found.Item(2); - TextRange argmatch = found.Item(3); - - //only want it if the point was in the range - if (fullmatch.EndPoint.LessThan(currentpoint) - || fullmatch.StartPoint.GreaterThan(currentpoint)) - return; - - ArgumentEnd = argmatch.EndPoint; - - string arguments = argmatch.StartPoint.GetText(argmatch.EndPoint).Trim(); - - NoteArguments = arguments.Split(','); - - string notepath = pathmatch.StartPoint.GetText(pathmatch.EndPoint).Trim(); - - XmlNoteNode note = XmlFile.GetNote(notepath); - - if (note != null) - { - Arguments = new List(); - - foreach (XmlArgumentNode n in note.Arguments) - Arguments.Add(n.Name); - } - } - } - }; -} - - - - - - - - - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/GotoDefinition.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/GotoDefinition.cs deleted file mode 100644 index 12cdfb8..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/GotoDefinition.cs +++ /dev/null @@ -1,451 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: GotoDefinition.cs -/// Date: 09/26/2007 -/// -/// Description: -/// -/// Go To Definition / Go To Original Code File -///**************************************************************** - -using System; -using EnvDTE; -using System.Collections.Generic; -using Extensibility; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.VCProject; -using Microsoft.VisualStudio.VCProjectEngine; -using Microsoft.VisualStudio.VCCodeModel; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.IO; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opCpp2005 - { -// private bool ParseLineDirective(string directive, ref int linenumber, ref string filename) -// { -// if (!directive.StartsWith("#line ")) -// return false; -// -// int findquote = directive.IndexOf('"'); -// if (findquote == -1 || findquote < 7) -// return false; -// -// string linestring = directive.Substring(6, findquote - 6); -// linenumber = Convert.ToInt32(linestring); -// -// int findlastquote = directive.LastIndexOf('"'); -// if (findlastquote == findquote || findlastquote >= directive.Length) -// return false; -// -// filename = directive.Substring(findquote + 1, findlastquote - findquote - 1); -// -// return true; -// } - - // Returns if the current position is valid, and whether the redirected file exists - //private bool CheckGotoOriginal(out string redirectedfile, out int redirectedline) - //{ - //TODO: well, it would be nice to have this, - // but I have to first find the #line --without-- moving the cursor - // which would be nice but I don't know how to do that currently. - //does FindPattern maybe work? - - //} - - private CodeElement FindBestElement(VirtualPoint activepoint, CodeElements elements) - { - - foreach (CodeElement ce in elements) - { -// if (ce.EndPoint.LessThan(activepoint)) -// { -// continue; -// } -// else if (ce.StartPoint.GreaterThan(activepoint)) -// { -// break; -// } - - //ok, on the right line now - //now find the correct range - - if (ce.StartPoint.EqualTo(activepoint) || ce.EndPoint.EqualTo(activepoint) - || (ce.StartPoint.LessThan(activepoint) && ce.EndPoint.GreaterThan(activepoint))) - { - //this is the element we want, actually we should keep looking to see if we get a better match - CodeElement childce = FindBestElement(activepoint, ce.Children); - - if (childce != null) - return childce; - - return ce; - } - } - - return null; - } - - /* - - // Called when Goto Definition command is executed. - private void GotoDefinitionCallback(object sender, EventArgs e) - { - Document doc = App().ActiveDocument; - if (doc != null) - { - TextDocument text = (TextDocument)doc.Object(""); - - //this is the current selection's top line # - int line = text.Selection.CurrentLine; - int col = text.Selection.CurrentColumn; - - VirtualPoint activepoint = text.Selection.ActivePoint; - - EditPoint point = text.Selection.ActivePoint.CreateEditPoint(); - - //TODO: need to grab the VCFileCodeModel! - // the normal one doesn't give us enough info?? - - //doc.ProjectItem.ContainingProject.CodeModel - - CodeElement bestmatch = null; - - //NOTE: need to grab the filecodemodel - FileCodeModel model = doc.ProjectItem.FileCodeModel; - if(model != null) - { - bestmatch = FindBestElement(activepoint, model.CodeElements); - - if(bestmatch != null) - { - VCCodeElement vcelement = (VCCodeElement)bestmatch; -// -// foreach(VCCodeElement element in vcelement.Collection) -// { -// string name = element.Name; -// } - - string location = vcelement.get_Location(vsCMWhere.vsCMWhereDeclaration); - string defaultlocation = vcelement.get_Location(vsCMWhere.vsCMWhereDefault); - string definitionlocation = vcelement.get_Location(vsCMWhere.vsCMWhereDefinition); - - ///VCCodeFunction fcn = (VCCodeFunction)vcelement; - -// CodeFunction2 fcn; -// -// CodeClass celement = (CodeClass)bestmatch; -// if (celement != null) -// { -// } - } - } - - } - } - - private void GotoDefinitionStatus(object sender, EventArgs e) - { - } - */ - - // Called when Goto Note command is executed. - private void GotoNoteCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - string actualfile = ""; - int actualline = 0; - - //get the goto info - bool bResult = GetGotoInfo(ref actualfile, ref actualline); - - if (bResult) - { - bool bExists = System.IO.File.Exists(actualfile); - if (!bExists) - return; - - //TODO: check if the line number is valid, and only proceed if it is - Window docwindow = App().ItemOperations.OpenFile(actualfile, EnvDTE.Constants.vsViewKindTextView); - TextDocument newdoc = (TextDocument)docwindow.Document.Object(""); - - newdoc.Selection.GotoLine(actualline, true); - newdoc.Selection.ActivePoint.TryToShow(vsPaneShowHow.vsPaneShowCentered, null); - } - } - - private void GotoNoteStatus(object sender, EventArgs e) - { - try - { - if (DocumentCommandsUnavailable()) - throw new Exception(); - - if (IsInGeneratedCode()) - { - string file = ""; - int line = 0; - - if (GetGotoInfo(ref file, ref line)) - { - Document doc = App().ActiveDocument; - string myname = StringUtility.RLeft(doc.Name, "."); - if (!file.Contains(myname)) - { - GotoNoteCommand.Visible = true; - - bool bExists = System.IO.File.Exists(file); - if (bExists) - GotoNoteCommand.Enabled = true; - else - GotoNoteCommand.Enabled = false; - - return; - } - } - } - } - catch(Exception) {} - - GotoNoteCommand.Visible = false; - GotoNoteCommand.Enabled = false; - } - - private bool GetGotoInfo(ref string actualfile, ref int actualline) - { - int original = 0; - int gendepth = 0; - int filedepth = 0; - return GetGotoInfo(ref actualfile, ref actualline, ref original, ref gendepth, ref filedepth); - } - - //NOTE: should not check the file for existance... - private bool GetGotoInfo(ref string actualfile, ref int actualline, ref int originalline, ref int gendepth, ref int filedepth) - { - //first we need to find the text thing - Document doc = App().ActiveDocument; - if (doc != null) - { - TextDocument text = (TextDocument)doc.Object(""); - - //this is the current selection's top line # - int line = text.Selection.CurrentLine; - int col = text.Selection.CurrentColumn; - - EditPoint point = text.Selection.ActivePoint.CreateEditPoint(); - point.EndOfLine(); - - EditPoint endfound = null; - TextRanges found = null; - bool result = point.FindPattern("\\#line{.*}\\\"{.*}\\\"//\\[{.*}\\]", (int)(vsFindOptions.vsFindOptionsBackwards | vsFindOptions.vsFindOptionsRegularExpression), ref endfound, ref found); - - if (result) - { - int foundline = endfound.Line; - - //NOTE: I think this is correct... - int offset = line - foundline - 1; - - TextRange linematch = found.Item(2); - string linematchtext = linematch.StartPoint.GetText(linematch.EndPoint); - - TextRange filematch = found.Item(3); - string filematchtext = filematch.StartPoint.GetText(filematch.EndPoint); - - TextRange optionmatch = found.Item(4); - string optionstext = optionmatch.StartPoint.GetText(optionmatch.EndPoint); - - //parse the line directive - int redirectedline = Convert.ToInt32(linematchtext); - string redirectedfile = filematchtext; - - //parse the additional information - string[] options = optionstext.Split(','); - - gendepth = 0; - originalline = -1; - filedepth = 0; - - //first number: the depth of the generated path - if(options.Length > 0) - { - string generatedDepth = options[0]; - gendepth = Convert.ToInt32(generatedDepth); - } - - //second number: the depth of the file path (relative to the generated?) - if (options.Length > 1) - { - string fileDepth = options[1]; - filedepth = Convert.ToInt32(fileDepth); - } - - //third number: the original line number - if (options.Length > 2) - { - string originline = options[2]; - originalline = Convert.ToInt32(originline); - } - - if (offset == -1) - offset = 0; - - if (offset >= 0) - { - string dots = ""; - - for(int i = 0; i < gendepth; i++) - { - dots += "..\\"; - } - - string myfile = StringUtility.RLeft(doc.FullName, "\\"); - - if (!System.IO.Path.IsPathRooted(redirectedfile)) - { - actualfile = myfile + "\\" + dots + redirectedfile; - } - else - actualfile = redirectedfile; - - actualfile = System.IO.Path.GetFullPath(actualfile); - - actualline = redirectedline + offset; - - return true; - } - } - } - - return false; - } - - - // Called when Goto Original command is executed. - private void GotoOriginalCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - string actualfile = ""; - int actualline = 0; - int originalline = 0; - int gendepth = 0; - int filedepth = 0; - - //get the goto info - bool bResult = GetGotoInfo(ref actualfile, ref actualline, ref originalline, ref gendepth, ref filedepth); - - if (bResult) - { - string realpath = actualfile; - - //if we have no original line, then - if (originalline != -1) - { - Document doc = App().ActiveDocument; - - string docpath = doc.FullName; - string originalpath = Paths.GeneratedToOriginalPath(docpath, gendepth, filedepth); - realpath = originalpath; - } - else - originalline = actualline; - - realpath = Path.GetFullPath(realpath); - - bool bExists = System.IO.File.Exists(realpath); - if (bExists) - { - Window docwindow = App().ItemOperations.OpenFile(realpath, EnvDTE.Constants.vsViewKindTextView); - TextDocument newdoc = (TextDocument)docwindow.Document.Object(""); - - newdoc.Selection.GotoLine(originalline, true); - newdoc.Selection.ActivePoint.TryToShow(vsPaneShowHow.vsPaneShowCentered, null); - } - } - } - - private bool IsInGeneratedCode() - { - if (App().ActiveDocument != null) - { - string extension = StringUtility.RRight(App().ActiveDocument.Name, "."); - if (extension == "ooh" || extension == "ocpp") - { - return true; - } - } - - return false; - } - - private void GotoOriginalStatus(object sender, EventArgs e) - { - try - { - if (DocumentCommandsUnavailable()) - throw new Exception(); - - if (IsInGeneratedCode()) - { - string file = ""; - int line = 0; - int original = 0; - int gendepth = 0; - int filedepth = 0; - - if (GetGotoInfo(ref file, ref line, ref original, ref gendepth, ref filedepth)) - { - GotoOriginalCommand.Visible = true; - - string realpath = file; - - //if we have an original line, then - if (original != -1) - { - Document doc = App().ActiveDocument; - - string docpath = doc.FullName; - string originalpath = Paths.GeneratedToOriginalPath(docpath, gendepth, filedepth); - realpath = originalpath; - original = line; - } - - realpath = Path.GetFullPath(realpath); - - bool bExists = System.IO.File.Exists(realpath); - - if (bExists) - GotoOriginalCommand.Enabled = true; - else - GotoOriginalCommand.Enabled = false; - - return; - } - } - } - catch (Exception) { } - - GotoOriginalCommand.Visible = false; - GotoOriginalCommand.Enabled = false; - } - }; -} - - - - - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/GotoGenerated.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/GotoGenerated.cs deleted file mode 100644 index 1f80ff5..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/GotoGenerated.cs +++ /dev/null @@ -1,152 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: GotoGenerated.cs -/// Date: 10/01/2007 -/// -/// Description: -/// -/// Goto Generated Code -///**************************************************************** - -using System; -using EnvDTE; -using System.Collections.Generic; -using Extensibility; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.VCProject; -using Microsoft.VisualStudio.VCProjectEngine; -using Microsoft.VisualStudio.VCCodeModel; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.IO; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opCpp2005 - { - public void GotoOOHCallback(object sender, EventArgs e) - { - string filename = ""; - - if(IsGeneratedFileAvailable(".ooh",ref filename)) - { - App().ItemOperations.OpenFile(filename, EnvDTE.Constants.vsViewKindTextView); - return; - } - } - - public void GotoOCPPCallback(object sender, EventArgs e) - { - string filename = ""; - - if(IsGeneratedFileAvailable(".ocpp",ref filename)) - { - App().ItemOperations.OpenFile(filename, EnvDTE.Constants.vsViewKindTextView); - return; - } - } - - public bool DocumentCommandsUnavailable() - { - if (bAddinLocked) - return true; - if (App() == null) - return true; - if (App().ActiveDocument == null) - return true; - - if (App().ActiveDocument.Language == "C/C++" - || App().ActiveDocument.Name.EndsWith(".oh") - || App().ActiveDocument.Name.EndsWith(".doh") - || App().ActiveDocument.Name.EndsWith(".ooh") - || App().ActiveDocument.Name.EndsWith(".ocpp") - || App().ActiveDocument.Name.EndsWith(".oohindex") - || App().ActiveDocument.Name.EndsWith(".ocppindex")) - return false; - - return true; - } - - public bool CodeCommandsUnavailable() - { - if (bAddinLocked) - return true; - if (App() == null) - return true; - if (App().ActiveDocument == null) - return true; - - if (App().ActiveDocument.Name.EndsWith(".oh") - || App().ActiveDocument.Name.EndsWith(".doh")) - return false; - - return true; - } - - public void GotoOOHStatus(object sender, EventArgs e) - { - try - { - if (CodeCommandsUnavailable()) - throw new Exception(); - - string filename = ""; - - GotoOOHCommand.Visible = true; - - if(IsGeneratedFileAvailable(".ooh",ref filename)) - { - GotoOOHCommand.Enabled = true; - - return; - } - - GotoOOHCommand.Enabled = false; - return; - } - catch (Exception) { } - - GotoOOHCommand.Visible = false; - GotoOOHCommand.Enabled = false; - } - - public void GotoOCPPStatus(object sender, EventArgs e) - { - try - { - if (CodeCommandsUnavailable()) - throw new Exception(); - - string filename = ""; - - GotoOCPPCommand.Visible = true; - - if(IsGeneratedFileAvailable(".ocpp", ref filename)) - { - GotoOCPPCommand.Enabled = true; - - return; - } - - GotoOCPPCommand.Enabled = false; - return; - } - catch (Exception) { } - - GotoOCPPCommand.Visible = false; - GotoOCPPCommand.Enabled = false; - } - } -} - - - - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/OpenInclude.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/OpenInclude.cs deleted file mode 100644 index d3ab549..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/OpenInclude.cs +++ /dev/null @@ -1,172 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: OpenInclude.cs -/// Date: 09/28/2007 -/// -/// Description: -/// -/// Open Include Commands -///**************************************************************** - -using System; -using EnvDTE; -using System.Collections.Generic; -using Extensibility; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.VCProject; -using Microsoft.VisualStudio.VCProjectEngine; -using Microsoft.VisualStudio.VCCodeModel; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.IO; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opCpp2005 - { - private void OpenIncludeStatus(object sender, EventArgs e) - { - try - { - if (DocumentCommandsUnavailable()) - throw new Exception(); - - string includefile = ""; - - //check it - if (GetIncludeInfo(ref includefile)) - { - OpenIncludeCommand.Visible = true; - OpenIncludeCommand.Text = "Open \"" + includefile + "\""; - - if (ResolveIncludePath(ref includefile)) - { - OpenIncludeCommand.Enabled = true; - } - else - OpenIncludeCommand.Enabled = false; - - return; - } - } - catch (Exception) { } - - OpenIncludeCommand.Visible = false; - } - - private void OpenIncludeCallback(object sender, EventArgs e) - { - if (bAddinLocked) - return; - - //run it - - string includefile = ""; - - //check it - if (GetIncludeInfo(ref includefile)) - { - if (ResolveIncludePath(ref includefile)) - { - Window docwindow = App().ItemOperations.OpenFile(includefile, EnvDTE.Constants.vsViewKindTextView); - //TextDocument newdoc = (TextDocument)docwindow.Document.Object(""); - } - - return; - } - } - - private bool GetIncludeInfo(ref string path) - { - //first we need to find the text thing - Document doc = App().ActiveDocument; - if (doc != null) - { - TextDocument text = (TextDocument)doc.Object(""); - - //this is the current selection's top line # - int line = text.Selection.CurrentLine; - int col = text.Selection.CurrentColumn; - - VirtualPoint activepoint = text.Selection.ActivePoint; - EditPoint point = activepoint.CreateEditPoint(); - point.EndOfLine(); - - EditPoint endfound = null; - TextRanges found = null; - bool result = point.FindPattern("opinclude[ \t]+\\\"{.*}\\\"", (int)(vsFindOptions.vsFindOptionsBackwards | vsFindOptions.vsFindOptionsRegularExpression), ref endfound, ref found); - - if (result) - { - int foundline = endfound.Line; - - //NOTE: I think this is correct... - int offset = line - foundline - 1;//TODO: get this 1 to be constant in macro expansion! - - TextRange fullmatch = found.Item(1); - - // need to break out if the active point wasn't in the line - if (fullmatch.StartPoint.Line != activepoint.Line) - return false; - - TextRange filematch = found.Item(2); - string filetext = filematch.StartPoint.GetText(filematch.EndPoint); - - //NOTE: this returns what was in the opinclude, but does not resolve the path - path = filetext; - - return true; - } - } - - return false; - } - - // resolve the path to an absolute path, verify that the file exists - private bool ResolveIncludePath(ref string filepath) - { - string docpath = App().ActiveDocument.FullName; - - //1. attempt to find it using the current file first - string current = Paths.RelativePath(docpath, filepath); - - if (System.IO.File.Exists(current)) - { - filepath = current.ToLower(); - return true; - } - - //2. could attempt to find it using the standard directories - //find it using the standard directories... - string opcppdir = Paths.GetFullAppPath(); - - string stddir = opcppdir + "..\\..\\..\\opcpp\\dialects\\"; - - string testpath = stddir + filepath; - testpath = System.IO.Path.GetFullPath(testpath); - - if(System.IO.File.Exists(testpath)) - { - filepath = testpath.ToLower(); - return true; - } - - //TODO: add these other cases... - - //3. could attempt to find it using the directory settings/project directories... - - - - return false; - } - - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/TextMarker.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/TextMarker.cs deleted file mode 100644 index d832011..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/TextMarker.cs +++ /dev/null @@ -1,112 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: TextMarker.cs -/// Date: 10/02/2007 -/// -/// Description: -/// -/// Text Marker Code -///**************************************************************** - - -//NOTE: trying to figure out how to register a new custom code marker... - -using System; -using EnvDTE; -using System.Collections.Generic; -using Extensibility; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.VCProject; -using Microsoft.VisualStudio.VCProjectEngine; -using Microsoft.VisualStudio.VCCodeModel; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.IO; -using System.Windows.Forms; -using Microsoft.VisualStudio.TextManager.Interop; - - -namespace opGamesLLC.opCpp2005 -{ - - public partial class opCpp2005 - { - void CreateTextMarkers() - { - textmarkerservice = new MyTextMarkers(); - - IServiceContainer serviceContainer = (IServiceContainer)this; - serviceContainer.AddService(typeof(MyTextMarkers), textmarkerservice, true); - } - - static MyTextMarkers textmarkerservice; - } - - [Guid("40F475EB-DE8B-4ef7-B2BA-E8B2FFAACD7B")] - public class MyTextMarkers : IVsTextMarkerTypeProvider, IVsPackageDefinedTextMarkerType - { - #region IVsTextMarkerTypeProvider Members - - public int GetTextMarkerType(ref Guid pguidMarker, out IVsPackageDefinedTextMarkerType ppMarkerType) - { - //When a package registers an external marker type, this interface is - //implemented once by the specified service. This method passes you a - //GUID that matches the GUID of a marker that you have registered under - //"External Markers." You then need to pass back a pointer to your - //IVsPackageDefinedTextMarkerType implementation for this marker type. - - ppMarkerType = this; - - return 0; - } - - #endregion - - #region IVsPackageDefinedTextMarkerType Members - - public int DrawGlyphWithColors(IntPtr hdc, RECT[] pRect, int iMarkerType, IVsTextMarkerColorSet pMarkerColors, uint dwGlyphDrawFlags, int iLineHeight) - { - throw new Exception("The method or operation is not implemented."); - } - - public int GetBehaviorFlags(out uint pdwFlags) - { - throw new Exception("The method or operation is not implemented."); - } - - public int GetDefaultColors(COLORINDEX[] piForeground, COLORINDEX[] piBackground) - { - throw new Exception("The method or operation is not implemented."); - } - - public int GetDefaultFontFlags(out uint pdwFontFlags) - { - throw new Exception("The method or operation is not implemented."); - } - - public int GetDefaultLineStyle(COLORINDEX[] piLineColor, LINESTYLE[] piLineIndex) - { - throw new Exception("The method or operation is not implemented."); - } - - public int GetPriorityIndex(out int piPriorityIndex) - { - throw new Exception("The method or operation is not implemented."); - } - - public int GetVisualStyle(out uint pdwVisualFlags) - { - throw new Exception("The method or operation is not implemented."); - } - - #endregion - }; - -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/Visualize.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/Visualize.cs deleted file mode 100644 index 9e106a1..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/Visualize.cs +++ /dev/null @@ -1,264 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Visualize.cs -/// Date: 10/15/2007 -/// -/// Description: -/// -/// Visualize Command -///**************************************************************** - - -using System; -using Extensibility; -using EnvDTE; -using EnvDTE80; -using Microsoft.VisualStudio; -using Microsoft.VisualStudio.Shell.Interop; -using Microsoft.VisualStudio.OLE.Interop; -using Microsoft.VisualStudio.Shell; -using System.Runtime.InteropServices; -using System.ComponentModel.Design; -using System.Windows.Forms; -using System.IO; -using SHDocVw; - - - - -namespace opGamesLLC.opCpp2005 -{ - - - partial class opCpp2005 - { - enum INTERNETFEATURELIST - { - FEATURE_ZONE_ELEVATION = 1, - FEATURE_MIME_HANDLING = 2, - FEATURE_MIME_SNIFFING = 3, - FEATURE_WINDOW_RESTRICTIONS = 4, - FEATURE_WEBOC_POPUPMANAGEMENT = 5, - FEATURE_BEHAVIORS = 6, - FEATURE_DISABLE_MK_PROTOCOL = 7, - FEATURE_LOCALMACHINE_LOCKDOWN = 8, - FEATURE_SECURITYBAND = 9, - FEATURE_RESTRICT_ACTIVEXINSTALL = 10, - FEATURE_VALIDATE_NAVIGATE_URL = 11, - FEATURE_RESTRICT_FILEDOWNLOAD = 12, - FEATURE_ADDON_MANAGEMENT = 13, - FEATURE_PROTOCOL_LOCKDOWN = 14, - FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15, - FEATURE_SAFE_BINDTOOBJECT = 16, - FEATURE_UNC_SAVEDFILECHECK = 17, - FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18, - FEATURE_TABBED_BROWSING = 19, - FEATURE_SSLUX = 20, - FEATURE_DISABLE_NAVIGATION_SOUNDS = 21, - FEATURE_DISABLE_LEGACY_COMPRESSION = 22, - FEATURE_FORCE_ADDR_AND_STATUS = 23, - FEATURE_XMLHTTP = 24, - FEATURE_DISABLE_TELNET_PROTOCOL = 25, - FEATURE_FEEDS = 26, - FEATURE_BLOCK_INPUT_PROMPTS = 27, - FEATURE_ENTRY_COUNT = 28 - } - - - private const int SET_FEATURE_ON_THREAD = 0x00000001; - private const int SET_FEATURE_ON_PROCESS = 0x00000002; - private const int SET_FEATURE_IN_REGISTRY = 0x00000004; - private const int SET_FEATURE_ON_THREAD_LOCALMACHINE = 0x00000008; - private const int SET_FEATURE_ON_THREAD_INTRANET = 0x00000010; - private const int SET_FEATURE_ON_THREAD_TRUSTED = 0x00000020; - private const int SET_FEATURE_ON_THREAD_INTERNET = 0x00000040; - private const int SET_FEATURE_ON_THREAD_RESTRICTED = 0x00000080; - - [DllImport("urlmon.dll")] - [PreserveSig] - [return: MarshalAs(UnmanagedType.Error)] - static extern int CoInternetSetFeatureEnabled( - INTERNETFEATURELIST FeatureEntry, - [MarshalAs(UnmanagedType.U4)] int dwFlags, - bool fEnable); - - - void VisualizeCallback(object sender, EventArgs e) - { - //here we need to open the xml file - //we can either open it using a system command (open a webpage) - //or we can open it in visual studio - - //2. figure out how to open via normal web browser - // easy, just call start process - try - { - if (CodeCommandsUnavailable()) - throw new Exception(); - - string filename = ""; - - if (IsGeneratedFileAvailable(".xml",ref filename)) - { - string url = "file://" + filename; - - //before navigating, apparently you have to do this. - CoInternetSetFeatureEnabled(INTERNETFEATURELIST.FEATURE_LOCALMACHINE_LOCKDOWN, SET_FEATURE_ON_PROCESS, false); - - Window window = App().ItemOperations.Navigate(url, vsNavigateOptions.vsNavigateOptionsDefault); - window.Caption = "opC++ Visualization"; - - SHDocVw.WebBrowser browser = window.Object as SHDocVw.WebBrowser; - - if(browser != null) - { - mshtml.HTMLDocument doc = browser.Document as mshtml.HTMLDocument; - mshtml.HTMLDocumentEvents2_Event ievent = doc as mshtml.HTMLDocumentEvents2_Event; - - //NOTE: theres some issue with this - // it seems to work the first time but doesn't after that - // I suspect this could be a garbage collection issue. - if(ievent != null) - { - ievent.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(ClickVisualize); - } - - } - - return; - } - } - catch (Exception) { } - //Now we can add our event handler - - //m_hostedBrowser.NavigateComplete2 += new SHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(NavigateComplete2); - } - - bool ClickVisualize(mshtml.IHTMLEventObj pEvtObj) - { - return true; - /* - mshtml.IHTMLElement element = pEvtObj.srcElement; - if(element.className == "gotobutton") - { - mshtml.IHTMLElementCollection a = element.children as mshtml.IHTMLElementCollection; - - string foundpath = ""; - int foundline = -1; - - foreach (mshtml.IHTMLElement e in a) - { - if(e.className == "gotopath") - { - //TODO: hook up code to generate the path and line to xml. - // so we can use the goto code button. - string path = e.innerText.Trim(); - string dir = App().ActiveDocument.ProjectItem.ContainingProject.FullName; - dir = StringUtility.RLeft(dir, "\\") + "\\"; - - string filepath = dir + path; - filepath = System.IO.Path.GetFullPath(filepath); - - if(System.IO.File.Exists(filepath)) - { - foundpath = filepath; - } - } - if(e.className == "gotoline") - { - string line = e.innerText.Trim(); - foundline = Convert.ToInt32(line); - } - } - - if(foundpath != "" - && foundline != -1) - { - Window docwindow = App().ItemOperations.OpenFile(foundpath, EnvDTE.Constants.vsViewKindTextView); - TextDocument newdoc = (TextDocument)docwindow.Document.Object(""); - - newdoc.Selection.GotoLine(foundline, true); - newdoc.Selection.ActivePoint.TryToShow(vsPaneShowHow.vsPaneShowCentered, null); - } - } - - - return false; - */ - } - - void VisualizeStatus(object sender, EventArgs e) - { - //here we need to find the xml file (alongside the output file) - //and see if it exists (actually...maybe up to date) - - //1. find the togenerated code used to find ooh files - //use this to find the xml file - - try - { - if (CodeCommandsUnavailable()) - throw new Exception(); - - string filename = ""; - - VisualizeCommand.Visible = true; - VisualizeCommand.Enabled = false; - - if(IsGeneratedFileAvailable(".xml", ref filename)) - { - VisualizeCommand.Enabled = true; - return; - } - - return; - } - catch (Exception) { } - - VisualizeCommand.Enabled = false; - VisualizeCommand.Visible = false; - } - - // check if a generated file is available (from oh or doh etc) - // extension, ie .xml - bool IsGeneratedFileAvailable(string extension, ref string filename) - { - string filepath = App().ActiveDocument.FullName; - - Project fileproject = App().ActiveDocument.ProjectItem.ContainingProject; - if (fileproject == null || fileproject.FullName == "") - { - //attempt to grab the fileproject from the active projects... - Array activeprojects = (Array)App().ActiveSolutionProjects; - - foreach (Project p in activeprojects) - { - if (fileproject.FullName != "") - { - fileproject = p; - break; - } - } - } - - if (fileproject != null && fileproject.FullName != "") - { - string generatedpath = Paths.OriginalToGeneratedPath(fileproject, filepath); - - generatedpath += extension; - - //check if it exists? - if (File.Exists(generatedpath)) - { - filename = generatedpath; - return true; - } - } - - return false; - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/XmlLoader.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/XmlLoader.cs deleted file mode 100644 index 8928232..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Integration/XmlLoader.cs +++ /dev/null @@ -1,452 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: XmlLoader.cs -/// Date: 10/16/2007 -/// -/// Description: -/// -/// Xml querying tool for generating intellisense. -///**************************************************************** - -using System; -using System.Xml; -using System.Collections.Generic; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// XmlNodeBase - ///========================================== - - public abstract class XmlNodeBase - { - /*=== data ===*/ - - public string Name = ""; - - /*=== methods ===*/ - - // Utility method to try and populate a string. - public void SetString(XmlElement element, string tag, ref string s) - { - List elements = new List(); - - XmlUtility.GetElementsByTag(element, tag, 1, elements); - - if (elements.Count > 0) - s = elements[0].InnerText.Trim(); - } - - // Utility method to try and populate a list of strings. - public void SetStrings(XmlElement element, string tag, ref List container) - { - List elements = new List(); - - XmlUtility.GetElementsByTag(element, tag, 1, elements); - - foreach (XmlElement e in elements) - container.Add(e.InnerText.Trim()); - } - - // Utility method to try and populate a list of nodes. - public void SetNodes(XmlElement element, string tag, ref List container) where T : XmlNodeBase, new() - { - List elements = new List(); - - XmlUtility.GetElementsByTag(element, tag, 1, elements); - - foreach (XmlElement e in elements) - { - string name = ""; - - SetString(e, "Name", ref name); - - T existing = container.Find(delegate(T x) { return x.Name == name; }); - - if (existing != null) - existing.Load(e); - else - { - T newNode = new T(); - - newNode.Load(e); - - container.Add(newNode); - } - } - } - - /*=== virtuals ===*/ - - // Override this to load a node from an xml node. - public virtual void Load(XmlElement element) - { - - } - }; - - ///========================================== - /// XmlModifierNode - ///========================================== - - public class XmlModifierNode : XmlNodeBase - { - /*=== data ===*/ - - public string Description = ""; - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the description. - SetString(element, "Description", ref Description); - } - }; - - ///========================================== - /// XmlArgumentNode - ///========================================== - - public class XmlArgumentNode : XmlNodeBase - { - /*=== data ===*/ - - public string Description = ""; - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the description. - SetString(element, "Description", ref Description); - } - }; - - ///========================================== - /// XmlNoteNode - ///========================================== - - public class XmlNoteNode : XmlNodeBase - { - /*=== data ===*/ - - public List Modifiers = new List(); - public List Arguments = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the modifiers. - SetNodes(element, "Modifier", ref Modifiers); - - // Grab the arguments. - SetNodes(element, "Argument", ref Arguments); - } - }; - - ///========================================== - /// XmlMapNode - ///========================================== - - public class XmlMapNode : XmlNodeBase - { - /*=== data ===*/ - - public string Type = ""; - public List Notes = new List(); - public List Modifiers = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the type. - SetString(element, "Type", ref Type); - - // Grab the notes. - SetNodes(element, "Note", ref Notes); - - // Grab the modifiers. - SetNodes(element, "Modifier", ref Modifiers); - } - }; - - ///========================================== - /// XmlLocationNode - ///========================================== - - public class XmlLocationNode : XmlNodeBase - { - /*=== data ===*/ - - public List Notes = new List(); - public List Maps = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the notes. - SetNodes(element, "Note", ref Notes); - - // Grab the maps. - SetNodes(element, "Map", ref Maps); - } - }; - - ///========================================== - /// XmlDisallowNode - ///========================================== - - public class XmlDisallowNode : XmlNodeBase - { - /*=== data ===*/ - - public List Modifiers = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the modifiers. - SetNodes(element, "Modifier", ref Modifiers); - } - }; - - ///========================================== - /// XmlCategoryModifierNode - ///========================================== - - public class XmlCategoryModifierNode : XmlNodeBase - { - /*=== data ===*/ - - public string Type = ""; - public string Value = ""; - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the type. - SetString(element, "Type", ref Type); - - // Grab the value. - SetString(element, "Value", ref Value); - } - }; - - ///========================================== - /// XmlCategoryNode - ///========================================== - - public class XmlCategoryNode : XmlNodeBase - { - /*=== data ===*/ - - public List Modifiers = new List(); - public List Disallows = new List(); - public List Locations = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the modifiers. - SetNodes(element, "Modifier", ref Modifiers); - - // Grab the disallows. - SetNodes(element, "Disallow", ref Disallows); - - // Grab the locations. - SetNodes(element, "Location", ref Locations); - } - }; - - ///========================================== - /// XmlEnumerationNode - ///========================================== - - public class XmlEnumerationNode : XmlNodeBase - { - /*=== data ===*/ - - public List Disallows = new List(); - public List Locations = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the name. - SetString(element, "Name", ref Name); - - // Grab the disallows. - SetNodes(element, "Disallow", ref Disallows); - - // Grab the locations. - SetNodes(element, "Location", ref Locations); - } - }; - - ///========================================== - /// XmlRootNode - ///========================================== - - public class XmlRootNode : XmlNodeBase - { - /*=== data ===*/ - - public string Stylesheet = ""; - public string Directory = ""; - public List Categories = new List(); - public List Enumerations = new List(); - - /*=== methods ===*/ - - public override void Load(XmlElement element) - { - // Grab the stylesheet. - SetString(element, "Stylesheet", ref Stylesheet); - - // Grab the directory. - SetString(element, "Directory", ref Directory); - - // Grab the categories. - SetNodes(element, "Category", ref Categories); - - // Grab the enumerations. - SetNodes(element, "Enumeration", ref Enumerations); - } - }; - - ///========================================== - /// XmlDialectLoader - ///========================================== - - public class XmlDialectLoader - { - /*=== data ===*/ - - private XmlDocument doc = new XmlDocument(); - public XmlRootNode Root = new XmlRootNode(); - - /*=== methods ===*/ - - // Try to reload the xml file. - public bool Reload(string file) - { - /*=== Try to load the file. ===*/ - - try - { - doc.Load(file); - } - catch (Exception) - { - return false; - } - - /*=== Grab the root. ===*/ - - XmlNodeList nodelist = doc.GetElementsByTagName("Dialect"); - - // Fail if we don't have a root. - if (nodelist.Count < 1) - return false; - - Root = new XmlRootNode(); - - XmlElement root = nodelist.Item(0) as XmlElement; - - Root.Load(root); - - return true; - } - - // Get a desired node. - public XmlNoteNode GetNote(string path) - { - List strings = new List(path.Split(new string[] {"::"}, StringSplitOptions.RemoveEmptyEntries)); - int size = strings.Count; - - // Make sure the size is either 3 or 4. - if (size != 3 && size != 4) - return null; - - // Grab the category/enumeration. - XmlCategoryNode category = Root.Categories.Find(delegate(XmlCategoryNode x) { return x.Name == strings[0]; }); - XmlEnumerationNode enumeration = null; - - if (category == null) - { - enumeration = Root.Enumerations.Find(delegate(XmlEnumerationNode x) { return x.Name == strings[0]; }); - - if (enumeration == null) - return null; - } - - // Grab the location. - XmlLocationNode location = null; - - if (category != null) - location = category.Locations.Find(delegate(XmlLocationNode x) { return x.Name == strings[1]; }); - else - location = enumeration.Locations.Find(delegate(XmlLocationNode x) { return x.Name == strings[1]; }); - - if (location == null) - return null; - - // If we have 3 strings, it's a note. Otherwise it's a map. - if (strings.Count == 3) - { - // Grab the note. - XmlNoteNode note = location.Notes.Find(delegate(XmlNoteNode x) { return x.Name == strings[2]; }); - - return note; - } - else - { - // Grab the map. - XmlMapNode map = location.Maps.Find(delegate(XmlMapNode x) { return x.Name == strings[2]; }); - - if (map == null) - return null; - - // Grab the note. - XmlNoteNode note = map.Notes.Find(delegate(XmlNoteNode x) { return x.Name == strings[3]; }); - - return note; - } - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionAttributes.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionAttributes.cs deleted file mode 100644 index ecec587..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionAttributes.cs +++ /dev/null @@ -1,206 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: OptionAttributes.cs -/// Date: 09/23/2007 -/// -/// Description: -/// -/// This file contains attribute classes for oCpp command line option classes. -///**************************************************************** - -using System; - -namespace opGamesLLC.opCpp2005 -{ - /*=== This is an attribute for specifying the command line tag for an option. ===*/ - - public class CommandLineAttribute : Attribute - { - /*=== construction ===*/ - - public CommandLineAttribute(string _commandLine) - { - commandLine = _commandLine; - } - - /*=== data ===*/ - - private string commandLine; - - public string CommandLine - { - get - { - return commandLine; - } - } - }; - - /*=== This attribute specifies the option is visible in the global property grid. ===*/ - - public class IsGlobalOptionAttribute : Attribute - { - /*=== construction ===*/ - - public IsGlobalOptionAttribute() - { - - } - }; - - /*=== This attribute specifies the option is visible in the project property grid. ===*/ - - public class IsProjectOptionAttribute : Attribute - { - /*=== construction ===*/ - - public IsProjectOptionAttribute() - { - - } - }; - - /*=== Attribute specifying the option name in the property grid. ===*/ - - public class OptionNameAttribute : Attribute - { - /*=== construction ===*/ - - public OptionNameAttribute(string _optionName) - { - optionName = _optionName; - } - - /*=== data ===*/ - - private string optionName; - - public string OptionName - { - get - { - return optionName; - } - } - }; - - /*=== Attribute specifying the option category in the property grid. ===*/ - - public class OptionCategoryAttribute : Attribute - { - /*=== construction ===*/ - - public OptionCategoryAttribute(string _optionCategory) - { - optionCategory = _optionCategory; - } - - /*=== data ===*/ - - private string optionCategory; - - public string OptionCategory - { - get - { - return optionCategory; - } - } - }; - - /*=== Attribute specifying the option description in the property grid. ===*/ - - public class OptionDescriptionAttribute : Attribute - { - /*=== construction ===*/ - - public OptionDescriptionAttribute(string _optionDescription) - { - optionDescription = _optionDescription; - } - - /*=== data ===*/ - - private string optionDescription; - - public string OptionDescription - { - get - { - return optionDescription; - } - } - }; - - /*=== Attribute specifying the option editor type in the property grid. ===*/ - - public class OptionEditorTypeAttribute : Attribute - { - /*=== construction ===*/ - - public OptionEditorTypeAttribute(Type _optionEditorType) - { - optionEditorType = _optionEditorType; - } - - /*=== data ===*/ - - //private string optionEditorType; - private Type optionEditorType; - - //public string OptionEditorType - public Type OptionEditorType - { - get - { - return optionEditorType; - } - } - }; - - /*=== Attribute specifying the option type converter for the global property grid. ===*/ - - public class GlobalOptionTypeConverterAttribute : Attribute - { - /*=== construction ===*/ - - public GlobalOptionTypeConverterAttribute(Type _optionTypeConverter) - { - optionTypeConverter = _optionTypeConverter; - } - - /*=== data ===*/ - - private Type optionTypeConverter; - - public Type OptionTypeConverter - { - get { return optionTypeConverter; } - } - }; - - /*=== Attribute specifying the option type converter for the project property grid. ===*/ - - public class ProjectOptionTypeConverterAttribute : Attribute - { - /*=== construction ===*/ - - public ProjectOptionTypeConverterAttribute(Type _optionTypeConverter) - { - optionTypeConverter = _optionTypeConverter; - } - - /*=== data ===*/ - - private Type optionTypeConverter; - - public Type OptionTypeConverter - { - get { return optionTypeConverter; } - } - }; -} - diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionTypes.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionTypes.cs deleted file mode 100644 index 151fe7e..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionTypes.cs +++ /dev/null @@ -1,209 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: OptionTypes.cs -/// Date: 09/20/2007 -/// -/// Description: -/// -/// Declares classes for option types. -///**************************************************************** - -using System.Xml; -using System.Xml.Serialization; -using System.Collections.Generic; -using System; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// OptionBase - ///========================================== - - public class OptionBase - { - /*=== virtuals ===*/ - - public virtual Type GetOptionType() - { - return null; - } - }; - - ///========================================== - /// StringListOption - ///========================================== - - public class StringListOption : OptionBase - { - /*=== construction ===*/ - - public StringListOption() - { - stringlist = new List(); - } - - public StringListOption(List _stringlist) - { - stringlist = _stringlist; - } - - /*=== overrides ===*/ - - public override Type GetOptionType() - { - return typeof(StringListOption); - } - - /*=== utility ===*/ - - public void Add(string s) - { - stringlist.Add(s); - } - - public void Remove(string s) - { - stringlist.Remove(s); - } - - /*=== data ===*/ - - protected List stringlist; - - [XmlArray] - [XmlArrayItem("String")] - public List StringList - { - get { return stringlist; } - set { stringlist = value; } - } - }; - - ///========================================== - /// StringOption - ///========================================== - - public class StringOption : OptionBase - { - /*=== construction ===*/ - - public StringOption() - { - - } - - public StringOption(string _val) - { - val = _val; - } - - /*=== overrides ===*/ - - public override Type GetOptionType() - { - return typeof(StringOption); - } - - /*=== data ===*/ - - protected string val = ""; - - public string Value - { - get { return val; } - set { val = value; } - } - }; - - ///========================================== - /// DefaultOptionBase - ///========================================== - - public class DefaultOptionBase : OptionBase - { - /*=== data ===*/ - - protected bool usedefault = false; - - public bool UseDefault - { - get { return usedefault; } - set { usedefault = value; } - } - }; - - ///========================================== - /// BoolOption - ///========================================== - - public class BoolOption : DefaultOptionBase - { - /*=== construction ===*/ - - public BoolOption() - { - - } - - public BoolOption(bool _val) - { - val = _val; - } - - /*=== overrides ===*/ - - public override Type GetOptionType() - { - return typeof(BoolOption); - } - - /*=== data ===*/ - - protected bool val = false; - - public bool Value - { - get { return val; } - set { val = value; } - } - }; - - ///========================================== - /// IntOption - ///========================================== - - public class IntOption : DefaultOptionBase - { - /*=== construction ===*/ - - public IntOption() - { - - } - - public IntOption(int _val) - { - val = _val; - } - - /*=== overrides ===*/ - - public override Type GetOptionType() - { - return typeof(IntOption); - } - - /*=== data ===*/ - - protected int val = 0; - - public int Value - { - get { return val; } - set { val = value; } - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/Options.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/Options.cs deleted file mode 100644 index 2f331dc..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/Options.cs +++ /dev/null @@ -1,604 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Options.cs -/// Date: 09/20/2007 -/// -/// Description: -/// -/// This file contains all opCpp options. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.Xml; -using System.Xml.Serialization; -using System.Reflection; -using System.ComponentModel; -using System.Windows.Forms.Design; - -namespace opGamesLLC.opCpp2005 -{ - /*=== This is the actual options class. It contains all opCpp command line options. ===*/ - - public class Options - { - ///========================================== - /// Construction. - ///========================================== - - public Options() - { - - } - - // copy constructor - public Options(Options copy) - { - FieldInfo[] oFields; - Type oType = typeof(Options); - - // Get the public data members in the 'Options' class. - oFields = oType.GetFields(BindingFlags.Public|BindingFlags.Instance); - - // This loops through all the public data members in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // Handle string list options. - if (oFields[i].FieldType == typeof(StringListOption)) - { - StringListOption theiroption = (StringListOption) oFields[i].GetValue(copy); - StringListOption myoption = (StringListOption) oFields[i].GetValue(this); - - myoption.StringList = new List(theiroption.StringList); - } - // Handle string options. - else if (oFields[i].FieldType == typeof(StringOption)) - { - StringOption theiroption = (StringOption) oFields[i].GetValue(copy); - StringOption myoption = (StringOption) oFields[i].GetValue(this); - - myoption.Value = theiroption.Value; - } - // Handle bool options. - else if (oFields[i].FieldType == typeof(BoolOption)) - { - BoolOption theiroption = (BoolOption) oFields[i].GetValue(copy); - BoolOption myoption = (BoolOption) oFields[i].GetValue(this); - - myoption.Value = theiroption.Value; - myoption.UseDefault = theiroption.UseDefault; - } - // Handle int options. - else if (oFields[i].FieldType == typeof(IntOption)) - { - IntOption theiroption = (IntOption) oFields[i].GetValue(copy); - IntOption myoption = (IntOption) oFields[i].GetValue(this); - - myoption.Value = theiroption.Value; - myoption.UseDefault = theiroption.UseDefault; - } - } - } - - ///========================================== - /// Reflection stuff. - ///========================================== - - // Tells every method that it should use the default method from globals. - public void SetDefaults() - { - FieldInfo[] oFields; - Type oType = typeof(Options); - - // Get the public data members in the 'Options' class. - oFields = oType.GetFields(BindingFlags.Public|BindingFlags.Instance); - - // This loops through all the public data members in the 'Options' class. - for (int i = 0; i < oFields.Length; i++) - { - // Handle string list options. - if (oFields[i].FieldType == typeof(StringListOption)) - { - StringListOption option = (StringListOption) oFields[i].GetValue(this); - - option.StringList = new List(); - } - // Handle string options. - else if (oFields[i].FieldType == typeof(StringOption)) - { - StringOption option = (StringOption) oFields[i].GetValue(this); - - option.Value = ""; - } - // Handle bool options. - else if (oFields[i].FieldType == typeof(BoolOption)) - { - BoolOption option = (BoolOption) oFields[i].GetValue(this); - - option.Value = false; - option.UseDefault = true; - } - // Handle int options. - else if (oFields[i].FieldType == typeof(IntOption)) - { - IntOption option = (IntOption) oFields[i].GetValue(this); - - option.Value = 0; - option.UseDefault = true; - } - } - } - - ///========================================== - /// Debug options - ///========================================== - -#if DEBUG - - /*=== -tree command line option ===*/ - - [CommandLine("-tree")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Tree")] - [OptionCategory("Debug Compiler Options")] - [OptionDescription("Prints the abstract syntax tree to the standard out.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Tree = new BoolOption(false); - - /*=== -fulltree command line option ===*/ - - [CommandLine("-fulltree")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Full Tree")] - [OptionCategory("Debug Compiler Options")] - [OptionDescription("Prints the abstract syntax tree with values to the standard out.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption FullTree = new BoolOption(false); - -#endif - - ///========================================== - /// Locations options - ///========================================== - - /*=== path to opCpp.exe ===*/ - - [IsGlobalOption] - [IsProjectOption] - [OptionName("Compiler Location")] - [OptionCategory("Locations")] - [OptionDescription("Specify this if you want to use a different version of the opC++ compiler.")] - [OptionEditorType(typeof(FindExecutableEditor))] - [GlobalOptionTypeConverter(typeof(StringOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringOptionConverter))] - public StringOption ExecutablePath = new StringOption(); - - /*=== license location ===*/ - - [IsGlobalOption] - [IsProjectOption] - [OptionName("License Location")] - [OptionCategory("Locations")] - [OptionDescription("Specify this if you want to use a different version of the opC++ compiler.")] - [OptionEditorType(typeof(FindLicenseEditor))] - [GlobalOptionTypeConverter(typeof(StringOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringOptionConverter))] - public StringOption LicensePath = new StringOption(); - - /*=== -oh command line option ===*/ - - [CommandLine("-oh")] - [IsProjectOption] - [OptionName("Header Files")] - [OptionCategory("Locations")] - [OptionDescription("Additional code (.oh) files to be compiled that are not in your project.")] - [OptionEditorType(typeof(OhFilesEditor))] - [GlobalOptionTypeConverter(typeof(StringListOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringListOptionConverter))] - public StringListOption OhFiles = new StringListOption(); - - /*=== -d command line option ===*/ - - [CommandLine("-d")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Include Directories")] - [OptionCategory("Locations")] - [OptionDescription("Additional include directories for both code (.oh) and dialect (.doh) files.")] - [OptionEditorType(typeof(IncludeDirectoriesEditor))] - [GlobalOptionTypeConverter(typeof(StringListOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringListOptionConverter))] - public StringListOption Directories = new StringListOption(); - - /*=== -ohd command line option ===*/ - - [CommandLine("-ohd")] - [IsProjectOption] - [OptionName("Header Compile Directories")] - [OptionCategory("Locations")] - [OptionDescription("All .oh files within these directories will be compiled.")] - [OptionEditorType(typeof(OhCompileDirectories))] - [GlobalOptionTypeConverter(typeof(StringListOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringListOptionConverter))] - public StringListOption OhDirectories = new StringListOption(); - - /*=== -gd command line option ===*/ - - [CommandLine("-gd")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Generated Directory")] - [OptionCategory("Locations")] - [OptionDescription("All code is output to this directory.")] - [OptionEditorType(typeof(FolderNameEditor))] - [GlobalOptionTypeConverter(typeof(StringOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringOptionConverter))] - public StringOption GeneratedDirectory = new StringOption("Generated/$(ProjectName)"); - - /*=== -doh command line option ===*/ - - [CommandLine("-doh")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Dialect Files")] - [OptionCategory("Locations")] - [OptionDescription("Additional dialect (.doh) files to be read that are not in your project.")] - [OptionEditorType(typeof(DohFilesEditor))] - [GlobalOptionTypeConverter(typeof(StringListOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringListOptionConverter))] - public StringListOption DialectFiles = new StringListOption(); - - /*=== additional dependencies ===*/ - - [CommandLine("-dependencies")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Dependencies")] - [OptionCategory("Locations")] - [OptionDescription("List of additional dependencies that will be tracked by opC++. Detected changes will cause a full rebuild.")] - [OptionEditorType(typeof(DependencyFilesEditor))] - [GlobalOptionTypeConverter(typeof(StringListOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringListOptionConverter))] - public StringListOption DependencyFiles = new StringListOption(); - - /*=== additional feature directories ===*/ - - [IsProjectOption] - [IsGlobalOption] - [OptionName("Feature Directories")] - [OptionCategory("Locations")] - [OptionDescription("Additional directories where features are installed. The compiler will also look in the 'features/' directory where opCpp.exe is installed.")] - [OptionEditorType(typeof(FeatureDirectoriesEditor))] - [GlobalOptionTypeConverter(typeof(StringListOptionConverter))] - [ProjectOptionTypeConverter(typeof(StringListOptionConverter))] - public StringListOption FeatureDirectories = new StringListOption(); - - ///========================================== - /// 'Compiler Options' options - ///========================================== - - /*=== -verbose command line option ===*/ - - [CommandLine("-verbose")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Verbose")] - [OptionCategory("Compiler Options")] - [OptionDescription("Tells the compiler to print verbose output.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Verbose = new BoolOption(false); - - /*=== -diagnostics command line option ===*/ - - [CommandLine("-diagnostics")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Diagnostics")] - [OptionCategory("Compiler Options")] - [OptionDescription("Tells the compiler to print diagnostic output. This includes dialect validation messages.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Diagnostics = new BoolOption(false); - - /*=== -silent command line option ===*/ - - [CommandLine("-silent")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Silent")] - [OptionCategory("Compiler Options")] - [OptionDescription("The compiler will only print out compiler errors.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Silent = new BoolOption(false); - - /*=== -force command line option ===*/ - - [CommandLine("-force")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Force Recompile")] - [OptionCategory("Compiler Options")] - [OptionDescription("Forces the compiler to recompile everything.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Force = new BoolOption(false); - - /*=== -nostandardincludes command line option ===*/ - - [CommandLine("-nostandardincludes")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("No Standard Includes")] - [OptionCategory("Compiler Options")] - [OptionDescription("Tells the compiler to not search its standard include path.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption NoStandardIncludes = new BoolOption(false); - - ///========================================== - /// 'Code Generation' options - ///========================================== - - /*=== -nouninline command line option ===*/ - - [CommandLine("-inlineall")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Inline All")] - [OptionCategory("Code Generation")] - [OptionDescription("Tells the compiler to inline all functions in .oh files.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption InlineAll = new BoolOption(false); - - /*=== -nodebug command line option ===*/ - - [CommandLine("-nodebug")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("No Debugging")] - [OptionCategory("Code Generation")] - [OptionDescription("Suppress #line directives (suppress debugging redirection support).")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption NoDebug = new BoolOption(false); - - /*=== -highlighting command line option ===*/ - - [CommandLine("-highlighting")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Highlighting")] - [OptionCategory("Code Generation")] - [OptionDescription( - "Tells the compiler to generate highlighting #define's based on your dialect(s)." + - "Note: This only works if you have a good syntax highlighting engine installed (e.g., Visual Assist)." - )] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Highlighting = new BoolOption(true); - - /*=== -ghosts command line option ===*/ - - [CommandLine("-ghosts")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Ghosts")] - [OptionCategory("Code Generation")] - [OptionDescription("Tells the compiler to output ghost namespaces to improve IDE auto-completion.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Ghosts = new BoolOption(true); - - /*=== -globmode command line option ===*/ - - [CommandLine("-globmode")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Glob Mode")] - [OptionCategory("Code Generation")] - [OptionDescription( - "Enables glob indexing mode. In glob mode, the compiler creates index source and header files" + - " (Generated.oohindex, Generated.ocppindex) that include all generated code files. In this way," + - " you can include all your generated code in a project by including 'Generated.oohindex'." - )] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption GlobMode = new BoolOption(true); - - /*=== -expansion-depth command line option ===*/ - - [CommandLine("-expansion-depth")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Expansion Depth")] - [OptionCategory("Code Generation")] - [OptionDescription("Specifies the maximum opmacro expansion depth.")] - [GlobalOptionTypeConverter(typeof(GlobalIntOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectIntOptionConverter))] - public IntOption ExpansionDepth = new IntOption(100); - - /*=== -notations command line option ===*/ - - [CommandLine("-notations")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Notations")] - [OptionCategory("Code Generation")] - [OptionDescription("The compiler will place note expansion comments in the generated code.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Notations = new BoolOption(false); - - /*=== -compact command line option ===*/ - - [CommandLine("-compact")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Compact")] - [OptionCategory("Code Generation")] - [OptionDescription("Almost all comments and empty lines are removed from the generated code.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption Compact = new BoolOption(true); - - /*=== -printxml command line option ===*/ - - [CommandLine("-printxml")] - [IsProjectOption] - [IsGlobalOption] - [OptionName("Print Xml")] - [OptionCategory("Code Generation")] - [OptionDescription("The compiler will generate an xml representation of your opC++ code.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption PrintXml = new BoolOption(true); - - ///========================================== - /// 'Addin' options - ///========================================== - - /*=== whether or not to change the build commands' behavior ===*/ - - [IsGlobalOption] - [OptionName("Extend Commands")] - [OptionCategory("Addin")] - [OptionDescription("Extend the common IDE build, clean and debug commands so that opC++ is run first.")] - [GlobalOptionTypeConverter(typeof(GlobalBoolOptionConverter))] - [ProjectOptionTypeConverter(typeof(ProjectBoolOptionConverter))] - public BoolOption ExtendCommands = new BoolOption(true); - - /*=== what command is called after opCpp builds solution on our toolbar ===*/ - - [IsGlobalOption] - [OptionName("Post Build Solution")] - [OptionCategory("Addin")] - [OptionDescription("The command that is executed after the opC++ build solution button successfully runs.")] - [GlobalOptionTypeConverter(typeof(CommandConverter))] - public StringOption PostBuildSolution = new StringOption("Build.BuildSolution"); - - /*=== what command is called after opCpp builds project on our toolbar ===*/ - - [IsGlobalOption] - [OptionName("Post Build Project")] - [OptionCategory("Addin")] - [OptionDescription("The command that is executed after the opC++ build project button successfully runs.")] - [GlobalOptionTypeConverter(typeof(CommandConverter))] - public StringOption PostBuildProject = new StringOption("Build.BuildSelection"); - - /*=== what command is called after opCpp cleans on our toolbar ===*/ - - [IsGlobalOption] - [OptionName("Post Clean Solution")] - [OptionCategory("Addin")] - [OptionDescription("The command that is executed after the opC++ clean solution button successfully runs.")] - [GlobalOptionTypeConverter(typeof(CommandConverter))] - public StringOption PostCleanSolution = new StringOption("Build.CleanSolution"); - - /*=== whether or not to print the command line output ===*/ - - [IsGlobalOption] - [OptionName( "Output Commandline" )] - [OptionCategory( "Addin" )] - [OptionDescription( "Prints the compiler location, command line parameters, and current working directory." )] - [GlobalOptionTypeConverter( typeof( GlobalBoolOptionConverter ) )] - public BoolOption OutputCommandline = new BoolOption(false); - }; - - ///========================================== - /// OptionInfo - ///========================================== - - // This class can be used to parse all of an option object's attributes. - public class OptionInfo - { - /*=== construction ===*/ - - public OptionInfo(List attrs) - { - /*=== name ===*/ - - OptionNameAttribute name = (OptionNameAttribute) AttributeUtility.GetAttribute(attrs); - - if (name != null) - Name = name.OptionName; - - /*=== is global ===*/ - - IsGlobalOptionAttribute isGlobal = (IsGlobalOptionAttribute) AttributeUtility.GetAttribute(attrs); - - if (isGlobal != null) - IsGlobal = true; - - /*=== is project ===*/ - - IsProjectOptionAttribute isProject = (IsProjectOptionAttribute) AttributeUtility.GetAttribute(attrs); - - if (isProject != null) - IsProject = true; - - /*=== category ===*/ - - OptionCategoryAttribute category = (OptionCategoryAttribute) AttributeUtility.GetAttribute(attrs); - - if (category != null) - Category = category.OptionCategory; - - /*=== description ===*/ - - OptionDescriptionAttribute description = (OptionDescriptionAttribute) AttributeUtility.GetAttribute(attrs); - - if (description != null) - Description = description.OptionDescription; - - /*=== editor type ===*/ - - OptionEditorTypeAttribute editorType = (OptionEditorTypeAttribute) AttributeUtility.GetAttribute(attrs); - - if (editorType != null) - EditorType = editorType.OptionEditorType.AssemblyQualifiedName; - - /*=== global type converter ===*/ - - GlobalOptionTypeConverterAttribute globalTypeConverter = (GlobalOptionTypeConverterAttribute) AttributeUtility.GetAttribute(attrs); - - if (globalTypeConverter != null) - GlobalTypeConverter = globalTypeConverter.OptionTypeConverter.AssemblyQualifiedName; - - /*=== project type converter ===*/ - - ProjectOptionTypeConverterAttribute projectTypeConverter = (ProjectOptionTypeConverterAttribute) AttributeUtility.GetAttribute(attrs); - - if (projectTypeConverter != null) - ProjectTypeConverter = projectTypeConverter.OptionTypeConverter.AssemblyQualifiedName; - - /*=== command line converter ===*/ - - CommandLineAttribute commandLine = (CommandLineAttribute) AttributeUtility.GetAttribute(attrs); - - if (commandLine != null) - CommandLine = commandLine.CommandLine; - } - - /*=== data ===*/ - - public string Name = ""; - public bool IsGlobal = false; - public bool IsProject = false; - public string Category = ""; - public string Description = ""; - public string EditorType = ""; - public string GlobalTypeConverter = ""; - public string ProjectTypeConverter = ""; - public string CommandLine = ""; - }; -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionsManager.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionsManager.cs deleted file mode 100644 index a6920a3..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionsManager.cs +++ /dev/null @@ -1,223 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: OptionsManager.cs -/// Date: 09/20/2007 -/// -/// Description: -/// -/// Class to manage all (global and project) options. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.Windows.Forms; -using Microsoft.VisualStudio.VCProjectEngine; -using EnvDTE; -using System.Reflection; -using System.IO; - -namespace opGamesLLC.opCpp2005 -{ - // This data structure is returned from 'GetCommandLineInfo' in the - // 'OptionsManager' class. - public class CommandLineInfo - { - // Path to the opCpp.exe executable. - - private string executablePath; - - public string ExecutablePath - { - get { return executablePath; } - set { executablePath = value; } - } - - // Command line arguments string. - - private string arguments; - - public string Arguments - { - get { return arguments; } - set { arguments = value; } - } - }; - - // This class contains some static methods to retrieve - // command line-related information. - public class OptionsManager - { - // This method returns the command line argument string. - public static CommandLineInfo GetCommandLineInfo(Project p) - { - /*=== Read the options. ===*/ - - Options gOptions = GetGlobalOptions().GetGlobalConfiguration().Options; - Options pOptions = GetProjectOptions(p).GetActiveConfiguration().Options; - - /*=== Use reflection to build the command line string. ===*/ - - string cmd = ""; - FieldInfo[] oFields; - Type oType = typeof(Options); - char[] trimchars = {'"'}; - - // Get the fields for type 'Options'. - oFields = oType.GetFields(BindingFlags.Public | BindingFlags.Instance); - - /*=== Loop through the data members in the 'Options' object. ===*/ - - for (int i = 0; i < oFields.Length; i++) - { - /*=== If the current field is not an option, ignore it. ===*/ - - if (!oFields[i].FieldType.IsSubclassOf(typeof(OptionBase))) - continue; - - /*=== Parse this option's attributes. ===*/ - - List attrs = AttributeUtility.GetAllAttributes(oFields[i], false); - OptionInfo info = new OptionInfo(attrs); - - // If a commandline syntax isn't specified, ignore this option. - if (info.CommandLine == "") - continue; - - string tag = info.CommandLine; - - // Handle string list options. - if (oFields[i].FieldType == typeof(StringListOption)) - { - StringListOption gOption = (StringListOption) oFields[i].GetValue(gOptions); - StringListOption pOption = (StringListOption) oFields[i].GetValue(pOptions); - int gsize = gOption.StringList.Count; - int psize = pOption.StringList.Count; - - if (gsize > 0) - { - cmd += " " + tag + " "; - cmd += '"' + gOption.StringList[0].Trim(trimchars) + '"'; - - for (int j = 1; j < gsize; j++) - cmd += "," + '"' + gOption.StringList[j].Trim(trimchars) + '"'; - } - - if (psize > 0) - { - int j = 0; - - if (gsize < 1) - { - cmd += " " + tag + " "; - cmd += '"' + pOption.StringList[0].Trim(trimchars) + '"'; - j = 1; - } - - for (; j < psize; j++) - cmd += "," + '"' + pOption.StringList[j].Trim(trimchars) + '"'; - } - } - // Handle string options. - else if (oFields[i].FieldType == typeof(StringOption)) - { - StringOption gOption = (StringOption) oFields[i].GetValue(gOptions); - StringOption pOption = (StringOption) oFields[i].GetValue(pOptions); - - if (pOption.Value != "") - cmd += " " + tag + " " + '"' + pOption.Value.Trim(trimchars) + '"'; - else if (gOption.Value != "") - cmd += " " + tag + " " + '"' + gOption.Value.Trim(trimchars) + '"'; - } - // Handle boolean options. - else if (oFields[i].FieldType == typeof(BoolOption)) - { - BoolOption gOption = (BoolOption) oFields[i].GetValue(gOptions); - BoolOption pOption = (BoolOption) oFields[i].GetValue(pOptions); - bool on = pOption.UseDefault ? gOption.Value : pOption.Value; - - if (on) - cmd += " " + tag; - } - // Handle int options. - else if (oFields[i].FieldType == typeof(IntOption)) - { - IntOption gOption = (IntOption) oFields[i].GetValue(gOptions); - IntOption pOption = (IntOption) oFields[i].GetValue(pOptions); - int val = pOption.UseDefault ? gOption.Value : pOption.Value; - - cmd += " " + tag + " " + val; - } - } - - /*=== Setup the command line info data structure. ===*/ - - CommandLineInfo cmdinfo = new CommandLineInfo(); - - /*=== set the license path ===*/ - - if (pOptions.LicensePath.Value != "") - cmd += " -license " + '"' + pOptions.LicensePath.Value.Trim(trimchars) + '"'; - else if (gOptions.LicensePath.Value != "") - cmd += " -license " + '"' + gOptions.LicensePath.Value.Trim(trimchars) + '"'; - else - cmd += " -license " + '"' + opLicenseUtility.FullLicenseFileName + '"'; - - cmdinfo.Arguments = cmd; - - /*=== set the executable path ===*/ - - if (pOptions.ExecutablePath.Value != "") - cmdinfo.ExecutablePath = pOptions.ExecutablePath.Value.Trim(trimchars); - else if (gOptions.ExecutablePath.Value != "") - cmdinfo.ExecutablePath = gOptions.ExecutablePath.Value.Trim(trimchars); - else - cmdinfo.ExecutablePath = Path.GetFullPath( Paths.GetFullAppPath() + "..\\Release\\opCpp.exe" ); - - return cmdinfo; - } - - /*=== data ===*/ - - // The global options set. - - private static GlobalOptionsSet GlobalOptions = null; - - public static GlobalOptionsSet GetGlobalOptions() - { - if (GlobalOptions == null) - { - GlobalOptions = new GlobalOptionsSet(); - - GlobalOptions.Load(); - } - - return GlobalOptions; - } - - // The project options sets. - - private static Dictionary ProjectOptions = new Dictionary(); - - public static ProjectOptionsSet GetProjectOptions(Project p) - { - if (p == null) - return null; - - ProjectOptionsSet project = null; - - if (!ProjectOptions.TryGetValue(p, out project)) - { - project = new ProjectOptionsSet(p); - - project.Load(); - - ProjectOptions.Add(p, project); - } - - return project; - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionsSet.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionsSet.cs deleted file mode 100644 index dc71cdf..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/OptionsSet.cs +++ /dev/null @@ -1,334 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: ProjectOptions.cs -/// Date: 09/20/2007 -/// -/// Description: -/// -/// Contains classes for project options. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.Xml; -using System.Xml.Serialization; -using System.IO; -using Microsoft.VisualStudio.VCProjectEngine; -using EnvDTE; -using System.Windows.Forms; -using Microsoft.Win32; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// Represents a set of options for one configuration. - ///========================================== - - public class OptionsElement - { - /*=== data ===*/ - - // Configuration name. - - private string configuration; - - public string Configuration - { - get { return configuration; } - set { configuration = value; } - } - - // Platform name. - - private string platform = ""; - - public string Platform - { - get { return platform; } - set { platform = value; } - } - - // Configuration options. - - private Options options = new Options(); - - public Options Options - { - get { return options; } - set { options = value; } - } - }; - - ///========================================== - /// Represents a list of options for multiple configurations. - ///========================================== - - public abstract class OptionsSet - { - /*=== construction ===*/ - - public OptionsSet() - { - project = null; - options = new List(); - } - - public OptionsSet(Project p) - { - project = p; - options = new List(); - } - - /*=== virtuals ===*/ - - // Reloads this options set. - public abstract void Load(); - - // Saves this option set. - public abstract void Save(); - - /*=== utility ===*/ - - // Add a set of options for a particular configuration to the options set. - public void AddConfiguration(OptionsElement optionsElement) - { - RemoveConfiguration(optionsElement.Configuration, optionsElement.Platform); - options.Add(optionsElement); - } - - // Remove a set of options for a particular configuration from the options set. - public void RemoveConfiguration(string configuration, string platform) - { - options.RemoveAll( - delegate(OptionsElement x) - { - return x.Configuration == configuration && x.Platform == platform; - } - ); - } - - // Removes all options. - public void ClearConfigurations() - { - options.Clear(); - } - - // Returns true if the specified configuration exists. - public bool ConfigurationExists(string configuration, string platform) - { - OptionsElement oe = options.Find( - delegate(OptionsElement x) - { - return x.Configuration == configuration && x.Platform == platform; - } - ); - - return oe != null; - } - - // Get an option set. - public OptionsElement GetConfiguration(string configuration, string platform) - { - return options.Find( - delegate(OptionsElement x) - { - return x.Configuration == configuration && x.Platform == platform; - } - ); - } - - /*=== data ===*/ - - protected Project project; - - [XmlArray] - private List options; - - public List Options - { - get { return options; } - set { options = value; } - } - }; - - ///========================================== - /// Represents a set of global options. - ///========================================== - - public class GlobalOptionsSet : OptionsSet - { - /*=== constructor ===*/ - - public GlobalOptionsSet() : base() - { - - } - - /*=== overrides ===*/ - - // Reload the global options. - public override void Load() - { - string file = Paths.GetGlobalOptionsFilename(); - GlobalOptionsSet os = null; - - // Load the global options. - XmlUtility.LoadXml(file, ref os); - - if (os == null) - this.Options = new List(); - else - this.Options = os.Options; - - // If the 'GlobalOptionsConfigurationName' configuration does not exist, add it. - if (GetConfiguration(GlobalConfigurationName, GlobalPlatformName) == null) - { - OptionsElement oe = new OptionsElement(); - - oe.Configuration = GlobalConfigurationName; - oe.Platform = GlobalPlatformName; - - AddConfiguration(oe); - - // Save the new global options. - Save(); - } - } - - // Save the global options. - public override void Save() - { - string file = Paths.GetGlobalOptionsFilename(); - GlobalOptionsSet os = this; - - if (!XmlUtility.SaveXml(file, ref os)) - MessageBox.Show("opC++ unable to save global options file '" + file + "'."); - } - - /*=== utility ===*/ - - // Returns the single global configuration. - public OptionsElement GetGlobalConfiguration() - { - return GetConfiguration(GlobalConfigurationName, GlobalPlatformName); - } - - // Use this dll's path to find opCpp.exe if none is defined - public static string GetDefaultExecutablePath() - { - return Path.GetFullPath( Paths.GetFullAppPath() + "..\\Release\\opCpp.exe" ); - } - - /*=== data ===*/ - - // Global options configuration name. - - private static readonly string GlobalConfigurationName = "All"; - - // Global options platform name. - - private static readonly string GlobalPlatformName = "All"; - }; - - ///========================================== - /// Represents a set of project options. - ///========================================== - - public class ProjectOptionsSet : OptionsSet - { - /*=== construction ===*/ - - public ProjectOptionsSet() : base() - { - - } - - public ProjectOptionsSet(Project p) : base() - { - project = p; - } - - /*=== overrides ===*/ - - // Reload this project's options file. - public override void Load() - { - if (project == null) - return; - - string file = Paths.GetProjectOptionsFilename(project); - ProjectOptionsSet os = null; - - // Load the project options. - XmlUtility.LoadXml(file, ref os); - - if (os == null) - this.Options = new List(); - else - this.Options = os.Options; - - string activeConfiguration = ProjectUtility.GetActiveConfiguration(project); - string activePlatform = ProjectUtility.GetActivePlatform(project); - - if (GetConfiguration(activeConfiguration, activePlatform) == null) - { - OptionsElement oe = new OptionsElement(); - - oe.Configuration = activeConfiguration; - oe.Platform = activePlatform; - oe.Options.SetDefaults(); - - AddConfiguration(oe); - - // Save the new project options. - Save(); - } - } - - // Save this project's options file. - public override void Save() - { - if (project == null) - return; - - string file = Paths.GetProjectOptionsFilename(project); - ProjectOptionsSet os = this; - - if (!XmlUtility.SaveXml(file, ref os)) - MessageBox.Show("opC++ unable to save project options file '" + file + "'."); - } - - /*=== utility ===*/ - - // Gets a new configuration (if it doesn't already exist). - public OptionsElement GetNewConfiguration(string configuration, string platform) - { - OptionsElement oe = GetConfiguration(configuration, platform); - - if (oe == null) - { - oe = new OptionsElement(); - - oe.Configuration = configuration; - oe.Platform = platform; - oe.Options.SetDefaults(); - - AddConfiguration(oe); - } - - return oe; - } - - // Returns the active configuration. - public OptionsElement GetActiveConfiguration() - { - string activeConfiguration = ProjectUtility.GetActiveConfiguration(project); - string activePlatform = ProjectUtility.GetActivePlatform(project); - - return GetNewConfiguration(activeConfiguration, activePlatform); - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/TypeConverters.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/TypeConverters.cs deleted file mode 100644 index 9b17bf3..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Options/TypeConverters.cs +++ /dev/null @@ -1,585 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: TypeConverters.cs -/// Date: 09/25/2007 -/// -/// Description: -/// -/// Contains type converters for property grid stuff. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Globalization; -using EnvDTE; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// StringListOptionConverter - ///========================================== - - public class StringListOptionConverter : StringConverter - { - /*=== overrides ===*/ - - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - if (destinationType == typeof(StringListOption)) - return true; - - return base.CanConvertTo(context, destinationType); - } - - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) - { - if (destinationType == typeof(string) - && value is StringListOption) - { - StringListOption option = (StringListOption) value; - List list = (List) option.StringList; - - if (list != null) - { - string output = ""; - int size = list.Count; - - if (size > 0) - { - output = list[0]; - - for (int i = 1; i < size; i++) - output += ";" + list[i]; - } - - return output; - } - } - - return base.ConvertTo(context, culture, value, destinationType); - } - - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - return true; - - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string) - { - string val = (string) value; - StringListOption option = new StringListOption(); - List strings = option.StringList; - char[] splitchars = {';'}; - string[] substrings = val.Split(splitchars); - - foreach (string s in substrings) - { - string x = s.Trim(); - - if (x != "") - strings.Add(x); - } - - return option; - } - - return base.ConvertFrom(context, culture, value); - } - }; - - ///========================================== - /// StringOptionConverter - ///========================================== - - public class StringOptionConverter : StringConverter - { - /*=== overrides ===*/ - - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - if (destinationType == typeof(StringOption)) - return true; - - return base.CanConvertTo(context, destinationType); - } - - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) - { - if (destinationType == typeof(string) - && value is StringOption) - { - StringOption option = (StringOption) value; - - return option.Value; - } - - return base.ConvertTo(context, culture, value, destinationType); - } - - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - return true; - - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string) - { - string val = (string) value; - StringOption option = new StringOption(); - - option.Value = val; - - return option; - } - - return base.ConvertFrom(context, culture, value); - } - }; - - ///========================================== - /// CommandConverter - ///========================================== - - public class CommandConverter : StringConverter - { - /*=== data ===*/ - - private static StandardValuesCollection comboValues = null; - - public static StandardValuesCollection ComboValues - { - get - { - if (comboValues == null) - { - List strings = new List(); - - foreach (Command c in opCpp2005.App().Commands) - { - if (c.Name != "") - strings.Add(c.Name); - } - - strings.Sort(); - strings.Insert(0, ""); - - List stringOptions = new List(); - - foreach (string s in strings) - stringOptions.Add(new StringOption(s)); - - comboValues = new StandardValuesCollection(stringOptions); - } - - return comboValues; - } - } - - /*=== overrides ===*/ - - // Tells the property grid that we support a list of strings. - public override bool GetStandardValuesSupported(ITypeDescriptorContext context) - { - return true; - } - - // Says that we can't edit the combo box. - public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) - { - return true; - } - - // Return the initial list of values that should be in the combo box. - public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) - { - return ComboValues; - } - - // This method tells the property grid that we can convert to a BoolOption from a string. - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - if (destinationType == typeof(StringOption)) - return true; - - return base.CanConvertTo(context, destinationType); - } - - // This method actually converts from a StringOption to a string. - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) - { - if (destinationType == typeof(string) - && value is StringOption) - { - StringOption option = (StringOption) value; - - return option.Value; - } - - return base.ConvertTo(context, culture, value, destinationType); - } - - // This method tells the property grid that we can convert from a string to a BoolOption. - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - return true; - - return base.CanConvertFrom(context, sourceType); - } - - // This method actually converts from a string to a BoolOption. - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string) - { - string val = (string) value; - StringOption option = new StringOption(); - - option.Value = val; - - return option; - } - - return base.ConvertFrom(context, culture, value); - } - }; - - ///========================================== - /// BoolOptionConverter - ///========================================== - - public abstract class BoolOptionConverter : StringConverter - { - /*=== overrides ===*/ - - public override bool GetStandardValuesSupported(ITypeDescriptorContext context) - { - return true; - } - - public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) - { - return true; - } - - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - if (destinationType == typeof(BoolOption)) - return true; - - return base.CanConvertTo(context, destinationType); - } - - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) - { - if (destinationType == typeof(string) - && value is BoolOption) - { - BoolOption option = (BoolOption) value; - - if (option.UseDefault) - return "Default"; - - return option.Value.ToString(); - } - - return base.ConvertTo(context, culture, value, destinationType); - } - - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - return true; - - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string) - { - string val = (string) value; - BoolOption option = new BoolOption(); - - if (val == "True") - option.Value = true; - else if (val == "False") - option.Value = false; - else if (val == "Default") - { - option.Value = false; - option.UseDefault = true; - } - - return option; - } - - return base.ConvertFrom(context, culture, value); - } - }; - - ///========================================== - /// GlobalBoolOptionConverter - ///========================================== - - public class GlobalBoolOptionConverter : BoolOptionConverter - { - /*=== data ===*/ - - private StandardValuesCollection comboValues = null; - - public StandardValuesCollection ComboValues - { - get - { - if (comboValues == null) - { - comboValues = new StandardValuesCollection(new BoolOption[] {new BoolOption(true), - new BoolOption(false)}); - } - - return comboValues; - } - } - - /*=== overrides ===*/ - - public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) - { - return ComboValues; - } - }; - - ///========================================== - /// ProjectBoolOptionConverter - ///========================================== - - public class ProjectBoolOptionConverter : BoolOptionConverter - { - /*=== data ===*/ - - private StandardValuesCollection comboValues = null; - - public StandardValuesCollection ComboValues - { - get - { - if (comboValues == null) - { - BoolOption defaultOption = new BoolOption(); - defaultOption.UseDefault = true; - - comboValues = new StandardValuesCollection(new BoolOption[] {new BoolOption(true), - new BoolOption(false), - defaultOption}); - } - - return comboValues; - } - } - - /*=== overrides ===*/ - - public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) - { - return ComboValues; - } - }; - - ///========================================== - /// GlobalIntOptionConverter - ///========================================== - - public class GlobalIntOptionConverter : StringConverter - { - /*=== overrides ===*/ - - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - if (destinationType == typeof(IntOption)) - return true; - - return base.CanConvertTo(context, destinationType); - } - - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) - { - if (destinationType == typeof(string) - && value is IntOption) - { - IntOption option = (IntOption) value; - - return option.Value.ToString(); - } - - return base.ConvertTo(context, culture, value, destinationType); - } - - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - return true; - - return base.CanConvertFrom(context, sourceType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string) - { - string val = (string) value; - IntOption option = new IntOption(); - - try - { - option.Value = Convert.ToInt32(val); - - return option; - } - catch (Exception) {} - } - - return base.ConvertFrom(context, culture, value); - } - }; - - ///========================================== - /// ProjectIntOptionConverter - ///========================================== - - public class ProjectIntOptionConverter : StringConverter - { - /*=== data ===*/ - - private List ints = new List(); - - public StandardValuesCollection ComboValues - { - get - { - ints.Sort(); - - List intOptions = new List(); - - foreach (int i in ints) - intOptions.Add(new IntOption(i)); - - IntOption defaultOption = new IntOption(); - defaultOption.UseDefault = true; - - intOptions.Add(defaultOption); - - return new StandardValuesCollection(intOptions); - } - } - - /*=== overrides ===*/ - - public override bool GetStandardValuesSupported(ITypeDescriptorContext context) - { - return true; - } - - public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) - { - return ComboValues; - } - - public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) - { - if (destinationType == typeof(IntOption)) - return true; - - return base.CanConvertTo(context, destinationType); - } - - public override object ConvertTo(ITypeDescriptorContext context, - CultureInfo culture, - object value, - Type destinationType) - { - if (destinationType == typeof(string) - && value is IntOption) - { - IntOption option = (IntOption) value; - - if (option.UseDefault) - return "Default"; - else if (!ints.Exists(delegate(int x) { return x == option.Value; })) - ints.Add(option.Value); - - return option.Value.ToString(); - } - - return base.ConvertTo(context, culture, value, destinationType); - } - - // This method tells the property grid that we can convert from a string to a StringOption. - public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) - { - if (sourceType == typeof(string)) - return true; - - return base.CanConvertFrom(context, sourceType); - } - - // This method actually converts from a string to a list of strings. - public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) - { - if (value is string) - { - string val = (string) value; - IntOption option = new IntOption(); - - if (val == "Default") - { - option.Value = 0; - option.UseDefault = true; - - return option; - } - - try - { - option.Value = Convert.ToInt32(val); - - if (!ints.Exists(delegate(int x) { return x == option.Value; })) - ints.Add(option.Value); - - return option; - } - catch (Exception) {} - } - - return base.ConvertFrom(context, culture, value); - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Attributes.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Attributes.cs deleted file mode 100644 index d17366e..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Attributes.cs +++ /dev/null @@ -1,51 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Attributes.cs -/// Date: 09/24/2007 -/// -/// Description: -/// -/// Contains attribute utility methods. -///**************************************************************** - -using System; -using System.Reflection; -using System.Collections.Generic; - -namespace opGamesLLC.opCpp2005 -{ - public class AttributeUtility - { - // Returns all attributes from an object as a list. - public static List GetAllAttributes(FieldInfo field, bool inherit) - { - Array a = (Array) field.GetCustomAttributes(inherit); - - List attrs = new List(); - - foreach (Attribute attr in a) - attrs.Add(attr); - - return attrs; - } - - // Returns an attribute of a specific type from a list, or null if none exist. - public static Attribute GetAttribute(List attrs) - { - Type tType = typeof(T); - - foreach (Attribute a in attrs) - { - Type aType = a.GetType(); - - if (tType == aType) - return a; - } - - return null; - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Beta.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Beta.cs deleted file mode 100644 index e8db566..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Beta.cs +++ /dev/null @@ -1,27 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Beta.cs -/// Date: 12/13/2007 -/// -/// Description: -/// -/// Beta-related code. -///**************************************************************** - -namespace opGamesLLC.opCpp2005 -{ - public class opBeta - { - /*=== data ===*/ - - private static bool isBeta = false; - - public static bool IsBeta - { - get { return isBeta; } - } - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Blacklist.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Blacklist.cs deleted file mode 100644 index 7ee1380..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Blacklist.cs +++ /dev/null @@ -1,33 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Blacklist.cs -/// Date: 09/28/2007 -/// -/// Description: -/// -/// Put blacklisted serials in here. -///**************************************************************** - -using System.Collections.Generic; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opLicenseUtility - { - // This method populates the blacklist. - private static void PopulateBlacklist() - { - blacklist = new Dictionary>(); - - // "Kevin Depue", "1", "6514b252542f74e943c83480f22c237a" - //List keys = new List(); - - //keys.Add("KevinDepue1" + ExtraHashString); - - //blacklist.Add("6514b252542f74e943c83480f22c237a", keys); - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Encryption.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Encryption.cs deleted file mode 100644 index 6391b3b..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Encryption.cs +++ /dev/null @@ -1,42 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Encryption.cs -/// Date: 09/27/2007 -/// -/// Description: -/// -/// Contains encryption methods. -///**************************************************************** - -using System.Security.Cryptography; -using System.Text; - -namespace opGamesLLC.opCpp2005 -{ - ///========================================== - /// EncryptionUtility - ///========================================== - - // Contains some utility methods for encryption. - public class EncryptionUtility - { - // This method returns the md5 hash string, given a key. - public static string md5(string key) - { - MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); - byte[] bs = Encoding.UTF8.GetBytes(key); - - bs = md5.ComputeHash(bs); - - StringBuilder s = new StringBuilder(); - - foreach (byte b in bs) - s.Append(b.ToString("x2").ToLower()); - - return s.ToString(); - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/LicenseUtility.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/LicenseUtility.cs deleted file mode 100644 index dcb3ec8..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/LicenseUtility.cs +++ /dev/null @@ -1,238 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Lockdown.cs -/// Date: 09/27/2007 -/// -/// Description: -/// -/// Contains addin lockdown/trial code. -///**************************************************************** - -using System; -using System.IO; -using System.Collections.Generic; -using Microsoft.Win32; - -namespace opGamesLLC.opCpp2005 -{ - public partial class opLicenseUtility - { - /*=== construction ===*/ - - public opLicenseUtility() - { - - } - - /*=== data ===*/ - - // Name of the license file. - - private static readonly string LicenseFileName = "opC++.oplicense"; - - // String appended to the end of the hash string. - - private static readonly string ExtraHashString = "1337haxor? .. :P"; - - // String used in generating trial hashes. - - private static readonly string TrialRunString = "opCppTrialRun#"; - - // Number of times the trial version can be run. - - private static readonly int maxTrialRuns = 50; - - public static int MaxTrialRuns - { - get { return maxTrialRuns; } - } - - // The number of times this addin has been run in trial mode so far. - - private static int numTrialRuns; - - public static int NumTrialRuns - { - get { return numTrialRuns; } - } - - // The full path to the license file. - - public static string FullLicenseFileName - { - get { return Paths.GetGlobalOptionsPath() + LicenseFileName; } - } - - // The blacklist. - - private static bool havePopulatedBlacklist = false; - - private static Dictionary > blacklist = null; - - public static Dictionary > Blacklist - { - get - { - if (!havePopulatedBlacklist) - { - PopulateBlacklist(); - - havePopulatedBlacklist = true; - } - - return blacklist; - } - } - - /*=== utility ===*/ - - // Returns true if the license file contents have been blacklisted. - public static bool IsBlacklisted(string key, string hash) - { - Dictionary> bl = Blacklist; - - if (bl.ContainsKey(hash)) - { - List keys = bl[hash]; - - foreach (string k in keys) - { - if (k == key) - { - return true; - } - } - } - - return false; - } - - // Returns true if the license file contents are valid. - public static bool IsValidLicenseCombination(string name, string licenseId, string serial) - { - name = name.Replace(" ", "").Trim(); - licenseId = licenseId.Replace(" ", "").Trim(); - serial = serial.Replace(" ", "").Trim(); - - string key = name + licenseId + ExtraHashString; - string hash = serial; - - return EncryptionUtility.md5(key) == hash - && !IsBlacklisted(key, hash); - } - - // Generates a license file. - public static bool GenerateLicenseFile(string name, string licenseId, string serial) - { - StreamWriter r; - - try - { - r = new StreamWriter(FullLicenseFileName); - } - catch (Exception) - { - return false; - } - - r.Write(name.Trim() + "\r\n" + licenseId.Trim() + "\r\n" + serial.Trim()); - r.Flush(); - r.Close(); - - return true; - } - - // This method tries to validate the license file. - public static bool LicenseIsValid() - { - StreamReader r; - - // Try to load the file. - try - { - r = new StreamReader(FullLicenseFileName); - } - catch (Exception) - { - return false; - } - - // Read the contents of the file. - string file = r.ReadToEnd(); - - r.Close(); - - // Make sure the file has at least 3 lines. - char[] splitchars = {'\n'}; - string[] strings = file.Split(splitchars); - - if (strings.Length < 3) - return false; - - // Build the key and grab the hash string. - string name = ((string) strings.GetValue(0)).Replace("\r", ""); - string licenseId = ((string) strings.GetValue(1)).Replace("\r", ""); - string serial = ((string) strings.GetValue(2)).Replace("\r", ""); - - // If the key and hash don't match, the license is invalid. - if (!IsValidLicenseCombination(name, licenseId, serial)) - return false; - - return true; - } - - // Returns true if we're in trial mode. - public static bool InTrialMode() - { - List hashes = new List(); - - // First generate the list of hashes. - for (int i = 1; i <= maxTrialRuns; i++) - hashes.Add(EncryptionUtility.md5(TrialRunString + i)); - - // Build the path to where we store the number of trial runs. - string key = @"SOFTWARE\Classes\CLSID\{" + GuidList.TrialVersionGuid + "}"; - - // If the registry key exists, see if we're in trial mode. - if (RegistryUtility.KeyExists(Registry.LocalMachine, key)) - { - // Reset this key so it looks ligit. - RegistryUtility.SetKey(Registry.LocalMachine, key + "\\InprocServer32", "", "wsock32.dll"); - - // Now read the key that has the number of trial runs hash. - string hash = RegistryUtility.GetKey(Registry.LocalMachine, key + "\\ProgID", "", ""); - - // See if this hash is in our list of hashes. - for (int i = 1; i < maxTrialRuns; i++) - { - // We found a match, so increment the number of runs in the registry. - if (hash == hashes[i - 1]) - { - RegistryUtility.SetKey(Registry.LocalMachine, key + "\\ProgID", "", hashes[i]); - - numTrialRuns = i + 1; - - return true; - } - } - - RegistryUtility.SetKey(Registry.LocalMachine, key + "\\ProgID", "", ""); - } - // The registry key doesn't exist, so create it and start trial mode at 1. - else - { - RegistryUtility.SetKey(Registry.LocalMachine, key + "\\InprocServer32", "", "wsock32.dll"); - RegistryUtility.SetKey(Registry.LocalMachine, key + "\\ProgID", "", hashes[0]); - - numTrialRuns = 1; - - return true; - } - - return false; - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Paths.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Paths.cs deleted file mode 100644 index 09a5e0c..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Paths.cs +++ /dev/null @@ -1,315 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Paths.cs -/// Date: 09/22/2007 -/// -/// Description: -/// -/// Contains utility methods for getting different paths. -///**************************************************************** - -using System; -using System.IO; -using System.Reflection; -using EnvDTE; - -namespace opGamesLLC.opCpp2005 -{ - public class Paths - { - /*=== utility ===*/ - - // Returns the location of the running application (path and filename). - public static string GetFullAppName() - { - Assembly a = Assembly.GetExecutingAssembly(); - - return a.Location; - } - - // Returns the location of the running application (path only). - public static string GetFullAppPath() - { - string s = GetFullAppName(); - return StringUtility.RLeft(s, "\\") + "\\"; - } - - // Returns true if we're to use program files and not the - // application data folder. - public static bool IsXPFolderHierarchy() - { - OperatingSystem osInfo = Environment.OSVersion; - - return osInfo.Version.Major > 5 - || (osInfo.Version.Major == 5 && osInfo.Version.Minor >= 1); - } - - // Returns the application data folder for the current user. - public static string GetApplicationDataPath() - { - return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - } - - // Returns the directory that global options are written to. - public static string GetGlobalOptionsPath() - { - string path; - - // If this is a newer os, write the global options to the the user's application - // data folder. Otherwise, write to the compiler directory. - if (IsXPFolderHierarchy()) - path = GetApplicationDataPath() + "\\opC++\\"; - else - path = GetFullAppPath(); - - return path; - } - - // Returns the path of the global options file. - public static string GetGlobalOptionsFilename() - { - return GetGlobalOptionsPath() + GlobalOptionsFile; - } - - // Returns the path of the project options file for the input project. - public static string GetProjectOptionsFilename(Project project) - { - if (project == null) - return ""; - - return ProjectUtility.GetFullProjectPath(project) + ProjectUtility.GetProjectName(project) + ProjectOptionsFile; - } - - // Resolves a path with visual studio macros in it. - public static string ResolveVisualStudioMacros(Project project, string path) - { - // Replace $(PlatformName) with the platform name. - path = path.Replace("$(PlatformName)", ProjectUtility.GetActivePlatform(project)); - - // Replace $(ConfigurationName) with the configuration name. - path = path.Replace("$(ConfigurationName)", ProjectUtility.GetActiveConfiguration(project)); - - // Replace $(ProjectName) with the project name. - path = path.Replace("$(ProjectName)", ProjectUtility.GetProjectName(project)); - - // Replace $(SolutionName) with the solution name. - path = path.Replace("$(SolutionName)", ProjectUtility.GetSolutionName()); - - // Replace $(ProjectDir) with the project directory. - path = path.Replace("$(ProjectDir)", ProjectUtility.GetFullProjectPath(project)); - - // Replace $(SolutionDir) with the solution directory. - path = path.Replace("$(SolutionDir)", ProjectUtility.GetFullSolutionPath()); - - //if we still have $() it should error really! - - return path; - } - - public static string GetParentPath(string path, int depth) - { - string filename; - return GetParentPath(path, depth, out filename); - } - - public static string GetParentPath(string path, int depth, out string filename) - { - //if we start with a '\', return it minus the slash - // - if (path.Length > 0 && path[path.Length - 1] == '\\') - { - filename = ""; - return path.Substring(0, path.Length - 1); - } - - int position = path.Length - 1; - - while (depth >= 0) - { - while (position >= 0) - { - bool found = path[position] == '\\'; - - position--; - - if (found) - break; - } - - depth--; - } - - position++; - - string dir = path.Substring(0, position); - filename = path.Substring(position + 1, path.Length - position - 1); - - return dir; - } - - public static string GeneratedToOriginalPath(string generated, int gendepth, int mydepth) - { - //mydepth = depth from generated directory start - //gendepth = depth from project folder - - //first, utilizing mydepth, can get the resolvable path - //second, utilizing gendepth, can get the absolute project path - string filename; - string generatedpath = GetParentPath(generated, mydepth - gendepth, out filename); - - string projectpath = GetParentPath(generatedpath, gendepth - 1); - - filename = StringUtility.RLeft(filename, "."); - - string newpath = filename.Replace("_/", "../"); - - // windows absolute path - if (projectpath.StartsWith("_win/")) - { - newpath = StringUtility.Right(newpath, 5); - newpath.Insert(1, ":"); - } - // linux root path - else if (newpath.StartsWith("_root/")) - { - newpath = StringUtility.Right(newpath, 5); - } - // network share path - else if (newpath.StartsWith("_net/")) - { - newpath = "/" + StringUtility.Right(newpath, 4); - } - - string resolvedpath = newpath; - - //third, once the resolvable path is available, can append relative to project path - //also can just utilize absolute paths - if (System.IO.Path.IsPathRooted(resolvedpath)) - { - //absolute case - return resolvedpath; - } - - //relative case - return projectpath + "\\" + resolvedpath; - } - - // original path must be absolute - public static string OriginalToGeneratedPath(Project project, string originalpath) - { - string projectpath = StringUtility.RLeft(project.FullName, "\\") + "\\"; - - string pathstring = Paths.EvaluateRelativePath(projectpath, originalpath); - - if (Path.IsPathRooted(pathstring)) - { - //cases: // - // / - // c:/ - - if(pathstring.StartsWith("/")) - { - pathstring = "_root" + pathstring; - } - else if(pathstring.StartsWith("//")) - { - pathstring = "_net" + StringUtility.Right(pathstring,1); - } - else - { - //c:/ - pathstring.Replace(":",""); - pathstring = "_win/" + pathstring; - } - } - - string relativepath = pathstring.Replace("..\\", "_\\"); - - // 3. if it's a complete network path, I need to handle the root - - //TODO: get the generated directory from the project settings - string generated = OptionsManager.GetProjectOptions(project).GetActiveConfiguration().Options.GeneratedDirectory.Value; - - if(generated == "") - generated = OptionsManager.GetGlobalOptions().GetGlobalConfiguration().Options.GeneratedDirectory.Value; - - generated = ResolveVisualStudioMacros(project, generated); - - generated = MakeValidPath(generated); - - //resolve the macros - return projectpath + generated + relativepath; - } - - //make a directory path valid (have a \ on the end) - public static string MakeValidPath(string s) - { - if (s.EndsWith("\\")) - return s; - return s + "\\"; - } - - // gets the path of a file relative to another file - public static string RelativePath(string basefile, string relativefile) - { - basefile = StringUtility.RLeft(basefile, "\\"); - string newpath = basefile + "\\" + relativefile; - return System.IO.Path.GetFullPath(newpath); - } - - public static string EvaluateRelativePath(string mainDirPath, string absoluteFilePath) - { - string[] firstPathParts = mainDirPath.Trim(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar); - string[] - secondPathParts = absoluteFilePath.Trim(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar); - - int sameCounter = 0; - for (int i = 0; i < Math.Min(firstPathParts.Length,secondPathParts.Length); i++) - { - if ( !firstPathParts[i].ToLower().Equals(secondPathParts[i].ToLower()) ) - { - break; - } - sameCounter++; - } - - if (sameCounter == 0) - { - return absoluteFilePath; - } - - string newPath = ""; - for (int i = sameCounter; i < firstPathParts.Length; i++) - { - if (i > sameCounter) - { - newPath += Path.DirectorySeparatorChar; - } - newPath += ".."; - } - if (newPath.Length == 0) - { - newPath = "."; - } - for (int i = sameCounter; i < secondPathParts.Length; i++) - { - newPath += Path.DirectorySeparatorChar; - newPath += secondPathParts[i]; - } - return newPath; - } - - /*=== data ===*/ - - // Global options file name. - - private static readonly string GlobalOptionsFile = "GlobalOptions.opoptions"; - - // Project options file name. - - private static readonly string ProjectOptionsFile = "Options.opoptions"; - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Registry.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Registry.cs deleted file mode 100644 index f2c7bd3..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Registry.cs +++ /dev/null @@ -1,55 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Registry.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for manipulating the registry. -///**************************************************************** - -using System; -using Microsoft.Win32; - -namespace opGamesLLC.opCpp2005 -{ - public class RegistryUtility - { - /*=== utility ===*/ - - // Returns true if the specified registry key exists. - public static bool KeyExists(RegistryKey baseKey, string key) - { - RegistryKey regKey = baseKey.OpenSubKey(key); - - return regKey != null; - } - - // Get a key from the registry. - public static string GetKey(RegistryKey baseKey, string key, string value, string defaultsetting) - { - RegistryKey regkey = baseKey.CreateSubKey(key); - string result = (string) regkey.GetValue(value); - - if (result == null) - { - regkey.SetValue(value, defaultsetting); - - return defaultsetting; - } - - return result; - } - - // Set a key in the registry. - public static void SetKey(RegistryKey baseKey, string key, string value, string setting) - { - RegistryKey regkey = baseKey.CreateSubKey(key); - - regkey.SetValue(value, setting); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/StringUtility.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/StringUtility.cs deleted file mode 100644 index 4a36515..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/StringUtility.cs +++ /dev/null @@ -1,53 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: StringUtility.cs -/// Date: 09/22/2007 -/// -/// Description: -/// -/// String utility stuff. -///**************************************************************** - -namespace opGamesLLC -{ - class StringUtility - { - // Returns everything left of the substring 'leftof'. - public static string RLeft(string s, string leftof) - { - int i = s.LastIndexOf(leftof); - - if (i == -1) - return ""; - return s.Substring(0, i); - } - - // Returns everything right of the substring 'leftof'. - public static string RRight(string s, string rightof) - { - int i = s.LastIndexOf(rightof); - - if (i == -1) - return ""; - return s.Substring(i + 1, s.Length - i - 1); - } - - public static string Right(string s, int value) - { - return s.Substring(value + 1, s.Length - value - 1); - } - - public static string Rep(string rep, int numtimes) - { - string s = ""; - - for (int i = 0; i < numtimes; i++) - s += rep; - - return s; - } - }; -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Version.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Version.cs deleted file mode 100644 index 31faa20..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Version.cs +++ /dev/null @@ -1,54 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Version.cs -/// Date: 12/12/2007 -/// -/// Description: -/// -/// Class to manage addin version. -///**************************************************************** - -using System; -using System.IO; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - public class opVersion - { - /*=== data ===*/ - - private static float version = 0.91f; - - public float Version - { - get { return version; } - } - - private static string versionstring = "0.9.1"; - - public string VersionString - { - get { return versionstring; } - } - - /*=== utility ===*/ - - // Returns version string. - public static string GetVersionString() - { - string s; - DateTime date = File.GetLastWriteTime( System.Reflection.Assembly.GetExecutingAssembly().Location ); - - s = "opC++ MSVS 2005 Addin v. " + versionstring + "\r\n"; - s += "Build Date: " + date.ToString("MMM") + " " + date.Day + " " + date.Year + - " @ " + StringUtility.RLeft( date.TimeOfDay.ToString(), "." ) + "\r\n"; - s += "Copyright 2008 opGames LLC"; - - return s; - } - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Xml.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Xml.cs deleted file mode 100644 index 0c4132a..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/Src/Utility/Xml.cs +++ /dev/null @@ -1,127 +0,0 @@ -///**************************************************************** -/// Copyright 2008 opGames LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Xml.cs -/// Date: 09/21/2007 -/// -/// Description: -/// -/// Xml utility methods. -///**************************************************************** - -using System; -using System.Xml; -using System.Xml.Serialization; -using System.IO; -using System.Collections.Generic; - -namespace opGamesLLC.opCpp2005 -{ - public class XmlUtility - { - // Saves this set of options as xml to the specified file. - public static bool SaveXml(string file, ref T t) - { - XmlSerializer s; - TextWriter w; - - // Try to create the serializer. - try - { - s = new XmlSerializer(typeof(T)); - } - catch (Exception) - { - return false; - } - - // Try to open the file. - try - { - w = new StreamWriter(file); - } - catch (Exception) - { - return false; - } - - // Try to serialize the file. - try - { - s.Serialize(w, t); - } - catch (Exception) - { - return false; - } - - w.Close(); - - return true; - } - - // Loads a set of options from the specified xml file to this object. - public static bool LoadXml(string file, ref T t) - { - XmlSerializer s; - TextReader r; - - // Try to create the serializer. - try - { - s = new XmlSerializer(typeof(T)); - } - catch (Exception) - { - return false; - } - - // Try to open the file. - try - { - r = new StreamReader(file); - } - catch (Exception) - { - return false; - } - - // Try to deserialize the file. - try - { - t = (T) s.Deserialize(r); - } - catch (Exception) - { - return false; - } - - r.Close(); - - return true; - } - - // Returns a list of xml elements matching a certain tag name to a depth of n. - // If a matching tag is found, it will not look below that tag for more elements. - public static void GetElementsByTag(XmlElement element, string tag, int depth, List nodes) - { - if (depth <= 0) - return; - - foreach (object o in element.ChildNodes) - { - XmlElement e = o as XmlElement; - - if (e == null) - continue; - - if (e.Name == tag) - nodes.Add(e); - else - GetElementsByTag(e, tag, depth - 1, nodes); - } - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/VSCT_overrides.targets b/opcplusplus/Addins/opCpp2005/opCpp2005/VSCT_overrides.targets deleted file mode 100644 index 5dd971c..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/VSCT_overrides.targets +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(PrepareResourcesDependsOn);MergeCtoResource - $(MergeCtoResourceDependsOn);GenerateListOfCTO;CtcCompile;VSCTCompile;ResGen;GenerateResourceToMergeWithCTO - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/VSPackage.Designer.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/VSPackage.Designer.cs deleted file mode 100644 index a24481b..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/VSPackage.Designer.cs +++ /dev/null @@ -1,253 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.1433 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace opGamesLLC.opCpp2005 { - 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", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class VSPackage { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal VSPackage() { - } - - /// - /// 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("opGamesLLC.opCpp2005.VSPackage", typeof(VSPackage).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; - } - } - - internal static System.Drawing.Bitmap _1 { - get { - object obj = ResourceManager.GetObject("1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized string similar to opC++ Compiler. - /// - internal static string _110 { - get { - return ResourceManager.GetString("110", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to The opC++ compiler generates standard C++ code from extended opC++ code. For more information visit http://www.opcpp.com. - ///Copyright 2007 opGames LLC. - /// - internal static string _112 { - get { - return ResourceManager.GetString("112", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to AAK9E2R3PRHPC1CCM2PCZHHDJPD2CQRIJRJ8ZJZDQEERAPQCDPAAPEAIH9EMACA3DRKMJIH8IDCTMIPCKCZDMKRMKRQCZRK9CCH8MMCTPZHAARRKHRQMZMEKK2ARJEAT. - /// - internal static string _113 { - get { - return ResourceManager.GetString("113", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 1.0. - /// - internal static string _114 { - get { - return ResourceManager.GetString("114", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to opC++ Compiler. - /// - internal static string _115 { - get { - return ResourceManager.GetString("115", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Global Options. - /// - internal static string _116 { - get { - return ResourceManager.GetString("116", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 1.0. - /// - internal static string _117 { - get { - return ResourceManager.GetString("117", resourceCulture); - } - } - - internal static System.Drawing.Bitmap _1337 { - get { - object obj = ResourceManager.GetObject("1337", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _2 { - get { - object obj = ResourceManager.GetObject("2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Icon _256 { - get { - object obj = ResourceManager.GetObject("256", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Bitmap _257 { - get { - object obj = ResourceManager.GetObject("257", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Icon _258 { - get { - object obj = ResourceManager.GetObject("258", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - internal static System.Drawing.Bitmap _3 { - get { - object obj = ResourceManager.GetObject("3", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _301 { - get { - object obj = ResourceManager.GetObject("301", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _302 { - get { - object obj = ResourceManager.GetObject("302", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _303 { - get { - object obj = ResourceManager.GetObject("303", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _304 { - get { - object obj = ResourceManager.GetObject("304", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _305 { - get { - object obj = ResourceManager.GetObject("305", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _306 { - get { - object obj = ResourceManager.GetObject("306", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _307 { - get { - object obj = ResourceManager.GetObject("307", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _308 { - get { - object obj = ResourceManager.GetObject("308", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _309 { - get { - object obj = ResourceManager.GetObject("309", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _4 { - get { - object obj = ResourceManager.GetObject("4", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Icon _400 { - get { - object obj = ResourceManager.GetObject("400", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/VSPackage.resx b/opcplusplus/Addins/opCpp2005/opCpp2005/VSPackage.resx deleted file mode 100644 index f7029a1..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/VSPackage.resx +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - opC++ Compiler - - - The opC++ compiler generates standard C++ code from extended opC++ code. For more information visit http://www.opcpp.com. -Copyright 2007 opGames LLC - - - - Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - AAK9E2R3PRHPC1CCM2PCZHHDJPD2CQRIJRJ8ZJZDQEERAPQCDPAAPEAIH9EMACA3DRKMJIH8IDCTMIPCKCZDMKRMKRQCZRK9CCH8MMCTPZHAARRKHRQMZMEKK2ARJEAT - - - 1.0 - compiler version - - - opC++ Compiler - - - Global Options - - - Resources\OpCPPIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\OpCPPIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\OpCPPIcon256.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\CleanSolution.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\ProjectBuild.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\OpCPPIcon16x16.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\SolutionBuild.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\OpCPPSettings.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - 1.0 - addin version - - - Resources\OCPPIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\OOHIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\DialectIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\OHIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\featuresicon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\opInclude.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\AttributeIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\VisualizeIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\StopIcon.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/VsPkg.cs b/opcplusplus/Addins/opCpp2005/opCpp2005/VsPkg.cs deleted file mode 100644 index e4c52e6..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/VsPkg.cs +++ /dev/null @@ -1,276 +0,0 @@ -// VsPkg.cs : Implementation of opCpp2005 -// - -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.Xml; -using System.Xml.Serialization; -using EnvDTE80; -using EnvDTE; -using System.IO; -using System.Collections.Generic; -using System.Reflection; -using System.Windows.Forms; - -namespace opGamesLLC.opCpp2005 -{ - //[ProvideAutoLoad("{F1536EF8-92EC-443C-9ED7-FDADF150DA82}")] - [ProvideAutoLoad(ContextGuids.vsContextGuidSolutionExists)] - /// - /// This is the class that implements the package exposed by this assembly. - /// - /// The minimum requirement for a class to be considered a valid package for Visual Studio - /// is to implement the IVsPackage interface and register itself with the shell. - /// This package uses the helper classes defined inside the Managed Package Framework (MPF) - /// to do it: it derives from the Package class that provides the implementation of the - /// IVsPackage interface and uses the registration attributes defined in the framework to - /// register itself and its components with the shell. - /// - // This attribute tells the registration utility (regpkg.exe) that this class needs - // to be registered as package. - [PackageRegistration(UseManagedResourcesOnly = true)] - // A Visual Studio component can be registered under different registry roots; for instance - // when you debug your package you want to register it in the experimental hive. This - // attribute specifies the registry root to use if no one is provided to regpkg.exe with - // the /root switch. - [DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\8.0")] - // This attribute is used to register the informations needed to show the this package - // in the Help/About dialog of Visual Studio. - [InstalledProductRegistration(true, null, null, null)] - // In order be loaded inside Visual Studio in a machine that has not the VS SDK installed, - // package needs to have a valid load key (it can be requested at - // http://msdn.microsoft.com/vstudio/extend/). This attributes tells the shell that this - // package has a load key embedded in its resources. - [ProvideLoadKey("Standard", "1.0", "opC++ Compiler", "opGames LLC", 113)] - // This attribute is needed to let the shell know that this package exposes some menus. - [ProvideMenuResource(1000, 1)] - [Guid(GuidList.guidopCpp2005PkgString)] - public sealed partial class opCpp2005 : Package, IVsInstalledProduct//, IOleCommandTarget - { - /// - /// Default constructor of the package. - /// Inside this method you can place any initialization code that does not require - /// any Visual Studio service because at this point the package object is created but - /// not sited yet inside Visual Studio environment. The place to do all the other - /// initialization is the Initialize method. - /// - public opCpp2005() - { - Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString())); - instance = this; - } - - /// - /// Initialization of the package; this method is called right after the package is sited, so this is the place - /// where you can put all the initialization code that rely on services provided by VisualStudio. - /// - protected override void Initialize() - { - try - { -// try -// { -// TextWriter log = new StreamWriter("opcpp-addin.log"); -// -// log.WriteLine("Starting addin : " + System.DateTime.Now.ToString()); -// log.Flush(); - - // happens in /setup mode - if (App() == null) - return; - -// log.WriteLine("app is not null"); -// log.Flush(); -// -// } -// catch (Exception) -// { -// } - - Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString())); - base.Initialize(); - - // Add our command handlers for menu (commands must exist in the .ctc file) - // Setup the Toolbar, Commands - CreateCommands(); - CreateTextMarkers(); - - // If this is xp or greater, check to see if the opCpp application data path is valid. - if (Paths.IsXPFolderHierarchy()) - { - string opCppUserPath = Paths.GetGlobalOptionsPath(); - - if (!Directory.Exists(opCppUserPath)) - Directory.CreateDirectory(opCppUserPath); - } - - Log("Starting opC++ Addin: " + System.DateTime.Now.ToString()); - Log("-----------------------------------------"); - - if (opBeta.IsBeta) - { - // do nothing - } - // First, check and see if there is a valid license. - else if ( !opLicenseUtility.LicenseIsValid() ) - { - // Check to see if we're in trial mode. - if (opLicenseUtility.InTrialMode()) - { - TrialVersionForm form = new TrialVersionForm(); - string runsRemaining = ""; - - runsRemaining += (opLicenseUtility.MaxTrialRuns - opLicenseUtility.NumTrialRuns); - - form.RunsRemaining = runsRemaining; - - form.ShowDialog(); - } - else - { - // We're not in trial mode, so display a message and lock down. - LockAddin(); - - AddinLockedForm form = new AddinLockedForm(); - - form.ShowDialog(); - } - } - } - catch (Exception e) - { - LogException(e); - } - } - - #region IVsInstalledProduct Members - - //NOTE: no longer called in vs2005 (vs2003 relic) - public int IdBmpSplash(out uint pIdBmp) - { - pIdBmp = 400; - return VSConstants.S_OK; - } - - public int IdIcoLogoForAboutbox(out uint pIdIco) - { - Log("asking for icon: " + (App() != null ? "about box" : "startup screen")); - - if (App() != null) //about box - pIdIco = 400; //32 x 32 (Help box) - else - pIdIco = 258; //16 x 16 during devenv /setup - return VSConstants.S_OK; - } - - public int OfficialName(out string pbstrName) - { - pbstrName = GetResourceString("@110"); - return VSConstants.S_OK; - } - - public int ProductDetails(out string pbstrProductDetails) - { - pbstrProductDetails = GetResourceString("@112"); - return VSConstants.S_OK; - } - - public int ProductID(out string pbstrPID) - { - pbstrPID = GetResourceString("@114"); - return VSConstants.S_OK; - } - - #endregion - - /// - /// This method loads a localized string based on the specified resource. - /// - /// Resource to load - /// String loaded for the specified resource - public string GetResourceString(string resourceName) - { - string resourceValue; - IVsResourceManager resourceManager = (IVsResourceManager)GetService(typeof(SVsResourceManager)); - if (resourceManager == null) - { - throw new InvalidOperationException("Could not get SVsResourceManager service. Make sure the package is Sited before calling this method"); - } - Guid packageGuid = this.GetType().GUID; - int hr = resourceManager.LoadResourceString(ref packageGuid, -1, resourceName, out resourceValue); - Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); - return resourceValue; - } - - // Returns the current application object. - public static DTE2 App() - { - if (ApplicationObject == null) - ApplicationObject = (DTE2) GetGlobalService(typeof(SDTE)); - - return ApplicationObject; - } - - private static DTE2 ApplicationObject; - - // A reference to an opCpp2005 instance. - private static opCpp2005 instance; - - public static opCpp2005 GetInstance() - { - return instance; - } - -// #region IOleCommandTarget Members -// -// int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut) -// { -// if (pguidCmdGroup == new Guid(GuidList.guidVisualStudioCommands)) -// { -// if(nCmdID == (uint)VSConstants.VSStd97CmdID.BuildSln) -// { -// nCmdID = 0; -// } -// -// -// -// // OLECMDERR_E_UNKNOWNGROUP -// // The pguidCmdGroup parameter is not NULL but does not specify a recognized command group. -// // -// // OLECMDERR_E_NOTSUPPORTED -// // The nCmdID parameter is not a valid command in the group identified by pguidCmdGroup. -// // -// // OLECMDERR_E_DISABLED -// // The command identified by nCmdID is currently disabled and cannot be executed. -// // -// // OLECMDERR_E_NOHELP -// // The caller has asked for help on the command identified by nCmdID, but no help is available. -// // -// // OLECMDERR_E_CANCELED -// // The user canceled the execution of the command. -// -// //return Microsoft.VisualStudio.OLE.Interop.Constants. -// } -// -// return VSConstants.S_OK; -// //throw new Exception("The method or operation is not implemented."); -// } -// -// int QueryStatus(ref Guid pguidCmdGroup, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText) -// { -// //throw new Exception("The method or operation is not implemented."); -// -// return VSConstants.S_OK; -// } -// -// #endregion - } -} diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/VsctComponents/opCpp2005.vsct b/opcplusplus/Addins/opCpp2005/opCpp2005/VsctComponents/opCpp2005.vsct deleted file mode 100644 index 96b9313..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/VsctComponents/opCpp2005.vsct +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - opCppMenu - opCpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/dotfuscator.xml b/opcplusplus/Addins/opCpp2005/opCpp2005/dotfuscator.xml deleted file mode 100644 index 8b4b3f6..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/dotfuscator.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/opCpp2005.csproj b/opcplusplus/Addins/opCpp2005/opCpp2005/opCpp2005.csproj deleted file mode 100644 index 86725cf..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/opCpp2005.csproj +++ /dev/null @@ -1,291 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - Library - Properties - opGamesLLC.opCpp2005 - opCpp2005 - true - Key.snk - {B549031E-B7B8-40FE-BC19-2765BD2A8272} - - - true - full - false - ..\..\..\Distribution\bin\win32\Debug\ - TRACE;DEBUG - prompt - 4 - - - pdbonly - true - ..\..\..\Distribution\bin\win32\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - MyResources.resx - - - True - True - Settings.settings - - - - Form - - - AboutForm.cs - - - Form - - - AddinLockedForm.cs - - - - Form - - - FeatureManagerForm.cs - - - Form - - - InputBoxForm.cs - - - Form - - - StringListForm.cs - - - Form - - - GlobalOptionsForm.cs - - - Component - - - Form - - - ProjectOptionsForm.cs - - - - - Form - - - TrialVersionForm.cs - - - Form - - - UnlockForm.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - True - VSPackage.resx - - - - - - - - Designer - Always - ResXFileCodeGenerator - MyResources.Designer.cs - - - Designer - AboutForm.cs - - - Designer - AddinLockedForm.cs - - - Designer - FeatureManagerForm.cs - - - Designer - InputBoxForm.cs - - - Designer - StringListForm.cs - - - Designer - GlobalOptionsForm.cs - - - Designer - ProjectOptionsForm.cs - - - Designer - TrialVersionForm.cs - - - Designer - UnlockForm.cs - - - true - Designer - ResXFileCodeGenerator - VSPackage.Designer.cs - - - - - - - - - 1000 - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} - 2 - 3 - 0 - primary - False - - - {3050F1C5-98B5-11CF-BB82-00AA00BDCE0B} - 4 - 0 - 0 - primary - False - - - {EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} - 1 - 1 - 0 - tlbimp - False - - - - Software\Microsoft\VisualStudio\8.0Exp - true - true - - - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/opCpp2005Options.opoptions b/opcplusplus/Addins/opCpp2005/opCpp2005/opCpp2005Options.opoptions deleted file mode 100644 index b172bf8..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/opCpp2005Options.opoptions +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Debug - Any CPU - - - true - false - - - true - false - - - true - false - - - true - - - - true - - - - true - - - - true - - - - true - - - - true - - - - true - - - - true - Generated/$(ProjectName) - - - true - - - - true - - - - true - - - - true - false - - - true - false - - - true - false - - - true - false - - - true - false - - - true - false - - - true - false - - - true - true - - - true - true - - - true - true - - - true - 100 - - - true - false - - - true - true - - - true - Build.BuildSolution - - - true - Build.BuildSelection - - - true - Build.CleanSolution - - - - - \ No newline at end of file diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/smartkey.snk b/opcplusplus/Addins/opCpp2005/opCpp2005/smartkey.snk deleted file mode 100644 index 8845e4f..0000000 Binary files a/opcplusplus/Addins/opCpp2005/opCpp2005/smartkey.snk and /dev/null differ diff --git a/opcplusplus/Addins/opCpp2005/opCpp2005/smartproject.{sa}proj b/opcplusplus/Addins/opCpp2005/opCpp2005/smartproject.{sa}proj deleted file mode 100644 index 0d7b3b1..0000000 --- a/opcplusplus/Addins/opCpp2005/opCpp2005/smartproject.{sa}proj +++ /dev/null @@ -1,33 +0,0 @@ - - ..\..\..\Distribution\bin\win32\release\opCpp2005.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005Macros/opCppMacros.vsmacros b/opcplusplus/Addins/vs2005Macros/opCppMacros.vsmacros deleted file mode 100644 index 443cf00..0000000 Binary files a/opcplusplus/Addins/vs2005Macros/opCppMacros.vsmacros and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp.sln b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp.sln deleted file mode 100644 index 597a857..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vs2005opCpp", "vs2005opCpp\vs2005opCpp.csproj", "{2FC90B75-6FD0-4178-9518-AD47CDD8B7D2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2FC90B75-6FD0-4178-9518-AD47CDD8B7D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2FC90B75-6FD0-4178-9518-AD47CDD8B7D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2FC90B75-6FD0-4178-9518-AD47CDD8B7D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2FC90B75-6FD0-4178-9518-AD47CDD8B7D2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/AddInIcons.Designer.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/AddInIcons.Designer.cs deleted file mode 100644 index 52d3e63..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/AddInIcons.Designer.cs +++ /dev/null @@ -1,84 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.42 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace vs2005opCpp { - 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", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class AddInIcons { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal AddInIcons() { - } - - /// - /// 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("vs2005opCpp.AddInIcons", typeof(AddInIcons).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; - } - } - - internal static System.Drawing.Bitmap _1 { - get { - object obj = ResourceManager.GetObject("1", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _2 { - get { - object obj = ResourceManager.GetObject("2", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - internal static System.Drawing.Bitmap _3 { - get { - object obj = ResourceManager.GetObject("3", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/AddInIcons.resx b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/AddInIcons.resx deleted file mode 100644 index 67839ca..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/AddInIcons.resx +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - Resources\1.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\2.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - Resources\3.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/install.bat b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/install.bat deleted file mode 100644 index 1cf6e1e..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/install.bat +++ /dev/null @@ -1,5 +0,0 @@ -mkdir "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp\" -copy opCpp.AddIn "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\" -copy ..\bin\*.dll "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp" -mkdir "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp\en-US" -copy ..\bin\en-US\vs2005opCpp.resources.dll "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp\en-US" \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/opCpp.AddIn b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/opCpp.AddIn deleted file mode 100644 index cdf955a..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/opCpp.AddIn and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/uninstall.bat b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/uninstall.bat deleted file mode 100644 index 82da77f..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/uninstall.bat +++ /dev/null @@ -1,3 +0,0 @@ -del "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp.AddIn" -del "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp\vs2005opCpp.dll" -del "%HOMEPATH%\My Documents\Visual Studio 2005\Addins\opCpp\en-US\vs2005opCpp.resources.dll" \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/vs2005opCpp - For Testing.AddIn b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/vs2005opCpp - For Testing.AddIn deleted file mode 100644 index 203cf78..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Install/vs2005opCpp - For Testing.AddIn and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/AssemblyInfo.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/AssemblyInfo.cs deleted file mode 100644 index d0bb8e1..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/AssemblyInfo.cs and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/CommandBar.Designer.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/CommandBar.Designer.cs deleted file mode 100644 index 4ac9ec4..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/CommandBar.Designer.cs +++ /dev/null @@ -1,2736 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.42 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace vs2005opCpp.Other_Files { - 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", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class CommandBar { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal CommandBar() { - } - - /// - /// 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("vs2005opCpp.Other_Files.CommandBar", typeof(CommandBar).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; - } - } - - /// - /// Looks up a localized string similar to Aktion. - /// - internal static string deAction { - get { - return ResourceManager.GetString("deAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Add-Ins. - /// - internal static string deAddins { - get { - return ResourceManager.GetString("deAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Erstellen. - /// - internal static string deBuild { - get { - return ResourceManager.GetString("deBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Klassendiagramm. - /// - internal static string deClass_Diagram { - get { - return ResourceManager.GetString("deClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Community. - /// - internal static string deCommunity { - get { - return ResourceManager.GetString("deCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Daten. - /// - internal static string deData { - get { - return ResourceManager.GetString("deData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Datenbank. - /// - internal static string deDatabase { - get { - return ResourceManager.GetString("deDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Datenbankdiagramm. - /// - internal static string deDatabase_Diagram { - get { - return ResourceManager.GetString("deDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Debuggen. - /// - internal static string deDebug { - get { - return ResourceManager.GetString("deDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagramm. - /// - internal static string deDiagram { - get { - return ResourceManager.GetString("deDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bearbeiten. - /// - internal static string deEdit { - get { - return ResourceManager.GetString("deEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Datei. - /// - internal static string deFile { - get { - return ResourceManager.GetString("deFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Format. - /// - internal static string deFormat { - get { - return ResourceManager.GetString("deFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Rahmen. - /// - internal static string deFrames { - get { - return ResourceManager.GetString("deFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Hilfe. - /// - internal static string deHelp { - get { - return ResourceManager.GetString("deHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Bild. - /// - internal static string deImage { - get { - return ResourceManager.GetString("deImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Layout. - /// - internal static string deLayout { - get { - return ResourceManager.GetString("deLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Makros. - /// - internal static string deMacros { - get { - return ResourceManager.GetString("deMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Projekt. - /// - internal static string deProject { - get { - return ResourceManager.GetString("deProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Query. - /// - internal static string deQuery { - get { - return ResourceManager.GetString("deQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Abfrage-Designer. - /// - internal static string deQuery_Designer { - get { - return ResourceManager.GetString("deQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Umgestalten. - /// - internal static string deRefactor { - get { - return ResourceManager.GetString("deRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Ressourcen. - /// - internal static string deResources { - get { - return ResourceManager.GetString("deResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Schema. - /// - internal static string deSchema { - get { - return ResourceManager.GetString("deSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Formate. - /// - internal static string deStyles { - get { - return ResourceManager.GetString("deStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tabelle. - /// - internal static string deTable { - get { - return ResourceManager.GetString("deTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tabellen-Designer. - /// - internal static string deTable_Designer { - get { - return ResourceManager.GetString("deTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Team. - /// - internal static string deTeam { - get { - return ResourceManager.GetString("deTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Testen. - /// - internal static string deTest { - get { - return ResourceManager.GetString("deTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Extras. - /// - internal static string deTools { - get { - return ResourceManager.GetString("deTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Ansicht. - /// - internal static string deView { - get { - return ResourceManager.GetString("deView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Fenster. - /// - internal static string deWindow { - get { - return ResourceManager.GetString("deWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string deXML { - get { - return ResourceManager.GetString("deXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Action. - /// - internal static string enAction { - get { - return ResourceManager.GetString("enAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Addins. - /// - internal static string enAddins { - get { - return ResourceManager.GetString("enAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Build. - /// - internal static string enBuild { - get { - return ResourceManager.GetString("enBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Class Diagram. - /// - internal static string enClass_Diagram { - get { - return ResourceManager.GetString("enClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Community. - /// - internal static string enCommunity { - get { - return ResourceManager.GetString("enCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Data. - /// - internal static string enData { - get { - return ResourceManager.GetString("enData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Database. - /// - internal static string enDatabase { - get { - return ResourceManager.GetString("enDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Database Diagram. - /// - internal static string enDatabase_Diagram { - get { - return ResourceManager.GetString("enDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Debug. - /// - internal static string enDebug { - get { - return ResourceManager.GetString("enDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagram. - /// - internal static string enDiagram { - get { - return ResourceManager.GetString("enDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Edit. - /// - internal static string enEdit { - get { - return ResourceManager.GetString("enEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to File. - /// - internal static string enFile { - get { - return ResourceManager.GetString("enFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Format. - /// - internal static string enFormat { - get { - return ResourceManager.GetString("enFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Frames. - /// - internal static string enFrames { - get { - return ResourceManager.GetString("enFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Help. - /// - internal static string enHelp { - get { - return ResourceManager.GetString("enHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Image. - /// - internal static string enImage { - get { - return ResourceManager.GetString("enImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Layout. - /// - internal static string enLayout { - get { - return ResourceManager.GetString("enLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Macros. - /// - internal static string enMacros { - get { - return ResourceManager.GetString("enMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Project. - /// - internal static string enProject { - get { - return ResourceManager.GetString("enProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Query. - /// - internal static string enQuery { - get { - return ResourceManager.GetString("enQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Query Designer. - /// - internal static string enQuery_Designer { - get { - return ResourceManager.GetString("enQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Refactor. - /// - internal static string enRefactor { - get { - return ResourceManager.GetString("enRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Resources. - /// - internal static string enResources { - get { - return ResourceManager.GetString("enResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Schema. - /// - internal static string enSchema { - get { - return ResourceManager.GetString("enSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Styles. - /// - internal static string enStyles { - get { - return ResourceManager.GetString("enStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Table. - /// - internal static string enTable { - get { - return ResourceManager.GetString("enTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Table Designer. - /// - internal static string enTable_Designer { - get { - return ResourceManager.GetString("enTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Team. - /// - internal static string enTeam { - get { - return ResourceManager.GetString("enTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Test. - /// - internal static string enTest { - get { - return ResourceManager.GetString("enTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tools. - /// - internal static string enTools { - get { - return ResourceManager.GetString("enTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to View. - /// - internal static string enView { - get { - return ResourceManager.GetString("enView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Window. - /// - internal static string enWindow { - get { - return ResourceManager.GetString("enWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string enXML { - get { - return ResourceManager.GetString("enXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Acción. - /// - internal static string esAction { - get { - return ResourceManager.GetString("esAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Complementos. - /// - internal static string esAddins { - get { - return ResourceManager.GetString("esAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Generar. - /// - internal static string esBuild { - get { - return ResourceManager.GetString("esBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagrama de clase. - /// - internal static string esClass_Diagram { - get { - return ResourceManager.GetString("esClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Comunidad. - /// - internal static string esCommunity { - get { - return ResourceManager.GetString("esCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Datos. - /// - internal static string esData { - get { - return ResourceManager.GetString("esData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Base de datos. - /// - internal static string esDatabase { - get { - return ResourceManager.GetString("esDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagrama de base de datos. - /// - internal static string esDatabase_Diagram { - get { - return ResourceManager.GetString("esDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Depurar. - /// - internal static string esDebug { - get { - return ResourceManager.GetString("esDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagrama. - /// - internal static string esDiagram { - get { - return ResourceManager.GetString("esDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Editar. - /// - internal static string esEdit { - get { - return ResourceManager.GetString("esEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Archivo. - /// - internal static string esFile { - get { - return ResourceManager.GetString("esFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Formato. - /// - internal static string esFormat { - get { - return ResourceManager.GetString("esFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Marcos. - /// - internal static string esFrames { - get { - return ResourceManager.GetString("esFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Ayuda. - /// - internal static string esHelp { - get { - return ResourceManager.GetString("esHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Imagen. - /// - internal static string esImage { - get { - return ResourceManager.GetString("esImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diseño. - /// - internal static string esLayout { - get { - return ResourceManager.GetString("esLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Macros. - /// - internal static string esMacros { - get { - return ResourceManager.GetString("esMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Proyecto. - /// - internal static string esProject { - get { - return ResourceManager.GetString("esProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Consulta. - /// - internal static string esQuery { - get { - return ResourceManager.GetString("esQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diseñador de consultas. - /// - internal static string esQuery_Designer { - get { - return ResourceManager.GetString("esQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Refactorizar. - /// - internal static string esRefactor { - get { - return ResourceManager.GetString("esRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Recursos. - /// - internal static string esResources { - get { - return ResourceManager.GetString("esResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Esquema. - /// - internal static string esSchema { - get { - return ResourceManager.GetString("esSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Estilos. - /// - internal static string esStyles { - get { - return ResourceManager.GetString("esStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tabla. - /// - internal static string esTable { - get { - return ResourceManager.GetString("esTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diseñador de tablas. - /// - internal static string esTable_Designer { - get { - return ResourceManager.GetString("esTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Equipo. - /// - internal static string esTeam { - get { - return ResourceManager.GetString("esTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Prueba. - /// - internal static string esTest { - get { - return ResourceManager.GetString("esTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Herramientas. - /// - internal static string esTools { - get { - return ResourceManager.GetString("esTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Ver. - /// - internal static string esView { - get { - return ResourceManager.GetString("esView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Ventana. - /// - internal static string esWindow { - get { - return ResourceManager.GetString("esWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string esXML { - get { - return ResourceManager.GetString("esXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Action. - /// - internal static string frAction { - get { - return ResourceManager.GetString("frAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Compléments. - /// - internal static string frAddins { - get { - return ResourceManager.GetString("frAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Générer. - /// - internal static string frBuild { - get { - return ResourceManager.GetString("frBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagramme de classes. - /// - internal static string frClass_Diagram { - get { - return ResourceManager.GetString("frClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Communauté. - /// - internal static string frCommunity { - get { - return ResourceManager.GetString("frCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Données. - /// - internal static string frData { - get { - return ResourceManager.GetString("frData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Base de données. - /// - internal static string frDatabase { - get { - return ResourceManager.GetString("frDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Schéma de base de données. - /// - internal static string frDatabase_Diagram { - get { - return ResourceManager.GetString("frDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Déboguer. - /// - internal static string frDebug { - get { - return ResourceManager.GetString("frDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Schéma. - /// - internal static string frDiagram { - get { - return ResourceManager.GetString("frDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Modifier. - /// - internal static string frEdit { - get { - return ResourceManager.GetString("frEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Fichier. - /// - internal static string frFile { - get { - return ResourceManager.GetString("frFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Format. - /// - internal static string frFormat { - get { - return ResourceManager.GetString("frFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Frames. - /// - internal static string frFrames { - get { - return ResourceManager.GetString("frFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ?. - /// - internal static string frHelp { - get { - return ResourceManager.GetString("frHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Image. - /// - internal static string frImage { - get { - return ResourceManager.GetString("frImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Disposition. - /// - internal static string frLayout { - get { - return ResourceManager.GetString("frLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Macros. - /// - internal static string frMacros { - get { - return ResourceManager.GetString("frMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Projet. - /// - internal static string frProject { - get { - return ResourceManager.GetString("frProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Requête. - /// - internal static string frQuery { - get { - return ResourceManager.GetString("frQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Concepteur de requêtes. - /// - internal static string frQuery_Designer { - get { - return ResourceManager.GetString("frQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Refactoriser. - /// - internal static string frRefactor { - get { - return ResourceManager.GetString("frRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Ressources. - /// - internal static string frResources { - get { - return ResourceManager.GetString("frResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Schéma. - /// - internal static string frSchema { - get { - return ResourceManager.GetString("frSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Styles. - /// - internal static string frStyles { - get { - return ResourceManager.GetString("frStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tableau. - /// - internal static string frTable { - get { - return ResourceManager.GetString("frTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Concepteur de tables. - /// - internal static string frTable_Designer { - get { - return ResourceManager.GetString("frTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to équipe. - /// - internal static string frTeam { - get { - return ResourceManager.GetString("frTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Test. - /// - internal static string frTest { - get { - return ResourceManager.GetString("frTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Outils. - /// - internal static string frTools { - get { - return ResourceManager.GetString("frTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Affichage. - /// - internal static string frView { - get { - return ResourceManager.GetString("frView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Fenêtre. - /// - internal static string frWindow { - get { - return ResourceManager.GetString("frWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string frXML { - get { - return ResourceManager.GetString("frXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Azione. - /// - internal static string itAction { - get { - return ResourceManager.GetString("itAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Componenti aggiuntivi. - /// - internal static string itAddins { - get { - return ResourceManager.GetString("itAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Genera. - /// - internal static string itBuild { - get { - return ResourceManager.GetString("itBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagramma classi. - /// - internal static string itClass_Diagram { - get { - return ResourceManager.GetString("itClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Comunità. - /// - internal static string itCommunity { - get { - return ResourceManager.GetString("itCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Dati. - /// - internal static string itData { - get { - return ResourceManager.GetString("itData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Database. - /// - internal static string itDatabase { - get { - return ResourceManager.GetString("itDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagramma database. - /// - internal static string itDatabase_Diagram { - get { - return ResourceManager.GetString("itDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Debug. - /// - internal static string itDebug { - get { - return ResourceManager.GetString("itDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Diagramma. - /// - internal static string itDiagram { - get { - return ResourceManager.GetString("itDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Modifica. - /// - internal static string itEdit { - get { - return ResourceManager.GetString("itEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to File. - /// - internal static string itFile { - get { - return ResourceManager.GetString("itFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Formato. - /// - internal static string itFormat { - get { - return ResourceManager.GetString("itFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Frame. - /// - internal static string itFrames { - get { - return ResourceManager.GetString("itFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ?. - /// - internal static string itHelp { - get { - return ResourceManager.GetString("itHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Immagine. - /// - internal static string itImage { - get { - return ResourceManager.GetString("itImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Layout. - /// - internal static string itLayout { - get { - return ResourceManager.GetString("itLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Macro. - /// - internal static string itMacros { - get { - return ResourceManager.GetString("itMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Progetto. - /// - internal static string itProject { - get { - return ResourceManager.GetString("itProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Query. - /// - internal static string itQuery { - get { - return ResourceManager.GetString("itQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Progettazione query. - /// - internal static string itQuery_Designer { - get { - return ResourceManager.GetString("itQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Effettua refactoring. - /// - internal static string itRefactor { - get { - return ResourceManager.GetString("itRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Risorse. - /// - internal static string itResources { - get { - return ResourceManager.GetString("itResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Schema. - /// - internal static string itSchema { - get { - return ResourceManager.GetString("itSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stili. - /// - internal static string itStyles { - get { - return ResourceManager.GetString("itStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tabella. - /// - internal static string itTable { - get { - return ResourceManager.GetString("itTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Progettazione tabelle. - /// - internal static string itTable_Designer { - get { - return ResourceManager.GetString("itTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Team. - /// - internal static string itTeam { - get { - return ResourceManager.GetString("itTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Prova. - /// - internal static string itTest { - get { - return ResourceManager.GetString("itTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Strumenti. - /// - internal static string itTools { - get { - return ResourceManager.GetString("itTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Visualizza. - /// - internal static string itView { - get { - return ResourceManager.GetString("itView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Finestra. - /// - internal static string itWindow { - get { - return ResourceManager.GetString("itWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string itXML { - get { - return ResourceManager.GetString("itXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 操作. - /// - internal static string jaAction { - get { - return ResourceManager.GetString("jaAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to アドイン. - /// - internal static string jaAddins { - get { - return ResourceManager.GetString("jaAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ビルド. - /// - internal static string jaBuild { - get { - return ResourceManager.GetString("jaBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to クラス ダイアグラム. - /// - internal static string jaClass_Diagram { - get { - return ResourceManager.GetString("jaClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to コミュニティ. - /// - internal static string jaCommunity { - get { - return ResourceManager.GetString("jaCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to データ. - /// - internal static string jaData { - get { - return ResourceManager.GetString("jaData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to データベース. - /// - internal static string jaDatabase { - get { - return ResourceManager.GetString("jaDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to データベース ダイアグラム. - /// - internal static string jaDatabase_Diagram { - get { - return ResourceManager.GetString("jaDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to デバッグ. - /// - internal static string jaDebug { - get { - return ResourceManager.GetString("jaDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ダイアグラム. - /// - internal static string jaDiagram { - get { - return ResourceManager.GetString("jaDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 編集. - /// - internal static string jaEdit { - get { - return ResourceManager.GetString("jaEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ファイル. - /// - internal static string jaFile { - get { - return ResourceManager.GetString("jaFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 書式. - /// - internal static string jaFormat { - get { - return ResourceManager.GetString("jaFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to フレーム. - /// - internal static string jaFrames { - get { - return ResourceManager.GetString("jaFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ヘルプ. - /// - internal static string jaHelp { - get { - return ResourceManager.GetString("jaHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to イメージ. - /// - internal static string jaImage { - get { - return ResourceManager.GetString("jaImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to レイアウト. - /// - internal static string jaLayout { - get { - return ResourceManager.GetString("jaLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to マクロ. - /// - internal static string jaMacros { - get { - return ResourceManager.GetString("jaMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to プロジェクト. - /// - internal static string jaProject { - get { - return ResourceManager.GetString("jaProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to クエリ. - /// - internal static string jaQuery { - get { - return ResourceManager.GetString("jaQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to クエリ デザイナ. - /// - internal static string jaQuery_Designer { - get { - return ResourceManager.GetString("jaQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to リファクタ. - /// - internal static string jaRefactor { - get { - return ResourceManager.GetString("jaRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to リソース. - /// - internal static string jaResources { - get { - return ResourceManager.GetString("jaResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to スキーマ. - /// - internal static string jaSchema { - get { - return ResourceManager.GetString("jaSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to スタイル. - /// - internal static string jaStyles { - get { - return ResourceManager.GetString("jaStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to テーブル. - /// - internal static string jaTable { - get { - return ResourceManager.GetString("jaTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to テーブル デザイナ. - /// - internal static string jaTable_Designer { - get { - return ResourceManager.GetString("jaTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to チーム. - /// - internal static string jaTeam { - get { - return ResourceManager.GetString("jaTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to テスト. - /// - internal static string jaTest { - get { - return ResourceManager.GetString("jaTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ツール. - /// - internal static string jaTools { - get { - return ResourceManager.GetString("jaTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 表示. - /// - internal static string jaView { - get { - return ResourceManager.GetString("jaView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to ウィンドウ. - /// - internal static string jaWindow { - get { - return ResourceManager.GetString("jaWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string jaXML { - get { - return ResourceManager.GetString("jaXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 작업. - /// - internal static string koAction { - get { - return ResourceManager.GetString("koAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 추가 기능. - /// - internal static string koAddins { - get { - return ResourceManager.GetString("koAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 빌드. - /// - internal static string koBuild { - get { - return ResourceManager.GetString("koBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 클래스 다이어그램. - /// - internal static string koClass_Diagram { - get { - return ResourceManager.GetString("koClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 커뮤니티. - /// - internal static string koCommunity { - get { - return ResourceManager.GetString("koCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 데이터. - /// - internal static string koData { - get { - return ResourceManager.GetString("koData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 데이터베이스. - /// - internal static string koDatabase { - get { - return ResourceManager.GetString("koDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 데이터베이스 다이어그램. - /// - internal static string koDatabase_Diagram { - get { - return ResourceManager.GetString("koDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 디버그. - /// - internal static string koDebug { - get { - return ResourceManager.GetString("koDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 다이어그램. - /// - internal static string koDiagram { - get { - return ResourceManager.GetString("koDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 편집. - /// - internal static string koEdit { - get { - return ResourceManager.GetString("koEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 파일. - /// - internal static string koFile { - get { - return ResourceManager.GetString("koFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 서식. - /// - internal static string koFormat { - get { - return ResourceManager.GetString("koFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 프레임. - /// - internal static string koFrames { - get { - return ResourceManager.GetString("koFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 도움말. - /// - internal static string koHelp { - get { - return ResourceManager.GetString("koHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 이미지. - /// - internal static string koImage { - get { - return ResourceManager.GetString("koImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 레이아웃. - /// - internal static string koLayout { - get { - return ResourceManager.GetString("koLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 매크로. - /// - internal static string koMacros { - get { - return ResourceManager.GetString("koMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 프로젝트. - /// - internal static string koProject { - get { - return ResourceManager.GetString("koProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 쿼리. - /// - internal static string koQuery { - get { - return ResourceManager.GetString("koQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 쿼리 디자이너. - /// - internal static string koQuery_Designer { - get { - return ResourceManager.GetString("koQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 리팩터링. - /// - internal static string koRefactor { - get { - return ResourceManager.GetString("koRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 리소스. - /// - internal static string koResources { - get { - return ResourceManager.GetString("koResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 스키마. - /// - internal static string koSchema { - get { - return ResourceManager.GetString("koSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 스타일. - /// - internal static string koStyles { - get { - return ResourceManager.GetString("koStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 테이블. - /// - internal static string koTable { - get { - return ResourceManager.GetString("koTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 테이블 디자이너. - /// - internal static string koTable_Designer { - get { - return ResourceManager.GetString("koTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 팀. - /// - internal static string koTeam { - get { - return ResourceManager.GetString("koTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 테스트. - /// - internal static string koTest { - get { - return ResourceManager.GetString("koTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 도구. - /// - internal static string koTools { - get { - return ResourceManager.GetString("koTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 뷰. - /// - internal static string koView { - get { - return ResourceManager.GetString("koView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 창. - /// - internal static string koWindow { - get { - return ResourceManager.GetString("koWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string koXML { - get { - return ResourceManager.GetString("koXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 操作. - /// - internal static string zh_CHSAction { - get { - return ResourceManager.GetString("zh-CHSAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 外接程序. - /// - internal static string zh_CHSAddins { - get { - return ResourceManager.GetString("zh-CHSAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 生成. - /// - internal static string zh_CHSBuild { - get { - return ResourceManager.GetString("zh-CHSBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 类关系图. - /// - internal static string zh_CHSClass_Diagram { - get { - return ResourceManager.GetString("zh-CHSClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 社区. - /// - internal static string zh_CHSCommunity { - get { - return ResourceManager.GetString("zh-CHSCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 数据. - /// - internal static string zh_CHSData { - get { - return ResourceManager.GetString("zh-CHSData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 数据库. - /// - internal static string zh_CHSDatabase { - get { - return ResourceManager.GetString("zh-CHSDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 数据库关系图. - /// - internal static string zh_CHSDatabase_Diagram { - get { - return ResourceManager.GetString("zh-CHSDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 调试. - /// - internal static string zh_CHSDebug { - get { - return ResourceManager.GetString("zh-CHSDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 关系图. - /// - internal static string zh_CHSDiagram { - get { - return ResourceManager.GetString("zh-CHSDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 编辑. - /// - internal static string zh_CHSEdit { - get { - return ResourceManager.GetString("zh-CHSEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 文件. - /// - internal static string zh_CHSFile { - get { - return ResourceManager.GetString("zh-CHSFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 格式. - /// - internal static string zh_CHSFormat { - get { - return ResourceManager.GetString("zh-CHSFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 框架. - /// - internal static string zh_CHSFrames { - get { - return ResourceManager.GetString("zh-CHSFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 帮助. - /// - internal static string zh_CHSHelp { - get { - return ResourceManager.GetString("zh-CHSHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 图像. - /// - internal static string zh_CHSImage { - get { - return ResourceManager.GetString("zh-CHSImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 布局. - /// - internal static string zh_CHSLayout { - get { - return ResourceManager.GetString("zh-CHSLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 宏. - /// - internal static string zh_CHSMacros { - get { - return ResourceManager.GetString("zh-CHSMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 项目. - /// - internal static string zh_CHSProject { - get { - return ResourceManager.GetString("zh-CHSProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 查询. - /// - internal static string zh_CHSQuery { - get { - return ResourceManager.GetString("zh-CHSQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 查询设计器. - /// - internal static string zh_CHSQuery_Designer { - get { - return ResourceManager.GetString("zh-CHSQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 重构. - /// - internal static string zh_CHSRefactor { - get { - return ResourceManager.GetString("zh-CHSRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 资源. - /// - internal static string zh_CHSResources { - get { - return ResourceManager.GetString("zh-CHSResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 架构. - /// - internal static string zh_CHSSchema { - get { - return ResourceManager.GetString("zh-CHSSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 样式. - /// - internal static string zh_CHSStyles { - get { - return ResourceManager.GetString("zh-CHSStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 表. - /// - internal static string zh_CHSTable { - get { - return ResourceManager.GetString("zh-CHSTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 表设计器. - /// - internal static string zh_CHSTable_Designer { - get { - return ResourceManager.GetString("zh-CHSTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 工作组. - /// - internal static string zh_CHSTeam { - get { - return ResourceManager.GetString("zh-CHSTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 测试. - /// - internal static string zh_CHSTest { - get { - return ResourceManager.GetString("zh-CHSTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 工具. - /// - internal static string zh_CHSTools { - get { - return ResourceManager.GetString("zh-CHSTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 视图. - /// - internal static string zh_CHSView { - get { - return ResourceManager.GetString("zh-CHSView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 窗口. - /// - internal static string zh_CHSWindow { - get { - return ResourceManager.GetString("zh-CHSWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string zh_CHSXML { - get { - return ResourceManager.GetString("zh-CHSXML", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 動作. - /// - internal static string zh_CHTAction { - get { - return ResourceManager.GetString("zh-CHTAction", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 增益集. - /// - internal static string zh_CHTAddins { - get { - return ResourceManager.GetString("zh-CHTAddins", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 建置. - /// - internal static string zh_CHTBuild { - get { - return ResourceManager.GetString("zh-CHTBuild", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 類別圖表. - /// - internal static string zh_CHTClass_Diagram { - get { - return ResourceManager.GetString("zh-CHTClass Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 社群. - /// - internal static string zh_CHTCommunity { - get { - return ResourceManager.GetString("zh-CHTCommunity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 資料. - /// - internal static string zh_CHTData { - get { - return ResourceManager.GetString("zh-CHTData", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 資料庫. - /// - internal static string zh_CHTDatabase { - get { - return ResourceManager.GetString("zh-CHTDatabase", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 資料庫圖表. - /// - internal static string zh_CHTDatabase_Diagram { - get { - return ResourceManager.GetString("zh-CHTDatabase Diagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 偵錯. - /// - internal static string zh_CHTDebug { - get { - return ResourceManager.GetString("zh-CHTDebug", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 圖表. - /// - internal static string zh_CHTDiagram { - get { - return ResourceManager.GetString("zh-CHTDiagram", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 編輯. - /// - internal static string zh_CHTEdit { - get { - return ResourceManager.GetString("zh-CHTEdit", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 檔案. - /// - internal static string zh_CHTFile { - get { - return ResourceManager.GetString("zh-CHTFile", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 格式. - /// - internal static string zh_CHTFormat { - get { - return ResourceManager.GetString("zh-CHTFormat", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 框架. - /// - internal static string zh_CHTFrames { - get { - return ResourceManager.GetString("zh-CHTFrames", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 說明. - /// - internal static string zh_CHTHelp { - get { - return ResourceManager.GetString("zh-CHTHelp", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 影像. - /// - internal static string zh_CHTImage { - get { - return ResourceManager.GetString("zh-CHTImage", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 配置. - /// - internal static string zh_CHTLayout { - get { - return ResourceManager.GetString("zh-CHTLayout", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 巨集. - /// - internal static string zh_CHTMacros { - get { - return ResourceManager.GetString("zh-CHTMacros", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 專案. - /// - internal static string zh_CHTProject { - get { - return ResourceManager.GetString("zh-CHTProject", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 查詢. - /// - internal static string zh_CHTQuery { - get { - return ResourceManager.GetString("zh-CHTQuery", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 查詢設計工具. - /// - internal static string zh_CHTQuery_Designer { - get { - return ResourceManager.GetString("zh-CHTQuery Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 重整. - /// - internal static string zh_CHTRefactor { - get { - return ResourceManager.GetString("zh-CHTRefactor", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 資源. - /// - internal static string zh_CHTResources { - get { - return ResourceManager.GetString("zh-CHTResources", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 結構描述. - /// - internal static string zh_CHTSchema { - get { - return ResourceManager.GetString("zh-CHTSchema", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 樣式. - /// - internal static string zh_CHTStyles { - get { - return ResourceManager.GetString("zh-CHTStyles", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 資料表. - /// - internal static string zh_CHTTable { - get { - return ResourceManager.GetString("zh-CHTTable", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 資料表設計工具. - /// - internal static string zh_CHTTable_Designer { - get { - return ResourceManager.GetString("zh-CHTTable Designer", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 小組. - /// - internal static string zh_CHTTeam { - get { - return ResourceManager.GetString("zh-CHTTeam", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 測試. - /// - internal static string zh_CHTTest { - get { - return ResourceManager.GetString("zh-CHTTest", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 工具. - /// - internal static string zh_CHTTools { - get { - return ResourceManager.GetString("zh-CHTTools", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 檢視. - /// - internal static string zh_CHTView { - get { - return ResourceManager.GetString("zh-CHTView", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to 視窗. - /// - internal static string zh_CHTWindow { - get { - return ResourceManager.GetString("zh-CHTWindow", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to XML. - /// - internal static string zh_CHTXML { - get { - return ResourceManager.GetString("zh-CHTXML", resourceCulture); - } - } - } -} diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/CommandBar.resx b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/CommandBar.resx deleted file mode 100644 index 30e3ff7..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/CommandBar.resx +++ /dev/null @@ -1,1011 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - Action - - - Addins - - - Build - - - Class Diagram - - - Community - - - Data - - - Database - - - Database Diagram - - - Debug - - - Diagram - - - Edit - - - File - - - Format - - - Frames - - - Help - - - Image - - - Layout - - - Macros - - - Project - - - Query - - - Query Designer - - - Refactor - - - Resources - - - Schema - - - Styles - - - Team - - - Table - - - Table Designer - - - Test - - - Tools - - - View - - - Window - - - XML - - - 操作 - - - アドイン - - - ビルド - - - クラス ダイアグラム - - - コミュニティ - - - データ - - - データベース - - - データベース ダイアグラム - - - デバッグ - - - ダイアグラム - - - 編集 - - - ファイル - - - 書式 - - - フレーム - - - ヘルプ - - - イメージ - - - レイアウト - - - マクロ - - - プロジェクト - - - クエリ - - - クエリ デザイナ - - - リファクタ - - - リソース - - - スキーマ - - - スタイル - - - チーム - - - テーブル - - - テーブル デザイナ - - - テスト - - - ツール - - - 表示 - - - ウィンドウ - - - XML - - - Aktion - - - Add-Ins - - - Erstellen - - - Klassendiagramm - - - Community - - - Daten - - - Datenbank - - - Datenbankdiagramm - - - Debuggen - - - Diagramm - - - Bearbeiten - - - Datei - - - Format - - - Rahmen - - - Hilfe - - - Bild - - - Layout - - - Makros - - - Projekt - - - Query - - - Abfrage-Designer - - - Umgestalten - - - Ressourcen - - - Schema - - - Formate - - - Team - - - Tabelle - - - Tabellen-Designer - - - Testen - - - Extras - - - Ansicht - - - Fenster - - - XML - - - Acción - - - Complementos - - - Generar - - - Diagrama de clase - - - Comunidad - - - Datos - - - Base de datos - - - Diagrama de base de datos - - - Depurar - - - Diagrama - - - Editar - - - Archivo - - - Formato - - - Marcos - - - Ayuda - - - Imagen - - - Diseño - - - Macros - - - Proyecto - - - Consulta - - - Diseñador de consultas - - - Refactorizar - - - Recursos - - - Esquema - - - Estilos - - - Equipo - - - Tabla - - - Diseñador de tablas - - - Prueba - - - Herramientas - - - Ver - - - Ventana - - - XML - - - Action - - - Compléments - - - Générer - - - Diagramme de classes - - - Communauté - - - Données - - - Base de données - - - Schéma de base de données - - - Déboguer - - - Schéma - - - Modifier - - - Fichier - - - Format - - - Frames - - - ? - - - Image - - - Disposition - - - Macros - - - Projet - - - Requête - - - Concepteur de requêtes - - - Refactoriser - - - Ressources - - - Schéma - - - Styles - - - équipe - - - Tableau - - - Concepteur de tables - - - Test - - - Outils - - - Affichage - - - Fenêtre - - - XML - - - Azione - - - Componenti aggiuntivi - - - Genera - - - Diagramma classi - - - Comunità - - - Dati - - - Database - - - Diagramma database - - - Debug - - - Diagramma - - - Modifica - - - File - - - Formato - - - Frame - - - ? - - - Immagine - - - Layout - - - Macro - - - Progetto - - - Query - - - Progettazione query - - - Effettua refactoring - - - Risorse - - - Schema - - - Stili - - - Team - - - Tabella - - - Progettazione tabelle - - - Prova - - - Strumenti - - - Visualizza - - - Finestra - - - XML - - - 작업 - - - 추가 기능 - - - 빌드 - - - 클래스 다이어그램 - - - 커뮤니티 - - - 데이터 - - - 데이터베이스 - - - 데이터베이스 다이어그램 - - - 디버그 - - - 다이어그램 - - - 편집 - - - 파일 - - - 서식 - - - 프레임 - - - 도움말 - - - 이미지 - - - 레이아웃 - - - 매크로 - - - 프로젝트 - - - 쿼리 - - - 쿼리 디자이너 - - - 리팩터링 - - - 리소스 - - - 스키마 - - - 스타일 - - - - - - 테이블 - - - 테이블 디자이너 - - - 테스트 - - - 도구 - - - - - - - - - XML - - - 操作 - - - 外接程序 - - - 生成 - - - 类关系图 - - - 社区 - - - 数据 - - - 数据库 - - - 数据库关系图 - - - 调试 - - - 关系图 - - - 编辑 - - - 文件 - - - 格式 - - - 框架 - - - 帮助 - - - 图像 - - - 布局 - - - - - - 项目 - - - 查询 - - - 查询设计器 - - - 重构 - - - 资源 - - - 架构 - - - 样式 - - - 工作组 - - - - - - 表设计器 - - - 测试 - - - 工具 - - - 视图 - - - 窗口 - - - XML - - - 動作 - - - 增益集 - - - 建置 - - - 類別圖表 - - - 社群 - - - 資料 - - - 資料庫 - - - 資料庫圖表 - - - 偵錯 - - - 圖表 - - - 編輯 - - - 檔案 - - - 格式 - - - 框架 - - - 說明 - - - 影像 - - - 配置 - - - 巨集 - - - 專案 - - - 查詢 - - - 查詢設計工具 - - - 重整 - - - 資源 - - - 結構描述 - - - 樣式 - - - 小組 - - - 資料表 - - - 資料表設計工具 - - - 測試 - - - 工具 - - - 檢視 - - - 視窗 - - - XML - - \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/vs2005opCpp.AddIn b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/vs2005opCpp.AddIn deleted file mode 100644 index 116be48..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Other Files/vs2005opCpp.AddIn and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/1.bmp b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/1.bmp deleted file mode 100644 index 38c6987..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/1.bmp and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/2.bmp b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/2.bmp deleted file mode 100644 index 5512651..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/2.bmp and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/3.bmp b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/3.bmp deleted file mode 100644 index 53ab447..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Resources/3.bmp and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Commands.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Commands.cs deleted file mode 100644 index 8fc4e8f..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Commands.cs +++ /dev/null @@ -1,455 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Commands.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Command-related stuff. -///**************************************************************** - -using System; -using EnvDTE; -using System.Collections.Generic; - -namespace vs2005opCpp -{ - public partial class Connect - { - ///========================================== - /// Events - ///========================================== - - //NOTE: this does not catch debugger startup, - // for that I need to catch the event via BeforeExecute - public void OnBuildBegin(vsBuildScope Scope, vsBuildAction Action) - { - //NOTE: we may want to use these, just for copying the error buffer - // to the other output pane (nothing else...) - -// GetBuildOutputPane().OutputString("OnBuildBegin...\n"); -// GetDebugOutputPane().Clear(); -// -// string ActionScope = Scope.ToString(); -// string ActionType = Action.ToString(); -// -// GetDebugOutputPane().OutputString("Build Event Begin: Scope=" + ActionScope + " Action=" + ActionType + "\n"); -// -// if(Scope == vsBuildScope.vsBuildScopeSolution) -// { -// if (Action == vsBuildAction.vsBuildActionBuild -// || Action == vsBuildAction.vsBuildActionDeploy -// || Action == vsBuildAction.vsBuildActionRebuildAll) -// CatchBuildSolution(); -// } - } - - public void OnBuildDone(vsBuildScope Scope, vsBuildAction Action) - { -// GetBuildOutputPane().OutputString("OnBuildDone...\n"); - -// string ActionScope = Scope.ToString(); -// string ActionType = Action.ToString(); -// -// GetDebugOutputPane().OutputString("Build Event Done: Scope=" + ActionScope + " Action=" + ActionType + "\n"); - } - - public void OnBuildProjConfigBegin(string Project, string ProjectConfig, string Platform, string SolutionConfig) - { -// GetBuildOutputPane().OutputString("OnBuildProjConfigBegin...\n"); - -// GetDebugOutputPane().OutputString("Build Event Begin: (project configuration)" -// + " Project=" + Project -// + " ProjectConfig=" + ProjectConfig -// + " Platform=" + Platform -// + " SolutionConfig=" + SolutionConfig -// + "\n" -// ); - } - - public void OnBuildProjConfigDone(string Project, string ProjectConfig, string Platform, string SolutionConfig, bool Success) - { -// GetBuildOutputPane().OutputString("OnBuildProjConfigDone...\n"); - -// GetDebugOutputPane().OutputString("Build Event Done: (project configuration)" -// + " Project=" + Project -// + " ProjectConfig=" + ProjectConfig -// + " Platform=" + Platform -// + " SolutionConfig=" + SolutionConfig -// + " Success=" + Success.ToString() -// + "\n" -// ); - } - - ///========================================== - /// Command Utility - ///========================================== - - // This method is called before a command is executed. - void BeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault) - { - string commandName = ""; - - try - { - commandName = App().Commands.Item(Guid, ID).Name; - } - catch (System.Exception) - { - } - - if(commandName != "") - { - //don't execute in debug mode (for now?) - if (App().Mode == vsIDEMode.vsIDEModeDebug) - return; - - //catch debug.start - if (commandName == "Debug.Start") - CancelDefault = !CatchDebugStart(); - else if (commandName == "Debug.StartWithoutDebugging") - CancelDefault = !CatchNoDebugStart(); - else if (commandName == "Build.BuildSolution") - CancelDefault = !CatchBuildSolution(); - else if (commandName == "Build.BuildSelection") - CancelDefault = !CatchBuildSelection(); - //TODO: need to catch all Clean events - //TODO: need to catch all rebuild events - //?? batches - } - - if (commandName != "") - { - Log("CommandEvents, BeforeExecute"); - Log("\tCommand name: " + commandName); - Log("\tCommand GUID/ID: " + Guid + ", " + ID.ToString()); - } - - } - - // This method is called after an event is executed. - void AfterExecute(string Guid, int ID, object CustomIn, object CustomOut) - { - string commandName = ""; - - try - { - commandName = App().Commands.Item(Guid, ID).Name; - } - catch (System.Exception) - { - } - - if (commandName != "") - { - Log("CommandEvents, AfterExecute"); - Log("\tCommand name: " + commandName); - Log("\tCommand GUID/ID: " + Guid + ", " + ID.ToString()); - } - } - - // This method allows you to lookup a command by name. - Command FindCommand(string name) - { - string fullcommandname = _addInInstance.ProgID + "." + name; - Command newCommand = App().Commands.Item(fullcommandname, 0); - return newCommand; - } - - // This method allows you to create a new command. - Command CreateCommand(string name, string description, int iconindex) - { - Object[] objs = null; - - Command newCommand = App().Commands.AddNamedCommand( - _addInInstance, - name, - name, - description, - false, - iconindex, - ref objs, - (int) vsCommandStatus.vsCommandStatusSupported | (int) vsCommandStatus.vsCommandStatusEnabled - ); - - return newCommand; - } - - // Utility method. - bool CommandCompare(string command, string comparename) - { - return command == _addInInstance.ProgID + "." + comparename; - } - - // This method returns true if the command is supported. - bool SupportsCommand(string command) - { - if (CommandCompare(command, "buildsolution")) - { - return true; - } - else if (CommandCompare(command, "buildproject")) - { - return true; - } - else if (CommandCompare(command, "cleansolution")) - { - return true; - } - return false; - } - - // This method runs the given command. - bool RunCommand(string command) - { - if (CommandCompare(command, "buildsolution")) - { - RunBuildSolution(); - return true; - } - if (CommandCompare(command, "buildproject")) - { - RunBuildSelection(); - return true; - } - if (CommandCompare(command, "cleansolution")) - { - RunCleanSolution(); - return true; - } - - return false; - } - - ///========================================== - /// Visual Studio Commands - ///========================================== - - // This method handles the 'debug start' command. - bool CatchDebugStart() - { - //Ok to compile c++ now - if (bCompileCpp) - { - bCompileCpp = false; - - GetBuildOutputPane().OutputString("Built opC++ Successfully...\n"); - - return true; - } - - //don't compile c++ if we have opcpp running - if (runthread != null) - return false; - - mode = CompileMode.DebugStart; - - List projects = FindProjects(); - returncode totalresult = BuildProjects(projects); - - //don't compile c++, we're running opcpp - if (totalresult == returncode.None) - return true; - return false; - } - - // This handles the 'start without debugging' command. - bool CatchNoDebugStart() - { - //Ok to compile c++ now - if (bCompileCpp) - { - bCompileCpp = false; - - GetBuildOutputPane().OutputString("Built opC++ Successfully...\n"); - - return true; - } - - //don't compile c++ if we have opcpp running - if (runthread != null) - return false; - - mode = CompileMode.NoDebugStart; - - List projects = FindProjects(); - returncode totalresult = BuildProjects(projects); - - //don't compile c++, we're running opcpp - if (totalresult == returncode.None) - return true; - return false; - } - - // This method handles the 'build solution' command. - bool CatchBuildSolution() - { - //TODO: - //this should really check if any files haven't been saved yet - //if thats so, we should ignore bCompileCpp - //also we should Abort runthread, and restart - - //NOTE: I dont think we can do this... because dependency checking happens too late - // but maybe I'm wrong there. - // I suppose maybe the best way is to add a custom command, - // and one that lists all the dependencies correctly, then it - // *might* work (could test using manually input stuff) -// If your custom build task is a wrapper around command line util -// (compiler or similar executable) and you want to show output -// from it in Output Window panel you should inherit your custom -// build task from ToolTask base class. ToolTask class is able to -// write output from command line utility line by line. - - //Ok to compile c++ now - if (bCompileCpp) - { - bCompileCpp = false; - - GetBuildOutputPane().OutputString("Built opC++ Successfully...\n"); - - return true; - } - - //don't compile c++ if we have opcpp running - if (runthread != null) - return false; - - mode = CompileMode.BuildSolution; - - List projects = FindProjects(); - returncode totalresult = BuildProjects(projects); - - //don't compile c++, we're running opcpp - if (totalresult == returncode.None) - return true; - return false; - } - - // This method handles the 'build selection' command. - bool CatchBuildSelection() - { - //TODO: - //this should really check if any files haven't been saved yet - //if thats so, we should ignore bCompileCpp - //also we should Abort runthread, and restart - - //Ok to compile c++ now - if (bCompileCpp) - { - bCompileCpp = false; - GetBuildOutputPane().OutputString("Built opC++ Successfully...\n"); - return true; - } - - //don't compile c++ if we have opcpp running - if (runthread != null) - return false; - - mode = CompileMode.BuildSelection; - - List projects = FindCurrentProjects(); - returncode totalresult = BuildProjects(projects); - - //don't compile c++, we're running opcpp - if (totalresult == returncode.None) - return true; - return false; - } - - // This runs the 'build solution' command. - void RunBuildSolution() - { - //run the actual solution build - //(this means run opcpp on all oh files in all projects) - App().ExecuteCommand("Build.BuildSolution", ""); - } - - // This runs the 'build selection' command. - void RunBuildSelection() - { - //run the selected build - App().ExecuteCommand("Build.BuildSelection", ""); - } - - // This runs the 'degug start' command. - void RunDebugStart() - { - //run the actual solution build - //(this means run opcpp on all oh files in all projects) - - //have to invoke it this way, dunno why? - App().Solution.SolutionBuild.Debug(); - } - - // This runs the 'start without debugging' command. - void RunNoDebugStart() - { - App().ExecuteCommand("Debug.StartWithoutDebugging", ""); - } - - // Enumeration for compilation mode. - enum CompileMode - { - DebugStart, - BuildSolution, - BuildSelection, - NoDebugStart, - }; - - /*=== data ===*/ - - private CompileMode mode; - private bool bCompileCpp = false; - private opCppThread runthread; - - // This method is called when opCpp is finished with it's thread. - void opCppFinished(bool bErrored) - { - runthread = null; - - if(!bErrored) - { - bCompileCpp = true; - - if (mode == CompileMode.BuildSolution) - RunBuildSolution(); - else if (mode == CompileMode.DebugStart) - RunDebugStart(); - else if (mode == CompileMode.NoDebugStart) - RunNoDebugStart(); - else if (mode == CompileMode.BuildSelection) - RunBuildSelection(); - - } - } - - - // Cleans the solution. - void RunCleanSolution() - { - // TODO - implement this! - SetStatusText("Ran opCpp Solution Clean! :) "); - } - - // Build the list of .oh files for command line arguments. - string BuildOhString( ref List found ) - { - string filestring = ""; - - foreach(string foundfile in found) - { - filestring += "\"" + foundfile + "\","; - } - - filestring = filestring.TrimEnd(','); - - return filestring; - } - }; - -} - - diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Connect.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Connect.cs deleted file mode 100644 index b39e17d..0000000 Binary files a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Connect.cs and /dev/null differ diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/GlobalProperties.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/GlobalProperties.cs deleted file mode 100644 index 09a92bb..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/GlobalProperties.cs +++ /dev/null @@ -1,309 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: GlobalProperties.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Global opCpp Visual Studio properties. -///**************************************************************** - -using System; -using Microsoft.Win32; - -namespace vs2005opCpp -{ - public class GlobalProperties : PropertiesInterface - { - /*=== data ===*/ - - // Location of registry keys. - private string RegistryLocation = @"Software\OP Games\opCpp"; - - /*=== properties ===*/ - - // opCpp path property - public string opCppPath - { - get - { - return MyRegistry.GetRegistryKey(RegistryLocation, "opCppPath", ""); - } - set - { - MyRegistry.SetRegistryKey(RegistryLocation, "opCppPath", value); - } - } - - // -verbose property - public bool Verbose - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Verbose", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Verbose", setting); - } - } - - // -uninline property - public bool Uninline - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Uninline", "True"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Uninline", setting); - } - } - - // -nodebug property - public bool NoDebug - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "NoDebug", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "NoDebug", setting); - } - } - - // -highlighting property - public bool Highlighting - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Highlighting", "True"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Highlighting", setting); - } - } - - // -ghosts property - public bool Ghosts - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Ghosts", "True"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Ghosts", setting); - } - } - - // -silent property - public bool Silent - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Silent", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Silent", setting); - } - } - - // -force property - public bool Force - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Force", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Force", setting); - } - } - - // -fixedsys property - public bool FixesSys - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "FixesSys", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "FixesSys", setting); - } - } - - // -clean property - public bool Clean - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Clean", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Clean", setting); - } - } - - // -globmode property - public bool GlobMode - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "GlobMode", "True"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "GlobMode", setting); - } - } - - // -expansion-depth property - public int ExpansionDepth - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "ExpansionDepth", "100"); - - return Convert.ToInt32(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "ExpansionDepth", setting); - } - } - - // -testmode property - public bool TestMode - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "TestMode", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "TestMode", setting); - } - } - - // -notations property - public bool Notations - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Notations", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Notations", setting); - } - } - - // -tree property - public bool Tree - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "Tree", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "Tree", setting); - } - } - - // -fulltree property - public bool FullTree - { - get - { - string result = MyRegistry.GetRegistryKey(RegistryLocation, "FullTree", "False"); - - return Convert.ToBoolean(result); - } - set - { - string setting = Convert.ToString(value); - - MyRegistry.SetRegistryKey(RegistryLocation, "FullTree", setting); - } - } - - // additional arguments for the opCpp compiler - public string AdditionalArguments - { - get - { - return MyRegistry.GetRegistryKey(RegistryLocation, "AdditionalArguments", ""); - } - set - { - MyRegistry.SetRegistryKey(RegistryLocation, "AdditionalArguments", value); - } - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Log.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Log.cs deleted file mode 100644 index e08de5b..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Log.cs +++ /dev/null @@ -1,47 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Log.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for logging information. -///**************************************************************** - -using System; -using System.Windows.Forms; - -namespace vs2005opCpp -{ - public partial class Connect - { - /*=== data ===*/ - - private System.IO.StreamWriter debugstream; - - /*=== utility ===*/ - - // This method logs strings. - public void Log(string s) - { - if (debugstream != null) - debugstream.Write(s + "\n"); - } - - // This method logs text to the opCpp pane. - void opCppLog(string text) - { - GetOutputPane().OutputString(text + "\n"); - Application.DoEvents(); - } - - // Prints a line to the console. - public void PrintDebugLine(string s) - { - System.Diagnostics.Debugger.Log(0, "", s + '\n'); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Panes.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Panes.cs deleted file mode 100644 index c6260de..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Panes.cs +++ /dev/null @@ -1,71 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Panes.cs -/// Date: 09/19/2007 -/// -/// Description: -/// -/// Output pane code. -///**************************************************************** - -using System; -using EnvDTE; - -namespace vs2005opCpp -{ - public partial class Connect - { - /*=== data ===*/ - - private OutputWindowPane DebugOutputPane; - private OutputWindowPane OutputPane; - private OutputWindowPane BuildOutputPane; - - /*=== utility ===*/ - - // Looks for an output pane by name. - OutputWindowPane FindOutputPane(string name) - { - OutputWindow outputwindow = App().ToolWindows.OutputWindow; - - foreach (OutputWindowPane pane in outputwindow.OutputWindowPanes) - { - if (pane.Name == name) - return pane; - } - - return outputwindow.OutputWindowPanes.Add(name); - } - - // Gets and caches the opcpp build pane. - OutputWindowPane GetOutputPane() - { - if (OutputPane == null) - OutputPane = FindOutputPane("opCpp Build"); - - return OutputPane; - } - - // Get build output pane. - OutputWindowPane GetBuildOutputPane() - { - if (BuildOutputPane == null) - BuildOutputPane = FindOutputPane("Build"); - - return BuildOutputPane; - } - - // Get debug output pane. - OutputWindowPane GetDebugOutputPane() - { - if (DebugOutputPane == null) - DebugOutputPane = FindOutputPane("opCpp Debug Output"); - - return DebugOutputPane; - } - } -} - \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/ProjectProperties.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/ProjectProperties.cs deleted file mode 100644 index aac4e8d..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/ProjectProperties.cs +++ /dev/null @@ -1,25 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: ProjectProperties.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Project opCpp Visual Studio properties. -///**************************************************************** - -using System; -using Microsoft.Win32; - -namespace vs2005opCpp -{ - public class ProjectProperties //: PropertiesInterface - { - /*=== properties ===*/ - - - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Projects.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Projects.cs deleted file mode 100644 index b65e8e1..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Projects.cs +++ /dev/null @@ -1,260 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Projects.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for looking at the solution/project tree. -///**************************************************************** -/// - -using System; -using System.Collections.Generic; -using Microsoft.VisualStudio.VCProjectEngine; -using EnvDTE; -using System.Windows.Forms; - -namespace vs2005opCpp -{ - public partial class Connect - { - // Return code for the opCpp addin. - enum returncode - { - None, - Success, - Errors, - } - - // Builds a list of projects in the current solution. - // TODO - does this work? - returncode BuildProjects(List projects) - { - returncode totalresult = returncode.None; - - bool bforce = false; - - //directly save the files - foreach (Document doc in App().Documents) - { - if ((doc.FullName.EndsWith(".oh") - || doc.FullName.EndsWith(".doh")) - && doc.Saved == false) - { - if (doc.FullName.EndsWith(".doh")) - bforce = true; - - doc.Save(doc.FullName); - } - } - - GetOutputPane().Clear(); - GetOutputPane().Activate(); - Application.DoEvents(); - - foreach (Project project in projects) - { - returncode result = BuildProject(project, bforce); - - if (result == returncode.Errors) - { - totalresult = returncode.Errors; - return totalresult; - } - else if (result == returncode.Success) - totalresult = returncode.Success; - } - - return totalresult; - } - - // Builds the project but doesn't force a rebuild. - returncode BuildProject(Project project) - { - return BuildProject(project, false); - } - - // Builds the project. - returncode BuildProject(Project project, bool bforce) - { - List ohfiles = FindProjectFiles(project); - FilterFiles(ref ohfiles, ".oh"); - - List dohfiles = FindProjectFiles(project); - FilterFiles(ref dohfiles, ".doh"); - - if (ohfiles.Count == 0) - return returncode.None; - - if (dohfiles.Count == 0) - return returncode.None; - - //build the active configuration name - string activeconfig = ProjectActiveConfig(project); - - FilterActiveFiles(ref ohfiles, activeconfig); - FilterActiveFiles(ref dohfiles, activeconfig); - - if (dohfiles.Count == 0) - return returncode.None; - - if (ohfiles.Count == 0) - return returncode.None; - - //now we want to aggregate all the files - //into a list for opcpp - //format: "a","b","c","d" - string ohfilestring = BuildFileString(ohfiles); - string oharguments = "-oh " + ohfilestring; - - string dohfilestring = BuildFileString(dohfiles); - string doharguments = "-doh " + dohfilestring; - - string arguments = oharguments + " " + doharguments; - - // if (bverbose) - // arguments += " -verbose"; - if (bforce) - arguments += " -force"; - - arguments += " -globmode"; - - //add the -gd directory argument - arguments += " -gd "; - arguments += "\"Generated\\" + project.Name + "\""; - - string workingdir = project.FileName.Substring(0, project.FileName.LastIndexOf('\\')); - - - arguments = GetOpCppArguments() + " " + arguments; - - runthread = new opCppThread(GetOpCppPath(), workingdir, arguments); - runthread.OnEnd += opCppFinished; - runthread.OnReadLine += opCppLog; - runthread.Start(); - - //Thread thread = new Thread(new ThreadStart()); - //return returncode.None; - - //if (result) - return returncode.Success; - //else - // return returncode.Errors; - } - - // Utility method. - String ProjectActiveConfig(Project p) - { - return p.ConfigurationManager.ActiveConfiguration.ConfigurationName - + "|" - + p.ConfigurationManager.ActiveConfiguration.PlatformName; - } - - // Builds list of files for the command line arguments. - String BuildFileString(List files) - { - String value = ""; - foreach (VCFile file in files) - { - value += "\"" + file.RelativePath + "\""; - value += ','; - } - - value = value.TrimEnd(','); - return value; - } - - // Filters files based on extension. - void FilterFiles(ref List inoutfiles, string suffix) - { - List files = new List(inoutfiles); - inoutfiles.Clear(); - - foreach (VCFile file in files) - { - if (file.Extension == suffix) - inoutfiles.Add(file); - } - } - - // Filters out inactive files. - void FilterActiveFiles(ref List inoutfiles, string activeconfig) - { - List files = new List(inoutfiles); - inoutfiles.Clear(); - - foreach (VCFile file in files) - { - IVCCollection fileconfigs = (IVCCollection)file.FileConfigurations; - foreach (VCFileConfiguration config in fileconfigs) - { - if (config.Name == activeconfig) - { - if (!config.ExcludedFromBuild) - { - inoutfiles.Add(file); - break; - } - } - } - } - } - - // Returns a list of project files. - List FindProjectFiles(Project project) - { - List files = new List(); - - //use my file finder code. - RecursiveFiles(project.ProjectItems, ref files); - - return files; - } - - //recursively find the files in a project - //utility function - void RecursiveFiles(ProjectItems projectitems, ref List files) - { - if (projectitems == null) - return; - - foreach (ProjectItem projectitem in projectitems) - { - if (projectitem.Kind == EnvDTE.Constants.vsProjectItemKindPhysicalFile) - { - VCFile file = (VCFile)projectitem.Object; - - if (file != null) - files.Add(file); - } - RecursiveFiles(projectitem.ProjectItems, ref files); - } - } - - //FindProjects - //get the projects list from the solution. - List FindProjects() - { - List projects = new List(); - foreach (Project p in App().Solution.Projects) - projects.Add(p); - return projects; - } - - //FindCurrentProjects - //get the currently selected project and its dependencies. - List FindCurrentProjects() - { - //TODO: this doesn't get the full dependencies list, only the project. - List projects = new List(); - System.Array currentprojects = (System.Array)App().ActiveSolutionProjects; - foreach (Project p in currentprojects) - projects.Add(p); - return projects; - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/PropertiesInterface.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/PropertiesInterface.cs deleted file mode 100644 index b21266f..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/PropertiesInterface.cs +++ /dev/null @@ -1,171 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: PropertiesInterface.cs -/// Date: 09/19/2007 -/// -/// Description: -/// -/// opCpp Visual Studio properties interface. -///**************************************************************** - -using System; -using Microsoft.Win32; - -namespace vs2005opCpp -{ - public interface PropertiesInterface - { - // opCpp path property - string opCppPath - { - get; - set; - } - - // -verbose property. - bool Verbose - { - get; - set; - } - - // -uninline property. - bool Uninline - { - get; - set; - } - - // -nodebug property - bool NoDebug - { - get; - set; - } - - // -highlighting property - bool Highlighting - { - get; - set; - } - - // -ghosts property - bool Ghosts - { - get; - set; - } - - // -silent property - bool Silent - { - get; - set; - } - - // -force property - bool Force - { - get; - set; - } - - // -fixedsys property - bool FixedSys - { - get; - set; - } - - // -clean property - bool Clean - { - get; - set; - } - - // -globmode property - bool GlobMode - { - get; - set; - } - - // -expansion-depth property - int ExpansionDepth - { - get; - set; - } - - // -testmode property - bool TestMode - { - get; - set; - } - - // -tree property - bool Tree - { - get; - set; - } - - // -fulltree property - bool FullTree - { - get; - set; - } - - // -notations property - bool Notations - { - get; - set; - } - - // additional arguments for the opCpp compiler - string AdditionalArguments - { - get; - set; - } - } -} - - -/* -Options -------- -Note: If a file or directory includes spaces, it must be in quotes! - Separate multiple strings with commas and NO SPACES. - - Example: opcpp -oh file1.oh,"file 2.oh" -d dir1,dir2 -category uclass,scriptclass - --oh - Input files to be compiled. - --d - Input file directories, separated by a comma. - --ohd - All .oh files within these directories will be parsed. - --gd - Generated files output directory. - --doh - Input dialect files to be read. - --altstruct - Specify alternative mappings for struct categories (syntax: structprefix=category,...). - --altclass - Specify alternative mappings for class categories (syntax: classprefix=category,...). -*/ \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Registry.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Registry.cs deleted file mode 100644 index d2835c7..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Registry.cs +++ /dev/null @@ -1,47 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Registry.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for manipulating the registry. -///**************************************************************** - -using System; -using Microsoft.Win32; - -namespace vs2005opCpp -{ - public class MyRegistry - { - /*=== utility ===*/ - - // Get a key from the registry. - public static string GetRegistryKey(string key, string value, string defaultsetting) - { - RegistryKey regkey = Registry.CurrentUser.CreateSubKey(key); - string result = (string) regkey.GetValue(value); - - if (result == null) - { - regkey.SetValue(value, defaultsetting); - - return defaultsetting; - } - - return result; - } - - // Set a key in the registry. - public static void SetRegistryKey(string key, string value, string setting) - { - RegistryKey regkey = Registry.CurrentUser.CreateSubKey(key); - - regkey.SetValue(value, setting); - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Thread.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Thread.cs deleted file mode 100644 index a4e436f..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Thread.cs +++ /dev/null @@ -1,151 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Thread.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Threading stuff. -///**************************************************************** - -using System; -using System.Threading; -using System.Diagnostics; - -namespace vs2005opCpp -{ - // Generic thread object. - abstract class WorkerThread - { - /*=== utility ===*/ - - public void Start() - { - if (thread == null) - { - thread = new Thread(new ThreadStart(Run)); - thread.Start(); - } - } - - private void Run() - { - Running(); - } - - public virtual void Running() - { - } - - public void Stop() - { - thread.Abort(); - } - - /*=== data ===*/ - - private Thread thread; - } - - // The opCpp thread. - class opCppThread : WorkerThread - { - /*=== construction ===*/ - - public opCppThread(string inexe, string inworkingdir, string inarguments) - { - exe = inexe; - workingdir = inworkingdir; - arguments = inarguments; - } - - /*=== utility ===*/ - - public override void Running() - { - bool bErrored = false; - - try - { -#if DEBUG - OnReadLine("debug: working dir = " + workingdir); - OnReadLine("debug: exepath = " + exe); - OnReadLine("debug: arguments = " + arguments); -#endif - //create a new process - process = new System.Diagnostics.Process(); - - process.StartInfo.WorkingDirectory = workingdir; - - //this path is from the registry - //NOTE: this should be integrated with the installer - process.StartInfo.FileName = exe; - process.StartInfo.Arguments = arguments; - process.StartInfo.RedirectStandardOutput = true; - process.StartInfo.UseShellExecute = false; - process.StartInfo.CreateNoWindow = true; - process.StartInfo.ErrorDialog = false; - process.EnableRaisingEvents = true; - - //process. - process.OutputDataReceived += new DataReceivedEventHandler(a_OutputDataReceived); - - process.Start(); - - //begin async output reading - process.BeginOutputReadLine(); - - //wait only 10 seconds (temporary?) - process.WaitForExit(1000*10); - - //the second call makes sure the async output is all finished before proceeding. - process.WaitForExit(); - - if (process.HasExited) - { - //success - } - else - { - bErrored = true; - - //check status...this should be temporary! - OnReadLine("error: opcpp may not have finished in 10 seconds."); - } - - if(process.ExitCode != 0) - bErrored = true; - } - catch(Exception) - { - bErrored = true; - } - - OnEnd(bErrored); - } - - void a_OutputDataReceived(object sender, DataReceivedEventArgs e) - { - OnReadLine(e.Data); - } - - public delegate void EndThread(bool bErrored); - public delegate void ReadLine(string text); - - //called when the thread is done - public EndThread OnEnd; - - //called when we read a new line of text - public ReadLine OnReadLine; - - private string exe; - private string workingdir; - private string arguments; - - private Process process; - }; - -} // end namespace vs2005opCpp diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Toolbar.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Toolbar.cs deleted file mode 100644 index 39274e4..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/Source Files/Toolbar.cs +++ /dev/null @@ -1,105 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: Toolbar.cs -/// Date: 09/18/2007 -/// -/// Description: -/// -/// Code for manipulating the toolbar. -///**************************************************************** - -using System; -using EnvDTE; -using Microsoft.VisualStudio.CommandBars; -using System.Windows.Forms; - -namespace vs2005opCpp -{ - public partial class Connect - { - // This method creates the a new visual studio command bar object. - CommandBar CreateCommandBar(string name, MsoBarPosition position) - { - CommandBars cbars = (CommandBars) App().CommandBars; - - try - { - //this adds the toolbar. - CommandBar toolbar = cbars.Add("opCppToolbar", MsoBarPosition.msoBarTop, System.Type.Missing, false); - return toolbar; - } - catch (System.Exception) - { - //find existing one? - CommandBar toolbar = cbars["opCppToolbar"]; - return toolbar; - } - } - - // This method adds a button to the visual studio command bar. - private void AddButton(CommandBar toolbar, String commandname, String captionname, int iconindex) - { - Command newCommand = null; - - try - { - newCommand = FindCommand(commandname); - } - catch (System.Exception) - { - newCommand = CreateCommand(commandname, captionname, iconindex); - } - - //see if the button exists already, create it if it doesn't - //this does have the intended effect! - foreach (CommandBarControl c in toolbar.Controls) - { - if (c.Caption == captionname) - { - return; - } - } - - //doesn't exist, create it - CommandBarControl control = (CommandBarControl)newCommand.AddControl(toolbar, 1); - CommandBarButton button = (CommandBarButton)control; - - button.Caption = captionname; - button.Style = MsoButtonStyle.msoButtonIcon; - } - - // This method creates the toolbar. - public void CreateToolbar() - { - CommandBar toolbar = CreateCommandBar("opCppToolbar", MsoBarPosition.msoBarTop); - - toolbar.Visible = true; - - //add all the buttons/commands - AddButton(toolbar, "buildsolution", "build solution", 1); - AddButton(toolbar, "buildproject", "build project", 2); - AddButton(toolbar, "cleansolution", "clean solution", 3); - - try - { - debugstream = new System.IO.StreamWriter("c:\\spheroid\\opcpp\\addins\\debugopcpp.txt"); - } - catch (Exception) {} - } - - // This method closes the toolbar. - public void CloseToolbar() - { - CommandBars cbars = (CommandBars) _applicationObject.CommandBars; - - try - { - cbars["opCppToolbar"].Delete(); - } - catch (Exception) {} - } - } -} \ No newline at end of file diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.Designer.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.Designer.cs deleted file mode 100644 index c405ca6..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.Designer.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace vs2005opCpp -{ - - partial class OptionsPage - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Component Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.opCppPath = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.Arguments = new System.Windows.Forms.TextBox(); - this.FindExeButton = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // opCppPath - // - this.opCppPath.Location = new System.Drawing.Point(20, 30); - this.opCppPath.Name = "opCppPath"; - this.opCppPath.Size = new System.Drawing.Size(361, 20); - this.opCppPath.TabIndex = 0; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(17, 14); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(119, 13); - this.label1.TabIndex = 1; - this.label1.Text = "opCpp Executable Path"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(17, 53); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(124, 13); - this.label2.TabIndex = 2; - this.label2.Text = "opCpp Global Arguments"; - // - // Arguments - // - this.Arguments.Location = new System.Drawing.Point(20, 69); - this.Arguments.Name = "Arguments"; - this.Arguments.Size = new System.Drawing.Size(361, 20); - this.Arguments.TabIndex = 3; - // - // FindExeButton - // - this.FindExeButton.Location = new System.Drawing.Point(387, 27); - this.FindExeButton.Name = "FindExeButton"; - this.FindExeButton.Size = new System.Drawing.Size(30, 23); - this.FindExeButton.TabIndex = 4; - this.FindExeButton.Text = "..."; - this.FindExeButton.UseVisualStyleBackColor = true; - this.FindExeButton.Click += new System.EventHandler(this.FindExeButton_Click); - // - // OptionsPage - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.FindExeButton); - this.Controls.Add(this.Arguments); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.opCppPath); - this.Name = "OptionsPage"; - this.Size = new System.Drawing.Size(424, 170); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox opCppPath; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox Arguments; - private System.Windows.Forms.Button FindExeButton; - } - */ -} diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.cs b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.cs deleted file mode 100644 index ca9ad03..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.cs +++ /dev/null @@ -1,222 +0,0 @@ -///**************************************************************** -/// Copyright (C) 2007 OP Games LLC - All Rights Reserved -/// -/// Authors: Kevin Depue & Lucas Ellis -/// -/// File: ToolOptions.cs -/// Date: 09/19/2007 -/// -/// Description: -/// -/// Code for the global options dialog. -///**************************************************************** - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Data; -using System.Text; -using System.Windows.Forms; -using Microsoft.VisualStudio.Shell; -using System.Runtime.InteropServices; - -namespace vs2005opCpp -{ - /* - public partial class OptionsPage : UserControl, EnvDTE.IDTToolsOptionsPage - { - static OptionPageProperties _propertiesObject = new OptionPageProperties(); - - public OptionsPage() - { - InitializeComponent(); - } - - public static string GetValueFromRegistry(string key, string value) - { - Microsoft.Win32.RegistryKey registryKey; - registryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(key, false); - string registryValue = (string)registryKey.GetValue(value); - return registryValue; - } - - public static void SetValueToRegistry(string key, string value, string setting) - { - Microsoft.Win32.RegistryKey registryKey; - registryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(key, true); - registryKey.SetValue(value, setting, Microsoft.Win32.RegistryValueKind.String); - } - - #region IDTToolsOptionsPage Members - - public void GetProperties(ref object PropertiesObject) - { - //Return an object which is accessed by the method call DTE.Properties(category, subcategory) - PropertiesObject = _propertiesObject; - } - - public void OnAfterCreated(EnvDTE.DTE DTEObject) - { - opCppPath.Text = GetValueFromRegistry(@"SOFTWARE\OP Games\opCpp","Location"); - Arguments.Text = GetValueFromRegistry(@"SOFTWARE\OP Games\opCpp", "GlobalArguments"); - } - - public void OnCancel() - { - } - - public void OnHelp() - { - //System.Windows.Forms.MessageBox.Show("TODO: Display Help"); - } - - public void OnOK() - { - SetValueToRegistry(@"SOFTWARE\OP Games\opCpp","Location",opCppPath.Text); - SetValueToRegistry(@"SOFTWARE\OP Games\opCpp","GlobalArguments",Arguments.Text); - } - - #endregion - - private void FindExeButton_Click(object sender, EventArgs e) - { - - } - - } - - //this is for setting values via add-in calls, instead of touching the registry directly - [System.Runtime.InteropServices.ComVisible(true)] - [System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDual)] - public class OptionPageProperties - { - public string opCppPath - { - get - { - return OptionsPage.GetValueFromRegistry(@"SOFTWARE\OP Games\opCpp","Location"); - } - set - { - OptionsPage.SetValueToRegistry(@"SOFTWARE\OP Games\opCpp","Location",value); - } - } - - } - */ - [Guid(GuidStrings.GuidPageCustom)] - public class newOptionsPage : Microsoft.VisualStudio.Shell.DialogPage, EnvDTE.IDTToolsOptionsPage - { - public newOptionsPage() - { - OnCancel(); - } - - public void GetProperties(ref object PropertiesObject) - { - //Return an object which is accessed by the method call DTE.Properties(category, subcategory) -// PropertiesObject = _propertiesObject; - } - - public void OnAfterCreated(EnvDTE.DTE DTEObject) - { -// opCppPath.Text = GetValueFromRegistry(@"SOFTWARE\OP Games\opCpp", "Location"); -// Arguments.Text = GetValueFromRegistry(@"SOFTWARE\OP Games\opCpp", "GlobalArguments"); - } - - public void OnCancel() - { - } - - public void OnHelp() - { - //System.Windows.Forms.MessageBox.Show("TODO: Display Help"); - } - - public void OnOK() - { -// SetValueToRegistry(@"SOFTWARE\OP Games\opCpp", "Location", opCppPath.Text); -// SetValueToRegistry(@"SOFTWARE\OP Games\opCpp", "GlobalArguments", Arguments.Text); - } - - private string optionCustomString = "weee"; - - - [Category("String Options")] - [Description("My string option")] - public string OptionString - { - get - { - return optionCustomString; - } - set - { - optionCustomString = value; - } - } - - protected override void OnActivate(CancelEventArgs e) - { -// DialogResult result = WinFormsHelper.ShowMessageBox(Resources.MessageOnActivateEntered, Resources.MessageOnActivateEntered, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); -// -// if (result == DialogResult.Cancel) -// { -// Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Cancelled the OnActivate event")); -// e.Cancel = true; -// } - - base.OnActivate(e); - } - - protected override void OnClosed(EventArgs e) - { - //WinFormsHelper.ShowMessageBox(Resources.MessageOnClosed); - } - - protected override void OnDeactivate(CancelEventArgs e) - { -// DialogResult result = WinFormsHelper.ShowMessageBox(Resources.MessageOnDeactivateEntered, Resources.MessageOnDeactivateEntered, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); -// -// if (result == DialogResult.Cancel) -// { -// Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Cancelled the OnDeactivate event")); -// e.Cancel = true; -// } - } - - protected override void OnApply(PageApplyEventArgs e) - { -// DialogResult result = WinFormsHelper.ShowMessageBox(Resources.MessageOnApplyEntered); -// -// if (result == DialogResult.Cancel) -// { -// Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Cancelled the OnApply event")); -// e.ApplyBehavior = ApplyKind.Cancel; -// } -// else -// { - base.OnApply(e); -// } -// -// WinFormsHelper.ShowMessageBox(Resources.MessageOnApply); - } - } - - public static class GuidStrings - { - /// - /// Guid for the Package class. - /// - public const string GuidPackage = "B0002DC2-56EE-4931-93F7-70D6E9863940"; - /// - /// Guid for the PageGeneral class. - /// - public const string GuidPageGeneral = "E6717D0B-111E-4a5b-9834-076CA319ED59"; - /// - /// Guid for the PageCustom class. - /// - public const string GuidPageCustom = "0A9F3920-3881-4f50-8986-9EDEC7B33566"; - } -} diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.resx b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.resx deleted file mode 100644 index 19dc0dd..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/ToolOptions.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/obj/vs2005opCpp.csproj.FileList.txt b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/obj/vs2005opCpp.csproj.FileList.txt deleted file mode 100644 index 9b5cdae..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/obj/vs2005opCpp.csproj.FileList.txt +++ /dev/null @@ -1,15 +0,0 @@ -bin\vs2005opCpp.dll -obj\Debug\ResolveAssemblyReference.cache -obj\Debug\vs2005opCpp.csproj.ResolveComReference.cache -obj\Debug\vs2005opCpp.dll -obj\Debug\vs2005opCpp.pdb -obj\Release\ResolveAssemblyReference.cache -obj\Release\vs2005opCpp.csproj.ResolveComReference.cache -obj\Release\vs2005opCpp.dll -obj\Debug\vs2005opCpp.Other_Files.CommandBar.resources -obj\Debug\vs2005opCpp.csproj.GenerateResource.Cache -obj\Release\vs2005opCpp.Other_Files.CommandBar.resources -obj\Release\vs2005opCpp.csproj.GenerateResource.Cache -obj\Release\vs2005opCpp.OptionsPage.resources -bin\vs2005opCpp.pdb -obj\Debug\vs2005opCpp.newOptionsPage.resources diff --git a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/vs2005opCpp.csproj b/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/vs2005opCpp.csproj deleted file mode 100644 index 597a5c6..0000000 --- a/opcplusplus/Addins/vs2005opCpp/vs2005opCpp/vs2005opCpp.csproj +++ /dev/null @@ -1,151 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {2FC90B75-6FD0-4178-9518-AD47CDD8B7D2} - Library - - - false - vs2005opCpp - vs2005opCpp - - - true - false - bin\ - false - DEBUG;TRACE - 4 - false - - - false - true - bin\ - false - TRACE - 4 - false - - - - - - - - - - - - - - - True - True - AddInIcons.resx - - - Code - - - True - True - CommandBar.resx - - - - - - - - - Code - - - - - - - Component - - - ToolOptions.cs - - - - - Designer - ResXFileCodeGenerator - AddInIcons.Designer.cs - - - Designer - ResXFileCodeGenerator - CommandBar.Designer.cs - - - ToolOptions.cs - Designer - - - - - {80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2} - 8 - 0 - 0 - primary - False - - - {1A31287A-4D7D-413E-8E32-3B374931BD89} - 8 - 0 - 0 - primary - False - - - {1CBA492E-7263-47BB-87FE-639000619B15} - 8 - 0 - 0 - primary - False - - - {00020430-0000-0000-C000-000000000046} - 2 - 0 - 0 - primary - False - - - - - Other Files\vs2005opCpp - For Testing.AddIn - - - - - - - - - - - cd $(ProjectDir) -mkdir $(ProjectDir)$(OutDir)en-US -"$(DevEnvDir)..\..\SDK\v2.0\Bin\Resgen" $(ProjectDir)AddInIcons.resx -"$(SystemRoot)\Microsoft.NET\Framework\v2.0.50727\Al" /embed:$(ProjectDir)AddinIcons.resources /culture:en-US /out:$(ProjectDir)$(OutDir)en-US/vs2005opCpp.resources.dll -del $(ProjectDir)AddInIcons.resources - - - - - - \ No newline at end of file diff --git a/opcplusplus/Art/OCPP BlankPage.png b/opcplusplus/Art/OCPP BlankPage.png deleted file mode 100644 index ff0ee52..0000000 Binary files a/opcplusplus/Art/OCPP BlankPage.png and /dev/null differ diff --git a/opcplusplus/Art/OCPP BlankPage.pspimage b/opcplusplus/Art/OCPP BlankPage.pspimage deleted file mode 100644 index fedd81d..0000000 Binary files a/opcplusplus/Art/OCPP BlankPage.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Icon.ico b/opcplusplus/Art/OpCPP Icon.ico deleted file mode 100644 index 612ab1c..0000000 Binary files a/opcplusplus/Art/OpCPP Icon.ico and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Icon.png b/opcplusplus/Art/OpCPP Icon.png deleted file mode 100644 index 412ea02..0000000 Binary files a/opcplusplus/Art/OpCPP Icon.png and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Icon.pspimage b/opcplusplus/Art/OpCPP Icon.pspimage deleted file mode 100644 index 86a2d36..0000000 Binary files a/opcplusplus/Art/OpCPP Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Settings.ico b/opcplusplus/Art/OpCPP Settings.ico deleted file mode 100644 index 58c3453..0000000 Binary files a/opcplusplus/Art/OpCPP Settings.ico and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Settings.png b/opcplusplus/Art/OpCPP Settings.png deleted file mode 100644 index 2545bef..0000000 Binary files a/opcplusplus/Art/OpCPP Settings.png and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Settings.pspimage b/opcplusplus/Art/OpCPP Settings.pspimage deleted file mode 100644 index 2ecd809..0000000 Binary files a/opcplusplus/Art/OpCPP Settings.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Uninstall Icon.ico b/opcplusplus/Art/OpCPP Uninstall Icon.ico deleted file mode 100644 index af622ed..0000000 Binary files a/opcplusplus/Art/OpCPP Uninstall Icon.ico and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Uninstall Icon.png b/opcplusplus/Art/OpCPP Uninstall Icon.png deleted file mode 100644 index f9e990f..0000000 Binary files a/opcplusplus/Art/OpCPP Uninstall Icon.png and /dev/null differ diff --git a/opcplusplus/Art/OpCPP Uninstall Icon.pspimage b/opcplusplus/Art/OpCPP Uninstall Icon.pspimage deleted file mode 100644 index fa8c815..0000000 Binary files a/opcplusplus/Art/OpCPP Uninstall Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpCPP.jpg b/opcplusplus/Art/OpCPP.jpg deleted file mode 100644 index f0b22a6..0000000 Binary files a/opcplusplus/Art/OpCPP.jpg and /dev/null differ diff --git a/opcplusplus/Art/OpCPP.png b/opcplusplus/Art/OpCPP.png deleted file mode 100644 index b24a728..0000000 Binary files a/opcplusplus/Art/OpCPP.png and /dev/null differ diff --git a/opcplusplus/Art/OpCPP.pspimage b/opcplusplus/Art/OpCPP.pspimage deleted file mode 100644 index a7033dd..0000000 Binary files a/opcplusplus/Art/OpCPP.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpCPPIcon.ico b/opcplusplus/Art/OpCPPIcon.ico deleted file mode 100644 index 6aa1f9a..0000000 Binary files a/opcplusplus/Art/OpCPPIcon.ico and /dev/null differ diff --git a/opcplusplus/Art/OpDOH Icon.png b/opcplusplus/Art/OpDOH Icon.png deleted file mode 100644 index 2cab43b..0000000 Binary files a/opcplusplus/Art/OpDOH Icon.png and /dev/null differ diff --git a/opcplusplus/Art/OpDOH Icon.pspimage b/opcplusplus/Art/OpDOH Icon.pspimage deleted file mode 100644 index 32c8b95..0000000 Binary files a/opcplusplus/Art/OpDOH Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpDOHIcon.ico b/opcplusplus/Art/OpDOHIcon.ico deleted file mode 100644 index 97ca046..0000000 Binary files a/opcplusplus/Art/OpDOHIcon.ico and /dev/null differ diff --git a/opcplusplus/Art/OpIndex Icon.png b/opcplusplus/Art/OpIndex Icon.png deleted file mode 100644 index 1c823e6..0000000 Binary files a/opcplusplus/Art/OpIndex Icon.png and /dev/null differ diff --git a/opcplusplus/Art/OpIndex Icon.pspimage b/opcplusplus/Art/OpIndex Icon.pspimage deleted file mode 100644 index d05d358..0000000 Binary files a/opcplusplus/Art/OpIndex Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpIndexIcon.ico b/opcplusplus/Art/OpIndexIcon.ico deleted file mode 100644 index f3785bd..0000000 Binary files a/opcplusplus/Art/OpIndexIcon.ico and /dev/null differ diff --git a/opcplusplus/Art/OpOCPP Icon.png b/opcplusplus/Art/OpOCPP Icon.png deleted file mode 100644 index a7a9dce..0000000 Binary files a/opcplusplus/Art/OpOCPP Icon.png and /dev/null differ diff --git a/opcplusplus/Art/OpOCPP Icon.pspimage b/opcplusplus/Art/OpOCPP Icon.pspimage deleted file mode 100644 index b730188..0000000 Binary files a/opcplusplus/Art/OpOCPP Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpOCPPIcon.ico b/opcplusplus/Art/OpOCPPIcon.ico deleted file mode 100644 index a75b635..0000000 Binary files a/opcplusplus/Art/OpOCPPIcon.ico and /dev/null differ diff --git a/opcplusplus/Art/OpOOH Icon.png b/opcplusplus/Art/OpOOH Icon.png deleted file mode 100644 index 7478f09..0000000 Binary files a/opcplusplus/Art/OpOOH Icon.png and /dev/null differ diff --git a/opcplusplus/Art/OpOOH Icon.pspimage b/opcplusplus/Art/OpOOH Icon.pspimage deleted file mode 100644 index 39dae79..0000000 Binary files a/opcplusplus/Art/OpOOH Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/OpOOHIcon.ico b/opcplusplus/Art/OpOOHIcon.ico deleted file mode 100644 index b19fa8a..0000000 Binary files a/opcplusplus/Art/OpOOHIcon.ico and /dev/null differ diff --git a/opcplusplus/Art/addin/AttributeIcon.png b/opcplusplus/Art/addin/AttributeIcon.png deleted file mode 100644 index 561f016..0000000 Binary files a/opcplusplus/Art/addin/AttributeIcon.png and /dev/null differ diff --git a/opcplusplus/Art/addin/AttributeIcon.pspimage b/opcplusplus/Art/addin/AttributeIcon.pspimage deleted file mode 100644 index fa92653..0000000 Binary files a/opcplusplus/Art/addin/AttributeIcon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/Dialect Icon.png b/opcplusplus/Art/addin/Dialect Icon.png deleted file mode 100644 index 0b22434..0000000 Binary files a/opcplusplus/Art/addin/Dialect Icon.png and /dev/null differ diff --git a/opcplusplus/Art/addin/Dialect Icon.pspimage b/opcplusplus/Art/addin/Dialect Icon.pspimage deleted file mode 100644 index 031dd36..0000000 Binary files a/opcplusplus/Art/addin/Dialect Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/OCPPIcon.pspimage b/opcplusplus/Art/addin/OCPPIcon.pspimage deleted file mode 100644 index b5b86ee..0000000 Binary files a/opcplusplus/Art/addin/OCPPIcon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/OHIcon.pspimage b/opcplusplus/Art/addin/OHIcon.pspimage deleted file mode 100644 index 60fcda6..0000000 Binary files a/opcplusplus/Art/addin/OHIcon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/OOH Icon.pspimage b/opcplusplus/Art/addin/OOH Icon.pspimage deleted file mode 100644 index 3cddcde..0000000 Binary files a/opcplusplus/Art/addin/OOH Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/OpCPP Icon.pspimage b/opcplusplus/Art/addin/OpCPP Icon.pspimage deleted file mode 100644 index 921b166..0000000 Binary files a/opcplusplus/Art/addin/OpCPP Icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/StopIcon.png b/opcplusplus/Art/addin/StopIcon.png deleted file mode 100644 index f636874..0000000 Binary files a/opcplusplus/Art/addin/StopIcon.png and /dev/null differ diff --git a/opcplusplus/Art/addin/StopIcon.pspimage b/opcplusplus/Art/addin/StopIcon.pspimage deleted file mode 100644 index 00b1338..0000000 Binary files a/opcplusplus/Art/addin/StopIcon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/VisualizeIcon.png b/opcplusplus/Art/addin/VisualizeIcon.png deleted file mode 100644 index 1107ca3..0000000 Binary files a/opcplusplus/Art/addin/VisualizeIcon.png and /dev/null differ diff --git a/opcplusplus/Art/addin/VisualizeIcon.pspimage b/opcplusplus/Art/addin/VisualizeIcon.pspimage deleted file mode 100644 index 273e2ea..0000000 Binary files a/opcplusplus/Art/addin/VisualizeIcon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/addin-logo.png b/opcplusplus/Art/addin/addin-logo.png deleted file mode 100644 index 453e626..0000000 Binary files a/opcplusplus/Art/addin/addin-logo.png and /dev/null differ diff --git a/opcplusplus/Art/addin/addin-small.png b/opcplusplus/Art/addin/addin-small.png deleted file mode 100644 index db9d5fb..0000000 Binary files a/opcplusplus/Art/addin/addin-small.png and /dev/null differ diff --git a/opcplusplus/Art/addin/cancel icon.pspimage b/opcplusplus/Art/addin/cancel icon.pspimage deleted file mode 100644 index 1d9ff5e..0000000 Binary files a/opcplusplus/Art/addin/cancel icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/features icon.pspimage b/opcplusplus/Art/addin/features icon.pspimage deleted file mode 100644 index fe802d6..0000000 Binary files a/opcplusplus/Art/addin/features icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/project icon.pspimage b/opcplusplus/Art/addin/project icon.pspimage deleted file mode 100644 index 6273869..0000000 Binary files a/opcplusplus/Art/addin/project icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/addin/solution icon.pspimage b/opcplusplus/Art/addin/solution icon.pspimage deleted file mode 100644 index b219e2a..0000000 Binary files a/opcplusplus/Art/addin/solution icon.pspimage and /dev/null differ diff --git a/opcplusplus/Art/diagrams/dialect.png b/opcplusplus/Art/diagrams/dialect.png deleted file mode 100644 index bb53c86..0000000 Binary files a/opcplusplus/Art/diagrams/dialect.png and /dev/null differ diff --git a/opcplusplus/Art/diagrams/generated.png b/opcplusplus/Art/diagrams/generated.png deleted file mode 100644 index b7b789e7..0000000 Binary files a/opcplusplus/Art/diagrams/generated.png and /dev/null differ diff --git a/opcplusplus/Art/diagrams/includes.png b/opcplusplus/Art/diagrams/includes.png deleted file mode 100644 index 678e30b..0000000 Binary files a/opcplusplus/Art/diagrams/includes.png and /dev/null differ diff --git a/opcplusplus/Art/diagrams/pipeline.png b/opcplusplus/Art/diagrams/pipeline.png deleted file mode 100644 index 05891ca..0000000 Binary files a/opcplusplus/Art/diagrams/pipeline.png and /dev/null differ diff --git a/opcplusplus/Art/diagrams/workflows.png b/opcplusplus/Art/diagrams/workflows.png deleted file mode 100644 index b975f26..0000000 Binary files a/opcplusplus/Art/diagrams/workflows.png and /dev/null differ diff --git a/opcplusplus/Art/logos/bgstripes.png b/opcplusplus/Art/logos/bgstripes.png deleted file mode 100644 index 91757e0..0000000 Binary files a/opcplusplus/Art/logos/bgstripes.png and /dev/null differ diff --git a/opcplusplus/Art/logos/bizcard-kevin.png b/opcplusplus/Art/logos/bizcard-kevin.png deleted file mode 100644 index c3386d4..0000000 Binary files a/opcplusplus/Art/logos/bizcard-kevin.png and /dev/null differ diff --git a/opcplusplus/Art/logos/bizcard-lucas.png b/opcplusplus/Art/logos/bizcard-lucas.png deleted file mode 100644 index 7ffca98..0000000 Binary files a/opcplusplus/Art/logos/bizcard-lucas.png and /dev/null differ diff --git a/opcplusplus/Art/logos/bizcard.png b/opcplusplus/Art/logos/bizcard.png deleted file mode 100644 index 322239e..0000000 Binary files a/opcplusplus/Art/logos/bizcard.png and /dev/null differ diff --git a/opcplusplus/Art/logos/cross.png b/opcplusplus/Art/logos/cross.png deleted file mode 100644 index fc3eda0..0000000 Binary files a/opcplusplus/Art/logos/cross.png and /dev/null differ diff --git a/opcplusplus/Art/logos/opCpp-Button.svg b/opcplusplus/Art/logos/opCpp-Button.svg deleted file mode 100644 index b2e6917..0000000 --- a/opcplusplus/Art/logos/opCpp-Button.svg +++ /dev/null @@ -1,912 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - C++ - - - - - - - - - - OP - - - OP - OP - - diff --git a/opcplusplus/Art/logos/opCpp-Diagram.svg b/opcplusplus/Art/logos/opCpp-Diagram.svg deleted file mode 100644 index f08f401..0000000 --- a/opcplusplus/Art/logos/opCpp-Diagram.svg +++ /dev/null @@ -1,11591 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - CPP - CPP - CPP - - H - H - H - C++ - - - STANDARD - STANDARD - STANDARD - - - - - - - - C++ - - - - - - - - - - OP - - - OP - OP - - - - - - - C++ - - - - - OP - - - OP - OP - - - Reflection - Reflection - Reflection - - Reflection - Reflection - Reflection - - - - - - - - - OP - - - OP - OP - - - STANDARD - STANDARD - STANDARD - C++ - - - - - - - - - - - OP - - - OP - OP - - - - - 0110111101110000 - 0110111101110000 - 0110111101110000 - - - - - - - - - OP - - - OP - OP - - 1010101010101010101 - 1010101010101010101 - 1010101010101010101 - - - - - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - - OP - - - OP - OP - - OH - OH - OH - C++ - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - C++ - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - C++ - - - STANDARD - STANDARD - STANDARD - - DOH - DOH - DOH - - DOH - DOH - DOH - - DOH - DOH - DOH - - DOH - DOH - DOH - DIALECTS - DIALECTS - DIALECTS - - - - - - - - - - - - OH - OH - OH - - OH - OH - OH - - - - - - - CPP - CPP - CPP - - H - H - H - - CPP - CPP - CPP - - H - H - H - C++ - - - - - - - - - - - OP - - - OP - OP - - generated/ - generated/ - generated/ - - OH - OH - OH - - OH - OH - OH - - - - - - - CPP - CPP - CPP - - H - H - H - - - - - - - CPP - CPP - CPP - - H - H - H - C++ - - - - - - - - - - - OP - - - OP - OP - - GENERATED/ - GENERATED/ - GENERATED/ - - - - - - - - INDEX - INDEX - INDEX - - - - - - - - - - - INDEX - INDEX - INDEX - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - - CPP - CPP - CPP - - H - H - H - "generated.h" - "generated.h" - "generated.h" - "generated.cpp" - "generated.cpp" - "generated.cpp" - Simple - Simple - Simple - Integration - Integration - Integration - C++ - C++ - C++ - - OH - OH - OH - - OH - OH - OH - - - - - - - H - H - H - - CPP - CPP - CPP - - - - C++ - - - - - - - - - - - OP - - - OP - OP - - - - - - C++ - - - - H - H - H - - CPP - CPP - CPP - - Workflows - Workflows - Workflows - Complements - Complements - Complements - - OH - OH - OH - - OH - OH - OH - - - - C++ - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - - - - - - - - - - - - H - H - H - - CPP - CPP - CPP - - H - H - H - - CPP - CPP - CPP - Existing - Existing - Existing - - diff --git a/opcplusplus/Art/logos/opCpp-Mini.svg b/opcplusplus/Art/logos/opCpp-Mini.svg deleted file mode 100644 index 9518425..0000000 --- a/opcplusplus/Art/logos/opCpp-Mini.svg +++ /dev/null @@ -1,3625 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - C++ - - - - - - - - - - - OP - - - OP - OP - - - diff --git a/opcplusplus/Art/logos/opCpp-New.svg b/opcplusplus/Art/logos/opCpp-New.svg deleted file mode 100644 index d1b604c..0000000 --- a/opcplusplus/Art/logos/opCpp-New.svg +++ /dev/null @@ -1,1129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - C++ - - - - - OP - - - OP - OP - - - - - - - - - - - - diff --git a/opcplusplus/Art/logos/opCpp-Serialize.svg b/opcplusplus/Art/logos/opCpp-Serialize.svg deleted file mode 100644 index 4a86232..0000000 --- a/opcplusplus/Art/logos/opCpp-Serialize.svg +++ /dev/null @@ -1,5016 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - C++ - - - - - - - - - - OP - - - OP - OP - C++ - - - - - OP - - - OP - OP - - Reflection - Reflection - Reflection - - Reflection - Reflection - Reflection - - - - - - - - - OP - - - OP - OP - - - STANDARD - STANDARD - STANDARD - C++ - - - - - - - - - - - OP - - - OP - OP - - - - - 0110111101110000 - 0110111101110000 - 0110111101110000 - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - OP - - - OP - OP - - - - - - - - - - - - - OP - - - OP - OP - - - diff --git a/opcplusplus/Art/logos/opGames-Bizcard-Kevin.svg b/opcplusplus/Art/logos/opGames-Bizcard-Kevin.svg deleted file mode 100644 index 9fe4a0b..0000000 --- a/opcplusplus/Art/logos/opGames-Bizcard-Kevin.svg +++ /dev/null @@ -1,11895 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - S - E - A - M - G - - - - - - - - - OP - OP - - OP - OP - - - OP - - OP - - OP - OP - - - - - - - OP - - - OP - - - - Kevin Depue - opGames LLC - Lead Programmer - 303 747 3482 - kndepue@op-games.com - Fax : 866 811 5508 - Gunbarrel, CO - C++ - - - - - - - - - - OP - - - OP - OP - TM - LLC - www.op-games.com - www.opcplusplus.com - Casual GameDeveloper - Game ToolsDeveloper - - diff --git a/opcplusplus/Art/logos/opGames-Bizcard-Lucas.svg b/opcplusplus/Art/logos/opGames-Bizcard-Lucas.svg deleted file mode 100644 index b3e1106..0000000 --- a/opcplusplus/Art/logos/opGames-Bizcard-Lucas.svg +++ /dev/null @@ -1,11886 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - S - E - A - M - G - - - - - - - - - OP - OP - - OP - OP - - - OP - - OP - - OP - OP - - - - - - - OP - - - OP - - - - Lucas Ellis - opGames LLC - Lead Programmer - 970 372 5367 - lellis@op-games.com - Fax : 866 811 5508 - Gunbarrel, CO - C++ - - - - - - - - - - OP - - - OP - OP - TM - LLC - www.op-games.com - www.opcplusplus.com - Casual GameDeveloper - Game ToolsDeveloper - - diff --git a/opcplusplus/Art/logos/opGames-Bizcard.svg b/opcplusplus/Art/logos/opGames-Bizcard.svg deleted file mode 100644 index e7704b4..0000000 --- a/opcplusplus/Art/logos/opGames-Bizcard.svg +++ /dev/null @@ -1,11814 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - S - E - A - M - G - - - - - - - - - OP - OP - - OP - OP - - - OP - - OP - - OP - OP - - - - - - - OP - - - OP - - - - Kevin Depue - opGames LLC - Lead Programmer - 970 372 5367 - kndepue@op-games.com - Fax : 866 811 5508 - Gunbarrel, CO - Game ToolsDeveloper - Casual Game Developer - - C++ - - - - - - - - - - - OP - - - OP - OP - - - TM - LLC - - diff --git a/opcplusplus/Art/logos/opGames-small.png b/opcplusplus/Art/logos/opGames-small.png deleted file mode 100644 index 04cf76b..0000000 Binary files a/opcplusplus/Art/logos/opGames-small.png and /dev/null differ diff --git a/opcplusplus/Art/logos/opGames.png b/opcplusplus/Art/logos/opGames.png deleted file mode 100644 index 99354cc..0000000 Binary files a/opcplusplus/Art/logos/opGames.png and /dev/null differ diff --git a/opcplusplus/Art/logos/opGames.svg b/opcplusplus/Art/logos/opGames.svg deleted file mode 100644 index 97be29a..0000000 --- a/opcplusplus/Art/logos/opGames.svg +++ /dev/null @@ -1,12235 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - OP - OP - - OP - OP - - - OP - - OP - - OP - OP - - - - - - S - E - A - M - G - - - - - - - - - - - - OP - - - OP - - - - - S - E - A - M - G - - - - - - - - - - - - OP - - - OP - - LLC - - - - diff --git a/opcplusplus/Art/logos/opSemicolon.png b/opcplusplus/Art/logos/opSemicolon.png deleted file mode 100644 index 6348a21..0000000 Binary files a/opcplusplus/Art/logos/opSemicolon.png and /dev/null differ diff --git a/opcplusplus/Art/logos/opSerialize.png b/opcplusplus/Art/logos/opSerialize.png deleted file mode 100644 index 9afef4f..0000000 Binary files a/opcplusplus/Art/logos/opSerialize.png and /dev/null differ diff --git a/opcplusplus/Art/logos/opcpp.png b/opcplusplus/Art/logos/opcpp.png deleted file mode 100644 index 48debbc..0000000 Binary files a/opcplusplus/Art/logos/opcpp.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opCodeGen.png b/opcplusplus/Art/logos/selected/opCodeGen.png deleted file mode 100644 index 37e8c12..0000000 Binary files a/opcplusplus/Art/logos/selected/opCodeGen.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opExtend.png b/opcplusplus/Art/logos/selected/opExtend.png deleted file mode 100644 index ea138ff..0000000 Binary files a/opcplusplus/Art/logos/selected/opExtend.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opGames.png b/opcplusplus/Art/logos/selected/opGames.png deleted file mode 100644 index 99354cc..0000000 Binary files a/opcplusplus/Art/logos/selected/opGames.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opReflection.png b/opcplusplus/Art/logos/selected/opReflection.png deleted file mode 100644 index 019f89a..0000000 Binary files a/opcplusplus/Art/logos/selected/opReflection.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opSemicolon.png b/opcplusplus/Art/logos/selected/opSemicolon.png deleted file mode 100644 index 6348a21..0000000 Binary files a/opcplusplus/Art/logos/selected/opSemicolon.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opSerialize.png b/opcplusplus/Art/logos/selected/opSerialize.png deleted file mode 100644 index 5a61533..0000000 Binary files a/opcplusplus/Art/logos/selected/opSerialize.png and /dev/null differ diff --git a/opcplusplus/Art/logos/selected/opStandard.png b/opcplusplus/Art/logos/selected/opStandard.png deleted file mode 100644 index 1f1f866..0000000 Binary files a/opcplusplus/Art/logos/selected/opStandard.png and /dev/null differ diff --git a/opcplusplus/Art/opCpp-Addin.svg b/opcplusplus/Art/opCpp-Addin.svg deleted file mode 100644 index 658a888..0000000 --- a/opcplusplus/Art/opCpp-Addin.svg +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - OP - - - OP - OP - C++ - - - - - diff --git a/opcplusplus/Art/opCpp-Inkscape-svg.svg b/opcplusplus/Art/opCpp-Inkscape-svg.svg deleted file mode 100644 index c191632..0000000 --- a/opcplusplus/Art/opCpp-Inkscape-svg.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/opcplusplus/Art/opCpp-Inkscape.svg b/opcplusplus/Art/opCpp-Inkscape.svg deleted file mode 100644 index c75f5d7..0000000 --- a/opcplusplus/Art/opCpp-Inkscape.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - OP - - - OP - OP - OP - C++ - C++ - C++ - - diff --git a/opcplusplus/Art/opCpp-New.svg b/opcplusplus/Art/opCpp-New.svg deleted file mode 100644 index 645acc3..0000000 --- a/opcplusplus/Art/opCpp-New.svg +++ /dev/null @@ -1,1132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - C++ - - - - - OP - - - OP - OP - - - diff --git a/opcplusplus/Art/opCpp-Small.png b/opcplusplus/Art/opCpp-Small.png deleted file mode 100644 index acc30f3..0000000 Binary files a/opcplusplus/Art/opCpp-Small.png and /dev/null differ diff --git a/opcplusplus/Art/opCpp-Smaller.png b/opcplusplus/Art/opCpp-Smaller.png deleted file mode 100644 index 004a40d..0000000 Binary files a/opcplusplus/Art/opCpp-Smaller.png and /dev/null differ diff --git a/opcplusplus/Art/website/BluePlusPlus.png b/opcplusplus/Art/website/BluePlusPlus.png deleted file mode 100644 index 30b69ae..0000000 Binary files a/opcplusplus/Art/website/BluePlusPlus.png and /dev/null differ diff --git a/opcplusplus/Art/website/BluePlusPlus.pspimage b/opcplusplus/Art/website/BluePlusPlus.pspimage deleted file mode 100644 index 553b05e..0000000 Binary files a/opcplusplus/Art/website/BluePlusPlus.pspimage and /dev/null differ diff --git a/opcplusplus/Art/website/CompilePlusPlus.png b/opcplusplus/Art/website/CompilePlusPlus.png deleted file mode 100644 index 88b8630..0000000 Binary files a/opcplusplus/Art/website/CompilePlusPlus.png and /dev/null differ diff --git a/opcplusplus/Art/website/CompilePlusPlus.pspimage b/opcplusplus/Art/website/CompilePlusPlus.pspimage deleted file mode 100644 index d70a84e..0000000 Binary files a/opcplusplus/Art/website/CompilePlusPlus.pspimage and /dev/null differ diff --git a/opcplusplus/Art/website/DocumentPlus.png b/opcplusplus/Art/website/DocumentPlus.png deleted file mode 100644 index 3cb087e..0000000 Binary files a/opcplusplus/Art/website/DocumentPlus.png and /dev/null differ diff --git a/opcplusplus/Art/website/DocumentPlus.pspimage b/opcplusplus/Art/website/DocumentPlus.pspimage deleted file mode 100644 index 70ac25c..0000000 Binary files a/opcplusplus/Art/website/DocumentPlus.pspimage and /dev/null differ diff --git a/opcplusplus/Art/website/LittlePlus.pspimage b/opcplusplus/Art/website/LittlePlus.pspimage deleted file mode 100644 index 834c464..0000000 Binary files a/opcplusplus/Art/website/LittlePlus.pspimage and /dev/null differ diff --git a/opcplusplus/Art/website/SmallDocumentPlus.png b/opcplusplus/Art/website/SmallDocumentPlus.png deleted file mode 100644 index 2260181..0000000 Binary files a/opcplusplus/Art/website/SmallDocumentPlus.png and /dev/null differ diff --git a/opcplusplus/Art/website/SmallDocumentPlus.pspimage b/opcplusplus/Art/website/SmallDocumentPlus.pspimage deleted file mode 100644 index 2b3ba63..0000000 Binary files a/opcplusplus/Art/website/SmallDocumentPlus.pspimage and /dev/null differ diff --git a/opcplusplus/Distribution/bin/win32/final/opCpp2005.dll b/opcplusplus/Distribution/bin/win32/final/opCpp2005.dll new file mode 100644 index 0000000..82e9538 Binary files /dev/null and b/opcplusplus/Distribution/bin/win32/final/opCpp2005.dll differ diff --git a/opcplusplus/Distribution/bin/win32/release/opCPP.exe b/opcplusplus/Distribution/bin/win32/release/opCPP.exe new file mode 100644 index 0000000..00e25d9 Binary files /dev/null and b/opcplusplus/Distribution/bin/win32/release/opCPP.exe differ diff --git a/opcplusplus/Doxyfile b/opcplusplus/Doxyfile index f7530b2..a697684 100644 --- a/opcplusplus/Doxyfile +++ b/opcplusplus/Doxyfile @@ -25,7 +25,7 @@ ABBREVIATE_BRIEF = "The $name class" \ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO -STRIP_FROM_PATH = "C:/Documents and Settings/Lucas Ellis.LUCAS/" +STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO diff --git a/opcplusplus/Inc/BasicNodes.h b/opcplusplus/Inc/BasicNodes.h index 24a45cb..7d9192e 100644 --- a/opcplusplus/Inc/BasicNodes.h +++ b/opcplusplus/Inc/BasicNodes.h @@ -4,6 +4,10 @@ | Reference, TemplateType, etc.). */ +#pragma once + +#include "Contexts.h" + namespace nodes { diff --git a/opcplusplus/Inc/Concepts.h b/opcplusplus/Inc/Concepts.h new file mode 100644 index 0000000..b45e018 --- /dev/null +++ b/opcplusplus/Inc/Concepts.h @@ -0,0 +1,8 @@ + +#pragma once + +#include + +template +concept NodeType = std::derived_from; + diff --git a/opcplusplus/Inc/Config.h b/opcplusplus/Inc/Config.h index d4b153f..7d3f208 100644 --- a/opcplusplus/Inc/Config.h +++ b/opcplusplus/Inc/Config.h @@ -28,7 +28,7 @@ //special library settings #ifdef PLATFORM_WINDOWS - #define BOOST_FILESYSTEM_NO_LIB +// #define BOOST_FILESYSTEM_NO_LIB #endif diff --git a/opcplusplus/Inc/ContextInlines.h b/opcplusplus/Inc/ContextInlines.h new file mode 100644 index 0000000..a89d76c --- /dev/null +++ b/opcplusplus/Inc/ContextInlines.h @@ -0,0 +1,556 @@ + +#pragma once + +#include "Walkers.h" +#include "Contexts.h" + +// +// BasicTypes +// + +template +inline bool context::BasicTypes::Parse() +{ + PARSE_START; + { + FindBasicTypes(); + } + PARSE_END; +} + +template +inline void context::BasicTypes::FindBasicTypes() +{ + this->FindAngles(); + + this->CleanAll(); + + //NOTE: we want standalone angles anytime we can have expressions. + opNode::Disallow(T_LESS_THAN);//?? + opNode::Disallow(T_GREATER_THAN); + + this->FindTemplateTypes(); + + this->FindScopes(); // id::id + + this->FindSigned(); + this->FindUnsigned(); + + this->FindArrays(); // id[...][...] + + this->FindPointers(); + this->FindReferences(); + + this->FindFunctionPointers(); + + this->FindPointerMembers(); +} + +// +// Declaration +// + +template +inline bool context::Declaration::Parse() +{ + PARSE_START; + + this->CleanAll(); + + //needs to be before arrays + this->FindOperators(); // operator ... [(...)] + + this->FindAngles(); + + ConcatenationWalker performconcat(this); + + this->FindCPlusPluses(); + + this->FindTemplateDecls(); // template< ... > + + this->FindTemplateTypes(); + + this->FindSigned(); + this->FindUnsigned(); + + this->FindModifiers(); + this->FindValuedModifiers(); + + this->FindScopes(); // id::id + + this->FindArrays(); // id[...][...] + + this->FindPointers(); + + this->FindReferences(); + + this->FindFunctionPointers(); + + this->FindPointerMembers(); + + this->FindFunctions(); + + this->FindDestructors(GetClassName()); + + this->FindConstructors(GetClassName()); + + this->FindDestructorDefinitions(); + + this->FindConstructorDefinitions(); + + this->FindFunctionDefinitions(); + + this->FindFriends(); + + this->FindUsings(); + + this->FindTypedefs(); + + this->FindVisibilityLabels(); + + this->FindCPPConstructs(); + + this->FindOPEnums(); + this->FindOPObjects(); + + this->FindTemplated(); + + this->FindBasicStatements(); + + PARSE_END; +} + +template +inline bool context::Declaration::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyBasicStatements(); + } + POSTPARSE_END; +} + +// +// State +// + + +template +inline bool context::State::Parse() +{ + PARSE_START; + + //TODO: definitely should group these things... (share between stuff...) + this->FindAngles(); + + this->CleanAll(); + + opNode::Disallow(T_LESS_THAN); + opNode::Disallow(T_GREATER_THAN); + + this->FindTemplateTypes(); + + this->FindScopes(); + + this->FindArrays(); + + this->FindPointers(); + this->FindReferences(); + + this->FindFunctionPointers(); + + this->FindFunctions(); + this->FindFunctionDefinitions(); + + this->FindStates(); + + this->FindVisibilityLabels(); + + this->FindStateStatements(); + + PARSE_END; +} + +template +inline bool context::State::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyStateStatements(); + } + POSTPARSE_END; +} + + +// +// Inheritance +// + +template +inline bool context::Inheritance::Parse() +{ + PARSE_START; + + this->FindAngles(); + + this->CleanAll(); + + this->Disallow(T_LESS_THAN); + this->Disallow(T_GREATER_THAN); + + this->FindTemplateTypes(); + this->FindScopes(); + + PARSE_END; +} + +// +// NamespaceDecl +// + +template +inline bool context::NamespaceDecl::Parse() +{ + PARSE_START; + + this->CleanAll(); + + this->FindScopes(); + + PARSE_END; +} + +// +// Global +// + + +template +inline bool context::Global::PreParse() +{ + PREPARSE_START; + { + this->FindOPIncludes(); + } + PREPARSE_END; +} + +template +inline bool context::Global::Parse() +{ + PARSE_START; + { + ConcatenationWalker performconcat(this); + + this->FindOPDefines(); + this->FindUsingNamespaceKeywords(); + this->FindNamespaces(); + this->FindCPlusPluses(); + this->FindOPEnums(); + this->FindOPObjects(); + this->FindConditionalPreprocessorStatements(); + } + PARSE_END; +} + +template +inline bool context::Global::PostParse() +{ + POSTPARSE_START; + { + NameResolverWalker walker(this); + } + POSTPARSE_END; +} + +// +// Operator +// + +template +inline bool context::Operator::Parse() +{ + PARSE_START; + + //TODO: validate this, its probably wrong. + this->FindScopes(); + + if (!opNode::IsCurrent(T_STAR)) + this->FindPointers(); + + if (!opNode::IsCurrent(T_AMPERSAND)) + this->FindReferences(); + + if (opNode::IsCurrent(G_POINTER) || opNode::IsCurrent(T_ID) || opNode::IsCurrent(G_REFERENCE) || opNode::IsCurrent(G_SCOPE)) + { + bCastOperator = true; + OperatorType = opNode::CurrentNode(); + opNode::IncrementPosition(); + } + else + OperatorType = opNode::CheckOverloadableOperator(); + + opNode::CheckNone(); + + PARSE_END; +} + + +// +// Dialect +// + +template +inline bool context::Dialect::PreParse() +{ + PREPARSE_START; + { + this->FindCodeLocations(); + this->FindOPIncludes(); + } + PREPARSE_END; +} + +template +inline bool context::Dialect::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindOPDefines(); + this->FindScopes(); + this->FindDialectNamespaces(); + this->FindEnumerations(); + this->FindCategories(); + this->FindNoteDefinitions(); + this->FindFileDeclarations(); + this->FindExtensions(); + this->FindExtendPoints(); + + // look for extensionpoint's (everywhere) + { + ExtensionPointWalker walker(this); + } + + // parse global dialect statements + this->FindGlobalDialectStatements(); + } + PARSE_END; +} + +template +inline bool context::Dialect::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyGlobalDialectStatements(); + } + POSTPARSE_END; +} + +// +// Category +// + +template +inline bool context::Category::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindDataModifiers(); + this->FindFunctionModifiers(); + this->FindCategoryLocations(); + this->FindDisallows(); + + this->FindDialectCategoryStatements(); + } + PARSE_END; +} + +template +inline bool context::Category::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyDialectCategoryStatements(); + } + POSTPARSE_END; +} + +// +// CategoryLocation +// + +template +inline bool context::CategoryLocation::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindNotes(); + this->FindCategoryMaps(); + + // parse category location statements, then + // do an appropriate allow only + this->FindCategoryLocationStatements(); + } + PARSE_END; +} + +template +inline bool context::CategoryLocation::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyCategoryLocationStatements(); + } + POSTPARSE_END; +} + +// +// CategoryMap +// + + +template +inline bool context::CategoryMap::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindCriteriaExpressions(); + + // parse category map criteria expressions, and + // do the correct allowonly + this->FindCriteriaStatements(); + } + PARSE_END; +} + +template +inline bool context::CategoryMap::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyDialectCriteriaStatements(); + } + POSTPARSE_END; +} + +// +// Enumeration +// + +template +inline bool context::Enumeration::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindEnumerationLocations(); + this->FindDisallows(); + + this->FindDialectEnumStatements(); + } + PARSE_END; +} + +template +inline bool context::Enumeration::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyDialectEnumStatements(); + } + POSTPARSE_END; +} + +// +// EnumerationLocation +// + +template +inline bool context::EnumerationLocation::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindNotes(); + this->FindEnumerationMaps(); + + // parse statements + this->FindEnumerationLocationStatements(); + } + PARSE_END; +} + +template +inline bool context::EnumerationLocation::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyEnumerationLocationStatements(); + } + POSTPARSE_END; +} + +// +// FileDeclaration +// + +template +inline bool context::FileDeclaration::Parse() +{ + PARSE_START; + { + this->CleanAll(); + this->FindFileDeclarationLocations(); + + // parse into statements + this->FindFileDeclarationLocationStatements(); + } + PARSE_END; +} + +template +inline bool context::FileDeclaration::PostParse() +{ + POSTPARSE_START; + { + this->AllowOnlyFileDeclarationLocationStatements(); + } + POSTPARSE_END; +} + +// +// TemplateType +// + +template +inline bool context::TemplateType::Parse() +{ + PARSE_START; + { + this->CleanAll(); + + this->FindTemplateTypes(); + this->FindScopes(); + } + PARSE_END; +} + +// +// Argument +// + + +template +inline bool context::Argument::Parse() +{ + PARSE_START; + { + this->FindBasicTypes(); + } + PARSE_END; +} \ No newline at end of file diff --git a/opcplusplus/Inc/Contexts.h b/opcplusplus/Inc/Contexts.h index bf20ee8..412697f 100644 --- a/opcplusplus/Inc/Contexts.h +++ b/opcplusplus/Inc/Contexts.h @@ -11,6 +11,14 @@ /// Interface contexts code. ///**************************************************************** +#pragma once + +#include "Interfaces.h" +#include "UtilityInterfaces.h" +#include "StatementInterfaces.h" +#include "DialectStatementInterfaces.h" +#include "DialectInterfaces.h" + ///========================================== /// Context interfaces ///========================================== @@ -46,41 +54,9 @@ namespace context public: IMPLEMENTS_INTERFACE(BasicTypes) - bool Parse() - { - PARSE_START; - { - FindBasicTypes(); - } - PARSE_END; - } - - void FindBasicTypes() - { - FindAngles(); - - CleanAll(); - - //NOTE: we want standalone angles anytime we can have expressions. - Disallow(T_LESS_THAN);//?? - Disallow(T_GREATER_THAN); - - FindTemplateTypes(); - - FindScopes(); // id::id + bool Parse(); - FindSigned(); - FindUnsigned(); - - FindArrays(); // id[...][...] - - FindPointers(); - FindReferences(); - - FindFunctionPointers(); - - FindPointerMembers(); - } + void FindBasicTypes(); }; template @@ -120,83 +96,9 @@ namespace context return ""; } - bool Parse() - { - PARSE_START; - - CleanAll(); - - //needs to be before arrays - FindOperators(); // operator ... [(...)] + bool Parse(); - FindAngles(); - - ConcatenationWalker performconcat(this); - - FindCPlusPluses(); - - FindTemplateDecls(); // template< ... > - - FindTemplateTypes(); - - FindSigned(); - FindUnsigned(); - - FindModifiers(); - FindValuedModifiers(); - - FindScopes(); // id::id - - FindArrays(); // id[...][...] - - FindPointers(); - - FindReferences(); - - FindFunctionPointers(); - - FindPointerMembers(); - - FindFunctions(); - - FindDestructors(GetClassName()); - - FindConstructors(GetClassName()); - - FindDestructorDefinitions(); - - FindConstructorDefinitions(); - - FindFunctionDefinitions(); - - FindFriends(); - - FindUsings(); - - FindTypedefs(); - - FindVisibilityLabels(); - - FindCPPConstructs(); - - FindOPEnums(); - FindOPObjects(); - - FindTemplated(); - - FindBasicStatements(); - - PARSE_END; - } - - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyBasicStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -210,14 +112,7 @@ namespace context IMPLEMENTS_INTERFACE(Argument) REQUIRES_INTERFACE(Blocks) - bool Parse() - { - PARSE_START; - { - FindBasicTypes(); - } - PARSE_END; - } + bool Parse(); }; ///========================================== @@ -244,49 +139,9 @@ namespace context public: IMPLEMENTS_INTERFACE(State) - bool Parse() - { - PARSE_START; - - //TODO: definitely should group these things... (share between stuff...) - FindAngles(); - - CleanAll(); - - Disallow(T_LESS_THAN); - Disallow(T_GREATER_THAN); - - FindTemplateTypes(); - - FindScopes(); - - FindArrays(); - - FindPointers(); - FindReferences(); - - FindFunctionPointers(); - - FindFunctions(); - FindFunctionDefinitions(); - - FindStates(); - - FindVisibilityLabels(); - - FindStateStatements(); - - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyStateStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -304,22 +159,7 @@ namespace context public: IMPLEMENTS_INTERFACE(Inheritance) - bool Parse() - { - PARSE_START; - - FindAngles(); - - CleanAll(); - - Disallow(T_LESS_THAN); - Disallow(T_GREATER_THAN); - - FindTemplateTypes(); - FindScopes(); - - PARSE_END; - } + bool Parse(); }; ///========================================== @@ -337,16 +177,7 @@ namespace context public: IMPLEMENTS_INTERFACE(NamespaceDecl) - bool Parse() - { - PARSE_START; - - CleanAll(); - - FindScopes(); - - PARSE_END; - } + bool Parse(); }; ///========================================== @@ -368,40 +199,11 @@ namespace context public: IMPLEMENTS_INTERFACE(Global) - bool PreParse() - { - PREPARSE_START; - { - FindOPIncludes(); - } - PREPARSE_END; - } + bool PreParse(); - bool Parse() - { - PARSE_START; - { - ConcatenationWalker performconcat(this); - - FindOPDefines(); - FindUsingNamespaceKeywords(); - FindNamespaces(); - FindCPlusPluses(); - FindOPEnums(); - FindOPObjects(); - FindConditionalPreprocessorStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - NameResolverWalker walker(this); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -425,32 +227,7 @@ namespace context OperatorType = NULL; } - bool Parse() - { - PARSE_START; - - //TODO: validate this, its probably wrong. - FindScopes(); - - if(!IsCurrent(T_STAR)) - FindPointers(); - - if(!IsCurrent(T_AMPERSAND)) - FindReferences(); - - if( IsCurrent(G_POINTER) || IsCurrent(T_ID) || IsCurrent(G_REFERENCE) || IsCurrent(G_SCOPE) ) - { - bCastOperator = true; - OperatorType = CurrentNode(); - IncrementPosition(); - } - else - OperatorType = CheckOverloadableOperator(); - - CheckNone(); - - PARSE_END; - } + bool Parse(); protected: opNode* OperatorType; @@ -483,50 +260,11 @@ namespace context public: IMPLEMENTS_INTERFACE(Dialect) - bool PreParse() - { - PREPARSE_START; - { - FindCodeLocations(); - FindOPIncludes(); - } - PREPARSE_END; - } + bool PreParse(); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindOPDefines(); - FindScopes(); - FindDialectNamespaces(); - FindEnumerations(); - FindCategories(); - FindNoteDefinitions(); - FindFileDeclarations(); - FindExtensions(); - FindExtendPoints(); - - // look for extensionpoint's (everywhere) - { - ExtensionPointWalker walker(this); - } - - // parse global dialect statements - FindGlobalDialectStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyGlobalDialectStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -546,29 +284,9 @@ namespace context public: IMPLEMENTS_INTERFACE(Category); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindDataModifiers(); - FindFunctionModifiers(); - FindCategoryLocations(); - FindDisallows(); - - FindDialectCategoryStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyDialectCategoryStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -586,29 +304,9 @@ namespace context public: IMPLEMENTS_INTERFACE(CategoryLocation); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindNotes(); - FindCategoryMaps(); - - // parse category location statements, then - // do an appropriate allow only - FindCategoryLocationStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyCategoryLocationStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -625,28 +323,9 @@ namespace context public: IMPLEMENTS_INTERFACE(CategoryMap); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindCriteriaExpressions(); - - // parse category map criteria expressions, and - // do the correct allowonly - FindCriteriaStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyDialectCriteriaStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -664,27 +343,9 @@ namespace context public: IMPLEMENTS_INTERFACE(Enumeration); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindEnumerationLocations(); - FindDisallows(); - - FindDialectEnumStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyDialectEnumStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; ///========================================== @@ -702,28 +363,9 @@ namespace context public: IMPLEMENTS_INTERFACE(EnumerationLocation); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindNotes(); - FindEnumerationMaps(); - - // parse statements - FindEnumerationLocationStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyEnumerationLocationStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; //========================================== @@ -740,27 +382,9 @@ namespace context public: IMPLEMENTS_INTERFACE(FileDeclaration); - bool Parse() - { - PARSE_START; - { - CleanAll(); - FindFileDeclarationLocations(); - - // parse into statements - FindFileDeclarationLocationStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyFileDeclarationLocationStatements(); - } - POSTPARSE_END; - } + bool PostParse(); }; //========================================== @@ -777,18 +401,15 @@ namespace context public: IMPLEMENTS_INTERFACE(TemplateType) - bool Parse() - { - PARSE_START; - { - CleanAll(); - - FindTemplateTypes(); - FindScopes(); - } - PARSE_END; - } + bool Parse(); }; + + + + + + + } // end namespace context diff --git a/opcplusplus/Inc/Declarations.h b/opcplusplus/Inc/Declarations.h new file mode 100644 index 0000000..893ad52 --- /dev/null +++ b/opcplusplus/Inc/Declarations.h @@ -0,0 +1,16 @@ + +#pragma once + +namespace nodes +{ + class opNode; + class ModifiersNode; + class AutoModifiersNode; + + class StatementBase; +} + +namespace dialect_nodes +{ + class DataModifierStatementNode; +} \ No newline at end of file diff --git a/opcplusplus/Inc/Delegates.h b/opcplusplus/Inc/Delegates.h index 1b9e913..f43f569 100644 --- a/opcplusplus/Inc/Delegates.h +++ b/opcplusplus/Inc/Delegates.h @@ -12,7 +12,7 @@ ///**************************************************************** //include fast delegate -#include "../../Lib/FastDelegate/FastDelegate.h" +#include "FastDelegate.h" namespace delegates { diff --git a/opcplusplus/Inc/DialectInterfaces.h b/opcplusplus/Inc/DialectInterfaces.h index c11ad45..a375a73 100644 --- a/opcplusplus/Inc/DialectInterfaces.h +++ b/opcplusplus/Inc/DialectInterfaces.h @@ -11,6 +11,8 @@ /// Interfaces for dialect nodes. ///**************************************************************** +#pragma once + namespace interfaces { @@ -24,45 +26,9 @@ class Categories : public Parent public: IMPLEMENTS_INTERFACE(Categories); - bool Parse() - { - PARSE_START; - { - FindCategories(); - } - PARSE_END; - } - - void FindCategories() - { - LOOP_START(G_CATEGORY) - { - HIT(T_CATEGORY) - { - stackedcontext newNode = opNode::Make(T_CATEGORY); - - Erase(T_CATEGORY); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - EatWhitespaceAndComments(); - - newNode->SetName(*name); - newNode->AppendNode(name); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindCategories(); }; ///========================================== @@ -75,45 +41,9 @@ class CodeLocations : public Parent public: IMPLEMENTS_INTERFACE(CodeLocations); - bool PreParse() - { - PREPARSE_START; - { - FindCodeLocations(); - } - PREPARSE_END; - } - - void FindCodeLocations() - { - LOOP_START(G_CODE) - { - HIT(T_CODE) - { - stackedcontext newNode = opNode::Make(T_CODE); - - Erase(T_CODE); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - EatWhitespaceAndComments(); - - newNode->SetName(*name); - newNode->AppendNode(name); + bool PreParse(); - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindCodeLocations(); }; ///========================================== @@ -127,41 +57,9 @@ class CategoryLocations : public Parent IMPLEMENTS_INTERFACE(CategoryLocations); REQUIRES_INTERFACE(Clean); - bool Parse() - { - PARSE_START; - { - FindCategoryLocations(); - } - PARSE_END; - } - - void FindCategoryLocations() - { - LOOP_START(G_CATEGORY_LOCATION) - { - HIT(T_LOCATION) - { - stackedcontext newNode = opNode::Make(T_LOCATION); - - Erase(T_LOCATION); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END - } + bool Parse(); + + void FindCategoryLocations(); }; @@ -176,41 +74,9 @@ class Disallows : public Parent IMPLEMENTS_INTERFACE(Disallows); REQUIRES_INTERFACE(Clean); - bool Parse() - { - PARSE_START; - { - FindDisallows(); - } - PARSE_END; - } - - void FindDisallows() - { - LOOP_START(G_DISALLOW) - { - HIT(T_DISALLOW) - { - stackedcontext newNode = opNode::Make(T_DISALLOW); - - Erase(T_DISALLOW); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END - } + bool Parse(); + + void FindDisallows(); }; ///========================================== @@ -223,52 +89,12 @@ class CategoryMaps : public Parent public: IMPLEMENTS_INTERFACE(CategoryMaps); - bool Parse() - { - PARSE_START; - { - FindCategoryMaps(); - } - PARSE_END; - } - - void FindCategoryMaps() - { - FindCategoryMap(); - FindCategoryMap(); - } + bool Parse(); + + void FindCategoryMaps(); template - void FindCategoryMap() - { - LOOP_START(grammar) - { - HIT(token) - { - stackedcontext newNode = opNode::Make(token); - - Erase(token); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - if(IsCurrent(G_BRACE_BLOCK)) - { - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - } - - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindCategoryMap(); }; ///========================================== @@ -281,46 +107,9 @@ class DataModifiers : public Parent public: IMPLEMENTS_INTERFACE(DataModifiers); - bool Parse() - { - PARSE_START; - { - FindDataModifiers(); - } - PARSE_END; - } - - void FindDataModifiers() - { - LOOP_START(G_DATAMODIFIER) - { - HIT(T_DATAMODIFIER) - { - stackedcontext newNode = opNode::Make(T_DATAMODIFIER); - - Erase(T_DATAMODIFIER); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - if(IsCurrent(G_PAREN_BLOCK)) - { - stacked paren = opNode::Expect(G_PAREN_BLOCK); - stacked args = opNode::Transform(paren); - - newNode->SetArgument(*args); - newNode->AppendNode(args); - } - - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindDataModifiers(); }; @@ -334,46 +123,9 @@ class FunctionModifiers : public Parent public: IMPLEMENTS_INTERFACE(FunctionModifiers); - bool Parse() - { - PARSE_START; - { - FindFunctionModifiers(); - } - PARSE_END; - } - - void FindFunctionModifiers() - { - LOOP_START(G_FUNCTIONMODIFIER) - { - HIT(T_FUNCTIONMODIFIER) - { - stackedcontext newNode = opNode::Make(T_FUNCTIONMODIFIER); - - Erase(T_FUNCTIONMODIFIER); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - if(IsCurrent(G_PAREN_BLOCK)) - { - stacked paren = opNode::Expect(G_PAREN_BLOCK); - stacked args = opNode::Transform(paren); - - newNode->SetArgument(*args); - newNode->AppendNode(args); - } - - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindFunctionModifiers(); }; ///========================================== @@ -387,45 +139,12 @@ class CriteriaExpressions : public Parent IMPLEMENTS_INTERFACE(CriteriaExpressions); REQUIRES_INTERFACE(Clean); - bool Parse() - { - PARSE_START; - { - FindCriteriaExpressions(); - } - PARSE_END; - } - - void FindCriteriaExpressions() - { - FindIs(); -// FindIs(); -// FindEverything(); - } + bool Parse(); + + void FindCriteriaExpressions(); template - void FindIs() - { - LOOP_START(grammar) - { - HIT(token) - { - stackedcontext newNode = opNode::Make(token); - - Erase(token); - - stacked body = opNode::PushUntil(T_SEMICOLON); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END - } + void FindIs(); }; ///========================================== @@ -438,46 +157,9 @@ class Notes : public Parent public: IMPLEMENTS_INTERFACE(Notes); - bool Parse() - { - PARSE_START; - { - FindNotes(); - } - PARSE_END; - } - - void FindNotes() - { - LOOP_START(G_NOTE) - { - HIT(T_NOTE) - { - stackedcontext newNode = opNode::Make(T_NOTE); - - Erase(T_NOTE); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - if(IsCurrent(G_BRACE_BLOCK)) - { - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - } - else - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindNotes(); }; ///========================================== @@ -490,52 +172,9 @@ class NoteDefinitions : public Parent public: IMPLEMENTS_INTERFACE(NoteDefinitions); - bool Parse() - { - PARSE_START; - { - FindNoteDefinitions(); - } - PARSE_END; - } - - void FindNoteDefinitions() - { - LOOP_START(G_NOTE_DEFINITION) - { - HIT(T_NOTE) - { - stackedcontext newNode = opNode::Make(T_NOTE); - - Erase(T_NOTE); - - EatWhitespaceAndComments(); - - stacked pathnode = opNode::Expect(G_SCOPE); - - newNode->SetPath(*pathnode); - newNode->AppendNode(pathnode); - - EatWhitespaceAndComments(); - - stacked ppn = opNode::Expect(G_PAREN_BLOCK); - stacked args = opNode::Transform(ppn); - - newNode->SetArguments(*args); - newNode->AppendNode(args); - - EatWhitespaceAndComments(); - - stacked body = opNode::Expect(G_BRACE_BLOCK); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindNoteDefinitions(); }; ///========================================== @@ -548,45 +187,9 @@ class Enumerations : public Parent public: IMPLEMENTS_INTERFACE(Enumerations); - bool Parse() - { - PARSE_START; - { - FindEnumerations(); - } - PARSE_END; - } - - void FindEnumerations() - { - LOOP_START(G_ENUMERATION) - { - HIT(T_ENUMERATION) - { - stackedcontext newNode = opNode::Make(T_ENUMERATION); - - Erase(T_ENUMERATION); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - EatWhitespaceAndComments(); + bool Parse(); - newNode->SetName(*name); - newNode->AppendNode(name); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindEnumerations(); }; ///========================================== @@ -600,41 +203,9 @@ class EnumerationLocations : public Parent IMPLEMENTS_INTERFACE(EnumerationLocations); REQUIRES_INTERFACE(Clean); - bool Parse() - { - PARSE_START; - { - FindEnumerationLocations(); - } - PARSE_END; - } - - void FindEnumerationLocations() - { - LOOP_START(G_ENUMERATION_LOCATION) - { - HIT(T_LOCATION) - { - stackedcontext newNode = opNode::Make(T_LOCATION); - - Erase(T_LOCATION); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END - } + bool Parse(); + + void FindEnumerationLocations(); }; ///========================================== @@ -647,35 +218,9 @@ class EnumerationMaps : public Parent public: IMPLEMENTS_INTERFACE(EnumerationMaps); - bool Parse() - { - PARSE_START; - { - FindEnumerationMaps(); - } - PARSE_END; - } - - void FindEnumerationMaps() - { - LOOP_START(G_ENUMERATION_MAP) - { - HIT(T_ENUMMAP) - { - stackedcontext newNode = opNode::Make(T_ENUMMAP); - - opNode::Erase(T_ENUMMAP); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindEnumerationMaps(); }; ///========================================== @@ -689,57 +234,10 @@ class DialectModifiers : public Parent IMPLEMENTS_INTERFACE(DialectModifiers); template - void FindDialectModifier() - { - LOOP_START(grammar) - { - HIT(T_ID) - { - TerminalNode* t = node_cast(CurrentNode()); - - if (t->GetValue() == ModifierClass::StaticModifierName()) - { - stackedcontext newNode = opNode::Make(T_ID); - - Erase(T_ID); - - InsertNodeAtCurrent(newNode); - } - else - IncrementPosition(); - } - } - LOOP_END; - } + void FindDialectModifier(); template - void FindValuedDialectModifier() - { - LOOP_START(grammar) - { - HIT(T_ID) - { - TerminalNode* t = node_cast(CurrentNode()); - - if (t->GetValue() == ModifierClass::StaticModifierName()) - { - stackedcontext newNode = opNode::Make(T_ID); - - Erase(T_ID); - - stacked value = opNode::Expect(G_PAREN_BLOCK); - - newNode->SetValue(*value); - newNode->AppendNode(value); - - InsertNodeAtCurrent(newNode); - } - else - IncrementPosition(); - } - } - LOOP_END; - } + void FindValuedDialectModifier(); }; ///========================================== @@ -752,47 +250,9 @@ class CriteriaValueModifiers : public Parent public: IMPLEMENTS_INTERFACE(CriteriaValueModifiers); - bool Parse() - { - PARSE_START; - { - FindCriteriaValueModifiers(); - } - PARSE_END; - } - - void FindCriteriaValueModifiers() - { - LOOP_START(G_CRITERIA_VALUE_MODIFIER) - { - HIT(G_PAREN_BLOCK) - { - if (IsPrevious(T_ID)) - { - stackedcontext newNode = opNode::Make(G_PAREN_BLOCK); - - stacked paren = opNode::Expect(G_PAREN_BLOCK); - stacked arg = opNode::Transform(paren); - - newNode->SetArgument(*arg); - - stacked id = opNode::ReverseExpect(T_ID, *arg); - - // Grab basics from the id. - newNode->CopyBasics(*id); - newNode->SetName(*id); - - newNode->AppendNode(id); - newNode->AppendNode(arg); - - InsertNodeAtCurrent(newNode); - } - else - IncrementPosition(); - } - } - LOOP_END; - } + bool Parse(); + + void FindCriteriaValueModifiers(); }; ///========================================== @@ -805,28 +265,9 @@ class CriteriaGroups : public Parent public: IMPLEMENTS_INTERFACE(CriteriaGroups); - bool Parse() - { - PARSE_START; - { - FindCriteriaGroups(); - } - PARSE_END; - } - - void FindCriteriaGroups() - { - LOOP_START(G_CRITERIA_GROUP) - { - HIT(G_PAREN_BLOCK) - { - stacked paren = opNode::Expect(G_PAREN_BLOCK); - stacked newNode = opNode::Transform(paren); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindCriteriaGroups(); }; //========================================== @@ -839,41 +280,9 @@ class Extensions : public Parent public: IMPLEMENTS_INTERFACE(Extensions); - bool Parse() - { - PARSE_START; - { - FindExtensions(); - } - PARSE_END; - } + bool Parse(); - void FindExtensions() - { - LOOP_START(G_EXTENSION) - { - HIT(T_EXTENSION) - { - stackedcontext newNode = opNode::Make(T_EXTENSION); - - Erase(T_EXTENSION); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - EatWhitespaceAndComments(); - - newNode->SetName(*name); - newNode->AppendNode(name); - - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindExtensions(); }; //========================================== @@ -886,44 +295,9 @@ class ExtendPoints : public Parent public: IMPLEMENTS_INTERFACE(ExtendPoints); - bool Parse() - { - PARSE_START; - { - FindExtendPoints(); - } - PARSE_END; - } - - void FindExtendPoints() - { - LOOP_START(G_EXTEND_POINT) - { - HIT(T_EXTEND_POINT) - { - stackedcontext newNode = opNode::Make(T_EXTEND_POINT); - - Erase(T_EXTEND_POINT); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - EatWhitespaceAndComments(); - - newNode->SetName(*name); - newNode->AppendNode(name); - - stacked body = opNode::Expect(G_BRACE_BLOCK); - - newNode->SetBody(*body); - newNode->AppendNode(body); + bool Parse(); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindExtendPoints(); }; //========================================== @@ -936,37 +310,9 @@ class ExtensionPoints : public Parent public: IMPLEMENTS_INTERFACE(ExtensionPoints); - bool Parse() - { - PARSE_START; - { - FindExtensionPoints(); - } - PARSE_END; - } - - void FindExtensionPoints() - { - LOOP_START(G_EXTENSION_POINT) - { - HIT(T_EXTENSION_POINT) - { - stackedcontext newNode = opNode::Make(T_EXTENSION_POINT); - - Erase(T_EXTENSION_POINT); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + bool Parse(); + + void FindExtensionPoints(); }; //========================================== @@ -979,35 +325,9 @@ class FileDeclarationLocations : public Parent public: IMPLEMENTS_INTERFACE(FileDeclarationLocations); - bool Parse() - { - PARSE_START; - { - FindFileDeclarationLocations(); - } - PARSE_END; - } - - void FindFileDeclarationLocations() - { - LOOP_START(G_FILE_DECLARATION_LOCATION) - { - HIT(T_LOCATION) - { - stackedcontext newNode = opNode::Make(T_LOCATION); - - Erase(T_LOCATION); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END - } + bool Parse(); + + void FindFileDeclarationLocations(); }; //========================================== @@ -1020,45 +340,9 @@ class FileDeclarations : public Parent public: IMPLEMENTS_INTERFACE(FileDeclarations); - bool Parse() - { - PARSE_START; - { - FindFileDeclarations(); - } - PARSE_END; - } - - void FindFileDeclarations() - { - LOOP_START(G_FILE_DECLARATION) - { - HIT(T_FILE_DECLARATION) - { - stackedcontext newNode = opNode::Make(T_FILE_DECLARATION); - - Erase(T_FILE_DECLARATION); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); + bool Parse(); - EatWhitespaceAndComments(); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindFileDeclarations(); }; //========================================== @@ -1071,44 +355,19 @@ class DialectNamespaces : public Parent public: IMPLEMENTS_INTERFACE(DialectNamespaces) - bool Parse() - { - PARSE_START; - { - FindDialectNamespaces(); - } - PARSE_END; - } + bool Parse(); + + void FindDialectNamespaces(); +}; + - void FindDialectNamespaces() - { - LOOP_START(G_DIALECT_NAMESPACE) - { - HIT(T_NAMESPACE) - { - stackedcontext newNode = opNode::Make(T_NAMESPACE); - Erase(T_NAMESPACE); - EatWhitespaceAndComments(); - stacked name = opNode::Expect(T_ID); - newNode->SetName(*name); - newNode->AppendNode(name); - EatWhitespaceAndComments(); - stacked body = opNode::Expect(G_BRACE_BLOCK); - newNode->SetBody(*body); - newNode->AppendNode(body); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } -}; } // end namespace interfaces \ No newline at end of file diff --git a/opcplusplus/Inc/DialectInterfacesInlines.h b/opcplusplus/Inc/DialectInterfacesInlines.h new file mode 100644 index 0000000..8ffd225 --- /dev/null +++ b/opcplusplus/Inc/DialectInterfacesInlines.h @@ -0,0 +1,990 @@ +#include "DialectInterfaces.h" +#include "Contexts.h" + +#pragma once + +// +// Categories +// + +template +inline bool interfaces::Categories::Parse() +{ + PARSE_START; + { + FindCategories(); + } + PARSE_END; +} + +template +inline void Categories::FindCategories() +{ + LOOP_START(G_CATEGORY) + { + HIT(T_CATEGORY) + { + stackedcontext newNode = opNode::Make(T_CATEGORY); + + opNode::Erase(T_CATEGORY); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + opNode::EatWhitespaceAndComments(); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// CodeLocations +// + +template +inline bool CodeLocations::PreParse() +{ + PREPARSE_START; + { + FindCodeLocations(); + } + PREPARSE_END; +} + +template +inline void interfaces::CodeLocations::FindCodeLocations() +{ + LOOP_START(G_CODE) + { + HIT(T_CODE) + { + stackedcontext newNode = opNode::Make(T_CODE); + + opNode::Erase(T_CODE); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + opNode::EatWhitespaceAndComments(); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// CategoryLocations +// + +template +inline bool interfaces::CategoryLocations::Parse() +{ + PARSE_START; + { + FindCategoryLocations(); + } + PARSE_END; +} + +template +inline void CategoryLocations::FindCategoryLocations() +{ + LOOP_START(G_CATEGORY_LOCATION) + { + HIT(T_LOCATION) + { + stackedcontext newNode = opNode::Make(T_LOCATION); + + opNode::Erase(T_LOCATION); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END +} + +// +// Disallows +// + +template +inline bool interfaces::Disallows::Parse() +{ + PARSE_START; + { + FindDisallows(); + } + PARSE_END; +} + +template +inline void Disallows::FindDisallows() +{ + LOOP_START(G_DISALLOW) + { + HIT(T_DISALLOW) + { + stackedcontext newNode = opNode::Make(T_DISALLOW); + + opNode::Erase(T_DISALLOW); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END +} + +// +// CategoryMaps +// + +template +inline bool interfaces::CategoryMaps::Parse() +{ + PARSE_START; + { + FindCategoryMaps(); + } + PARSE_END; +} + +template +inline void CategoryMaps::FindCategoryMaps() +{ + FindCategoryMap(); + FindCategoryMap(); +} + + +template +template +inline void CategoryMaps::FindCategoryMap() +{ + LOOP_START(grammar) + { + HIT(token) + { + stackedcontext newNode = opNode::Make(token); + + opNode::Erase(token); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + if (opNode::IsCurrent(G_BRACE_BLOCK)) + { + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + } + + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// DataModifiers +// + +template +inline bool interfaces::DataModifiers::Parse() +{ + PARSE_START; + { + FindDataModifiers(); + } + PARSE_END; +} + +template +inline void DataModifiers::FindDataModifiers() +{ + LOOP_START(G_DATAMODIFIER) + { + HIT(T_DATAMODIFIER) + { + stackedcontext newNode = opNode::Make(T_DATAMODIFIER); + + opNode::Erase(T_DATAMODIFIER); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + if (opNode::IsCurrent(G_PAREN_BLOCK)) + { + stacked paren = opNode::Expect(G_PAREN_BLOCK); + stacked args = opNode::Transform(paren); + + newNode->SetArgument(*args); + newNode->AppendNode(args); + } + + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// FunctionModifiers +// + +template +inline bool interfaces::FunctionModifiers::Parse() +{ + PARSE_START; + { + FindFunctionModifiers(); + } + PARSE_END; +} + +template +inline void FunctionModifiers::FindFunctionModifiers() +{ + LOOP_START(G_FUNCTIONMODIFIER) + { + HIT(T_FUNCTIONMODIFIER) + { + stackedcontext newNode = opNode::Make(T_FUNCTIONMODIFIER); + + opNode::Erase(T_FUNCTIONMODIFIER); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + if (opNode::IsCurrent(G_PAREN_BLOCK)) + { + stacked paren = opNode::Expect(G_PAREN_BLOCK); + stacked args = opNode::Transform(paren); + + newNode->SetArgument(*args); + newNode->AppendNode(args); + } + + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// CriteriaExpressions +// + +template +inline bool interfaces::CriteriaExpressions::Parse() +{ + PARSE_START; + { + FindCriteriaExpressions(); + } + PARSE_END; +} + +template +inline void CriteriaExpressions::FindCriteriaExpressions() +{ + FindIs(); + // FindIs(); + // FindEverything(); +} + +template +template +inline void CriteriaExpressions::FindIs() +{ + LOOP_START(grammar) + { + HIT(token) + { + stackedcontext newNode = opNode::Make(token); + + opNode::Erase(token); + + stacked body = opNode::PushUntil(T_SEMICOLON); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END +} + +// +// Notes +// + +template +inline bool interfaces::Notes::Parse() +{ + PARSE_START; + { + FindNotes(); + } + PARSE_END; +} + +template +inline void Notes::FindNotes() +{ + LOOP_START(G_NOTE) + { + HIT(T_NOTE) + { + stackedcontext newNode = opNode::Make(T_NOTE); + + opNode::Erase(T_NOTE); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + if (opNode::IsCurrent(G_BRACE_BLOCK)) + { + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + } + else + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// NoteDefinitions +// + +template +inline bool interfaces::NoteDefinitions::Parse() +{ + PARSE_START; + { + FindNoteDefinitions(); + } + PARSE_END; +} + +template +inline void NoteDefinitions::FindNoteDefinitions() +{ + LOOP_START(G_NOTE_DEFINITION) + { + HIT(T_NOTE) + { + stackedcontext newNode = opNode::Make(T_NOTE); + + opNode::Erase(T_NOTE); + + opNode::EatWhitespaceAndComments(); + + stacked pathnode = opNode::Expect(G_SCOPE); + + newNode->SetPath(*pathnode); + newNode->AppendNode(pathnode); + + opNode::EatWhitespaceAndComments(); + + stacked ppn = opNode::Expect(G_PAREN_BLOCK); + stacked args = opNode::Transform(ppn); + + newNode->SetArguments(*args); + newNode->AppendNode(args); + + opNode::EatWhitespaceAndComments(); + + stacked body = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Enumerations +// + +template +inline bool interfaces::Enumerations::Parse() +{ + PARSE_START; + { + FindEnumerations(); + } + PARSE_END; +} + +template +inline void Enumerations::FindEnumerations() +{ + LOOP_START(G_ENUMERATION) + { + HIT(T_ENUMERATION) + { + stackedcontext newNode = opNode::Make(T_ENUMERATION); + + opNode::Erase(T_ENUMERATION); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + opNode::EatWhitespaceAndComments(); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// EnumerationLocations +// + + +template +inline bool interfaces::EnumerationLocations::Parse() +{ + PARSE_START; + { + FindEnumerationLocations(); + } + PARSE_END; +} + +template +inline void EnumerationLocations::FindEnumerationLocations() +{ + LOOP_START(G_ENUMERATION_LOCATION) + { + HIT(T_LOCATION) + { + stackedcontext newNode = opNode::Make(T_LOCATION); + + opNode::Erase(T_LOCATION); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END +} + +// +// EnumerationMaps +// + +template +inline bool interfaces::EnumerationMaps::Parse() +{ + PARSE_START; + { + FindEnumerationMaps(); + } + PARSE_END; +} + +template +inline void EnumerationMaps::FindEnumerationMaps() +{ + LOOP_START(G_ENUMERATION_MAP) + { + HIT(T_ENUMMAP) + { + stackedcontext newNode = opNode::Make(T_ENUMMAP); + + opNode::Erase(T_ENUMMAP); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// DialectModifiers +// + +template +template +inline void DialectModifiers::FindDialectModifier() +{ + LOOP_START(grammar) + { + HIT(T_ID) + { + TerminalNode* t = node_cast(opNode::CurrentNode()); + + if (t->GetValue() == ModifierClass::StaticModifierName()) + { + stackedcontext newNode = opNode::Make(T_ID); + + opNode::Erase(T_ID); + + opNode::InsertNodeAtCurrent(newNode); + } + else + opNode::IncrementPosition(); + } + } + LOOP_END; +} + +template +template +inline void interfaces::DialectModifiers::FindValuedDialectModifier() +{ + LOOP_START(grammar) + { + HIT(T_ID) + { + TerminalNode* t = node_cast(opNode::CurrentNode()); + + if (t->GetValue() == ModifierClass::StaticModifierName()) + { + stackedcontext newNode = opNode::Make(T_ID); + + opNode::Erase(T_ID); + + stacked value = opNode::Expect(G_PAREN_BLOCK); + + newNode->SetValue(*value); + newNode->AppendNode(value); + + opNode::InsertNodeAtCurrent(newNode); + } + else + opNode::IncrementPosition(); + } + } + LOOP_END; +} + +// +// CriteriaValueModifiers +// + +template +inline bool interfaces::CriteriaValueModifiers::Parse() +{ + PARSE_START; + { + FindCriteriaValueModifiers(); + } + PARSE_END; +} + +template +inline void CriteriaValueModifiers::FindCriteriaValueModifiers() +{ + LOOP_START(G_CRITERIA_VALUE_MODIFIER) + { + HIT(G_PAREN_BLOCK) + { + if (opNode::IsPrevious(T_ID)) + { + stackedcontext newNode = opNode::Make(G_PAREN_BLOCK); + + stacked paren = opNode::Expect(G_PAREN_BLOCK); + stacked arg = opNode::Transform(paren); + + newNode->SetArgument(*arg); + + stacked id = opNode::ReverseExpect(T_ID, *arg); + + // Grab basics from the id. + newNode->CopyBasics(*id); + newNode->SetName(*id); + + newNode->AppendNode(id); + newNode->AppendNode(arg); + + opNode::InsertNodeAtCurrent(newNode); + } + else + opNode::IncrementPosition(); + } + } + LOOP_END; +} + +// +// CriteriaGroups +// + +template +inline bool interfaces::CriteriaGroups::Parse() +{ + PARSE_START; + { + FindCriteriaGroups(); + } + PARSE_END; +} + +template +inline void CriteriaGroups::FindCriteriaGroups() +{ + LOOP_START(G_CRITERIA_GROUP) + { + HIT(G_PAREN_BLOCK) + { + stacked paren = opNode::Expect(G_PAREN_BLOCK); + stacked newNode = opNode::Transform(paren); + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Extensions +// + +template +inline bool interfaces::Extensions::Parse() +{ + PARSE_START; + { + FindExtensions(); + } + PARSE_END; +} + +template +inline void Extensions::FindExtensions() +{ + LOOP_START(G_EXTENSION) + { + HIT(T_EXTENSION) + { + stackedcontext newNode = opNode::Make(T_EXTENSION); + + opNode::Erase(T_EXTENSION); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + opNode::EatWhitespaceAndComments(); + + newNode->SetName(*name); + newNode->AppendNode(name); + + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// ExtendPoints +// + +template +inline bool interfaces::ExtendPoints::Parse() +{ + PARSE_START; + { + FindExtendPoints(); + } + PARSE_END; +} + +template +inline void ExtendPoints::FindExtendPoints() +{ + LOOP_START(G_EXTEND_POINT) + { + HIT(T_EXTEND_POINT) + { + stackedcontext newNode = opNode::Make(T_EXTEND_POINT); + + opNode::Erase(T_EXTEND_POINT); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + opNode::EatWhitespaceAndComments(); + + newNode->SetName(*name); + newNode->AppendNode(name); + + stacked body = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// ExtensionPoints +// + +template +inline bool interfaces::ExtensionPoints::Parse() +{ + PARSE_START; + { + FindExtensionPoints(); + } + PARSE_END; +} + +template +inline void ExtensionPoints::FindExtensionPoints() +{ + LOOP_START(G_EXTENSION_POINT) + { + HIT(T_EXTENSION_POINT) + { + stackedcontext newNode = opNode::Make(T_EXTENSION_POINT); + + opNode::Erase(T_EXTENSION_POINT); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// FileDeclarationLocations +// + +template +inline bool interfaces::FileDeclarationLocations::Parse() +{ + PARSE_START; + { + FindFileDeclarationLocations(); + } + PARSE_END; +} + +template +inline void FileDeclarationLocations::FindFileDeclarationLocations() +{ + LOOP_START(G_FILE_DECLARATION_LOCATION) + { + HIT(T_LOCATION) + { + stackedcontext newNode = opNode::Make(T_LOCATION); + + opNode::Erase(T_LOCATION); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END +} + +// +// FileDeclarations +// + + +template +inline bool interfaces::FileDeclarations::Parse() +{ + PARSE_START; + { + FindFileDeclarations(); + } + PARSE_END; +} + +template +inline void FileDeclarations::FindFileDeclarations() +{ + LOOP_START(G_FILE_DECLARATION) + { + HIT(T_FILE_DECLARATION) + { + stackedcontext newNode = opNode::Make(T_FILE_DECLARATION); + + opNode::Erase(T_FILE_DECLARATION); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + opNode::EatWhitespaceAndComments(); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// DialectNamespaces +// + +template +inline bool interfaces::DialectNamespaces::Parse() +{ + PARSE_START; + { + FindDialectNamespaces(); + } + PARSE_END; +} + +template +inline void DialectNamespaces::FindDialectNamespaces() +{ + LOOP_START(G_DIALECT_NAMESPACE) + { + HIT(T_NAMESPACE) + { + stackedcontext newNode = opNode::Make(T_NAMESPACE); + + opNode::Erase(T_NAMESPACE); + + opNode::EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + opNode::EatWhitespaceAndComments(); + + stacked body = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} diff --git a/opcplusplus/Inc/DialectNodes.h b/opcplusplus/Inc/DialectNodes.h index 83700e3..3973eec 100644 --- a/opcplusplus/Inc/DialectNodes.h +++ b/opcplusplus/Inc/DialectNodes.h @@ -11,6 +11,11 @@ /// Dialect nodes header. ///**************************************************************** +#pragma once + +#include "FileNodes.h" +#include "DialectTracker.h" + namespace dialect_nodes { diff --git a/opcplusplus/Inc/DialectStatementInlines.h b/opcplusplus/Inc/DialectStatementInlines.h new file mode 100644 index 0000000..6121417 --- /dev/null +++ b/opcplusplus/Inc/DialectStatementInlines.h @@ -0,0 +1,661 @@ +#include "DialectStatementInterfaces.h" + +#pragma once + +// +// DialectStatementsBase +// + +// Is the current statement a datamodifier statement? +template +inline bool DialectStatementsBase::DataModifierStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a functionmodifier statement? +template +inline bool interfaces::DialectStatementsBase::FunctionModifierStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a category location statement? +template +inline bool interfaces::DialectStatementsBase::CategoryLocationStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a note statement? +template +inline bool interfaces::DialectStatementsBase::NoteStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a datamap statement? +template +inline bool interfaces::DialectStatementsBase::DatamapStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a functionmap statement? +template +inline bool interfaces::DialectStatementsBase::FunctionmapStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a disallow statement? +template +inline bool interfaces::DialectStatementsBase::DisallowStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an is statement? +template +inline bool interfaces::DialectStatementsBase::IsStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an enum location statement? +template +inline bool interfaces::DialectStatementsBase::EnumLocationStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an enummap statement? +template +inline bool interfaces::DialectStatementsBase::EnumMapStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a file declaration location statement? +template +inline bool interfaces::DialectStatementsBase::FileDeclarationLocationStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a note definition statement? +template +inline bool interfaces::DialectStatementsBase::NoteDefinitionStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an opmacro statement? +template +inline bool interfaces::DialectStatementsBase::OPMacroStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a category statement? +template +inline bool interfaces::DialectStatementsBase::CategoryStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a dialect namespace statement? +template +inline bool interfaces::DialectStatementsBase::DialectNamespaceStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an opinclude statement? +template +inline bool interfaces::DialectStatementsBase::OPIncludeStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a code statement? +template +inline bool interfaces::DialectStatementsBase::CodeStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an enumeration statement? +template +inline bool interfaces::DialectStatementsBase::EnumerationStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement a file declaration statement? +template +inline bool interfaces::DialectStatementsBase::FileDeclarationStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an extension statement? +template +inline bool interfaces::DialectStatementsBase::ExtensionStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an extend point statement? +template +inline bool interfaces::DialectStatementsBase::ExtendPointStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// Is the current statement an opdefine statement? +template +inline bool interfaces::DialectStatementsBase::OPDefineStatement(stacked& stuff) +{ + return HandleStatement(stuff); +} + +// +// DialectCategoryStatements +// + +template +inline bool interfaces::DialectCategoryStatements::Parse() +{ + PARSE_START; + { + FindDialectCategoryStatements(); + } + PARSE_END; +} + +template +inline bool DialectCategoryStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyDialectCategoryStatements(); + } + POSTPARSE_END; +} + +// Finds dialect category statements. +template +inline void interfaces::DialectCategoryStatements::FindDialectCategoryStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_DATAMODIFIER, + G_FUNCTIONMODIFIER, + G_CATEGORY_LOCATION, + G_DISALLOW, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->DataModifierStatement(stuff)); + else if (this->FunctionModifierStatement(stuff)); + else if (this->CategoryLocationStatement(stuff)); + else if (this->DisallowStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid dialect category statements +// remain after statement parsing. +template +inline void interfaces::DialectCategoryStatements::AllowOnlyDialectCategoryStatements() +{ + opNode::AllowOnly(G_DATAMODIFIER_STATEMENT, + G_FUNCTIONMODIFIER_STATEMENT, + G_CATEGORY_LOCATION_STATEMENT, + G_DISALLOW_STATEMENT); +} + +// +// DialectEnumerationStatements +// + +template +inline bool interfaces::DialectEnumerationStatements::Parse() +{ + PARSE_START; + { + FindDialectEnumStatements(); + } + PARSE_END; +} + +template +inline bool DialectEnumerationStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyDialectEnumStatements(); + } + POSTPARSE_END; +} + +// Finds dialect category statements. +template +inline void interfaces::DialectEnumerationStatements::FindDialectEnumStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_ENUMERATION_LOCATION, + G_DISALLOW, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->EnumLocationStatement(stuff)); + else if (this->DisallowStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid dialect category statements +// remain after statement parsing. +template +inline void interfaces::DialectEnumerationStatements::AllowOnlyDialectEnumStatements() +{ + opNode::AllowOnly(G_ENUMERATION_LOCATION_STATEMENT, + G_DISALLOW_STATEMENT); +} + +// +// EnumerationLocationStatements +// + +template +inline bool interfaces::EnumerationLocationStatements::Parse() +{ + PARSE_START; + { + FindEnumerationLocationStatements(); + } + PARSE_END; +} + +template +inline bool EnumerationLocationStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyEnumerationLocationStatements(); + } + POSTPARSE_END; +} + +// Finds dialect category statements. +template +inline void interfaces::EnumerationLocationStatements::FindEnumerationLocationStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_ENUMERATION_MAP, + G_NOTE, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->EnumMapStatement(stuff)); + else if (this->NoteStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid dialect category statements +// remain after statement parsing. +template +inline void interfaces::EnumerationLocationStatements::AllowOnlyEnumerationLocationStatements() +{ + opNode::AllowOnly(G_ENUMERATIONMAP_STATEMENT, + G_NOTE_STATEMENT); +} + + +// +// CategoryLocationStatements +// + +template +inline bool interfaces::CategoryLocationStatements::Parse() +{ + PARSE_START; + { + FindCategoryLocationStatements(); + } + PARSE_END; +} + +template +inline bool CategoryLocationStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyCategoryLocationStatements(); + } + POSTPARSE_END; +} + +// Finds dialect location statements. +template +inline void interfaces::CategoryLocationStatements::FindCategoryLocationStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_NOTE, + G_CATEGORY_DATAMAP, + G_CATEGORY_FUNCTIONMAP, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->NoteStatement(stuff)); + else if (this->DatamapStatement(stuff)); + else if (this->FunctionmapStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid dialect location statements +// remain after statement parsing. +template +inline void interfaces::CategoryLocationStatements::AllowOnlyCategoryLocationStatements() +{ + opNode::AllowOnly(G_NOTE_STATEMENT, + G_CATEGORY_DATAMAP_STATEMENT, + G_CATEGORY_FUNCTIONMAP_STATEMENT); +} + +// +// DialectCriteriaStatements +// + +template +inline bool interfaces::DialectCriteriaStatements::Parse() +{ + PARSE_START; + { + FindCriteriaStatements(); + } + PARSE_END; +} + +template +inline bool DialectCriteriaStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyDialectCriteriaStatements(); + } + POSTPARSE_END; +} + +// Finds dialect criteria statements. +template +inline void interfaces::DialectCriteriaStatements::FindCriteriaStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_IS, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->IsStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid dialect criteria statements +// remain after statement parsing. +template +inline void interfaces::DialectCriteriaStatements::AllowOnlyDialectCriteriaStatements() +{ + opNode::AllowOnly(G_IS_STATEMENT); +} + +// +// FileDeclarationLocationStatements +// + +template +inline bool interfaces::FileDeclarationLocationStatements::Parse() +{ + PARSE_START; + { + FindFileDeclarationLocationStatements(); + } + PARSE_END; +} + +template +inline bool FileDeclarationLocationStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyFileDeclarationLocationStatements(); + } + POSTPARSE_END; +} + +// Finds dialect location statements. +template +inline void interfaces::FileDeclarationLocationStatements::FindFileDeclarationLocationStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_FILE_DECLARATION_LOCATION, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->FileDeclarationLocationStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid dialect location statements +// remain after statement parsing. +template +inline void interfaces::FileDeclarationLocationStatements::AllowOnlyFileDeclarationLocationStatements() +{ + opNode::AllowOnly(G_FILE_DECLARATION_LOCATION_STATEMENT); +} + +// +// GlobalDialectStatements +// + +template +inline bool interfaces::GlobalDialectStatements::Parse() +{ + PARSE_START; + { + FindGlobalDialectStatements(); + } + PARSE_END; +} + +template +inline bool GlobalDialectStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyGlobalDialectStatements(); + } + POSTPARSE_END; +} + +// Finds statements in the global dialect context. +template +inline void interfaces::GlobalDialectStatements::FindGlobalDialectStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + stacked stuff = opNode::PushUntilOr(T_SEMICOLON, + G_NOTE_DEFINITION, + G_OPMACRO, + G_CATEGORY, + G_DIALECT_NAMESPACE, + G_OPINCLUDE, + G_CODE, + G_ENUMERATION, + G_FILE_DECLARATION, + G_EXTENSION, + G_EXTEND_POINT, + G_OPDEFINE, + false); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->NoteDefinitionStatement(stuff)); + else if (this->OPMacroStatement(stuff)); + else if (this->CategoryStatement(stuff)); + else if (this->DialectNamespaceStatement(stuff)); + else if (this->OPIncludeStatement(stuff)); + else if (this->CodeStatement(stuff)); + else if (this->EnumerationStatement(stuff)); + else if (this->FileDeclarationStatement(stuff)); + else if (this->ExtensionStatement(stuff)); + else if (this->ExtendPointStatement(stuff)); + else if (this->OPDefineStatement(stuff)); + else if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + opNode::CollapseNodeAtCurrent(stuff); + } + else + { + opNode::CollapseNodeAtCurrent(stuff); + + bFinished = true; + } + } +} + +// Makes sure that only valid global dialect statements are allowed. +template +inline void interfaces::GlobalDialectStatements::AllowOnlyGlobalDialectStatements() +{ + opNode::AllowOnly(G_NOTE_DEFINITION_STATEMENT, + G_DIALECT_OPMACRO_STATEMENT, + G_CATEGORY_STATEMENT, + G_DIALECT_NAMESPACE_STATEMENT, + G_DIALECT_OPINCLUDE_STATEMENT, + G_CODE_STATEMENT, + G_ENUMERATION_STATEMENT, + G_FILE_DECLARATION_STATEMENT, + G_EXTENSION_STATEMENT, + G_EXTEND_POINT_STATEMENT, + G_DIALECT_OPDEFINE_STATEMENT); +} + diff --git a/opcplusplus/Inc/DialectStatementInterfaces.h b/opcplusplus/Inc/DialectStatementInterfaces.h index a5df554..1e357c5 100644 --- a/opcplusplus/Inc/DialectStatementInterfaces.h +++ b/opcplusplus/Inc/DialectStatementInterfaces.h @@ -11,6 +11,8 @@ /// Contains interfaces for dialect statements. ///**************************************************************** +#pragma once + namespace interfaces { @@ -28,7 +30,7 @@ class DialectStatementsBase : public Parent template bool HandleStatement(stacked& stuff) { - if (IsCurrent(grammar)) + if (this->IsCurrent(grammar)) { stackedcontext statement = opNode::Make(grammar); stacked node = opNode::Expect(grammar); @@ -47,7 +49,7 @@ class DialectStatementsBase : public Parent statement->AppendNode(node); Statements.push_back(*statement); - InsertNodeAtCurrent(statement); + opNode::InsertNodeAtCurrent(statement); return true; } @@ -56,136 +58,70 @@ class DialectStatementsBase : public Parent } // Is the current statement a datamodifier statement? - bool DataModifierStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool DataModifierStatement(stacked& stuff); // Is the current statement a functionmodifier statement? - bool FunctionModifierStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool FunctionModifierStatement(stacked& stuff); // Is the current statement a category location statement? - bool CategoryLocationStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool CategoryLocationStatement(stacked& stuff); // Is the current statement a note statement? - bool NoteStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool NoteStatement(stacked& stuff); // Is the current statement a datamap statement? - bool DatamapStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool DatamapStatement(stacked& stuff); // Is the current statement a functionmap statement? - bool FunctionmapStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool FunctionmapStatement(stacked& stuff); // Is the current statement a disallow statement? - bool DisallowStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool DisallowStatement(stacked& stuff); // Is the current statement an is statement? - bool IsStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool IsStatement(stacked& stuff); // Is the current statement an enum location statement? - bool EnumLocationStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool EnumLocationStatement(stacked& stuff); // Is the current statement an enummap statement? - bool EnumMapStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool EnumMapStatement(stacked& stuff); // Is the current statement a file declaration location statement? - bool FileDeclarationLocationStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool FileDeclarationLocationStatement(stacked& stuff); // Is the current statement a note definition statement? - bool NoteDefinitionStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool NoteDefinitionStatement(stacked& stuff); // Is the current statement an opmacro statement? - bool OPMacroStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool OPMacroStatement(stacked& stuff); // Is the current statement a category statement? - bool CategoryStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool CategoryStatement(stacked& stuff); // Is the current statement a dialect namespace statement? - bool DialectNamespaceStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool DialectNamespaceStatement(stacked& stuff); // Is the current statement an opinclude statement? - bool OPIncludeStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool OPIncludeStatement(stacked& stuff); // Is the current statement a code statement? - bool CodeStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool CodeStatement(stacked& stuff); // Is the current statement an enumeration statement? - bool EnumerationStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool EnumerationStatement(stacked& stuff); // Is the current statement a file declaration statement? - bool FileDeclarationStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool FileDeclarationStatement(stacked& stuff); // Is the current statement an extension statement? - bool ExtensionStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool ExtensionStatement(stacked& stuff); // Is the current statement an extend point statement? - bool ExtendPointStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool ExtendPointStatement(stacked& stuff); // Is the current statement an opdefine statement? - bool OPDefineStatement(stacked& stuff) - { - return HandleStatement(stuff); - } + bool OPDefineStatement(stacked& stuff); protected: /*=== data ===*/ @@ -204,70 +140,16 @@ class DialectCategoryStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(DialectCategoryStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindDialectCategoryStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyDialectCategoryStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds dialect category statements. - void FindDialectCategoryStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr(T_SEMICOLON, - G_DATAMODIFIER, - G_FUNCTIONMODIFIER, - G_CATEGORY_LOCATION, - G_DISALLOW, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (DataModifierStatement(stuff)); - else if (FunctionModifierStatement(stuff)); - else if (CategoryLocationStatement(stuff)); - else if (DisallowStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindDialectCategoryStatements(); // Makes sure that only valid dialect category statements // remain after statement parsing. - void AllowOnlyDialectCategoryStatements() - { - AllowOnly( G_DATAMODIFIER_STATEMENT, - G_FUNCTIONMODIFIER_STATEMENT, - G_CATEGORY_LOCATION_STATEMENT, - G_DISALLOW_STATEMENT ); - } + void AllowOnlyDialectCategoryStatements(); }; ///========================================== @@ -281,64 +163,16 @@ class DialectEnumerationStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(DialectEnumerationStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindDialectEnumStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyDialectEnumStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds dialect category statements. - void FindDialectEnumStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr(T_SEMICOLON, - G_ENUMERATION_LOCATION, - G_DISALLOW, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (EnumLocationStatement(stuff)); - else if (DisallowStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindDialectEnumStatements(); // Makes sure that only valid dialect category statements // remain after statement parsing. - void AllowOnlyDialectEnumStatements() - { - AllowOnly( G_ENUMERATION_LOCATION_STATEMENT, - G_DISALLOW_STATEMENT ); - } + void AllowOnlyDialectEnumStatements(); }; ///========================================== @@ -352,64 +186,16 @@ class EnumerationLocationStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(EnumerationLocationStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindEnumerationLocationStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyEnumerationLocationStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds dialect category statements. - void FindEnumerationLocationStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr(T_SEMICOLON, - G_ENUMERATION_MAP, - G_NOTE, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (EnumMapStatement(stuff)); - else if (NoteStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindEnumerationLocationStatements(); // Makes sure that only valid dialect category statements // remain after statement parsing. - void AllowOnlyEnumerationLocationStatements() - { - AllowOnly( G_ENUMERATIONMAP_STATEMENT, - G_NOTE_STATEMENT ); - } + void AllowOnlyEnumerationLocationStatements(); }; ///========================================== @@ -423,67 +209,16 @@ class CategoryLocationStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(CategoryLocationStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindCategoryLocationStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyCategoryLocationStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds dialect location statements. - void FindCategoryLocationStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr(T_SEMICOLON, - G_NOTE, - G_CATEGORY_DATAMAP, - G_CATEGORY_FUNCTIONMAP, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (NoteStatement(stuff)); - else if (DatamapStatement(stuff)); - else if (FunctionmapStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindCategoryLocationStatements(); // Makes sure that only valid dialect location statements // remain after statement parsing. - void AllowOnlyCategoryLocationStatements() - { - AllowOnly( G_NOTE_STATEMENT, - G_CATEGORY_DATAMAP_STATEMENT, - G_CATEGORY_FUNCTIONMAP_STATEMENT ); - } + void AllowOnlyCategoryLocationStatements(); }; ///========================================== @@ -497,61 +232,16 @@ class DialectCriteriaStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(DialectCriteriaStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindCriteriaStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyDialectCriteriaStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds dialect criteria statements. - void FindCriteriaStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr(T_SEMICOLON, - G_IS, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (IsStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindCriteriaStatements(); // Makes sure that only valid dialect criteria statements // remain after statement parsing. - void AllowOnlyDialectCriteriaStatements() - { - AllowOnly( G_IS_STATEMENT ); - } + void AllowOnlyDialectCriteriaStatements(); }; //========================================== @@ -565,61 +255,16 @@ class FileDeclarationLocationStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(FileDeclarationLocationStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindFileDeclarationLocationStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyFileDeclarationLocationStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds dialect location statements. - void FindFileDeclarationLocationStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr(T_SEMICOLON, - G_FILE_DECLARATION_LOCATION, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (FileDeclarationLocationStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindFileDeclarationLocationStatements(); // Makes sure that only valid dialect location statements // remain after statement parsing. - void AllowOnlyFileDeclarationLocationStatements() - { - AllowOnly( G_FILE_DECLARATION_LOCATION_STATEMENT ); - } + void AllowOnlyFileDeclarationLocationStatements(); }; ///========================================== @@ -633,90 +278,22 @@ class GlobalDialectStatements : public DialectStatementsBase IMPLEMENTS_INTERFACE(GlobalDialectStatements) REQUIRES_INTERFACE(DialectStatementsBase) - bool Parse() - { - PARSE_START; - { - FindGlobalDialectStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyGlobalDialectStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Finds statements in the global dialect context. - void FindGlobalDialectStatements() - { - bool bFinished = false; - - while (!bFinished) - { - stacked stuff = opNode::PushUntilOr( T_SEMICOLON, - G_NOTE_DEFINITION, - G_OPMACRO, - G_CATEGORY, - G_DIALECT_NAMESPACE, - G_OPINCLUDE, - G_CODE, - G_ENUMERATION, - G_FILE_DECLARATION, - G_EXTENSION, - G_EXTEND_POINT, - G_OPDEFINE, - false); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (NoteDefinitionStatement(stuff)); - else if (OPMacroStatement(stuff)); - else if (CategoryStatement(stuff)); - else if (DialectNamespaceStatement(stuff)); - else if (OPIncludeStatement(stuff)); - else if (CodeStatement(stuff)); - else if (EnumerationStatement(stuff)); - else if (FileDeclarationStatement(stuff)); - else if (ExtensionStatement(stuff)); - else if (ExtendPointStatement(stuff)); - else if (OPDefineStatement(stuff)); - else if (IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - CollapseNodeAtCurrent(stuff); - } - else - { - CollapseNodeAtCurrent(stuff); - - bFinished = true; - } - } - } + void FindGlobalDialectStatements(); // Makes sure that only valid global dialect statements are allowed. - void AllowOnlyGlobalDialectStatements() - { - AllowOnly( G_NOTE_DEFINITION_STATEMENT, - G_DIALECT_OPMACRO_STATEMENT, - G_CATEGORY_STATEMENT, - G_DIALECT_NAMESPACE_STATEMENT, - G_DIALECT_OPINCLUDE_STATEMENT, - G_CODE_STATEMENT, - G_ENUMERATION_STATEMENT, - G_FILE_DECLARATION_STATEMENT, - G_EXTENSION_STATEMENT, - G_EXTEND_POINT_STATEMENT, - G_DIALECT_OPDEFINE_STATEMENT ); - } + void AllowOnlyGlobalDialectStatements(); }; + + + + + + + } // end namespace interfaces \ No newline at end of file diff --git a/opcplusplus/Inc/DialectTracker.h b/opcplusplus/Inc/DialectTracker.h index 9b548c5..5a72d89 100644 --- a/opcplusplus/Inc/DialectTracker.h +++ b/opcplusplus/Inc/DialectTracker.h @@ -11,6 +11,8 @@ /// Dialect Settings Tracker ///**************************************************************** +#pragma once + namespace dialect { diff --git a/opcplusplus/Inc/Driver.h b/opcplusplus/Inc/Driver.h index afcd360..8c9585c 100644 --- a/opcplusplus/Inc/Driver.h +++ b/opcplusplus/Inc/Driver.h @@ -48,10 +48,10 @@ class opDriver static bool ValidateDialectFiles(const opParameters& p); // get the latest timestamp of all dialects used - static time_t GetDialectTimestamp(const opParameters& p); + static std::filesystem::file_time_type GetDialectTimestamp(const opParameters& p); // get the latest timestamp of all generated dialects used - static time_t GetGeneratedDialectTimestamp(const opParameters& p); + static std::filesystem::file_time_type GetGeneratedDialectTimestamp(const opParameters& p); // is an additional dependency out of date? // if so update it and return true @@ -87,14 +87,14 @@ class opDriver // utility functions public: - static opString GetOutputPath(const opParameters& p, const path& inputpath); + static string GetOutputPath(const opParameters& p, const path& inputpath); // get path relative to another path - static opString GetRelativePath(const opString& targetpath, const opString& basepath); + static string GetRelativePath(const opString& targetpath, const opString& basepath); // convert to and from generated paths - static opString ToGeneratedPath(const opString& inputpath); - static opString FromGeneratedPath(const opString& inputpath); + static string ToGeneratedPath(const opString& inputpath); + static string FromGeneratedPath(const opString& inputpath); private: // private control diff --git a/opcplusplus/Inc/Exceptions.h b/opcplusplus/Inc/Exceptions.h index ee6731d..ea63802 100644 --- a/opcplusplus/Inc/Exceptions.h +++ b/opcplusplus/Inc/Exceptions.h @@ -137,7 +137,7 @@ class opException { //no dispatch //TODO: add file and line - throw opCPP_AssertException(assertstring); + throw opCPP_AssertException(assertstring.GetString()); } enum ExceptionType diff --git a/opcplusplus/Inc/ExtensionNodes.h b/opcplusplus/Inc/ExtensionNodes.h index 2e66a60..4c0f1fb 100644 --- a/opcplusplus/Inc/ExtensionNodes.h +++ b/opcplusplus/Inc/ExtensionNodes.h @@ -12,6 +12,11 @@ /// represents an extended grammar in the opC++ syntax. ///**************************************************************** +#pragma once + +#include "ModifierSupport.h" +#include "DialectNodes.h" + namespace nodes { @@ -872,8 +877,8 @@ class OPIncludeNode : public DialectNodeBase //register dependencies void RegisterDependency(const opString& filename); - boost::filesystem::path validpath; - boost::filesystem::path generatedpath; + std::filesystem::path validpath; + std::filesystem::path generatedpath; TerminalNode* FileName; FileNode* IncludedFile; diff --git a/opcplusplus/Inc/File.h b/opcplusplus/Inc/File.h index 334addc..9000cda 100644 --- a/opcplusplus/Inc/File.h +++ b/opcplusplus/Inc/File.h @@ -16,8 +16,8 @@ #include -#define BOOST_FILESYSTEM_NO_LIB -#include +#include + class FileReadStream { @@ -40,7 +40,7 @@ class FileReadStream template void ReadToContainer(type& c) { - int size = (int)boost::filesystem::file_size(name.GetString()); + int size = (int)std::filesystem::file_size(name.GetString()); c.Resize(size); diff --git a/opcplusplus/Inc/FileNodes.h b/opcplusplus/Inc/FileNodes.h index bcfbb01..2d9ce24 100644 --- a/opcplusplus/Inc/FileNodes.h +++ b/opcplusplus/Inc/FileNodes.h @@ -11,6 +11,8 @@ /// This file contains nodes for parsing files. ///**************************************************************** +#pragma once + namespace nodes { @@ -129,7 +131,7 @@ class FileNode : public FileNodeParent void SaveDependencies(const opString& filepath); bool LoadDependencies(const opString& filepath); - bool IsDependencyNewer(time_t timestamp); + bool IsDependencyNewer(std::filesystem::file_time_type timestamp); private: opSet Dependencies; diff --git a/opcplusplus/Inc/Globber.h b/opcplusplus/Inc/Globber.h index 004e9f5..06e78a0 100644 --- a/opcplusplus/Inc/Globber.h +++ b/opcplusplus/Inc/Globber.h @@ -11,6 +11,8 @@ /// Globbing. ///**************************************************************** +using filesystem::path; + class Globber { public: @@ -28,18 +30,24 @@ class Globber struct ohfileinfo { ohfileinfo(const path& inohfilepath, const path& inoohfilepath, const path& inocppfilepath) + : + ohfilepath(inohfilepath), + oohfilepath(inoohfilepath), + ocppfilepath(inocppfilepath), + ohfilename(inohfilepath.filename().string()) + { - ohfilepath = inohfilepath; - oohfilepath = inoohfilepath; - ocppfilepath = inocppfilepath; - ohfilename = ohfilepath.leaf(); + //ohfilepath = inohfilepath; + //oohfilepath = inoohfilepath; + //ocppfilepath = inocppfilepath; + //ohfilename = inohfilepath.leaf(); } - path ohfilepath; - path oohfilepath; - path ocppfilepath; + const path ohfilepath; + const path oohfilepath; + const path ocppfilepath; - opString ohfilename; + const opString ohfilename; }; //try to update indexes potentially diff --git a/opcplusplus/Inc/Inlines.h b/opcplusplus/Inc/Inlines.h index c83292b..706a78a 100644 --- a/opcplusplus/Inc/Inlines.h +++ b/opcplusplus/Inc/Inlines.h @@ -30,10 +30,12 @@ inline opStringStream& operator << (opStringStream &oin, TerminalNode* node) return oin; } +/* template<> -inline FileWriteStream& operator << (FileWriteStream& stream, const endlinestruct&) +FileWriteStream& operator << (FileWriteStream& stream, const endlinestruct & ) { stream.Write('\n'); return stream; -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/opcplusplus/Inc/InterfaceInlines.h b/opcplusplus/Inc/InterfaceInlines.h index 9237f2c..5dc58c8 100644 --- a/opcplusplus/Inc/InterfaceInlines.h +++ b/opcplusplus/Inc/InterfaceInlines.h @@ -1,3 +1,10 @@ + +#pragma once + +#include "Interfaces.h" +#include "StatementInterfaces.h" +#include "StatementNodes.h" + ///**************************************************************** /// Copyright 2008 opGames LLC - All Rights Reserved /// @@ -15,31 +22,2628 @@ /// DataStatements /// -template +template +inline bool interfaces::DataStatements::Parse() +{ + PARSE_START; + { + FindDataStatements(); + } + PARSE_END; +} + +template +inline bool interfaces::DataStatements::FindDataStatements() +{ + INSPECT_START(G_DATA_STATEMENT); + { + FindDataStatementOnly(); + } + INSPECT_END; +} + +template inline bool DataStatements::FindDataStatementOnly() { - if (!HasNumChildren(2)) + if (!this->HasNumChildren(2)) return false; stackedcontext newNode = NEWNODE(DataStatementNode()); - newNode->CopyBasics(FirstChild()); + newNode->CopyBasics(this->FirstChild()); stacked declaration = opNode::PushUntil(T_ASSIGN,false); newNode->SetDeclaration(*declaration); newNode->AppendNode(declaration); - if(IsCurrent(T_ASSIGN)) + if(this->IsCurrent(T_ASSIGN)) { - Erase(T_ASSIGN); + this->Erase(T_ASSIGN); stacked initialization = opNode::PushUntilEnd(); newNode->SetInitialization(*initialization); newNode->AppendNode(initialization); } - SetInnerStatement(*newNode); - AppendNode(newNode); + this->SetInnerStatement(*newNode); + this->AppendNode(newNode); return true; -} \ No newline at end of file +} + +// +// Trim +// + + +template +bool Trim::PreParse() +{ + PREPARSE_START; + { + this->DoTrim(); + } + PREPARSE_END; +} + +template +bool Trim::Parse() +{ + PARSE_START; + { + this->DoTrim(); + } + PARSE_END; +} + +template +void Trim::DoTrim() +{ + iterator i = this->GetBegin(); + iterator end = this->GetEnd(); + + // Trim the front. + while (i != end + && i->IsWhitespace()) + { + iterator old = i; + ++i; + this->DeleteNode(old); + } + + if (this->IsEmpty()) + return; + + // Trim the end. + i = this->GetBegin(); + end = --this->GetEnd(); + + while (end != i + && end->IsWhitespace()) + { + iterator old = end; + --end; + this->DeleteNode(old); + } +} + +// +// Namespaces +// + +template +inline bool interfaces::Namespaces::Parse() +{ + PARSE_START; + { + this->FindNamespaces(); + } + PARSE_END; +} + +template +inline void interfaces::Namespaces::FindNamespaces() +{ + + LOOP_START(G_NAMESPACE); + { + HIT(T_NAMESPACE) + { + stackedcontext newNode = opNode::Make(T_NAMESPACE); + + this->Erase(T_NAMESPACE); + + this->EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + + this->EatWhitespaceAndComments(); + + if (this->IsCurrent(T_ASSIGN)) + { + //create an alias instead (transform and set...) + stackedcontext alias = opNode::Transform(newNode); + + alias->SetName(*name); + alias->AppendNode(name); + + this->Erase(T_ASSIGN); + + this->EatWhitespaceAndComments(); + + while (this->IsCurrent(T_ID)) + { + stacked scope = opNode::Expect(T_ID); + + alias->AddScope(*scope); + alias->AppendNode(scope); + + if (this->IsCurrent(T_SCOPE_RESOLUTION)) + this->Erase(T_SCOPE_RESOLUTION); + } + + this->EatWhitespaceAndComments(); + + this->Erase(T_SEMICOLON); + + this->InsertNodeAtCurrent(alias); + } + else + { + newNode->SetName(*name); + newNode->AppendNode(name); + + this->EatWhitespaceAndComments(); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked nbn = opNode::Transform(bbn); + newNode->SetBody(*nbn); + newNode->AppendNode(nbn); + + this->InsertNodeAtCurrent(newNode); + } + } + } + LOOP_END; + +} + +// +// UsingNamespace +// + +template +inline bool interfaces::UsingNamespaceKeywords::Parse() +{ + PARSE_START; + { + FindUsingNamespaceKeywords(); + } + PARSE_END; +} + +template +inline void UsingNamespaceKeywords::FindUsingNamespaceKeywords() +{ + LOOP_START(G_USING_NAMESPACE_KEYWORD) + { + HIT(T_USING) + { + if (this->PeekUncleaned(T_NAMESPACE)) + { + stackedcontext newNode = opNode::Make(T_USING); + + this->Erase(T_USING); + + this->EatWhitespaceAndComments(); + + this->Erase(T_NAMESPACE); + + this->InsertNodeAtCurrent(newNode); + } + else + this->IncrementPosition(); + } + } + LOOP_END +} + +// +// Usings +// + + +template +inline bool interfaces::Usings::Parse() +{ + PARSE_START; + { + FindUsings(); + } + PARSE_END; +} + +template +inline void Usings::FindUsings() +{ + LOOP_START(G_USING) + { + HIT(T_USING) + { + stackedcontext newNode = opNode::Make(T_USING); + + this->Erase(T_USING); + + stacked scope = opNode::Expect(G_SCOPE); + + newNode->SetScope(*scope); + newNode->AppendNode(scope); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END +} + +// +// Blocks +// + + +//TODO: +//FIXME: this is unsafe +template +template +inline void Blocks::FindMatching() +{ + //change the throw mode + setexceptionmode mode(opException::ParseException); + + iterator end = this->GetEnd(); + + LOOP_START(Grammar); + { + HIT(Left) + { + // we want to create a new node + stackedcontext newNode = opNode::Make(Left); + int numLeft = 1; + + // we must delete the current node (Left), our position has moved forward by one + //DeleteCurrentNode(); + stacked leftnode = opNode::PopCurrentNode(); + + Token last = Left; + + while (numLeft && this->GetPosition() != end) + { + // now we need to peek at the current position node + // if the nodes type is Left + Token currentToken = this->CurrentNode()->GetId(); + + last = currentToken; + + if (currentToken == Left) + numLeft++; + else if (currentToken == Right) + numLeft--; + + // if there are numLeft still, just push this node in + if (numLeft) + { + stacked tempstacked = this->PopCurrentNode(); + newNode->AppendNode(tempstacked); + } + } + + //this is used by angled brackets since they're context sensitive + if (numLeft) + { + opError::PrematureError(Right, *leftnode, last == T_EOF); + } + + leftnode.Delete(); + + // we must delete the current node (Right) + this->DeleteCurrentNode(); + + // add the new node + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; + +} + + +// stuff we actually care about +template +inline void Blocks::FindBraces() +{ + FindMatching(); +} + +template +inline void Blocks::FindParentheses() +{ + FindMatching(); +} + +template +inline void Blocks::FindBrackets() +{ + FindMatching(); +} + +template +inline void Blocks::FindAngles() +{ + FindMatching(); +} + +// +// Pointers +// + + +template +inline bool interfaces::Pointers::Parse() +{ + PARSE_START; + { + FindPointers(); + } + PARSE_END; +} + +template +inline void Pointers::FindPointers() +{ + LOOP_START(G_POINTER); + { + HIT(T_STAR) + { + stackedcontext newNode = opNode::Make(T_STAR); + stacked firststar; + + //grab all the stars and c/v specifiers + while (this->IsCurrent(T_STAR)) + { + // Save off the first star (for error messages). + if (firststar.IsValid()) + this->Erase(T_STAR); + else + firststar = opNode::Expect(T_STAR); + + PointerNode::StarType type = PointerNode::Plain; + + // const + if (this->IsCurrent(T_CONST)) + { + this->Erase(T_CONST); + type = PointerNode::Const; + } + // volatile + else if (this->IsCurrent(T_VOLATILE)) + { + this->Erase(T_VOLATILE); + type = PointerNode::Volatile; + } + + // const volatile + if (type == PointerNode::Volatile + && this->IsCurrent(T_CONST)) + { + this->Erase(T_CONST); + type = PointerNode::ConstVolatile; + } + // volatile const + else if (type == PointerNode::Const + && this->IsCurrent(T_VOLATILE)) + { + this->Erase(T_VOLATILE); + type = PointerNode::ConstVolatile; + } + + newNode->AddStar(type); + } + + stacked type = this->ReverseExpectOr(G_TEMPLATE_TYPE, + G_SCOPE, + T_ID, + T_BASIC_TYPE, + G_FUNDAMENTAL_TYPE, + *firststar); + + newNode->SetType(*type); + newNode->AppendNode(type); + + firststar.Delete(); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// MemberPointers +// + +template +inline bool interfaces::MemberPointers::Parse() +{ + PARSE_START; + { + FindMemberPointers(); + } + PARSE_END; +} + +template +inline void MemberPointers::FindMemberPointers() +{ + LOOP_START(G_POINTER_MEMBER); + { + HIT(G_SCOPE) + { + //looking for + //::ID::ID::* + //how do we find this? + //what order? before pointer? scope? or after? + //what about G_SCOPE_POINTER? should we do it that way? + //scope::* + ScopeNode* scope = node_cast(this->CurrentNode()); + + //if (scope->Is) + //TODO: seems to be unimplemented. + } + } + LOOP_END; +} + +// +// Operators +// + + +template +inline bool interfaces::Operators::Parse() +{ + PARSE_START; + { + FindOperators(); + } + PARSE_END; +} + +template +inline void Operators::FindOperators() +{ + LOOP_START(G_OPERATOR); + { + HIT(T_OPERATOR) + { + stackedcontext newNode = opNode::Make(T_OPERATOR); + + this->Erase(T_OPERATOR); + + //operator ()() special case + if (this->IsCurrent(G_PAREN_BLOCK)) + { + //NOTE: we dont support templated operator()() : P + stacked paren = opNode::Expect(G_PAREN_BLOCK); + newNode->AppendNode(paren); + + //better have a paren block after... + //Check(G_PAREN_BLOCK); + } + else + { + this->PushUntilAdd(*newNode, G_PAREN_BLOCK); + //just to be safe? + //Check(G_PAREN_BLOCK); + } + + //opNode* oper = ExpectOverloadableOperator(); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Modifiers +// + + +template +inline bool interfaces::Modifiers::Parse() +{ + PARSE_START; + { + FindModifiers(); + } + PARSE_END; +} + +template +inline void Modifiers::FindModifiers() +{ + OPObjectNode* parent = opNode::FindParent(); + DialectCategory* category = parent->GetCategorySettings(); + + iterator i = this->GetBegin(); + iterator end = this->GetEnd(); + + while (i != end) + { + if (i->GetId() == T_ID) + { + TerminalNode* node = node_cast(*i); + + if (category->HasBasicModifier(node->GetValue())) + node->SetId(T_MODIFIER); + } + + ++i; + } +} + +// +// ValuedModifiers +// + + +template +inline bool interfaces::ValuedModifiers::Parse() +{ + PARSE_START; + { + FindValuedModifiers(); + } + PARSE_END; +} + +template +inline void ValuedModifiers::FindValuedModifiers() +{ + OPObjectNode* parent = opNode::FindParent(); + DialectCategory* category = parent->GetCategorySettings(); + + LOOP_START(G_VALUED_MODIFIER); + { + HIT(T_ID) + { + TerminalNode* id = node_cast(this->CurrentNode()); + + if (this->Peek(G_PAREN_BLOCK) + && category->HasValueModifier(id->GetValue())) + { + stackedcontext newNode = opNode::Make(T_ID); + + stacked modifier = opNode::Expect(T_ID); + + newNode->SetModifier(*modifier); + newNode->AppendNode(modifier); + + stacked paren = opNode::Expect(G_PAREN_BLOCK); + stacked arguments = opNode::Transform(paren); + + newNode->SetArguments(*arguments); + newNode->AppendNode(arguments); + + this->InsertNodeAtCurrent(newNode); + } + else + this->IncrementPosition(); + } + } + LOOP_END; +} + +// +// Functions +// + + +template +inline bool interfaces::Functions::Parse() +{ + PARSE_START; + { + FindFunctions(); + } + PARSE_END; +} + +template +inline void Functions::FindFunctions() +{ + LOOP_START(G_FUNCTION); + { + HIT(G_PAREN_BLOCK) + { + stackedcontext newNode = opNode::Make(G_PAREN_BLOCK); + + stacked Paren = opNode::Expect(G_PAREN_BLOCK); + stacked Arguments = opNode::Transform(Paren); + + newNode->SetArguments(*Arguments); + + // now look backwards + stacked Name = this->ReverseExpectOr(G_OPERATOR, + G_TEMPLATE_TYPE, + T_ID, + *Arguments); + + newNode->SetName(*Name); + newNode->AppendNode(Name); + + newNode->AppendNode(Arguments); + + // check for const-ness + if (this->IsCurrent(T_CONST)) + { + this->Erase(T_CONST); + newNode->SetConst(true); + } + + // check for pure methods + // NOTE: we just look for assignment = #, = ID, we dont look for null or anything like that + if (this->IsCurrent(T_ASSIGN)) + { + this->Erase(T_ASSIGN); + + stacked assignment = opNode::ExpectOr(T_NUMBER, T_ID); + + newNode->SetAssignment(*assignment); + newNode->AppendNode(assignment); + } + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// FunctionDefinitions +// + +template +inline bool interfaces::FunctionDefinitions::Parse() +{ + PARSE_START; + { + FindFunctionDefinitions(); + } + PARSE_END; +} + +template +inline void FunctionDefinitions::FindFunctionDefinitions() +{ + LOOP_START(G_FUNCTION_PROTOTYPE); + { + HIT(G_FUNCTION) + { + stacked Function = opNode::Expect(G_FUNCTION); + + //NOTE: this function should be ok, test a while. + //TODO: fix this, this function still sucks - might be ok now.. + + bool bFunctionDefinition = !this->IsCurrent(T_SEMICOLON); + + //is it a function declaration? + if (bFunctionDefinition) + { + //create a new node from the block + stackedcontext newNode = NEWNODE(FunctionDefinitionNode()); + newNode->CopyBasics(*Function); + + newNode->SetFunction(*Function); + + stacked Return = GetReturnType(*Function); + newNode->SetReturn(*Return); + + stacked Body = opNode::Expect(G_BRACE_BLOCK); + newNode->SetBody(*Body); + + newNode->AppendNode(Return); + newNode->AppendNode(Function); + newNode->AppendNode(Body); + + this->InsertNodeAtCurrent(newNode); + } + //must be a function prototype + else + { + //create a new node from the block + stackedcontext newNode = NEWNODE(FunctionPrototypeNode()); + newNode->CopyBasics(*Function); + + newNode->SetFunction(*Function); + + stacked Return = GetReturnType(*Function); + newNode->SetReturn(*Return); + + newNode->AppendNode(Return); + newNode->AppendNode(Function); + + this->InsertNodeAtCurrent(newNode); + } + } + } + LOOP_END; +} + +template +inline stacked interfaces::FunctionDefinitions::GetReturnType(opNode* after) +{ + //find the return type + return this->ReverseExpectOr(G_TEMPLATE_TYPE, + G_SCOPE, + G_POINTER, + G_POINTER_MEMBER, + G_REFERENCE, + T_ID, + T_BASIC_TYPE, + G_FUNDAMENTAL_TYPE, + after); +} + +// +// Constructors +// + + +template +inline bool interfaces::ConstructorDefinitions::Parse() +{ + PARSE_START; + { + FindConstructorDefinitions(); + } + PARSE_END; +} + +template +inline void ConstructorDefinitions::FindConstructorDefinitions() +{ + LOOP_START(G_CONSTRUCTOR_DEFINITION); + { + HIT(G_CONSTRUCTOR) + { + //find the constructor + stacked Constructor = opNode::Expect(G_CONSTRUCTOR); + + //cases: + //ctor() : ... {} + //ctor() {} + //ctor() + + bool bdefinition = this->IsCurrent(T_COLON) || this->IsCurrent(G_BRACE_BLOCK); + + if (bdefinition) + { + //create a new node from the block + stackedcontext newNode = NEWNODE(ConstructorDefinitionNode()); + newNode->CopyBasics(*Constructor); + + //optional initializer list + if (this->IsCurrent(T_COLON)) + { + stacked initializers = opNode::PushUntil(G_BRACE_BLOCK); + + newNode->SetInitializers(*initializers); + newNode->AppendNode(initializers); + } + + stacked Body = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetConstructor(*Constructor); + newNode->SetBody(*Body); + newNode->AppendNode(Constructor); + newNode->AppendNode(Body); + + this->InsertNodeAtCurrent(newNode); + } + //must be a function prototype + else + { + //create a new node from the block + stackedcontext newNode = NEWNODE(ConstructorPrototypeNode()); + newNode->CopyBasics(*Constructor); + + newNode->SetConstructor(*Constructor); + newNode->AppendNode(Constructor); + this->InsertNodeAtCurrent(newNode); + } + } + } + LOOP_END; +} + +// +// Destructors +// + + + +template +inline bool interfaces::DestructorDefinitions::Parse() +{ + PARSE_START; + { + FindDestructorDefinitions(); + } + PARSE_END; +} + +template +inline void DestructorDefinitions::FindDestructorDefinitions() +{ + LOOP_START(G_DESTRUCTOR_DEFINITION); + { + HIT(G_DESTRUCTOR) + { + //find the constructor + stacked Destructor = opNode::Expect(G_DESTRUCTOR); + + //cases: + //~dtor() {} + //~dtor() + + bool bdefinition = this->IsCurrent(G_BRACE_BLOCK); + + if (bdefinition) + { + //create a new node from the block + stackedcontext newNode = NEWNODE(DestructorDefinitionNode()); + newNode->CopyBasics(*Destructor); + + stacked Body = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetDestructor(*Destructor); + newNode->AppendNode(Destructor); + newNode->SetBody(*Body); + newNode->AppendNode(Body); + + this->InsertNodeAtCurrent(newNode); + } + //must be a function prototype + else + { + //create a new node from the block + stackedcontext newNode = NEWNODE(DestructorPrototypeNode()); + newNode->CopyBasics(*Destructor); + + newNode->SetDestructor(*Destructor); + newNode->AppendNode(Destructor); + + this->InsertNodeAtCurrent(newNode); + } + } + } + LOOP_END; +} + +// +// opEnums +// + + + +template +inline bool interfaces::OPEnums::Parse() +{ + PARSE_START; + { + FindOPEnums(); + } + PARSE_END; +} + +template +inline void OPEnums::FindOPEnums() +{ + LOOP_START(G_OPENUM); + { + HIT(T_OPENUM) + { + stackedcontext newNode = opNode::Make(T_OPENUM); + + stacked identifier = opNode::Expect(T_OPENUM); + newNode->SetIdentifier(*identifier); + newNode->AppendNode(identifier); + + this->EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + newNode->SetName(*name); + newNode->AppendNode(name); + + this->EatWhitespaceAndComments(); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked eobn = opNode::Transform(bbn); + newNode->SetBody(*eobn); + newNode->AppendNode(eobn); + + this->EatWhitespaceAndComments(); + this->Erase(T_SEMICOLON); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// opObjects +// + + +template +inline bool interfaces::OPObjects::Parse() +{ + PARSE_START; + { + FindOPObjects(); + } + PARSE_END; +} + +template +inline void OPObjects::FindOPObjects() +{ + LOOP_START(G_OPOBJECT); + { + HIT(T_OPOBJECT) + { + stackedcontext newNode = opNode::Make(T_OPOBJECT); + + stacked category = opNode::Expect(T_OPOBJECT); + + newNode->SetCategory(*category); + + //I don't want to save this, because untransformed one is disallowed + category.Delete(); + + this->EatWhitespaceAndComments(); + + // is there middle modifiers? + if (this->IsCurrent(G_CPLUSPLUS)) + { + stacked middleModifiers = opNode::Expect(G_CPLUSPLUS); + + newNode->SetMiddleModifiers(*middleModifiers); + newNode->AppendNode(middleModifiers); + } + + this->EatWhitespaceAndComments(); + + // add name + stacked name = opNode::Expect(T_ID); + newNode->SetName(*name); + newNode->AppendNode(name); + + this->EatWhitespaceAndComments(); + + // add inheritance + stacked i = opNode::PushUntil(G_BRACE_BLOCK); + i->SetObject(*newNode); + + if (!i->IsEmpty()) + { + newNode->SetInheritance(*i); + newNode->AppendNode(i); + } + else + i.Delete(); + + // add opclass block + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked ocbn = opNode::Transform(bbn); + + //set a backwards pointer + ocbn->SetObject(*newNode); + + newNode->SetBody(*ocbn); + newNode->AppendNode(ocbn); + + //get rid of trailing semicolon (required now!) + this->EatWhitespaceAndComments(); + + this->Erase(T_SEMICOLON); + + // if(IsCurrent(T_SEMICOLON)) + // Erase(T_SEMICOLON); + + this->InsertNodeAtCurrent(newNode); + } + } + + LOOP_END; +} + +// +// States +// + + +template +inline bool interfaces::States::Parse() +{ + PARSE_START; + + //NOTE: states are unimplemented. + + FindStates(); + + PARSE_END; +} + +template +inline void States::FindStates() +{ + LOOP_START(G_STATE); + + HIT(T_STATE) + { + stackedcontext newNode = opNode::Make(T_STATE); + + this->Erase(T_STATE); + + // add name + stacked name = opNode::Expect(T_ID); + newNode->SetName(*name); + newNode->AppendNode(name); + + // add state block + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked sbn = opNode::Transform(bbn); + newNode->SetBody(*sbn); + newNode->AppendNode(sbn); + + //get rid of trailing semicolons (which are optional) + this->EatWhitespaceAndComments(); + if (this->IsCurrent(T_SEMICOLON)) + this->Erase(T_SEMICOLON); + + this->InsertNodeAtCurrent(newNode); + } + + LOOP_END; +} + +// +// TemplateTypes +// + + +template +inline bool interfaces::TemplateTypes::Parse() +{ + PARSE_START; + { + FindTemplateTypes(); + } + PARSE_END; +} + +template +inline void TemplateTypes::FindTemplateTypes() +{ + LOOP_START(G_TEMPLATE_TYPE); + { + HIT(G_ANGLED_BLOCK) + { + stackedcontext newNode = opNode::Make(G_ANGLED_BLOCK); + + // Grab the braces. + stacked braces = opNode::Expect(G_ANGLED_BLOCK); + stacked body = opNode::Transform(braces); + + newNode->SetBody(*body); + + // Grab the id. + stacked id = opNode::ReverseExpect(T_ID, *body); + + // Grab basics from the id. + newNode->CopyBasics(*id); + newNode->SetName(*id); + + newNode->AppendNode(id); + newNode->AppendNode(body); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// References +// + + +template +inline bool interfaces::References::Parse() +{ + PARSE_START; + { + FindReferences(); + } + PARSE_END; +} + +template +inline void References::FindReferences() +{ + LOOP_START(G_REFERENCE) + { + HIT(T_AMPERSAND) + { + stackedcontext newNode = opNode::Make(T_AMPERSAND); + + stacked ampersand = opNode::Expect(T_AMPERSAND); + + stacked Type = this->ReverseExpectOr(G_POINTER, + G_SCOPE, + G_TEMPLATE_TYPE, + T_ID, + T_BASIC_TYPE, + G_FUNDAMENTAL_TYPE, + *ampersand); + + newNode->SetType(*Type); + newNode->AppendNode(Type); + + ampersand.Delete(); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Arrays +// + + +template +inline bool interfaces::Arrays::Parse() +{ + PARSE_START; + { + FindArrays(); + } + PARSE_END; +} + +template +inline void Arrays::FindArrays() +{ + LOOP_START(G_ARRAY) + { + HIT(G_BRACKET_BLOCK) + { + //TODO: 1. collect all [][] + //2. if we have an id before it, G_ARRAY + //3. if we have a type before it, G_TYPE_ARRAY + + stackedcontext newNode = opNode::Make(G_BRACKET_BLOCK); + + opArray< stacked > brackets; + + while (this->IsCurrent(G_BRACKET_BLOCK)) + { + stacked b = opNode::Expect(G_BRACKET_BLOCK); + brackets.push_back(b); + } + + if (this->IsPrevious(G_FUNDAMENTAL_TYPE) || + this->IsPrevious(T_BASIC_TYPE) || + this->IsPrevious(G_POINTER) || + this->IsPrevious(G_REFERENCE) || + this->IsPrevious(G_TEMPLATE_TYPE) || + this->IsPrevious(G_SCOPE)) + { + stackedcontext node = opNode::Transform(newNode); + + //get the type + stacked Type = opNode::ReverseExpectOr(G_FUNDAMENTAL_TYPE, + T_BASIC_TYPE, + G_POINTER, + G_REFERENCE, + G_TEMPLATE_TYPE, + G_SCOPE, + *brackets[0]); + + node->SetType(*Type); + node->AppendNode(Type); + + this->AppendBrackets(brackets, *node); + this->InsertNodeAtCurrent(node); + } + else + { + //G_ARRAY + stackedcontext node = opNode::Transform(newNode); + + //get the name + stacked Name = opNode::ReverseExpect(T_ID, *brackets[0]); + + node->SetName(*Name); + node->AppendNode(Name); + + this->AppendBrackets(brackets, *node); + this->InsertNodeAtCurrent(node); + } + } + } + LOOP_END; +} + +// +// VisibilityLabels +// + + +template +template +inline void VisibilityLabels::FindVisibilityLabel() +{ + LOOP_START(G_VISIBILITY_LABEL) + { + HIT(token) + { + if (this->IsCurrent(token) && this->Peek(T_COLON)) + { + stackedcontext newNode = opNode::Make(token); + + stacked Label = opNode::Expect(token); + this->Erase(T_COLON); + + newNode->SetLabel(*Label); + + Label.Delete(); + + this->InsertNodeAtCurrent(newNode); + } + else + { + this->IncrementPosition(); + } + } + } + LOOP_END; +} + +// +// Scopes +// + +template +inline bool interfaces::Scopes::Parse() +{ + PARSE_START; + { + FindScopes(); + } + PARSE_END; +} + +template +inline void Scopes::FindScopes() +{ + LOOP_START(G_SCOPE) + { + HIT(T_SCOPE_RESOLUTION) + { + //handles... + // global: + //[::global] + //::global::* + //non-global: + //name::name + //name::* + + stackedcontext scope = opNode::Make(T_SCOPE_RESOLUTION); + + stacked scoperesolution = opNode::Expect(T_SCOPE_RESOLUTION); + + bool bGlobal = false; + opArray< stacked > scopes; + + //is it a global scope or not? + if (this->IsPrevious(T_ID) || this->IsPrevious(G_TEMPLATE_TYPE)) + { + // get the name/initial scope + stacked name = this->ReverseExpectOr(T_ID, G_TEMPLATE_TYPE, *scoperesolution); + scopes.PushBack(name); + } + else + { + bGlobal = true; + } + + scoperesolution.Delete(); + + bool bContinue = true; + + if (!bGlobal) + { + //name::* case + if (CheckScopePointer(scope, scopes, bGlobal)) + { + //got scope pointer, quit + bContinue = false; + } + } + + while (bContinue) + { + //grab first forward scope + stacked name = this->ExpectOr(T_ID, G_TEMPLATE_TYPE); + scopes.PushBack(name); + + if (this->IsCurrent(T_SCOPE_RESOLUTION)) + { + this->Erase(T_SCOPE_RESOLUTION); + + //check for ...::* + if (CheckScopePointer(scope, scopes, bGlobal)) + { + //got scope pointer, quit + bContinue = false; + } + } + else + { + // ...::name + scope->SetGlobal(bGlobal); + + //add the scopes to this + int numscopes = scopes.Size(); + for (int i = 0; i < numscopes; i++) + { + scope->AddScope(*scopes[i]); + scope->AppendNode(scopes[i]); + } + + this->InsertNodeAtCurrent(scope); + bContinue = false; + } + } + } + } + LOOP_END; +} + +template +inline bool interfaces::Scopes::CheckScopePointer(stacked& scope, opArray>& scopes, bool bGlobal) +{ + if (this->IsCurrent(T_STAR)) + { + stacked scopepointer = opNode::Transform(scope); + + int numstars = 0; + while (this->IsCurrent(T_STAR)) + { + this->Erase(T_STAR); + numstars++; + } + + scopepointer->SetNumStars(numstars); + scopepointer->SetGlobal(bGlobal); + + //add the scopes to this + int numscopes = scopes.Size(); + for (int i = 0; i < numscopes; i++) + { + scopepointer->AddScope(*scopes[i]); + scopepointer->AppendNode(scopes[i]); + } + + this->InsertNodeAtCurrent(scopepointer); + return true; + } + + return false; +} + +// +// PointerMembers +// + +template +inline bool interfaces::PointerMembers::Parse() +{ + PARSE_START; + { + FindPointerMembers(); + } + PARSE_END; +} + +template +inline void PointerMembers::FindPointerMembers() +{ + LOOP_START(G_POINTER_MEMBER); + { + HIT(G_SCOPE_POINTER) + { + stackedcontext newNode = opNode::Make(G_SCOPE_POINTER); + + stacked scopepointer = opNode::Expect(G_SCOPE_POINTER); + + newNode->SetScope(*scopepointer); + + stacked type = opNode::ReverseExpectOr(T_ID, + G_SCOPE, + G_TEMPLATE_TYPE, + G_POINTER, + G_REFERENCE, + T_BASIC_TYPE, + G_FUNDAMENTAL_TYPE, + *scopepointer); + + newNode->AppendNode(scopepointer); + + newNode->SetType(*type); + newNode->AppendNode(type); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Typenames +// + +template +inline bool interfaces::Typenames::Parse() +{ + PARSE_START; + { + FindTypenames(); + } + PARSE_END; +} + +template +inline void Typenames::FindTypenames() +{ + LOOP_START(G_TYPENAME) + { + HIT(T_TYPENAME) + { + stackedcontext newNode = opNode::Make(T_TYPENAME); + + this->Erase(T_TYPENAME); + + opNode* name = this->ExpectOr(T_ID, G_TEMPLATE_TYPE, G_SCOPE, G_POINTER, G_REFERENCE); + + newNode->SetName(name); + newNode->AppendNode(name); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// FunctionPointers +// + +template +inline bool interfaces::FunctionPointers::Parse() +{ + PARSE_START; + { + FindFunctionPointers(); + } + PARSE_END; +} + +template +inline void FunctionPointers::FindFunctionPointers() +{ + LOOP_START(G_FUNCTION_POINTER) + { + HIT(G_PAREN_BLOCK) + { + //function pointers are always double paren blocks + if (!this->Peek(G_PAREN_BLOCK)) + { + //not a function pointer, move past it + this->IncrementPosition(); + continue; + } + + stackedcontext newNode = opNode::Make(G_PAREN_BLOCK); + + stacked DeclParen = opNode::Expect(G_PAREN_BLOCK); + stacked Decl = opNode::Transform(DeclParen); + newNode->SetDecl(*Decl); + newNode->AppendNode(Decl); + + stacked Args = opNode::Expect(G_PAREN_BLOCK); + newNode->SetArguments(*Args); + newNode->AppendNode(Args); + + this->DecrementPosition(); + + //TODO: we will want to have G_CONST_TYPE maybe + stacked ReturnType = this->ExpectOr(G_SCOPE, + G_TEMPLATE_TYPE, + G_POINTER, + G_REFERENCE, + T_ID, + T_BASIC_TYPE, + G_FUNDAMENTAL_TYPE); + + //TODO: we really need to parse Name (why? maybe not) + // we also need to look at args probably + + newNode->SetReturn(*ReturnType); + newNode->PrependNode(ReturnType); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// opDefines +// + +template +inline bool interfaces::OPDefines::Parse() +{ + PARSE_START; + { + FindOPDefines(); + } + PARSE_END; +} + +template +inline void OPDefines::FindOPDefines() +{ + LOOP_START(G_OPDEFINE) + { + HIT(T_OPDEFINE) + { + stackedcontext newNode = opNode::Make(T_OPDEFINE); + + this->Erase(T_OPDEFINE); + + this->EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + newNode->SetName(*name); + newNode->AppendNode(name); + + this->EatWhitespaceAndComments(); + + if (this->IsCurrent(G_PAREN_BLOCK)) + { + stacked arguments = opNode::Expect(G_PAREN_BLOCK); + newNode->SetArguments(*arguments); + newNode->AppendNode(arguments); + } + + this->EatWhitespaceAndComments(); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + newNode->SetBody(*body); + newNode->AppendNode(body); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Preprocessor +// + + + +//TODO: a couple possible issues remain, +// we need to make sure this starts on a newline only +// and we need to know what happens if you have a #define name \, +// followed immediately by another directive +template +template +inline void Preprocessors::FindDirective(const string& directivename) +{ + LOOP_START(Grammar) + { + HIT(HitToken) + { + stackedcontext newNode = opNode::Make(HitToken); + + opNode::Erase(HitToken); + + // check and see that this #____ token is the first thing + // on the line (except for whitespace) and error if not + if (this->IsPrevious(T_WHITESPACE)) + this->ReverseErase(T_WHITESPACE); + + if (!this->IsPrevious(T_NEWLINE) && this->GetPosition() != this->GetBegin()) + opError::MessageError(*newNode, "Preprocessor definitions must not be preceeded by any tokens on a line except whitespace."); + + newNode->SetDirectiveName(directivename); + + bool bDone = false; + + while (!bDone) + { + this->PushUntilOrAdd(*newNode, T_NEWLINE, T_COMMENT, T_CCOMMENT, T_EOF, T_CONTINUELINE); + + if (this->CurrentNode()) + { + if (this->CurrentNode()->GetId() == T_NEWLINE + || this->CurrentNode()->GetId() == T_COMMENT + || this->CurrentNode()->GetId() == T_CCOMMENT + || this->CurrentNode()->GetId() == T_EOF) + bDone = true; + else + { + stacked continueline = opNode::Expect(T_CONTINUELINE); + newNode->AppendNode(continueline); + } + } + else + bDone = true; + } + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +template +inline bool interfaces::Preprocessors::Parse() +{ + PARSE_START; + { + FindAllPounds(); + } + PARSE_END; +} + +template +inline void Preprocessors::FindPoundDefines() +{ + FindDirective("define"); +} + +template +inline void interfaces::Preprocessors::FindPoundIf() +{ + FindDirective("if"); +} + +template +inline void interfaces::Preprocessors::FindPoundIfDef() +{ + FindDirective("ifdef"); +} + +template +inline void interfaces::Preprocessors::FindPoundIfnDef() +{ + FindDirective("ifndef"); +} + +template +inline void interfaces::Preprocessors::FindPoundEndIf() +{ + FindDirective("endif"); +} + +template +inline void interfaces::Preprocessors::FindPoundInclude() +{ + FindDirective("include"); +} + +template +inline void interfaces::Preprocessors::FindPoundElse() +{ + FindDirective("else"); +} + +template +inline void interfaces::Preprocessors::FindPoundError() +{ + FindDirective("error"); +} + +template +inline void interfaces::Preprocessors::FindPoundImport() +{ + FindDirective("import"); +} + +template +inline void interfaces::Preprocessors::FindPoundLine() +{ + FindDirective("line"); +} + +template +inline void interfaces::Preprocessors::FindPoundPragma() +{ + FindDirective("pragma"); +} + +template +inline void interfaces::Preprocessors::FindPoundUnDef() +{ + FindDirective("undef"); +} + +template +inline void interfaces::Preprocessors::FindPoundUsing() +{ + FindDirective("using"); +} + +template +inline void interfaces::Preprocessors::FindPoundWarning() +{ + FindDirective("warning"); +} + +// +// opInclude +// + +//NOTE: this is now a preparse option +template +inline bool interfaces::OPIncludes::PreParse() +{ + PREPARSE_START; + { + FindOPIncludes(); + } + PREPARSE_END; +} + +template +inline void OPIncludes::FindOPIncludes() +{ + LOOP_START(G_OPINCLUDE) + { + HIT(T_OPINCLUDE) + { + stackedcontext newNode = opNode::Make(T_OPINCLUDE); + + this->Erase(T_OPINCLUDE); + + this->EatWhitespaceAndComments(); + + stacked FileName = opNode::Expect(T_STRING); + + newNode->SetFileName(*FileName); + newNode->AppendNode(FileName); + + OPIncludeNode* node = *newNode; + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// ExpandCalls +// + + +//NOTE: this is a pre-parse interface +template +inline bool ExpandCalls::PreParse() +{ + PREPARSE_START; + { + FindExpandCalls(); + } + PREPARSE_END; +} + +template +inline void interfaces::ExpandCalls::FindExpandCalls() +{ + LOOP_START(G_EXPAND_CALL); + { + HIT(T_EXPAND) + { + stackedcontext newNode = opNode::Make(T_EXPAND); + + this->Erase(T_EXPAND); + + this->EatWhitespaceAndComments(); + + stacked name = this->Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + this->EatWhitespaceAndComments(); + + if (this->IsCurrent(G_PAREN_BLOCK)) + { + stacked args = opNode::Expect(G_PAREN_BLOCK); + stacked arguments = opNode::Transform(args); + + newNode->SetArguments(*arguments); + newNode->AppendNode(arguments); + } + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// opMacros +// + + +template +inline bool OPMacros::PreParse() +{ + PREPARSE_START; + { + FindOPMacros(); + } + PREPARSE_END; +} + +template +inline void interfaces::OPMacros::FindOPMacros() +{ + LOOP_START(G_OPMACRO) + { + HIT(T_OPMACRO) + { + stackedcontext newNode = opNode::Make(T_OPMACRO); + + this->Erase(T_OPMACRO); + + this->EatWhitespaceAndComments(); + + stacked name = opNode::Expect(T_ID); + newNode->SetName(*name); + newNode->AppendNode(name); + + this->EatWhitespaceAndComments(); + + if (this->IsCurrent(G_PAREN_BLOCK)) + { + stacked args = opNode::Expect(G_PAREN_BLOCK); + stacked arguments = opNode::Transform(args); + + newNode->SetArguments(*arguments); + newNode->AppendNode(arguments); + } + + this->EatWhitespaceAndComments(); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + newNode->SetBody(*body); + newNode->AppendNode(body); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// c++ {} +// + + +template +inline bool interfaces::CPlusPluses::Parse() +{ + PARSE_START; + { + FindCPlusPluses(); + } + PARSE_END; +} + +template +inline void CPlusPluses::FindCPlusPluses() +{ + LOOP_START(G_CPLUSPLUS) + { + HIT(T_CPLUSPLUS) + { + stackedcontext newNode = opNode::Make(T_CPLUSPLUS); + + this->Erase(T_CPLUSPLUS); + + this->EatWhitespaceAndComments(); + + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + stacked body = opNode::Transform(bbn); + + newNode->SetBody(*body); + newNode->AppendNode(body); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// FundamentalTypes +// + + +template +inline bool FundamentalTypes::PreParse() +{ + PREPARSE_START; + { + FindSigned(); + FindUnsigned(); + } + PREPARSE_END; +} + +template +inline void interfaces::FundamentalTypes::FindSigned() +{ + LOOP_START(G_FUNDAMENTAL_TYPE) + { + HIT(T_SIGNED) + { + stackedcontext newNode = opNode::Make(T_SIGNED); + + this->Erase(T_SIGNED); + + stacked type = opNode::Expect(T_BASIC_TYPE); + + // error if the type is not signable + if (!opScanner::IsSignable(type->GetValue())) + { + opError::ExpectError("signable basic type", *type); + } + + newNode->SetType(*type); + newNode->AppendNode(type); + + newNode->SetIsSigned(true); + + this->InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +template +inline void interfaces::FundamentalTypes::FindUnsigned() +{ + LOOP_START(G_FUNDAMENTAL_TYPE) + { + HIT(T_UNSIGNED) + { + stackedcontext newNode = opNode::Make(T_UNSIGNED); + + opNode::Erase(T_UNSIGNED); + + stacked type = opNode::Expect(T_BASIC_TYPE); + + // error if the type is not unsignable + if (!opScanner::IsSignable(type->GetValue())) + opError::ExpectError("unsignable basic type", *type); + + newNode->SetType(*type); + newNode->AppendNode(type); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Constructors +// + + +template +inline void Constructors::FindConstructors(const opString& classname) +{ + LOOP_START(G_CONSTRUCTOR) + { + HIT(G_FUNCTION) + { + FunctionNode* function = node_cast(opNode::CurrentNode()); + TerminalNode* fname = node_cast(function->GetName()); + + if (fname && fname->GetValue() == classname) + { + stackedcontext ctor = opNode::Make(G_FUNCTION); + stacked f = opNode::Expect(G_FUNCTION); + + ctor->SetFunction(*f); + ctor->AppendNode(f); + + opNode::InsertNodeAtCurrent(ctor); + } + else + opNode::IncrementPosition(); + } + } + LOOP_END +} + +// +// Destructors +// + + +template +inline void Destructors::FindDestructors(const opString& classname) +{ + LOOP_START(G_DESTRUCTOR) + { + HIT(G_FUNCTION) + { + FunctionNode* function = node_cast(opNode::CurrentNode()); + TerminalNode* fname = node_cast(function->GetName()); + + if (fname + && fname->GetValue() == classname + && opNode::IsPrevious(T_BITWISE_COMPLEMENT)) + { + stackedcontext dtor = opNode::Make(G_FUNCTION); + stacked f = opNode::Expect(G_FUNCTION); + dtor->SetFunction(*f); + + opNode::ReverseErase(T_BITWISE_COMPLEMENT); + + //do we want ~ in the member name or not? + //fname->PrependValue("~"); + + f->GetArguments()->CleanAll(); + + // make sure the destructor doesn't have arguments.. + if (!f->GetArguments()->IsEmpty()) + opError::MessageError(*f, "Destructors must have a void parameter list."); + + dtor->AppendNode(f); + + opNode::InsertNodeAtCurrent(dtor); + } + else + opNode::IncrementPosition(); + } + } + LOOP_END +} + +// +// Friends +// + +template +inline bool interfaces::Friends::Parse() +{ + PARSE_START; + { + FindFriends(); + } + PARSE_END; +} + +template +inline void Friends::FindFriends() +{ + LOOP_START(G_FRIEND); + { + HIT(T_FRIEND) + { + stackedcontext newNode = opNode::Make(T_FRIEND); + + opNode::Erase(T_FRIEND); + + stacked first = opNode::ExpectOr(T_ID, + G_SCOPE, + G_TEMPLATE_TYPE, + T_CLASS, + T_STRUCT, + G_FUNCTION_PROTOTYPE, + G_FUNCTION_DEFINITION); + + Token tok = first.GetNode()->GetId(); + + // If we have something of this form: + // + // friend class Id; or friend struct Id; + // + // We know this is a forward declaration. + if (tok == T_CLASS || tok == T_STRUCT) + { + newNode->SetForwardDecl(*first); + newNode->AppendNode(first); + + stacked name = opNode::ExpectOr(T_ID, + G_SCOPE, + G_TEMPLATE_TYPE); + + newNode->SetFriend(*name); + newNode->AppendNode(name); + + opNode::Erase(T_SEMICOLON); + + newNode->SetSemicolon(true); + } + // This could just be a friend declaration without + // the class/struct forward declaration part. + // + // friend Id; + else if (tok != G_FUNCTION_DEFINITION) + { + newNode->SetFriend(*first); + newNode->AppendNode(first); + + opNode::Erase(T_SEMICOLON); + + newNode->SetSemicolon(true); + } + // If this is a function definition, we don't require a semicolon. + else + { + newNode->SetFriend(*first); + newNode->AppendNode(first); + } + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Typedefs +// + + +template +inline bool interfaces::Typedefs::Parse() +{ + PARSE_START; + { + FindTypedefs(); + } + PARSE_END; +} + +template +inline void Typedefs::FindTypedefs() +{ + LOOP_START(G_TYPEDEF); + { + HIT(T_TYPEDEF) + { + stackedcontext newNode = opNode::Make(T_TYPEDEF); + + opNode::Erase(T_TYPEDEF); + + if (opNode::IsCurrent(T_VOLATILE) + || opNode::IsCurrent(T_CONST)) + { + stacked modifier = opNode::ExpectOr(T_VOLATILE, T_CONST); + + newNode->SetModifier(*modifier); + newNode->AppendNode(modifier); + } + + stacked type = opNode::ExpectOr(T_ID, + G_POINTER, + G_REFERENCE, + G_TEMPLATE_TYPE, + G_SCOPE, + T_BASIC_TYPE, + G_FUNDAMENTAL_TYPE, + G_TYPE_ARRAY, + G_ARRAY); + + newNode->SetType(*type); + newNode->AppendNode(type); + + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + // eat the semicolon + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// TemplateDecl +// + + +template +inline bool interfaces::TemplateDecls::Parse() +{ + PARSE_START; + { + FindTemplateDecls(); + } + PARSE_END; +} + +template +inline void TemplateDecls::FindTemplateDecls() +{ + LOOP_START(G_TEMPLATE_DECL); + { + HIT(T_TEMPLATE) + { + stackedcontext newNode = opNode::Make(T_TEMPLATE); + opNode::Erase(T_TEMPLATE); + + stacked braces = opNode::Expect(G_ANGLED_BLOCK); + + newNode->SetBraces(*braces); + newNode->AppendNode(braces); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// CPPConstructs +// + +template +inline bool interfaces::CPPConstructs::Parse() +{ + PARSE_START; + { + FindCPPConstructs(); + } + PARSE_END; +} + +template +inline void CPPConstructs::FindCPPConstructs() +{ + FindCPPConstructs(); + FindCPPConstructs(); + + FindCPPConstructObjects(); + FindCPPConstructObjects(); +} + + +// Find cpp constructs (enum/union). +template +template +inline void CPPConstructs::FindCPPConstructs() +{ + LOOP_START(Grammar); + { + HIT(Hit) + { + stackedcontext newNode = opNode::Make(Hit); + + opNode::Erase(Hit); + + // If we have a name, parse it. + if (opNode::IsCurrent(T_ID)) + { + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + } + + // Now we expect a block. + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetBody(*bbn); + newNode->AppendNode(bbn); + + opNode::EatWhitespaceAndComments(); + opNode::Erase(T_SEMICOLON); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// Find cpp object constructs (struct/class). +template +template +inline void interfaces::CPPConstructs::FindCPPConstructObjects() +{ + LOOP_START(Grammar); + { + HIT(Hit) + { + stackedcontext newNode = opNode::Make(Hit); + + opNode::Erase(Hit); + + // If we have a name, parse it. + // Also, if we have a name, look for inheritance. + if (opNode::IsCurrent(T_ID)) + { + stacked name = opNode::Expect(T_ID); + + newNode->SetName(*name); + newNode->AppendNode(name); + + // Look for inheritance. + stacked i = opNode::PushUntil(G_BRACE_BLOCK); + + if (!i->IsEmpty()) + { + newNode->SetInheritance(*i); + newNode->AppendNode(i); + } + else + i.Delete(); + } + + // Now we expect a block. + stacked bbn = opNode::Expect(G_BRACE_BLOCK); + + newNode->SetBody(*bbn); + newNode->AppendNode(bbn); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// Templated +// + + +template +inline bool interfaces::Templated::Parse() +{ + PARSE_START; + { + FindTemplated(); + } + PARSE_END; +} + +template +inline void Templated::FindTemplated() +{ + LOOP_START(G_TEMPLATED); + { + HIT(G_TEMPLATE_DECL) + { + stackedcontext newNode = opNode::Make(G_TEMPLATE_DECL); + stacked theTemplate = opNode::Expect(G_TEMPLATE_DECL); + + newNode->SetTheTemplate(*theTemplate); + newNode->AppendNode(theTemplate); + + stacked templated = opNode::ExpectOr(T_SEMICOLON, + G_CLASS, + G_STRUCT, + G_UNION, + G_FUNCTION_DEFINITION, + G_FUNCTION_PROTOTYPE, + G_CONSTRUCTOR_DEFINITION, + G_DESTRUCTOR_DEFINITION); + + newNode->SetTemplated(*templated); + newNode->AppendNode(templated); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// VisibilityLabels +// + +template +inline bool VisibilityLabels::Parse() +{ + PARSE_START; + { + FindVisibilityLabels(); + } + PARSE_END; +} + +// +// RemoveWhitespace +// + +template +inline bool RemoveWhitespace::Parse() +{ + PARSE_START; + { + removeWhitespace(); + } + PARSE_END; +} + +// +// RemoveComments +// + +template +inline bool RemoveComments::Parse() +{ + PARSE_START; + { + removeComments(); + } + PARSE_END; +} + +// +// Clean +// + +template +inline bool Clean::Parse() +{ + PARSE_START; + { + CleanAll(); + } + PARSE_END; +} + +// +// ModifierSupport +// + +// looks at auto and specified modifiers +template +inline bool ModifierSupport::HasModifier(const opString& modifiername) +{ + if (TerminalNode* node = FetchBasicModifier(modifiername)) + { + return true; + } + + if (modifiers) + { + if (modifiers->HasModifier(modifiername)) + return true; + } + + if (GetVisibility(modifiername)) + return true; + + //TODO: should we maybe add these modifiers to this node? + + //handle parent modifiers... + if (!node_cast(this)) + { + if (OPObjectNode* p = opNode::FindParent()) + { + if (p->HasModifier(modifiername)) + return true; + } + } + + return false; +} + +// only looks at special modifiers +template +inline bool interfaces::ModifierSupport::HasModifier(Token modifiertoken) +{ + if (modifiers) + { + if (modifiers->HasModifier(modifiertoken)) + return true; + } + + //this handles visibility... + if (automodifiers) + { + if (automodifiers->HasModifier(modifiertoken)) + return true; + } + + //handle parent modifiers... + if (!node_cast(this)) + { + if (OPObjectNode* p = opNode::FindParent()) + { + if (p->HasModifier(modifiertoken)) + return true; + } + } + + return false; +} + +// calls to GetValuedModifier will look at current modifiers, but also +// attempt to fetch automatically generated modifiers +template +inline ValuedModifierNode* interfaces::ModifierSupport::GetValuedModifier(const opString& modifiername) +{ + if (ValuedModifierNode* node = FetchValueModifier(modifiername)) + { + return node; + } + + if (modifiers) + { + if (ValuedModifierNode* node = modifiers->GetValuedModifier(modifiername)) + return node; + } + + //handle parent modifiers... + if (!node_cast(this)) + { + if (OPObjectNode* p = opNode::FindParent()) + { + return p->GetValuedModifier(modifiername); + } + } + + return NULL; +} + +template +inline void interfaces::ModifierSupport::CreateModifiersNode() +{ + if (automodifiers) + return; + + stacked modnode = NEWNODE(AutoModifiersNode); + + modnode->CopyBasics(this); + + automodifiers = *modnode; + + opNode::AppendNode(modnode); +} + diff --git a/opcplusplus/Inc/Interfaces.h b/opcplusplus/Inc/Interfaces.h index 6c22cad..e706ee4 100644 --- a/opcplusplus/Inc/Interfaces.h +++ b/opcplusplus/Inc/Interfaces.h @@ -14,6 +14,11 @@ /// increases code reusability. ///**************************************************************** +#pragma once + +#include "BasicNodes.h" + + namespace interfaces { @@ -27,78 +32,9 @@ class Namespaces : public Parent public: IMPLEMENTS_INTERFACE(Namespaces) - bool Parse() - { - PARSE_START; - { - FindNamespaces(); - } - PARSE_END; - } + bool Parse(); - void FindNamespaces() - { - LOOP_START(G_NAMESPACE); - { - HIT(T_NAMESPACE) - { - stackedcontext newNode = opNode::Make(T_NAMESPACE); - - Erase(T_NAMESPACE); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - - EatWhitespaceAndComments(); - - if(IsCurrent(T_ASSIGN)) - { - //create an alias instead (transform and set...) - stackedcontext alias = opNode::Transform(newNode); - - alias->SetName(*name); - alias->AppendNode(name); - - Erase(T_ASSIGN); - - EatWhitespaceAndComments(); - - while(IsCurrent(T_ID)) - { - stacked scope = opNode::Expect(T_ID); - - alias->AddScope(*scope); - alias->AppendNode(scope); - - if(IsCurrent(T_SCOPE_RESOLUTION)) - Erase(T_SCOPE_RESOLUTION); - } - - EatWhitespaceAndComments(); - - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(alias); - } - else - { - newNode->SetName(*name); - newNode->AppendNode(name); - - EatWhitespaceAndComments(); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked nbn = opNode::Transform(bbn); - newNode->SetBody(*nbn); - newNode->AppendNode(nbn); - - InsertNodeAtCurrent(newNode); - } - } - } - LOOP_END; - } + void FindNamespaces(); }; //========================================== @@ -111,39 +47,9 @@ class UsingNamespaceKeywords : public Parent public: IMPLEMENTS_INTERFACE(UsingNamespaceKeywords) - bool Parse() - { - PARSE_START; - { - FindUsingNamespaceKeywords(); - } - PARSE_END; - } - - void FindUsingNamespaceKeywords() - { - LOOP_START(G_USING_NAMESPACE_KEYWORD) - { - HIT(T_USING) - { - if ( PeekUncleaned(T_NAMESPACE) ) - { - stackedcontext newNode = opNode::Make(T_USING); - - Erase(T_USING); + bool Parse(); - EatWhitespaceAndComments(); - - Erase(T_NAMESPACE); - - InsertNodeAtCurrent(newNode); - } - else - IncrementPosition(); - } - } - LOOP_END - } + void FindUsingNamespaceKeywords(); }; ///========================================== @@ -157,35 +63,9 @@ class Usings : public Parent IMPLEMENTS_INTERFACE(Usings) REQUIRES_INTERFACE(Scopes) - bool Parse() - { - PARSE_START; - { - FindUsings(); - } - PARSE_END; - } - - void FindUsings() - { - LOOP_START(G_USING) - { - HIT(T_USING) - { - stackedcontext newNode = opNode::Make(T_USING); + bool Parse(); - Erase(T_USING); - - stacked scope = opNode::Expect(G_SCOPE); - - newNode->SetScope(*scope); - newNode->AppendNode(scope); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END - } + void FindUsings(); }; ///========================================== @@ -201,87 +81,16 @@ class Blocks : public Parent //TODO: //FIXME: this is unsafe template - void FindMatching() - { - //change the throw mode - setexceptionmode mode(opException::ParseException);//TEST: I don't know that we actually want this :) - - iterator end = GetEnd(); - - LOOP_START(Grammar); - { - HIT(Left) - { - // we want to create a new node - stackedcontext newNode = opNode::Make(Left); - int numLeft = 1; - - // we must delete the current node (Left), our position has moved forward by one - //DeleteCurrentNode(); - stacked leftnode = opNode::PopCurrentNode(); - - Token last = Left; - - while (numLeft && GetPosition() != end) - { - // now we need to peek at the current position node - // if the nodes type is Left - Token currentToken = CurrentNode()->GetId(); - - last = currentToken; - - if (currentToken == Left) - numLeft++; - else if (currentToken == Right) - numLeft--; - - // if there are numLeft still, just push this node in - if (numLeft) - { - stacked tempstacked = PopCurrentNode(); - newNode->AppendNode(tempstacked); - } - } - - //this is used by angled brackets since they're context sensitive - if(numLeft) - { - opError::PrematureError(Right,*leftnode,last==T_EOF); - } - - leftnode.Delete(); - - // we must delete the current node (Right) - DeleteCurrentNode(); - - // add the new node - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - - } + void FindMatching(); // stuff we actually care about - void FindBraces() - { - FindMatching(); - } + void FindBraces(); - void FindParentheses() - { - FindMatching(); - } + void FindParentheses(); - void FindBrackets() - { - FindMatching(); - } + void FindBrackets(); - void FindAngles() - { - FindMatching(); - } + void FindAngles(); }; ///========================================== @@ -294,83 +103,9 @@ class Pointers : public Parent public: IMPLEMENTS_INTERFACE(Pointers) - bool Parse() - { - PARSE_START; - { - FindPointers(); - } - PARSE_END; - } + bool Parse(); - void FindPointers() - { - LOOP_START(G_POINTER); - { - HIT(T_STAR) - { - stackedcontext newNode = opNode::Make(T_STAR); - stacked firststar; - - //grab all the stars and c/v specifiers - while( IsCurrent(T_STAR) ) - { - // Save off the first star (for error messages). - if ( firststar.IsValid() ) - Erase(T_STAR); - else - firststar = opNode::Expect(T_STAR); - - PointerNode::StarType type = PointerNode::Plain; - - // const - if( IsCurrent(T_CONST) ) - { - Erase(T_CONST); - type = PointerNode::Const; - } - // volatile - else if ( IsCurrent(T_VOLATILE) ) - { - Erase(T_VOLATILE); - type = PointerNode::Volatile; - } - - // const volatile - if ( type == PointerNode::Volatile - && IsCurrent(T_CONST) ) - { - Erase(T_CONST); - type = PointerNode::ConstVolatile; - } - // volatile const - else if ( type == PointerNode::Const - && IsCurrent(T_VOLATILE) ) - { - Erase(T_VOLATILE); - type = PointerNode::ConstVolatile; - } - - newNode->AddStar(type); - } - - stacked type = ReverseExpectOr(G_TEMPLATE_TYPE, - G_SCOPE, - T_ID, - T_BASIC_TYPE, - G_FUNDAMENTAL_TYPE, - *firststar); - - newNode->SetType(*type); - newNode->AppendNode(type); - - firststar.Delete(); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindPointers(); }; ///========================================== @@ -383,34 +118,9 @@ class MemberPointers : public Parent public: IMPLEMENTS_INTERFACE(MemberPointers); - bool Parse() - { - PARSE_START; - { - FindMemberPointers(); - } - PARSE_END; - } + bool Parse(); - void FindMemberPointers() - { - LOOP_START(G_POINTER_MEMBER); - { - HIT(G_SCOPE) - { - //looking for - //::ID::ID::* - //how do we find this? - //what order? before pointer? scope? or after? - //what about G_SCOPE_POINTER? should we do it that way? - //scope::* - ScopeNode* scope = node_cast(CurrentNode()); - - if(scope->Is) - } - } - LOOP_END; - } + void FindMemberPointers(); }; ///========================================== @@ -423,49 +133,9 @@ class Operators : public Parent public: IMPLEMENTS_INTERFACE(Operators) - bool Parse() - { - PARSE_START; - { - FindOperators(); - } - PARSE_END; - } + bool Parse(); - void FindOperators() - { - LOOP_START(G_OPERATOR); - { - HIT(T_OPERATOR) - { - stackedcontext newNode = opNode::Make(T_OPERATOR); - - Erase(T_OPERATOR); - - //operator ()() special case - if(IsCurrent(G_PAREN_BLOCK)) - { - //NOTE: we dont support templated operator()() : P - stacked paren = opNode::Expect(G_PAREN_BLOCK); - newNode->AppendNode(paren); - - //better have a paren block after... - //Check(G_PAREN_BLOCK); - } - else - { - PushUntilAdd(*newNode,G_PAREN_BLOCK); - //just to be safe? - //Check(G_PAREN_BLOCK); - } - - //opNode* oper = ExpectOverloadableOperator(); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindOperators(); }; //========================================== @@ -478,36 +148,9 @@ class Modifiers : public Parent public: IMPLEMENTS_INTERFACE(Modifiers) - bool Parse() - { - PARSE_START; - { - FindModifiers(); - } - PARSE_END; - } + bool Parse(); - void FindModifiers() - { - OPObjectNode* parent = opNode::FindParent(); - DialectCategory* category = parent->GetCategorySettings(); - - iterator i = GetBegin(); - iterator end = GetEnd(); - - while (i != end) - { - if ( i->GetId() == T_ID ) - { - TerminalNode* node = node_cast( *i ); - - if ( category->HasBasicModifier( node->GetValue() ) ) - node->SetId( T_MODIFIER ); - } - - ++i; - } - } + void FindModifiers(); }; ///========================================== @@ -520,50 +163,9 @@ class ValuedModifiers : public Parent public: IMPLEMENTS_INTERFACE(ValuedModifiers) - bool Parse() - { - PARSE_START; - { - FindValuedModifiers(); - } - PARSE_END; - } + bool Parse(); - void FindValuedModifiers() - { - OPObjectNode* parent = opNode::FindParent(); - DialectCategory* category = parent->GetCategorySettings(); - - LOOP_START(G_VALUED_MODIFIER); - { - HIT(T_ID) - { - TerminalNode* id = node_cast( CurrentNode() ); - - if ( Peek(G_PAREN_BLOCK) - && category->HasValueModifier( id->GetValue() ) ) - { - stackedcontext newNode = opNode::Make(T_ID); - - stacked modifier = opNode::Expect(T_ID); - - newNode->SetModifier(*modifier); - newNode->AppendNode(modifier); - - stacked paren = opNode::Expect(G_PAREN_BLOCK); - stacked arguments = opNode::Transform(paren); - - newNode->SetArguments(*arguments); - newNode->AppendNode(arguments); - - InsertNodeAtCurrent(newNode); - } - else - IncrementPosition(); - } - } - LOOP_END; - } + void FindValuedModifiers(); }; ///========================================== @@ -576,63 +178,9 @@ class Functions : public Parent public: IMPLEMENTS_INTERFACE(Functions) - bool Parse() - { - PARSE_START; - { - FindFunctions(); - } - PARSE_END; - } + bool Parse(); - void FindFunctions() - { - LOOP_START(G_FUNCTION); - { - HIT(G_PAREN_BLOCK) - { - stackedcontext newNode = opNode::Make(G_PAREN_BLOCK); - - stacked Paren = opNode::Expect(G_PAREN_BLOCK); - stacked Arguments = opNode::Transform(Paren); - - newNode->SetArguments(*Arguments); - - // now look backwards - stacked Name = ReverseExpectOr(G_OPERATOR, - G_TEMPLATE_TYPE, - T_ID, - *Arguments); - - newNode->SetName(*Name); - newNode->AppendNode(Name); - - newNode->AppendNode(Arguments); - - // check for const-ness - if (IsCurrent(T_CONST)) - { - Erase(T_CONST); - newNode->SetConst(true); - } - - // check for pure methods - // NOTE: we just look for assignment = #, = ID, we dont look for null or anything like that - if (IsCurrent(T_ASSIGN)) - { - Erase(T_ASSIGN); - - stacked assignment = opNode::ExpectOr(T_NUMBER,T_ID); - - newNode->SetAssignment(*assignment); - newNode->AppendNode(assignment); - } - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindFunctions(); }; ///========================================== @@ -646,85 +194,12 @@ class FunctionDefinitions : public Parent IMPLEMENTS_INTERFACE(FunctionDefinitions) REQUIRES_INTERFACE(Clean) - bool Parse() - { - PARSE_START; - { - FindFunctionDefinitions(); - } - PARSE_END; - } + bool Parse(); - void FindFunctionDefinitions() - { - LOOP_START(G_FUNCTION_PROTOTYPE); - { - HIT(G_FUNCTION) - { - stacked Function = opNode::Expect(G_FUNCTION); - - //NOTE: this function should be ok, test a while. - //TODO: fix this, this function still sucks - might be ok now.. - - bool bFunctionDefinition = !IsCurrent(T_SEMICOLON); - - //is it a function declaration? - if (bFunctionDefinition) - { - //create a new node from the block - stackedcontext newNode = NEWNODE(FunctionDefinitionNode()); - newNode->CopyBasics(*Function); - - newNode->SetFunction(*Function); - - stacked Return = GetReturnType(*Function); - newNode->SetReturn(*Return); - - stacked Body = opNode::Expect(G_BRACE_BLOCK); - newNode->SetBody(*Body); - - newNode->AppendNode(Return); - newNode->AppendNode(Function); - newNode->AppendNode(Body); - - InsertNodeAtCurrent(newNode); - } - //must be a function prototype - else - { - //create a new node from the block - stackedcontext newNode = NEWNODE(FunctionPrototypeNode()); - newNode->CopyBasics(*Function); - - newNode->SetFunction(*Function); - - stacked Return = GetReturnType(*Function); - newNode->SetReturn(*Return); - - newNode->AppendNode(Return); - newNode->AppendNode(Function); - - InsertNodeAtCurrent(newNode); - } - } - } - LOOP_END; - } + void FindFunctionDefinitions(); private: - stacked GetReturnType(opNode* after) - { - //find the return type - return ReverseExpectOr(G_TEMPLATE_TYPE, - G_SCOPE, - G_POINTER, - G_POINTER_MEMBER, - G_REFERENCE, - T_ID, - T_BASIC_TYPE, - G_FUNDAMENTAL_TYPE, - after); - } + stacked GetReturnType(opNode* after); }; ///========================================== @@ -738,70 +213,9 @@ class ConstructorDefinitions : public Parent IMPLEMENTS_INTERFACE(ConstructorDefinitions) REQUIRES_INTERFACE(Clean) - bool Parse() - { - PARSE_START; - { - FindConstructorDefinitions(); - } - PARSE_END; - } + bool Parse(); - void FindConstructorDefinitions() - { - LOOP_START(G_CONSTRUCTOR_DEFINITION); - { - HIT(G_CONSTRUCTOR) - { - //find the constructor - stacked Constructor = opNode::Expect(G_CONSTRUCTOR); - - //cases: - //ctor() : ... {} - //ctor() {} - //ctor() - - bool bdefinition = IsCurrent(T_COLON) || IsCurrent(G_BRACE_BLOCK); - - if(bdefinition) - { - //create a new node from the block - stackedcontext newNode = NEWNODE(ConstructorDefinitionNode()); - newNode->CopyBasics(*Constructor); - - //optional initializer list - if(IsCurrent(T_COLON)) - { - stacked initializers = opNode::PushUntil(G_BRACE_BLOCK); - - newNode->SetInitializers(*initializers); - newNode->AppendNode(initializers); - } - - stacked Body = opNode::Expect(G_BRACE_BLOCK); - - newNode->SetConstructor(*Constructor); - newNode->SetBody(*Body); - newNode->AppendNode(Constructor); - newNode->AppendNode(Body); - - InsertNodeAtCurrent(newNode); - } - //must be a function prototype - else - { - //create a new node from the block - stackedcontext newNode = NEWNODE(ConstructorPrototypeNode()); - newNode->CopyBasics(*Constructor); - - newNode->SetConstructor(*Constructor); - newNode->AppendNode(Constructor); - InsertNodeAtCurrent(newNode); - } - } - } - LOOP_END; - } + void FindConstructorDefinitions(); }; ///========================================== @@ -815,61 +229,9 @@ class DestructorDefinitions : public Parent IMPLEMENTS_INTERFACE(DestructorDefinitions); REQUIRES_INTERFACE(Clean) - bool Parse() - { - PARSE_START; - { - FindDestructorDefinitions(); - } - PARSE_END; - } + bool Parse(); - void FindDestructorDefinitions() - { - LOOP_START(G_DESTRUCTOR_DEFINITION); - { - HIT(G_DESTRUCTOR) - { - //find the constructor - stacked Destructor = opNode::Expect(G_DESTRUCTOR); - - //cases: - //~dtor() {} - //~dtor() - - bool bdefinition = IsCurrent(G_BRACE_BLOCK); - - if(bdefinition) - { - //create a new node from the block - stackedcontext newNode = NEWNODE(DestructorDefinitionNode()); - newNode->CopyBasics(*Destructor); - - stacked Body = opNode::Expect(G_BRACE_BLOCK); - - newNode->SetDestructor(*Destructor); - newNode->AppendNode(Destructor); - newNode->SetBody(*Body); - newNode->AppendNode(Body); - - InsertNodeAtCurrent(newNode); - } - //must be a function prototype - else - { - //create a new node from the block - stackedcontext newNode = NEWNODE(DestructorPrototypeNode()); - newNode->CopyBasics(*Destructor); - - newNode->SetDestructor(*Destructor); - newNode->AppendNode(Destructor); - - InsertNodeAtCurrent(newNode); - } - } - } - LOOP_END; - } + void FindDestructorDefinitions(); }; @@ -883,48 +245,9 @@ class OPEnums : public Parent public: IMPLEMENTS_INTERFACE(OPEnums) - bool Parse() - { - PARSE_START; - { - FindOPEnums(); - } - PARSE_END; - } - - void FindOPEnums() - { - LOOP_START(G_OPENUM); - { - HIT(T_OPENUM) - { - stackedcontext newNode = opNode::Make(T_OPENUM); - - stacked identifier = opNode::Expect(T_OPENUM); - newNode->SetIdentifier(*identifier); - newNode->AppendNode(identifier); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - newNode->SetName(*name); - newNode->AppendNode(name); - - EatWhitespaceAndComments(); + bool Parse(); - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked eobn = opNode::Transform(bbn); - newNode->SetBody(*eobn); - newNode->AppendNode(eobn); - - EatWhitespaceAndComments(); - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindOPEnums(); }; ///========================================== @@ -937,86 +260,9 @@ class OPObjects : public Parent public: IMPLEMENTS_INTERFACE(OPObjects) - bool Parse() - { - PARSE_START; - { - FindOPObjects(); - } - PARSE_END; - } - - void FindOPObjects() - { - LOOP_START(G_OPOBJECT); - { - HIT(T_OPOBJECT) - { - stackedcontext newNode = opNode::Make(T_OPOBJECT); - - stacked category = opNode::Expect(T_OPOBJECT); - - newNode->SetCategory(*category); - - //I don't want to save this, because untransformed one is disallowed - category.Delete(); - - EatWhitespaceAndComments(); - - // is there middle modifiers? - if (IsCurrent(G_CPLUSPLUS)) - { - stacked middleModifiers = opNode::Expect(G_CPLUSPLUS); - - newNode->SetMiddleModifiers(*middleModifiers); - newNode->AppendNode(middleModifiers); - } - - EatWhitespaceAndComments(); - - // add name - stacked name = opNode::Expect(T_ID); - newNode->SetName(*name); - newNode->AppendNode(name); - - EatWhitespaceAndComments(); - - // add inheritance - stacked i = opNode::PushUntil(G_BRACE_BLOCK); - i->SetObject(*newNode); - - if(!i->IsEmpty()) - { - newNode->SetInheritance(*i); - newNode->AppendNode(i); - } - else - i.Delete(); - - // add opclass block - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked ocbn = opNode::Transform(bbn); - - //set a backwards pointer - ocbn->SetObject(*newNode); - - newNode->SetBody(*ocbn); - newNode->AppendNode(ocbn); - - //get rid of trailing semicolon (required now!) - EatWhitespaceAndComments(); - - Erase(T_SEMICOLON); + bool Parse(); -// if(IsCurrent(T_SEMICOLON)) -// Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - } - - LOOP_END; - } + void FindOPObjects(); }; ///========================================== @@ -1029,46 +275,9 @@ class States : public Parent public: IMPLEMENTS_INTERFACE(States) - bool Parse() - { - PARSE_START; - - FindStates(); + bool Parse(); - PARSE_END; - } - - void FindStates() - { - LOOP_START(G_STATE); - - HIT(T_STATE) - { - stackedcontext newNode = opNode::Make(T_STATE); - - Erase(T_STATE); - - // add name - stacked name = opNode::Expect(T_ID); - newNode->SetName(*name); - newNode->AppendNode(name); - - // add state block - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked sbn = opNode::Transform(bbn); - newNode->SetBody(*sbn); - newNode->AppendNode(sbn); - - //get rid of trailing semicolons (which are optional) - EatWhitespaceAndComments(); - if(IsCurrent(T_SEMICOLON)) - Erase(T_SEMICOLON); - - InsertNodeAtCurrent(newNode); - } - - LOOP_END; - } + void FindStates(); }; ///========================================== @@ -1081,44 +290,9 @@ class TemplateTypes : public Parent public: IMPLEMENTS_INTERFACE(TemplateTypes) - bool Parse() - { - PARSE_START; - { - FindTemplateTypes(); - } - PARSE_END; - } + bool Parse(); - void FindTemplateTypes() - { - LOOP_START(G_TEMPLATE_TYPE); - { - HIT(G_ANGLED_BLOCK) - { - stackedcontext newNode = opNode::Make(G_ANGLED_BLOCK); - - // Grab the braces. - stacked braces = opNode::Expect(G_ANGLED_BLOCK); - stacked body = opNode::Transform( braces ); - - newNode->SetBody(*body); - - // Grab the id. - stacked id = opNode::ReverseExpect(T_ID, *body); - - // Grab basics from the id. - newNode->CopyBasics(*id); - newNode->SetName(*id); - - newNode->AppendNode(id); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindTemplateTypes(); }; ///========================================== @@ -1131,43 +305,9 @@ class References : public Parent public: IMPLEMENTS_INTERFACE(References) - bool Parse() - { - PARSE_START; - { - FindReferences(); - } - PARSE_END; - } + bool Parse(); - void FindReferences() - { - LOOP_START(G_REFERENCE) - { - HIT(T_AMPERSAND) - { - stackedcontext newNode = opNode::Make(T_AMPERSAND); - - stacked ampersand = opNode::Expect(T_AMPERSAND); - - stacked Type = ReverseExpectOr(G_POINTER, - G_SCOPE, - G_TEMPLATE_TYPE, - T_ID, - T_BASIC_TYPE, - G_FUNDAMENTAL_TYPE, - *ampersand); - - newNode->SetType(*Type); - newNode->AppendNode(Type); - - ampersand.Delete(); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindReferences(); }; ///========================================== @@ -1180,77 +320,9 @@ class Arrays : public Parent public: IMPLEMENTS_INTERFACE(Arrays) - bool Parse() - { - PARSE_START; - { - FindArrays(); - } - PARSE_END; - } + bool Parse(); - void FindArrays() - { - LOOP_START(G_ARRAY) - { - HIT(G_BRACKET_BLOCK) - { - //TODO: 1. collect all [][] - //2. if we have an id before it, G_ARRAY - //3. if we have a type before it, G_TYPE_ARRAY - - stackedcontext newNode = opNode::Make(G_BRACKET_BLOCK); - - opArray< stacked > brackets; - - while(IsCurrent(G_BRACKET_BLOCK)) - { - stacked b = opNode::Expect(G_BRACKET_BLOCK); - brackets.push_back(b); - } - - if ( IsPrevious(G_FUNDAMENTAL_TYPE) || - IsPrevious(T_BASIC_TYPE) || - IsPrevious(G_POINTER) || - IsPrevious(G_REFERENCE) || - IsPrevious(G_TEMPLATE_TYPE) || - IsPrevious(G_SCOPE) ) - { - stackedcontext node = opNode::Transform(newNode); - - //get the type - stacked Type = opNode::ReverseExpectOr(G_FUNDAMENTAL_TYPE, - T_BASIC_TYPE, - G_POINTER, - G_REFERENCE, - G_TEMPLATE_TYPE, - G_SCOPE, - *brackets[0]); - - node->SetType(*Type); - node->AppendNode(Type); - - AppendBrackets(brackets,*node); - InsertNodeAtCurrent(node); - } - else - { - //G_ARRAY - stackedcontext node = opNode::Transform(newNode); - - //get the name - stacked Name = opNode::ReverseExpect(T_ID, *brackets[0]); - - node->SetName(*Name); - node->AppendNode(Name); - - AppendBrackets(brackets,*node); - InsertNodeAtCurrent(node); - } - } - } - LOOP_END; - } + void FindArrays(); template void AppendBrackets(opArray< stacked >& brackets, T* node) @@ -1275,14 +347,7 @@ class VisibilityLabels : public Parent IMPLEMENTS_INTERFACE(VisibilityLabels) REQUIRES_INTERFACE(Clean) - bool Parse() - { - PARSE_START; - { - FindVisibilityLabels(); - } - PARSE_END; - } + bool Parse(); void FindVisibilityLabels() { @@ -1292,33 +357,7 @@ class VisibilityLabels : public Parent } template< Token token > - void FindVisibilityLabel() - { - LOOP_START(G_VISIBILITY_LABEL) - { - HIT(token) - { - if(IsCurrent(token) && Peek(T_COLON)) - { - stackedcontext newNode = opNode::Make(token); - - stacked Label = opNode::Expect(token); - Erase(T_COLON); - - newNode->SetLabel(*Label); - - Label.Delete(); - - InsertNodeAtCurrent(newNode); - } - else - { - IncrementPosition(); - } - } - } - LOOP_END; - } + void FindVisibilityLabel(); }; ///========================================== @@ -1331,131 +370,11 @@ class Scopes : public Parent public: IMPLEMENTS_INTERFACE(Scopes) - bool Parse() - { - PARSE_START; - { - FindScopes(); - } - PARSE_END; - } - - void FindScopes() - { - LOOP_START(G_SCOPE) - { - HIT(T_SCOPE_RESOLUTION) - { - //handles... - // global: - //[::global] - //::global::* - //non-global: - //name::name - //name::* - - stackedcontext scope = opNode::Make(T_SCOPE_RESOLUTION); - - stacked scoperesolution = opNode::Expect(T_SCOPE_RESOLUTION); - - bool bGlobal = false; - opArray< stacked > scopes; - - //is it a global scope or not? - if(IsPrevious(T_ID) || IsPrevious(G_TEMPLATE_TYPE)) - { - // get the name/initial scope - stacked name = ReverseExpectOr(T_ID, G_TEMPLATE_TYPE, *scoperesolution); - scopes.PushBack(name); - } - else - { - bGlobal = true; - } - - scoperesolution.Delete(); - - bool bContinue = true; - - if(!bGlobal) - { - //name::* case - if(CheckScopePointer(scope,scopes,bGlobal)) - { - //got scope pointer, quit - bContinue = false; - } - } - - while (bContinue) - { - //grab first forward scope - stacked name = ExpectOr(T_ID, G_TEMPLATE_TYPE); - scopes.PushBack(name); - - if(IsCurrent(T_SCOPE_RESOLUTION)) - { - Erase(T_SCOPE_RESOLUTION); - - //check for ...::* - if(CheckScopePointer(scope,scopes,bGlobal)) - { - //got scope pointer, quit - bContinue = false; - } - } - else - { - // ...::name - scope->SetGlobal(bGlobal); - - //add the scopes to this - int numscopes = scopes.Size(); - for(int i = 0; i < numscopes; i++) - { - scope->AddScope(*scopes[i]); - scope->AppendNode(scopes[i]); - } - - InsertNodeAtCurrent(scope); - bContinue = false; - } - } - } - } - LOOP_END; - } + bool Parse(); - bool CheckScopePointer( stacked& scope, opArray< stacked< opNode > >& scopes, bool bGlobal) - { - if(IsCurrent(T_STAR)) - { - stacked scopepointer = opNode::Transform(scope); - - int numstars = 0; - while(IsCurrent(T_STAR)) - { - Erase(T_STAR); - numstars++; - } - - scopepointer->SetNumStars(numstars); - scopepointer->SetGlobal(bGlobal); - - //add the scopes to this - int numscopes = scopes.Size(); - for(int i = 0; i < numscopes; i++) - { - scopepointer->AddScope(*scopes[i]); - scopepointer->AppendNode(scopes[i]); - } - - InsertNodeAtCurrent(scopepointer); - return true; - } + void FindScopes(); - return false; - } + bool CheckScopePointer( stacked& scope, opArray< stacked< opNode > >& scopes, bool bGlobal); }; ///========================================== @@ -1468,46 +387,9 @@ class PointerMembers : public Parent public: IMPLEMENTS_INTERFACE(PointerMembers); - bool Parse() - { - PARSE_START; - { - FindPointerMembers(); - } - PARSE_END; - } + bool Parse(); - void FindPointerMembers() - { - LOOP_START(G_POINTER_MEMBER); - { - HIT(G_SCOPE_POINTER) - { - stackedcontext newNode = opNode::Make(G_SCOPE_POINTER); - - stacked scopepointer = opNode::Expect(G_SCOPE_POINTER); - - newNode->SetScope(*scopepointer); - - stacked type = opNode::ReverseExpectOr(T_ID, - G_SCOPE, - G_TEMPLATE_TYPE, - G_POINTER, - G_REFERENCE, - T_BASIC_TYPE, - G_FUNDAMENTAL_TYPE, - *scopepointer); - - newNode->AppendNode(scopepointer); - - newNode->SetType(*type); - newNode->AppendNode(type); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindPointerMembers(); }; @@ -1521,35 +403,9 @@ class Typenames : public Parent public: IMPLEMENTS_INTERFACE(Typenames) - bool Parse() - { - PARSE_START; - { - FindTypenames(); - } - PARSE_END; - } - - void FindTypenames() - { - LOOP_START(G_TYPENAME) - { - HIT(T_TYPENAME) - { - stackedcontext newNode = opNode::Make(T_TYPENAME); - - Erase(T_TYPENAME); - - opNode* name = ExpectOr(T_ID,G_TEMPLATE_TYPE,G_SCOPE,G_POINTER,G_REFERENCE); + bool Parse(); - newNode->SetName(name); - newNode->AppendNode(name); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindTypenames(); }; ///========================================== @@ -1562,62 +418,9 @@ class FunctionPointers : public Parent public: IMPLEMENTS_INTERFACE(FunctionPointers) - bool Parse() - { - PARSE_START; - { - FindFunctionPointers(); - } - PARSE_END; - } + bool Parse(); - void FindFunctionPointers() - { - LOOP_START(G_FUNCTION_POINTER) - { - HIT(G_PAREN_BLOCK) - { - //function pointers are always double paren blocks - if(!Peek(G_PAREN_BLOCK)) - { - //not a function pointer, move past it - IncrementPosition(); - continue; - } - - stackedcontext newNode = opNode::Make(G_PAREN_BLOCK); - - stacked DeclParen = opNode::Expect(G_PAREN_BLOCK); - stacked Decl = opNode::Transform(DeclParen); - newNode->SetDecl(*Decl); - newNode->AppendNode(Decl); - - stacked Args = opNode::Expect(G_PAREN_BLOCK); - newNode->SetArguments(*Args); - newNode->AppendNode(Args); - - DecrementPosition(); - - //TODO: we will want to have G_CONST_TYPE maybe - stacked ReturnType = ExpectOr(G_SCOPE, - G_TEMPLATE_TYPE, - G_POINTER, - G_REFERENCE, - T_ID, - T_BASIC_TYPE, - G_FUNDAMENTAL_TYPE); - - //TODO: we really need to parse Name (why? maybe not) - // we also need to look at args probably - - newNode->SetReturn(*ReturnType); - newNode->PrependNode(ReturnType); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindFunctionPointers(); }; ///========================================== @@ -1630,52 +433,9 @@ class OPDefines : public Parent public: IMPLEMENTS_INTERFACE(OPDefines) - bool Parse() - { - PARSE_START; - { - FindOPDefines(); - } - PARSE_END; - } + bool Parse(); - void FindOPDefines() - { - LOOP_START(G_OPDEFINE) - { - HIT(T_OPDEFINE) - { - stackedcontext newNode = opNode::Make(T_OPDEFINE); - - Erase(T_OPDEFINE); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - newNode->SetName(*name); - newNode->AppendNode(name); - - EatWhitespaceAndComments(); - - if (IsCurrent(G_PAREN_BLOCK)) - { - stacked arguments = opNode::Expect(G_PAREN_BLOCK); - newNode->SetArguments(*arguments); - newNode->AppendNode(arguments); - } - - EatWhitespaceAndComments(); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindOPDefines(); }; ///========================================== @@ -1688,14 +448,7 @@ class Preprocessors : public Parent public: IMPLEMENTS_INTERFACE(Preprocessors) - bool Parse() - { - PARSE_START; - { - FindAllPounds(); - } - PARSE_END; - } + bool Parse(); void FindAllPounds() { @@ -1720,124 +473,35 @@ class Preprocessors : public Parent // and we need to know what happens if you have a #define name \, // followed immediately by another directive template - void FindDirective(const string& directivename) - { - LOOP_START(Grammar) - { - HIT(HitToken) - { - stackedcontext newNode = opNode::Make(HitToken); - - Erase(HitToken); - - // check and see that this #____ token is the first thing - // on the line (except for whitespace) and error if not - if (IsPrevious(T_WHITESPACE)) - ReverseErase(T_WHITESPACE); - - if (!IsPrevious(T_NEWLINE) && GetPosition() != GetBegin()) - opError::MessageError(*newNode, "Preprocessor definitions must not be preceeded by any tokens on a line except whitespace."); - - newNode->SetDirectiveName(directivename); - - bool bDone = false; - - while (!bDone) - { - PushUntilOrAdd(*newNode, T_NEWLINE, T_COMMENT, T_CCOMMENT, T_EOF, T_CONTINUELINE); - - if(CurrentNode()) - { - if(CurrentNode()->GetId() == T_NEWLINE - || CurrentNode()->GetId() == T_COMMENT - || CurrentNode()->GetId() == T_CCOMMENT - || CurrentNode()->GetId() == T_EOF) - bDone = true; - else - { - stacked continueline = opNode::Expect(T_CONTINUELINE); - newNode->AppendNode(continueline); - } - } - else - bDone = true; - } - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindDirective(const string& directivename); - void FindPoundDefines() - { - FindDirective("define"); - } + void FindPoundDefines(); - void FindPoundIf() - { - FindDirective("if"); - } + void FindPoundIf(); - void FindPoundIfDef() - { - FindDirective("ifdef"); - } + void FindPoundIfDef(); - void FindPoundIfnDef() - { - FindDirective("ifndef"); - } + void FindPoundIfnDef(); - void FindPoundEndIf() - { - FindDirective("endif"); - } + void FindPoundEndIf(); - void FindPoundInclude() - { - FindDirective("include"); - } + void FindPoundInclude(); - void FindPoundElse() - { - FindDirective("else"); - } + void FindPoundElse(); - void FindPoundError() - { - FindDirective("error"); - } + void FindPoundError(); - void FindPoundImport() - { - FindDirective("import"); - } + void FindPoundImport(); - void FindPoundLine() - { - FindDirective("line"); - } + void FindPoundLine(); - void FindPoundPragma() - { - FindDirective("pragma"); - } + void FindPoundPragma(); - void FindPoundUnDef() - { - FindDirective("undef"); - } + void FindPoundUnDef(); - void FindPoundUsing() - { - FindDirective("using"); - } + void FindPoundUsing(); - void FindPoundWarning() - { - FindDirective("warning"); - } + void FindPoundWarning(); }; ///========================================== @@ -1851,38 +515,9 @@ class OPIncludes : public Parent IMPLEMENTS_INTERFACE(OPIncludes) //NOTE: this is now a preparse option - bool PreParse() - { - PREPARSE_START; - { - FindOPIncludes(); - } - PREPARSE_END; - } - - void FindOPIncludes() - { - LOOP_START(G_OPINCLUDE) - { - HIT(T_OPINCLUDE) - { - stackedcontext newNode = opNode::Make(T_OPINCLUDE); - - Erase(T_OPINCLUDE); - - EatWhitespaceAndComments(); - - stacked FileName = opNode::Expect(T_STRING); - - newNode->SetFileName(*FileName); - newNode->AppendNode(FileName); + bool PreParse(); - OPIncludeNode* node = *newNode; - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindOPIncludes(); }; ///========================================== @@ -1896,48 +531,9 @@ class ExpandCalls : public Parent IMPLEMENTS_INTERFACE(ExpandCalls) //NOTE: this is a pre-parse interface - bool PreParse() - { - PREPARSE_START; - { - FindExpandCalls(); - } - PREPARSE_END; - } + bool PreParse(); - void FindExpandCalls() - { - LOOP_START(G_EXPAND_CALL); - { - HIT(T_EXPAND) - { - stackedcontext newNode = opNode::Make(T_EXPAND); - - Erase(T_EXPAND); - - EatWhitespaceAndComments(); - - stacked name = Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - EatWhitespaceAndComments(); - - if (IsCurrent(G_PAREN_BLOCK)) - { - stacked args = opNode::Expect(G_PAREN_BLOCK); - stacked arguments = opNode::Transform(args); - - newNode->SetArguments(*arguments); - newNode->AppendNode(arguments); - } - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindExpandCalls(); }; ///========================================== @@ -1950,54 +546,9 @@ class OPMacros : public Parent public: IMPLEMENTS_INTERFACE(OPMacros) - bool PreParse() - { - PREPARSE_START; - { - FindOPMacros(); - } - PREPARSE_END; - } + bool PreParse(); - void FindOPMacros() - { - LOOP_START(G_OPMACRO) - { - HIT(T_OPMACRO) - { - stackedcontext newNode = opNode::Make(T_OPMACRO); - - Erase(T_OPMACRO); - - EatWhitespaceAndComments(); - - stacked name = opNode::Expect(T_ID); - newNode->SetName(*name); - newNode->AppendNode(name); - - EatWhitespaceAndComments(); - - if (IsCurrent(G_PAREN_BLOCK)) - { - stacked args = opNode::Expect(G_PAREN_BLOCK); - stacked arguments = opNode::Transform(args); - - newNode->SetArguments(*arguments); - newNode->AppendNode(arguments); - } - - EatWhitespaceAndComments(); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindOPMacros(); }; ///========================================== @@ -2010,38 +561,9 @@ class CPlusPluses : public Parent public: IMPLEMENTS_INTERFACE(CPlusPluses) - bool Parse() - { - PARSE_START; - { - FindCPlusPluses(); - } - PARSE_END; - } - - void FindCPlusPluses() - { - LOOP_START(G_CPLUSPLUS) - { - HIT(T_CPLUSPLUS) - { - stackedcontext newNode = opNode::Make(T_CPLUSPLUS); - - Erase(T_CPLUSPLUS); - - EatWhitespaceAndComments(); - - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - stacked body = opNode::Transform(bbn); + bool Parse(); - newNode->SetBody(*body); - newNode->AppendNode(body); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindCPlusPluses(); }; ///========================================== @@ -2054,69 +576,11 @@ class FundamentalTypes : public Parent public: IMPLEMENTS_INTERFACE(FundamentalTypes) - bool PreParse() - { - PREPARSE_START; - { - FindSigned(); - FindUnsigned(); - } - PREPARSE_END; - } - - void FindSigned() - { - LOOP_START(G_FUNDAMENTAL_TYPE) - { - HIT(T_SIGNED) - { - stackedcontext newNode = opNode::Make(T_SIGNED); - - Erase(T_SIGNED); - - stacked type = opNode::Expect(T_BASIC_TYPE); - - // error if the type is not signable - if (!opScanner::IsSignable(type->GetValue())) - { - opError::ExpectError("signable basic type", *type); - } - - newNode->SetType(*type); - newNode->AppendNode(type); - - newNode->SetIsSigned(true); + bool PreParse(); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } - - void FindUnsigned() - { - LOOP_START(G_FUNDAMENTAL_TYPE) - { - HIT(T_UNSIGNED) - { - stackedcontext newNode = opNode::Make(T_UNSIGNED); - - Erase(T_UNSIGNED); - - stacked type = opNode::Expect(T_BASIC_TYPE); - - // error if the type is not unsignable - if (!opScanner::IsSignable(type->GetValue())) - opError::ExpectError("unsignable basic type", *type); - - newNode->SetType(*type); - newNode->AppendNode(type); + void FindSigned(); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindUnsigned(); }; ///========================================== @@ -2129,31 +593,7 @@ class Constructors : public Parent public: IMPLEMENTS_INTERFACE(Constructors) - void FindConstructors(const opString& classname) - { - LOOP_START(G_CONSTRUCTOR) - { - HIT(G_FUNCTION) - { - FunctionNode* function = node_cast(CurrentNode()); - TerminalNode* fname = node_cast(function->GetName()); - - if(fname && fname->GetValue() == classname) - { - stackedcontext ctor = opNode::Make(G_FUNCTION); - stacked f = opNode::Expect(G_FUNCTION); - - ctor->SetFunction(*f); - ctor->AppendNode(f); - - InsertNodeAtCurrent(ctor); - } - else - IncrementPosition(); - } - } - LOOP_END - } + void FindConstructors(const opString& classname); }; @@ -2167,44 +607,7 @@ class Destructors : public Parent public: IMPLEMENTS_INTERFACE(Destructors) - void FindDestructors(const opString& classname) - { - LOOP_START(G_DESTRUCTOR) - { - HIT(G_FUNCTION) - { - FunctionNode* function = node_cast(CurrentNode()); - TerminalNode* fname = node_cast(function->GetName()); - - if(fname - && fname->GetValue() == classname - && IsPrevious(T_BITWISE_COMPLEMENT)) - { - stackedcontext dtor = opNode::Make(G_FUNCTION); - stacked f = opNode::Expect(G_FUNCTION); - dtor->SetFunction(*f); - - ReverseErase(T_BITWISE_COMPLEMENT); - - //do we want ~ in the member name or not? - //fname->PrependValue("~"); - - f->GetArguments()->CleanAll(); - - // make sure the destructor doesn't have arguments.. - if (!f->GetArguments()->IsEmpty()) - opError::MessageError(*f, "Destructors must have a void parameter list."); - - dtor->AppendNode(f); - - InsertNodeAtCurrent(dtor); - } - else - IncrementPosition(); - } - } - LOOP_END - } + void FindDestructors(const opString& classname); }; ///========================================== @@ -2217,81 +620,9 @@ class Friends : public Parent public: IMPLEMENTS_INTERFACE(Friends); - bool Parse() - { - PARSE_START; - { - FindFriends(); - } - PARSE_END; - } + bool Parse(); - void FindFriends() - { - LOOP_START(G_FRIEND); - { - HIT(T_FRIEND) - { - stackedcontext newNode = opNode::Make(T_FRIEND); - - Erase(T_FRIEND); - - stacked first = opNode::ExpectOr(T_ID, - G_SCOPE, - G_TEMPLATE_TYPE, - T_CLASS, - T_STRUCT, - G_FUNCTION_PROTOTYPE, - G_FUNCTION_DEFINITION); - - Token tok = first.GetNode()->GetId(); - - // If we have something of this form: - // - // friend class Id; or friend struct Id; - // - // We know this is a forward declaration. - if ( tok == T_CLASS || tok == T_STRUCT ) - { - newNode->SetForwardDecl(*first); - newNode->AppendNode(first); - - stacked name = opNode::ExpectOr(T_ID, - G_SCOPE, - G_TEMPLATE_TYPE); - - newNode->SetFriend(*name); - newNode->AppendNode(name); - - Erase(T_SEMICOLON); - - newNode->SetSemicolon(true); - } - // This could just be a friend declaration without - // the class/struct forward declaration part. - // - // friend Id; - else if ( tok != G_FUNCTION_DEFINITION ) - { - newNode->SetFriend(*first); - newNode->AppendNode(first); - - Erase(T_SEMICOLON); - - newNode->SetSemicolon(true); - } - // If this is a function definition, we don't require a semicolon. - else - { - newNode->SetFriend(*first); - newNode->AppendNode(first); - } - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindFriends(); }; ///========================================== @@ -2304,60 +635,9 @@ class Typedefs : public Parent public: IMPLEMENTS_INTERFACE(Typedefs); - bool Parse() - { - PARSE_START; - { - FindTypedefs(); - } - PARSE_END; - } + bool Parse(); - void FindTypedefs() - { - LOOP_START(G_TYPEDEF); - { - HIT(T_TYPEDEF) - { - stackedcontext newNode = opNode::Make(T_TYPEDEF); - - Erase(T_TYPEDEF); - - if (IsCurrent(T_VOLATILE) - || IsCurrent(T_CONST)) - { - stacked modifier = opNode::ExpectOr(T_VOLATILE, T_CONST); - - newNode->SetModifier(*modifier); - newNode->AppendNode(modifier); - } - - stacked type = opNode::ExpectOr(T_ID, - G_POINTER, - G_REFERENCE, - G_TEMPLATE_TYPE, - G_SCOPE, - T_BASIC_TYPE, - G_FUNDAMENTAL_TYPE, - G_TYPE_ARRAY, - G_ARRAY); - - newNode->SetType(*type); - newNode->AppendNode(type); - - stacked name = opNode::Expect(T_ID); - - newNode->SetName(*name); - newNode->AppendNode(name); - - // eat the semicolon - Erase( T_SEMICOLON ); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindTypedefs(); }; //========================================== @@ -2370,34 +650,9 @@ class TemplateDecls : public Parent public: IMPLEMENTS_INTERFACE(TemplateDecls); - bool Parse() - { - PARSE_START; - { - FindTemplateDecls(); - } - PARSE_END; - } + bool Parse(); - void FindTemplateDecls() - { - LOOP_START(G_TEMPLATE_DECL); - { - HIT(T_TEMPLATE) - { - stackedcontext newNode = opNode::Make(T_TEMPLATE); - Erase(T_TEMPLATE); - - stacked braces = opNode::Expect(G_ANGLED_BLOCK); - - newNode->SetBraces(*braces); - newNode->AppendNode(braces); - - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } + void FindTemplateDecls(); }; ///========================================== @@ -2410,155 +665,98 @@ class CPPConstructs : public Parent public: IMPLEMENTS_INTERFACE(CPPConstructs); - bool Parse() + bool Parse(); + + void FindCPPConstructs(); + + // Find cpp constructs (enum/union). + template + void FindCPPConstructs(); + + // Find cpp object constructs (struct/class). + template + void FindCPPConstructObjects(); +}; + +///========================================== +/// Templated +///========================================== + +template +class Templated : public Parent +{ +public: + IMPLEMENTS_INTERFACE(Templated); + + bool Parse(); + + void FindTemplated(); +}; + + +template +class ConditionalSupport : public Parent +{ +public: + IMPLEMENTS_INTERFACE(ConditionalSupport); + + void Init() { - PARSE_START; - { - FindCPPConstructs(); - } - PARSE_END; + Condition = NULL; } - void FindCPPConstructs() + //returns how many levels printed + int PrintConditions(opSectionStream& section) { - FindCPPConstructs(); - FindCPPConstructs(); - - FindCPPConstructObjects(); - FindCPPConstructObjects(); + if (Condition) + return Condition->PrintCondition(section); + return 0; } - // Find cpp constructs (enum/union). - template - void FindCPPConstructs() + void PrintConditionEnd(int number, opSectionStream& stream) { - LOOP_START(Grammar); - { - HIT(Hit) - { - stackedcontext newNode = opNode::Make(Hit); + if (!number) + return; + + stream << endl; + + for (int i = 0; i < number; i++) + stream << "#endif" << endl; + } + + void SetCondition(PreprocessorStatementNode* condition) + { + Condition = condition; + } + +private: + PreprocessorStatementNode* Condition; +}; + + + + + - Erase(Hit); - // If we have a name, parse it. - if ( IsCurrent(T_ID) ) - { - stacked name = opNode::Expect( T_ID ); - newNode->SetName(*name); - newNode->AppendNode(name); - } - // Now we expect a block. - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - newNode->SetBody(*bbn); - newNode->AppendNode(bbn); - EatWhitespaceAndComments(); - Erase(T_SEMICOLON); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } - // Find cpp object constructs (struct/class). - template - void FindCPPConstructObjects() - { - LOOP_START(Grammar); - { - HIT(Hit) - { - stackedcontext newNode = opNode::Make(Hit); - Erase(Hit); - // If we have a name, parse it. - // Also, if we have a name, look for inheritance. - if ( IsCurrent(T_ID) ) - { - stacked name = opNode::Expect( T_ID ); - newNode->SetName(*name); - newNode->AppendNode(name); - // Look for inheritance. - stacked i = opNode::PushUntil(G_BRACE_BLOCK); - if ( !i->IsEmpty() ) - { - newNode->SetInheritance(*i); - newNode->AppendNode(i); - } - else - i.Delete(); - } - // Now we expect a block. - stacked bbn = opNode::Expect(G_BRACE_BLOCK); - newNode->SetBody(*bbn); - newNode->AppendNode(bbn); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } -}; -///========================================== -/// Templated -///========================================== -template -class Templated : public Parent -{ -public: - IMPLEMENTS_INTERFACE(Templated); - bool Parse() - { - PARSE_START; - { - FindTemplated(); - } - PARSE_END; - } - void FindTemplated() - { - LOOP_START(G_TEMPLATED); - { - HIT(G_TEMPLATE_DECL) - { - stackedcontext newNode = opNode::Make(G_TEMPLATE_DECL); - stacked theTemplate = opNode::Expect(G_TEMPLATE_DECL); - - newNode->SetTheTemplate( *theTemplate ); - newNode->AppendNode( theTemplate ); - - stacked templated = opNode::ExpectOr(T_SEMICOLON, - G_CLASS, - G_STRUCT, - G_UNION, - G_FUNCTION_DEFINITION, - G_FUNCTION_PROTOTYPE, - G_CONSTRUCTOR_DEFINITION, - G_DESTRUCTOR_DEFINITION); - - newNode->SetTemplated( *templated ); - newNode->AppendNode( templated ); - - InsertNodeAtCurrent( newNode ); - } - } - LOOP_END; - } -}; } //end namespace interface diff --git a/opcplusplus/Inc/MacroInterfaces.h b/opcplusplus/Inc/MacroInterfaces.h index d5b6b83..eabcda1 100644 --- a/opcplusplus/Inc/MacroInterfaces.h +++ b/opcplusplus/Inc/MacroInterfaces.h @@ -11,6 +11,8 @@ /// Macro interfaces. ///**************************************************************** +#pragma once + ///========================================== /// MacroConcatenations ///========================================== @@ -52,7 +54,7 @@ class MacroConcatenations : public Parent newNode->SetRight(*rightop); newNode->AppendNode(rightop); - InsertNodeAtCurrent(newNode); + opNode::InsertNodeAtCurrent(newNode); } } LOOP_END; @@ -78,13 +80,13 @@ class MacroSingleQuotes : public Parent { stackedcontext newNode = opNode::Make(T_ACCENT); - Erase(T_ACCENT); + opNode::Erase(T_ACCENT); opNode::PushUntilAdd(*newNode, T_ACCENT); - Erase(T_ACCENT); + opNode::Erase(T_ACCENT); - InsertNodeAtCurrent(newNode); + opNode::InsertNodeAtCurrent(newNode); } } LOOP_END; @@ -110,13 +112,13 @@ class MacroDoubleQuotes : public Parent { stackedcontext newNode = opNode::Make(T_DOUBLE_ACCENT); - Erase(T_DOUBLE_ACCENT); + opNode::Erase(T_DOUBLE_ACCENT); opNode::PushUntilAdd(*newNode, T_DOUBLE_ACCENT); - Erase(T_DOUBLE_ACCENT); + opNode::Erase(T_DOUBLE_ACCENT); - InsertNodeAtCurrent(newNode); + opNode::InsertNodeAtCurrent(newNode); } } LOOP_END; diff --git a/opcplusplus/Inc/Macros.h b/opcplusplus/Inc/Macros.h index 8e34101..2ae8a9a 100644 --- a/opcplusplus/Inc/Macros.h +++ b/opcplusplus/Inc/Macros.h @@ -92,7 +92,8 @@ //NOTE: I had to disable these interfaces for a while :/ #define REQUIRES_INTERFACE(iface) \ - enum required_##iface { iface##_requires = iface##_implementation, }; + +// removed enum required_##iface { iface##_requires = iface##_implementation }; //void Requires_##iface() { Implements_##iface(); } @@ -101,17 +102,19 @@ public: \ typedef Parent Super; \ typedef opList::pointer_iterator iterator; \ - enum implements_##iface { iface##_implementation }; \ iface() \ { \ - Init(); \ + this->Init(); \ } +// removed: enum implements_##iface { iface##_implementation }; \ + + #define PARSE_START \ if(!Super::Parse()) \ return false; \ - AlterContext newcontext(GetId(),this); \ - ResetPosition(); \ + AlterContext newcontext( this->GetId(), this); \ + this->ResetPosition(); \ INIT_EXCEPTIONS #define PARSE_END \ @@ -119,10 +122,10 @@ iface() \ CATCH_EXCEPTIONS #define PREPARSE_START \ - AlterContext newcontext(GetId(),this); \ + AlterContext newcontext(this->GetId(),this);\ if(!Super::PreParse()) \ return false; \ - ResetPosition(); \ + this->ResetPosition(); \ INIT_EXCEPTIONS #define PREPARSE_END \ @@ -132,8 +135,8 @@ iface() \ //wrap visitor functions - catches exceptions //function must return false for failure/errors #define OPERATIONS_START \ -AlterContext newcontext(GetId(),this); \ - ResetPosition(); \ +AlterContext newcontext(opNode::GetId(),this); \ + opNode::ResetPosition(); \ INIT_EXCEPTIONS #define OPERATIONS_END \ @@ -141,10 +144,10 @@ AlterContext newcontext(GetId(),this); \ CATCH_EXCEPTIONS #define POSTPARSE_START \ - AlterContext newcontext(GetId(),this); \ + AlterContext newcontext(opNode::GetId(),this); \ if (!Super::PostParse()) \ return false; \ - ResetPosition(); \ + opNode::ResetPosition(); \ INIT_EXCEPTIONS #define POSTPARSE_END \ @@ -152,8 +155,8 @@ AlterContext newcontext(GetId(),this); \ CATCH_EXCEPTIONS #define DISALLOW_START \ - AlterContext newcontext(GetId(),this); \ - ResetPosition(); \ + AlterContext newcontext(opNode::GetId(),this); \ + opNode::ResetPosition(); \ INIT_EXCEPTIONS #define DISALLOW_END \ @@ -173,7 +176,7 @@ AlterContext newcontext(GetId(),this); \ //loop macros #define LOOP_START(t) \ AlterContext newcontext(t,this); \ - ResetPosition(); \ + this->ResetPosition(); \ bool done = false; \ while(!done) \ { \ @@ -188,15 +191,15 @@ AlterContext newcontext(GetId(),this); \ exceptionhandler.CaughtException(); \ } \ } \ - ResetPosition(); + this->ResetPosition(); // INSPECT macros #define INSPECT_START(t) \ AlterContext newcontext(t,this); \ - ResetPosition(); + this->ResetPosition(); #define INSPECT_END \ - ResetPosition(); \ + this->ResetPosition(); \ return false; ///========================================== diff --git a/opcplusplus/Inc/MemoryTracker.h b/opcplusplus/Inc/MemoryTracker.h index a681850..02a43a5 100644 --- a/opcplusplus/Inc/MemoryTracker.h +++ b/opcplusplus/Inc/MemoryTracker.h @@ -11,6 +11,7 @@ /// Debug Memory Tracker ///**************************************************************** +using exceptions::opException; //hash pointer functor template<> @@ -64,6 +65,7 @@ class opMemoryTracker template class stackedcontext; + // smart pointer for parse nodes (opnodes) // can copy etc safely, it deletes the node upon exceptions only // because of this - only want one stacked<> pointing to a node at a time diff --git a/opcplusplus/Inc/ModifierNodes.h b/opcplusplus/Inc/ModifierNodes.h index 3443af0..ec6cfe3 100644 --- a/opcplusplus/Inc/ModifierNodes.h +++ b/opcplusplus/Inc/ModifierNodes.h @@ -11,428 +11,106 @@ /// Modifier node header. ///**************************************************************** -namespace nodes -{ +#pragma once -/// -/// ModifiersBase -/// - -class ModifiersBase : public opNode +namespace nodes { -public: - DECLARE_NODE(ModifiersBase,opNode,T_UNKNOWN); - - /*=== utility ===*/ - - void AddModifier(opNode* innode) - { - Modifiers.push_back(innode); - } - - /**** printing ****/ - void PrintNode(opFileStream& stream) - { - PrintNodeChildren(stream); - } + /// + /// ModifiersBase + /// - void PrintOriginal(opSectionStream& stream) + class ModifiersBase : public opNode { - PrintOriginalChildren(stream); - } - - /**** queries ****/ - - bool HasModifier(const opString& modifiername); - bool HasModifier(Token modifiertoken); - TerminalNode* FindModifier(Token modifiertoken); - ValuedModifierNode* GetValuedModifier(const opString& modifiername); - void BuildValueModifiers(vector& modifierlist); + public: + DECLARE_NODE(ModifiersBase, opNode, T_UNKNOWN); - opNode* GetModifier(Token modtoken); + /*=== utility ===*/ - bool PostProcess() - { - return true; - } - - void CloneNode(ModifiersBase* node) - { - int num = (int)Modifiers.size(); - for(int i = 0; i < num; i++) + void AddModifier(opNode* innode) { - stacked mod = Modifiers[i]->CloneGeneric(); - node->AddModifier(*mod); - node->AppendNode(mod); + Modifiers.push_back(innode); } - } - -private: - vector Modifiers; -}; - -/// -/// ModifiersNode -/// - -class ModifiersNode : public ModifiersBase -{ -public: - DECLARE_NODE(ModifiersNode,ModifiersBase,G_MODIFIERS); - - /*=== validation ===*/ - - void CheckFunctionModifiers(); - void CheckDataModifiers(); - - /*=== printing ===*/ - - void PrintString(opString& s) - { - PrintStringChildren(s); - } - - void PrintBuiltIn(opSectionStream& stream); - void PrintBuiltInReturnArgument(opString& s); - void PrintBuiltInArgument(opString& s); - void PrintBuiltInSource(opSectionStream& stream); - - opString ErrorName() { return ""; } -}; - -/// -/// AutoModifiersNode -/// - -class AutoModifiersNode : public ModifiersNode -{ -public: - DECLARE_NODE(AutoModifiersNode,ModifiersNode,G_AUTO_MODIFIERS); -}; - -class ModifierSupportBase -{ -public: - void InitModifierSupport() - { - modifiers = NULL; - automodifiers = NULL; - } - - void SetModifiers(ModifiersNode* innode) - { - modifiers = innode; - } - - ModifiersNode* GetModifiers() - { - return modifiers; - } - - void SetAutoModifiers(AutoModifiersNode* node) - { - automodifiers = node; - } - - AutoModifiersNode* GetAutoModifiers() - { - return automodifiers; - } - - TerminalNode* AddBasicModifier(const opString& modifiername, Token token); - ValuedModifierNode* AddValueModifier(const opString& modifiername); - - virtual bool HasModifier(const opString& modifiername) = NULL; - virtual bool HasModifier(Token modifiertoken) = NULL; - virtual ValuedModifierNode* GetValuedModifier(const opString& modifiername) = NULL; - -protected: - virtual void CreateModifiersNode() = NULL; - - ModifiersNode* modifiers; - AutoModifiersNode* automodifiers; - -public: - // you must fetch modifier values using this, it runs through a cached map structure - opNode* FetchModifier(const opString& modifiername) - { - ModifierMap::iterator end = ModifierGenerators.end(); - - ModifierMap::iterator found = ModifierGenerators.Find(modifiername); - - if(found != end) - { - if((*found).second.CachedModifier != NULL) - return (*found).second.CachedModifier; - - //get the result from the generate modifier delegate - opNode* result = (*found).second.GenerateModifier(modifiername); - - (*found).second.CachedModifier = result; - - return result; - } - - return NULL; - } - - //attempt to cache all modifiers - void FetchAllModifiers() - { - ModifierMap::iterator it = ModifierGenerators.begin(); - ModifierMap::iterator end = ModifierGenerators.end(); - - while(it != end) - { - if((*it).second.CachedModifier != NULL) - { - ++it; - continue; - } - - const opString& modifiername = (*it).first; - - //get the result from the generate modifier delegate - opNode* result = (*it).second.GenerateModifier( modifiername ); - - (*it).second.CachedModifier = result; - - ++it; - } - } - - ValuedModifierNode* FetchValueModifier(const opString& modifiername) - { - opNode* node = FetchModifier(modifiername); - - return node_cast(node); - } - - TerminalNode* FetchBasicModifier(const opString& modifiername) - { - opNode* node = FetchModifier(modifiername); - - return node_cast(node); - } - -protected: - // you must register each modifier we want to generate with this - void RegisterModifier(const opString& modifiername, const ModifierDelegate& generator) - { - assert(!generator.empty()); - - ModifierGenerators.Insert(modifiername,generator); - } - void RegisterBasicModifier(const opString& modifiername) - { - ModifierDelegate modifier(this,&ModifierSupportBase::ModifierBasic); - RegisterModifier(modifiername,modifier); - } - - opNode* ModifierBasic(const opString& name) - { - return AddBasicModifier(name,T_MODIFIER); - } + /**** printing ****/ -protected: - struct ModifierCache - { - ModifierCache() + void PrintNode(opFileStream& stream) { - CachedModifier = NULL; + PrintNodeChildren(stream); } - ModifierCache(const ModifierDelegate& delegate) + void PrintOriginal(opSectionStream& stream) { - GenerateModifier = delegate; - CachedModifier = NULL; + PrintOriginalChildren(stream); } - ModifierDelegate GenerateModifier; - opNode* CachedModifier; - }; - - typedef opMap< opString, ModifierCache > ModifierMap; - ModifierMap ModifierGenerators; - -}; + /**** queries ****/ + bool HasModifier(const opString& modifiername); + bool HasModifier(Token modifiertoken); + TerminalNode* FindModifier(Token modifiertoken); + ValuedModifierNode* GetValuedModifier(const opString& modifiername); + void BuildValueModifiers(vector& modifierlist); -} // end of namespace nodes + opNode* GetModifier(Token modtoken); -namespace interfaces -{ - -template -class ModifierSupport : public Parent, public ModifierSupportBase -{ -public: - IMPLEMENTS_INTERFACE(ModifierSupport); - - void Init() - { - InitModifierSupport(); - } - - // looks at auto and specified modifiers - virtual bool HasModifier(const opString& modifiername) - { - if(TerminalNode* node = FetchBasicModifier(modifiername)) + bool PostProcess() { return true; } - - if(modifiers) - { - if(modifiers->HasModifier(modifiername)) - return true; - } - - if(GetVisibility(modifiername)) - return true; - - //TODO: should we maybe add these modifiers to this node? - - //handle parent modifiers... - if( !node_cast(this) ) - { - if(OPObjectNode* p = FindParent()) - { - if(p->HasModifier(modifiername)) - return true; - } - } - - return false; - } - // only looks at special modifiers - virtual bool HasModifier(Token modifiertoken) - { - if(modifiers) - { - if(modifiers->HasModifier(modifiertoken)) - return true; - } - - //this handles visibility... - if(automodifiers) + void CloneNode(ModifiersBase* node) { - if(automodifiers->HasModifier(modifiertoken)) - return true; - } - - //handle parent modifiers... - if( !node_cast(this) ) - { - if(OPObjectNode* p = FindParent()) + int num = (int)Modifiers.size(); + for (int i = 0; i < num; i++) { - if(p->HasModifier(modifiertoken)) - return true; + stacked mod = Modifiers[i]->CloneGeneric(); + node->AddModifier(*mod); + node->AppendNode(mod); } } - - return false; - } - virtual opNode* GetVisibility(const opString& name) - { - return NULL; - } + private: + vector Modifiers; + }; - // calls to GetValuedModifier will look at current modifiers, but also - // attempt to fetch automatically generated modifiers - virtual ValuedModifierNode* GetValuedModifier(const opString& modifiername) - { - if(ValuedModifierNode* node = FetchValueModifier(modifiername)) - { - return node; - } - - if(modifiers) - { - if(ValuedModifierNode* node = modifiers->GetValuedModifier(modifiername)) - return node; - } + /// + /// ModifiersNode + /// - //handle parent modifiers... - if( !node_cast(this) ) - { - if(OPObjectNode* p = FindParent()) - { - return p->GetValuedModifier(modifiername); - } - } - - return NULL; - } - - opNode* FetchModifier(const opString& name) + class ModifiersNode : public ModifiersBase { - return ModifierSupportBase::FetchModifier(name); - } + public: + DECLARE_NODE(ModifiersNode, ModifiersBase, G_MODIFIERS); - void FetchAllModifiers() - { - return ModifierSupportBase::FetchAllModifiers(); - } + /*=== validation ===*/ -protected: - void CreateModifiersNode() - { - if(automodifiers) - return; + void CheckFunctionModifiers(); + void CheckDataModifiers(); - stacked modnode = NEWNODE(AutoModifiersNode); + /*=== printing ===*/ - modnode->CopyBasics(this); + void PrintString(opString& s) + { + PrintStringChildren(s); + } - automodifiers = *modnode; + void PrintBuiltIn(opSectionStream& stream); + void PrintBuiltInReturnArgument(opString& s); + void PrintBuiltInArgument(opString& s); + void PrintBuiltInSource(opSectionStream& stream); - AppendNode(modnode); - } -}; + opString ErrorName() { return ""; } + }; -template -class ConditionalSupport : public Parent -{ -public: - IMPLEMENTS_INTERFACE(ConditionalSupport); - - void Init() - { - Condition = NULL; - } - - //returns how many levels printed - int PrintConditions(opSectionStream& section) - { - if(Condition) - return Condition->PrintCondition(section); - return 0; - } - - void PrintConditionEnd(int number, opSectionStream& stream) - { - if(!number) - return; - - stream << endl; + /// + /// AutoModifiersNode + /// - for(int i = 0; i < number; i++) - stream << "#endif" << endl; - } - - void SetCondition(PreprocessorStatementNode* condition) + class AutoModifiersNode : public ModifiersNode { - Condition = condition; - } - -private: - PreprocessorStatementNode* Condition; -}; - -}//end of namespace interfaces + public: + DECLARE_NODE(AutoModifiersNode, ModifiersNode, G_AUTO_MODIFIERS); + }; +} diff --git a/opcplusplus/Inc/ModifierSupport.h b/opcplusplus/Inc/ModifierSupport.h new file mode 100644 index 0000000..a4fd4db --- /dev/null +++ b/opcplusplus/Inc/ModifierSupport.h @@ -0,0 +1,204 @@ + +#pragma once + +namespace nodes +{ + + class ModifierSupportBase + { + public: + void InitModifierSupport() + { + modifiers = NULL; + automodifiers = NULL; + } + + void SetModifiers(ModifiersNode* innode) + { + modifiers = innode; + } + + ModifiersNode* GetModifiers() + { + return modifiers; + } + + void SetAutoModifiers(AutoModifiersNode* node) + { + automodifiers = node; + } + + AutoModifiersNode* GetAutoModifiers() + { + return automodifiers; + } + + TerminalNode* AddBasicModifier(const opString& modifiername, Token token); + ValuedModifierNode* AddValueModifier(const opString& modifiername); + + virtual bool HasModifier(const opString& modifiername) = NULL; + virtual bool HasModifier(Token modifiertoken) = NULL; + virtual ValuedModifierNode* GetValuedModifier(const opString& modifiername) = NULL; + + protected: + virtual void CreateModifiersNode() = NULL; + + ModifiersNode* modifiers; + AutoModifiersNode* automodifiers; + + public: + // you must fetch modifier values using this, it runs through a cached map structure + opNode* FetchModifier(const opString& modifiername) + { + ModifierMap::iterator end = ModifierGenerators.end(); + + ModifierMap::iterator found = ModifierGenerators.Find(modifiername); + + if (found != end) + { + if ((*found).second.CachedModifier != NULL) + return (*found).second.CachedModifier; + + //get the result from the generate modifier delegate + opNode* result = (*found).second.GenerateModifier(modifiername); + + (*found).second.CachedModifier = result; + + return result; + } + + return NULL; + } + + //attempt to cache all modifiers + void FetchAllModifiers() + { + ModifierMap::iterator it = ModifierGenerators.begin(); + ModifierMap::iterator end = ModifierGenerators.end(); + + while (it != end) + { + if ((*it).second.CachedModifier != NULL) + { + ++it; + continue; + } + + const opString& modifiername = (*it).first; + + //get the result from the generate modifier delegate + opNode* result = (*it).second.GenerateModifier(modifiername); + + (*it).second.CachedModifier = result; + + ++it; + } + } + + ValuedModifierNode* FetchValueModifier(const opString& modifiername) + { + opNode* node = FetchModifier(modifiername); + + return node_cast(node); + } + + TerminalNode* FetchBasicModifier(const opString& modifiername) + { + opNode* node = FetchModifier(modifiername); + + return node_cast(node); + } + + protected: + // you must register each modifier we want to generate with this + void RegisterModifier(const opString& modifiername, const ModifierDelegate& generator) + { + assert(!generator.empty()); + + ModifierGenerators.Insert(modifiername, generator); + } + + void RegisterBasicModifier(const opString& modifiername) + { + ModifierDelegate modifier(this, &ModifierSupportBase::ModifierBasic); + RegisterModifier(modifiername, modifier); + } + + opNode* ModifierBasic(const opString& name) + { + return AddBasicModifier(name, T_MODIFIER); + } + + protected: + struct ModifierCache + { + ModifierCache() + { + CachedModifier = NULL; + } + + ModifierCache(const ModifierDelegate& delegate) + { + GenerateModifier = delegate; + CachedModifier = NULL; + } + + ModifierDelegate GenerateModifier; + opNode* CachedModifier; + }; + + typedef opMap< opString, ModifierCache > ModifierMap; + ModifierMap ModifierGenerators; + + }; + +} + +namespace interfaces +{ + + template + class ModifierSupport : public Parent, public ModifierSupportBase + { + public: + IMPLEMENTS_INTERFACE(ModifierSupport); + + void Init() + { + InitModifierSupport(); + } + + // looks at auto and specified modifiers + virtual bool HasModifier(const opString& modifiername); + + // only looks at special modifiers + virtual bool HasModifier(Token modifiertoken); + + virtual opNode* GetVisibility(const opString& name) + { + return NULL; + } + + // calls to GetValuedModifier will look at current modifiers, but also + // attempt to fetch automatically generated modifiers + virtual ValuedModifierNode* GetValuedModifier(const opString& modifiername); + + opNode* FetchModifier(const opString& name) + { + return ModifierSupportBase::FetchModifier(name); + } + + void FetchAllModifiers() + { + return ModifierSupportBase::FetchAllModifiers(); + } + + protected: + void CreateModifiersNode(); + }; + + + + + +}//end of namespace interfaces diff --git a/opcplusplus/Inc/Paths.h b/opcplusplus/Inc/Paths.h index 53b8f12..efcb1eb 100644 --- a/opcplusplus/Inc/Paths.h +++ b/opcplusplus/Inc/Paths.h @@ -14,7 +14,10 @@ /// ///**************************************************************** -using namespace boost::filesystem; +#pragma once + +//using namespace boost::filesystem; +using namespace filesystem; inline bool paths_match(const path& a, const path& b) { @@ -36,7 +39,7 @@ inline bool paths_match(const path& a, const path& b) inline path to_relative_path(path p, path basepath) { - if(p.is_complete()) + if(p.is_absolute()) { //we need to convert this path, since its complete path workingpath = basepath; @@ -91,7 +94,7 @@ inline path to_relative_path(path p, path basepath) inline path to_relative_path(path p) { - return to_relative_path(p,boost::filesystem::initial_path()); + return to_relative_path(p,std::filesystem::current_path()); } diff --git a/opcplusplus/Inc/Platforms.h b/opcplusplus/Inc/Platforms.h index 4e7a36d..cf5d4e8 100644 --- a/opcplusplus/Inc/Platforms.h +++ b/opcplusplus/Inc/Platforms.h @@ -11,6 +11,8 @@ /// Platform-specific stuff. ///**************************************************************** +#include + // // Platform Specific Code Header // @@ -22,7 +24,7 @@ class opPlatform static opString GetOpCppExecutableName(); static opString GetOpCppPath(); static opString GetOpCppDirectory(); - static time_t GetOpCppTimeStamp(); + static std::filesystem::file_time_type GetOpCppTimeStamp(); static void Assertion(); static void Breakpoint(); diff --git a/opcplusplus/Inc/RegexSupport.h b/opcplusplus/Inc/RegexSupport.h index d090d16..4ac128e 100644 --- a/opcplusplus/Inc/RegexSupport.h +++ b/opcplusplus/Inc/RegexSupport.h @@ -15,9 +15,10 @@ //so it doesn't need to be compiled so much //could also accomplish this by adding a static library for it. -#include "../../Lib/boost/boost/xpressive/regex_error.hpp" +//#include "../../Lib/boost/boost/xpressive/regex_error.hpp" +#include -namespace regex +namespace opregex { //may throw boost::xpressive::regex_error bool Match(const opString& matchstring, const opString& pattern); @@ -29,6 +30,20 @@ namespace regex { return Match(matchstring,pattern); } + catch (const std::regex_error& regexerror) + { + // regex error 'mismatched parentheses' in pattern '...' + opString error = "regex error, "; + error += "'"; + error += regexerror.what(); + error += "' in pattern "; + error += "\""; + error += pattern; + error += "\""; + + opError::MessageError(node, error); + } + /* catch(const boost::xpressive::regex_error& regexerror) { // regex error 'mismatched parentheses' in pattern '...' @@ -42,6 +57,7 @@ namespace regex opError::MessageError(node,error); } + */ return false; } diff --git a/opcplusplus/Inc/StatementInlines.h b/opcplusplus/Inc/StatementInlines.h new file mode 100644 index 0000000..ed641fd --- /dev/null +++ b/opcplusplus/Inc/StatementInlines.h @@ -0,0 +1,815 @@ +#include "StatementInterfaces.h" + +#pragma once + +// +// BasicStatementsBase +// + +//is current an unknown statement? transform stuff +template +inline bool BasicStatementsBase::UnknownStatement(stacked& stuff) +{ + if (opNode::IsCurrent(T_SEMICOLON)) + { + stacked statement = opNode::Transform(stuff); + + if (statement->IsEmpty()) + statement->CopyBasics(opNode::CurrentNode()); + + opNode::Erase(T_SEMICOLON); + + UnknownStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + +// +// BasicStatements +// + +//is current an openum statement? transform stuff +template +inline bool interfaces::BasicStatementsBase::OPEnumStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_OPENUM)) + { + stackedcontext statement = opNode::Make(G_OPENUM); + + stacked openum = opNode::Expect(G_OPENUM); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + statement->SetEnum(*openum); + statement->AppendNode(openum); + + OPEnumStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + + +//is current an opclass statement? transform stuff +template +inline bool interfaces::BasicStatementsBase::OPObjectStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_OPOBJECT)) + { + stackedcontext statement = opNode::Make(G_OPOBJECT); + + stacked object = opNode::Expect(G_OPOBJECT); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + statement->SetObject(*object); + statement->AppendNode(object); + + OPObjectStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + + +//is current an opstate statement? transform stuff +template +inline bool interfaces::BasicStatementsBase::StateStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_STATE)) + { + stackedcontext statement = opNode::Make(G_STATE); + + stacked state = opNode::Expect(G_STATE); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + statement->SetState(*state); + statement->AppendNode(state); + + StateStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + +//is current a visibility statement? transform stuff +template +inline bool interfaces::BasicStatementsBase::VisibilityStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_VISIBILITY_LABEL)) + { + //ok, we need to turn this into a visibility statement + //we actually need to error if we had something in this... it should be caught by AllowOnly! + //looks...ok (would rather collapse stuff here) + + stackedcontext visstatement = opNode::Make(G_VISIBILITY_LABEL); + + stacked vislabel = opNode::Expect(G_VISIBILITY_LABEL); + + visstatement->SetLabel(*vislabel); + visstatement->AppendNode(vislabel); + + opNode::CollapseNodeAtCurrent(stuff); + + opNode::InsertNodeAtCurrent(visstatement); + return true; + } + return false; +} + +//is current a function definition? transform stuff +template +inline bool interfaces::BasicStatementsBase::FunctionDefinitionStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_FUNCTION_DEFINITION)) + { + //ok, we need to turn this into a function statement + //how? + stackedcontext statement = opNode::Make(G_FUNCTION_DEFINITION); + + stacked functiondefinition = opNode::Expect(G_FUNCTION_DEFINITION); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + //need to do something w/ this + statement->SetFunctionDefinition(*functiondefinition); + statement->AppendNode(functiondefinition); + + FunctionDefinitionStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + +template +inline bool interfaces::BasicStatementsBase::ConstructorStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_CONSTRUCTOR_DEFINITION)) + { + //ok, we need to turn this into a function statement + //how? + stackedcontext + statement = opNode::Make(G_CONSTRUCTOR_DEFINITION); + + stacked + constructordefinition = opNode::Expect(G_CONSTRUCTOR_DEFINITION); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + //need to do something w/ this + statement->SetConstructorDefinition(*constructordefinition); + statement->AppendNode(constructordefinition); + + ConstructorDefinitionStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + +template +inline bool interfaces::BasicStatementsBase::DestructorStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_DESTRUCTOR_DEFINITION)) + { + //ok, we need to turn this into a function statement + //how? + stackedcontext + statement = opNode::Make(G_DESTRUCTOR_DEFINITION); + + stacked + destructordefinition = opNode::Expect(G_DESTRUCTOR_DEFINITION); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + //need to do something w/ this + statement->SetDestructorDefinition(*destructordefinition); + statement->AppendNode(destructordefinition); + + DestructorDefinitionStatements.push_back(*statement); + opNode::InsertNodeAtCurrent(statement); + return true; + } + return false; +} + +template +inline bool interfaces::BasicStatementsBase::ConditionalPreprocessorStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_POUND_ELIF) + || opNode::IsCurrent(G_POUND_ELSE) + || opNode::IsCurrent(G_POUND_ENDIF) + || opNode::IsCurrent(G_POUND_IF) + || opNode::IsCurrent(G_POUND_IFDEF) + || opNode::IsCurrent(G_POUND_IFNDEF)) + { + Token id = opNode::CurrentNode()->GetId(); + stackedcontext statement = opNode::Make(id); + stacked preprocessor = opNode::Expect(id); + + statement->SetPreprocessor(*preprocessor); + statement->AppendNode(preprocessor); + + if (!stuff->IsEmpty()) + statement->CollapseNode(stuff, statement->GetBegin()); + else + stuff.Delete(); + + opNode::InsertNodeAtCurrent(statement); + + return true; + } + + return false; +} + +template +inline bool interfaces::BasicStatementsBase::CPPConstructStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_CLASS) + || opNode::IsCurrent(G_STRUCT) + || opNode::IsCurrent(G_ENUM) + || opNode::IsCurrent(G_UNION)) + { + Token id = opNode::CurrentNode()->GetId(); + stackedcontext statement = opNode::Make(id); + stacked construct = opNode::Expect(id); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + statement->SetConstruct(*construct); + statement->AppendNode(construct); + + opNode::InsertNodeAtCurrent(statement); + + return true; + } + + return false; +} + +template +inline bool interfaces::BasicStatementsBase::FriendStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_FRIEND)) + { + stacked statement = opNode::Make(G_FRIEND); + stacked thefriend = opNode::Expect(G_FRIEND); + + statement->SetFriend(*thefriend); + statement->AppendNode(thefriend); + + if (!stuff->IsEmpty()) + statement->CollapseNode(stuff, statement->GetBegin()); + else + stuff.Delete(); + + opNode::InsertNodeAtCurrent(statement); + + return true; + } + + return false; +} + +template +inline bool interfaces::BasicStatementsBase::TypedefStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_TYPEDEF)) + { + stackedcontext statement = opNode::Make(G_TYPEDEF); + stacked thetypedef = opNode::Expect(G_TYPEDEF); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + statement->SetTypedef(*thetypedef); + statement->AppendNode(thetypedef); + + opNode::InsertNodeAtCurrent(statement); + + return true; + } + + return false; +} + +template +inline bool interfaces::BasicStatementsBase::TemplateStatement(stacked& stuff) +{ + if (opNode::IsCurrent(G_TEMPLATED)) + { + stackedcontext statement = opNode::Make(G_TEMPLATED); + stacked templated = opNode::Expect(G_TEMPLATED); + + if (!stuff->IsEmpty()) + { + stacked modifiers = opNode::Transform(stuff); + + statement->SetModifiers(*modifiers); + statement->AppendNode(modifiers); + } + else + stuff.Delete(); + + statement->SetTemplated(*templated); + statement->AppendNode(templated); + + opNode::InsertNodeAtCurrent(statement); + + return true; + } + + return false; +} + +// +// BasicStatements +// + +template +inline bool BasicStatements::Parse() +{ + PARSE_START; + { + FindBasicStatements(); + } + PARSE_END; +} + +template +inline bool BasicStatements::PostParse() +{ + POSTPARSE_START; + { + AllowOnlyBasicStatements(); + } + POSTPARSE_END; +} + +// Only allow the following statements in opobjects. +template +inline void BasicStatements::AllowOnlyBasicStatements() +{ + opNode::AllowOnly(G_STATEMENT, + G_OPENUM_STATEMENT, + G_OPOBJECT_STATEMENT, + G_FUNCTION_DEFINITION_STATEMENT, + G_VISIBILITY_STATEMENT, + G_CONSTRUCTOR_DEFINITION_STATEMENT, + G_DESTRUCTOR_DEFINITION_STATEMENT, + G_TYPEDEF_STATEMENT, + G_FRIEND_STATEMENT, + G_PREPROCESSOR_STATEMENT, + G_CPPCONSTRUCT_STATEMENT, + G_CPLUSPLUS, + G_TEMPLATE_STATEMENT); +} + +// Find all statements except preprocessor ones. +template +inline void BasicStatements::FindBasicStatements() +{ + bool bFinished = false; + + while (!bFinished) + { + //if ( TemplateStatement() ) + // continue; + + stacked stuff = PushUntilStatementEnd(); + + bFinished = !(*stuff); + + if (bFinished) + break; + + if (this->FunctionDefinitionStatement(stuff)); + else if (this->VisibilityStatement(stuff)); + else if (this->OPObjectStatement(stuff)); + else if (this->OPEnumStatement(stuff)); + else if (this->ConstructorStatement(stuff)); + else if (this->DestructorStatement(stuff)); + else if (this->TemplateStatement(stuff)); + else if (this->TypedefStatement(stuff)); + else if (this->FriendStatement(stuff)); + else if (this->CPPConstructStatement(stuff)); + else if (this->ConditionalPreprocessorStatement(stuff)); + else if (this->UnknownStatement(stuff)); + else + { + opNode::CollapseNodeAtCurrent(stuff); + + //I think this function should never error. + bFinished = true; + } + } +} + + +// +// BasicStateStatements +// + +template +void interfaces::BasicStateStatements::FindStateStatements() +{ + //for now we only look for function definitions + //later we can add a new statement type (G_STATEMENT_FUNCTIONSONLY) + bool bfinished = false; + while (!bfinished) + { + stacked stuff = opNode::PushUntilOr(G_FUNCTION_DEFINITION, + G_STATE, + T_SEMICOLON, + false); + + bfinished = !(*stuff); + if (bfinished) + break; + + //handle null statements... + if (opNode::IsCurrent(T_SEMICOLON)) + { + opNode::Erase(T_SEMICOLON); + + opNode::CollapseNodeAtCurrent(stuff); + } + else if (this->FunctionDefinitionStatement(stuff)); + else if (this->StateStatement(stuff)); + else + { + opNode::CollapseNodeAtCurrent(stuff); + + //I think this function should never error. + bfinished = true; + } + } +} + +template +inline void BasicStateStatements::AllowOnlyStateStatements() +{ + opNode::AllowOnly(G_FUNCTION_DEFINITION_STATEMENT, + G_STATE_STATEMENT); +} + +// +// UsingStatements +// + +template +inline bool interfaces::UsingStatements::Parse() +{ + PARSE_START; + { + FindUsingStatements(); + } + PARSE_END; +} + +template +inline bool UsingStatements::FindUsingStatements() +{ + INSPECT_START(G_USING_STATEMENT); + { + if (opNode::PeekStart(G_USING)) + { + stacked newNode = opNode::PushUntilEnd(); + + this->SetInnerStatement(*newNode); + opNode::AppendNode(newNode); + } + } + INSPECT_END; +} + +// +// NullStatements +// + + +template +inline bool interfaces::NullStatements::Parse() +{ + PARSE_START; + { + FindNullStatements(); + } + PARSE_END; +} + +template +inline bool NullStatements::FindNullStatements() +{ + INSPECT_START(G_NULL_STATEMENT); + { + if (opNode::IsEmpty()) + { + stacked newNode = NEWNODE(NullStatementNode()); + + newNode->CopyBasics(this); + + this->SetInnerStatement(*newNode); + opNode::AppendNode(newNode); + + return true; + } + } + INSPECT_END; +} + +// +// FunctionPointerStatements +// + + +template +inline bool interfaces::FuncPointerStatements::Parse() +{ + PARSE_START; + { + FindFuncPointerStatements(); + } + PARSE_END; +} + +template +inline bool FuncPointerStatements::FindFuncPointerStatements() +{ + INSPECT_START(G_FUNCTION_POINTER_STATEMENT); + { + if (opNode::PeekEnd(G_FUNCTION_POINTER)) + { + stackedcontext newNode = NEWNODE(FuncPointerStatementNode()); + newNode->CopyBasics(this); + + stacked modifiers = opNode::PushUntil(G_FUNCTION_POINTER); + stacked fpn = opNode::Expect(G_FUNCTION_POINTER); + + if (!modifiers->IsEmpty()) + { + modifiers->CopyBasics(*fpn); + newNode->SetModifiers(*modifiers); + newNode->AppendNode(modifiers); + } + else + modifiers.Delete(); + + newNode->SetFunctionPointer(*fpn); + newNode->AppendNode(fpn); + + this->SetInnerStatement(*newNode); + opNode::AppendNode(newNode); + + return true; + } + } + INSPECT_END; +} + +// +// Function Prototype Statements +// + +template +inline bool interfaces::FuncPrototypeStatements::Parse() +{ + PARSE_START; + { + FindFuncPrototypeStatements(); + } + PARSE_END; +} + +template +inline bool FuncPrototypeStatements::FindFuncPrototypeStatements() +{ + INSPECT_START(G_FUNCTION_PROTOTYPE_STATEMENT); + { + if (opNode::PeekEnd(G_FUNCTION_PROTOTYPE)) + { + stackedcontext newNode = NEWNODE(FuncPrototypeStatementNode()); + newNode->CopyBasics(this); + + stacked modifiers = opNode::PushUntil(G_FUNCTION_PROTOTYPE); + stacked fpn = opNode::Expect(G_FUNCTION_PROTOTYPE); + + if (!modifiers->IsEmpty()) + { + modifiers->CopyBasics(*fpn); + newNode->SetModifiers(*modifiers); + newNode->AppendNode(modifiers); + } + else + modifiers.Delete(); + + newNode->SetFunctionPrototype(*fpn); + newNode->AppendNode(fpn); + + this->SetInnerStatement(*newNode); + opNode::AppendNode(newNode); + + return true; + } + } + INSPECT_END; +} + +// +// ConstructorPrototypeStatements +// + +template +inline bool ConstructorPrototypeStatements::FindConstructorPrototypeStatements() +{ + INSPECT_START(G_CONSTRUCTOR_PROTOTYPE_STATEMENT); + { + if (opNode::PeekEnd(G_CONSTRUCTOR_PROTOTYPE)) + { + stackedcontext newNode = NEWNODE(ConstructorPrototypeStatementNode()); + + newNode->CopyBasics(this); + + stacked modifiers = opNode::PushUntil(G_CONSTRUCTOR_PROTOTYPE); + stacked cpn = opNode::Expect(G_CONSTRUCTOR_PROTOTYPE); + + if (!modifiers->IsEmpty()) + { + modifiers->CopyBasics(*cpn); + newNode->SetModifiers(*modifiers); + newNode->AppendNode(modifiers); + } + else + modifiers.Delete(); + + newNode->SetConstructorPrototype(*cpn); + newNode->AppendNode(cpn); + + this->SetInnerStatement(*newNode); + opNode::AppendNode(newNode); + + return true; + } + } + INSPECT_END; +} + +// +// DestructorPrototypeStatements +// + +template +inline bool DestructorPrototypeStatements::FindDestructorPrototypeStatements() +{ + INSPECT_START(G_DESTRUCTOR_PROTOTYPE_STATEMENT); + { + if (opNode::PeekEnd(G_DESTRUCTOR_PROTOTYPE)) + { + stackedcontext newNode = NEWNODE(DestructorPrototypeStatementNode()); + + newNode->CopyBasics(this); + + stacked modifiers = opNode::PushUntil(G_DESTRUCTOR_PROTOTYPE); + stacked cpn = opNode::Expect(G_DESTRUCTOR_PROTOTYPE); + + if (!modifiers->IsEmpty()) + { + modifiers->CopyBasics(*cpn); + newNode->SetModifiers(*modifiers); + newNode->AppendNode(modifiers); + } + else + modifiers.Delete(); + + newNode->SetDestructorPrototype(*cpn); + newNode->AppendNode(cpn); + + this->SetInnerStatement(*newNode); + opNode::AppendNode(newNode); + + return true; + } + } + INSPECT_END; +} + +// +// DataStatementOnly +// + +template +inline bool DataStatementOnly::Parse() +{ + PARSE_START; + { + if (!this->FindDataStatementOnly()) + { + opError::MessageError(this, "Unnamed data declarations not allowed."); + //GenericError("unnamed data declarations not allowed"); + } + } + PARSE_END; +} + +// +// ConditionalPreprocessorStatements +// + + +template +template +inline void ConditionalPreprocessorStatements::FindConditionalPreprocessorStatement() +{ + LOOP_START(G_PREPROCESSOR_STATEMENT); + { + HIT(hittoken) + { + stackedcontext newNode = opNode::Make(hittoken); + + stacked preprocessor = opNode::Expect(hittoken); + + newNode->SetPreprocessor(*preprocessor); + newNode->AppendNode(preprocessor); + + opNode::InsertNodeAtCurrent(newNode); + } + } + LOOP_END; +} + +// +// ConditionalPreprocessorStatements +// + +template +inline bool ConditionalPreprocessorStatements::Parse() +{ + PARSE_START; + { + FindConditionalPreprocessorStatements(); + } + PARSE_END; +} \ No newline at end of file diff --git a/opcplusplus/Inc/StatementInterfaces.h b/opcplusplus/Inc/StatementInterfaces.h index dd700b1..67135f0 100644 --- a/opcplusplus/Inc/StatementInterfaces.h +++ b/opcplusplus/Inc/StatementInterfaces.h @@ -10,6 +10,8 @@ /// ///**************************************************************** +#pragma once + namespace interfaces { @@ -28,23 +30,7 @@ class BasicStatementsBase : public Parent ///========================================== //is current an unknown statement? transform stuff - bool UnknownStatement(stacked& stuff) - { - if(IsCurrent(T_SEMICOLON)) - { - stacked statement = opNode::Transform(stuff); - - if(statement->IsEmpty()) - statement->CopyBasics(CurrentNode()); - - Erase(T_SEMICOLON); - - UnknownStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool UnknownStatement(stacked& stuff); //list of all unknown statements gathered vector UnknownStatements; @@ -54,32 +40,7 @@ class BasicStatementsBase : public Parent ///========================================== //is current an openum statement? transform stuff - bool OPEnumStatement(stacked& stuff) - { - if(IsCurrent(G_OPENUM)) - { - stackedcontext statement = opNode::Make(G_OPENUM); - - stacked openum = opNode::Expect(G_OPENUM); - - if(!stuff->IsEmpty()) - { - stacked modifiers = opNode::Transform(stuff); - statement->SetModifiers(*modifiers); - statement->AppendNode(modifiers); - } - else - stuff.Delete(); - - statement->SetEnum(*openum); - statement->AppendNode(openum); - - OPEnumStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool OPEnumStatement(stacked& stuff); //list of openum statements gathered vector OPEnumStatements; @@ -89,32 +50,7 @@ class BasicStatementsBase : public Parent ///========================================== //is current an opclass statement? transform stuff - bool OPObjectStatement(stacked& stuff) - { - if(IsCurrent(G_OPOBJECT)) - { - stackedcontext statement = opNode::Make(G_OPOBJECT); - - stacked object = opNode::Expect(G_OPOBJECT); - - if(!stuff->IsEmpty()) - { - stacked modifiers = opNode::Transform(stuff); - statement->SetModifiers(*modifiers); - statement->AppendNode(modifiers); - } - else - stuff.Delete(); - - statement->SetObject(*object); - statement->AppendNode(object); - - OPObjectStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool OPObjectStatement(stacked& stuff); //list of opobject statements gathered vector OPObjectStatements; @@ -124,32 +60,7 @@ class BasicStatementsBase : public Parent ///========================================== //is current an opstate statement? transform stuff - bool StateStatement(stacked& stuff) - { - if(IsCurrent(G_STATE)) - { - stackedcontext statement = opNode::Make(G_STATE); - - stacked state = opNode::Expect(G_STATE); - - if(!stuff->IsEmpty()) - { - stacked modifiers = opNode::Transform(stuff); - statement->SetModifiers(*modifiers); - statement->AppendNode(modifiers); - } - else - stuff.Delete(); - - statement->SetState(*state); - statement->AppendNode(state); - - StateStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool StateStatement(stacked& stuff); //list of state statements gathered vector StateStatements; @@ -159,28 +70,7 @@ class BasicStatementsBase : public Parent ///========================================== //is current a visibility statement? transform stuff - bool VisibilityStatement(stacked& stuff) - { - if(IsCurrent(G_VISIBILITY_LABEL)) - { - //ok, we need to turn this into a visibility statement - //we actually need to error if we had something in this... it should be caught by AllowOnly! - //looks...ok (would rather collapse stuff here) - - stackedcontext visstatement = opNode::Make(G_VISIBILITY_LABEL); - - stacked vislabel = opNode::Expect(G_VISIBILITY_LABEL); - - visstatement->SetLabel(*vislabel); - visstatement->AppendNode(vislabel); - - CollapseNodeAtCurrent(stuff); - - InsertNodeAtCurrent(visstatement); - return true; - } - return false; - } + bool VisibilityStatement(stacked& stuff); //we don't gather a list of visibility statements since they're order dependent @@ -189,35 +79,7 @@ class BasicStatementsBase : public Parent ///========================================== //is current a function definition? transform stuff - bool FunctionDefinitionStatement(stacked& stuff) - { - if(IsCurrent(G_FUNCTION_DEFINITION)) - { - //ok, we need to turn this into a function statement - //how? - stackedcontext statement = opNode::Make(G_FUNCTION_DEFINITION); - - stacked functiondefinition = opNode::Expect(G_FUNCTION_DEFINITION); - - if(!stuff->IsEmpty()) - { - stacked modifiers = opNode::Transform(stuff); - statement->SetModifiers(*modifiers); - statement->AppendNode(modifiers); - } - else - stuff.Delete(); - - //need to do something w/ this - statement->SetFunctionDefinition(*functiondefinition); - statement->AppendNode(functiondefinition); - - FunctionDefinitionStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool FunctionDefinitionStatement(stacked& stuff); //list of function definition statements gathered (not function prototypes!) vector FunctionDefinitionStatements; @@ -226,37 +88,7 @@ class BasicStatementsBase : public Parent /// ConstructorStatement ///========================================== - bool ConstructorStatement(stacked& stuff) - { - if(IsCurrent(G_CONSTRUCTOR_DEFINITION)) - { - //ok, we need to turn this into a function statement - //how? - stackedcontext - statement = opNode::Make(G_CONSTRUCTOR_DEFINITION); - - stacked - constructordefinition = opNode::Expect(G_CONSTRUCTOR_DEFINITION); - - if(!stuff->IsEmpty()) - { - stacked modifiers = opNode::Transform(stuff); - statement->SetModifiers(*modifiers); - statement->AppendNode(modifiers); - } - else - stuff.Delete(); - - //need to do something w/ this - statement->SetConstructorDefinition(*constructordefinition); - statement->AppendNode(constructordefinition); - - ConstructorDefinitionStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool ConstructorStatement(stacked& stuff); //list of constructor definition statements gathered (not prototypes) vector ConstructorDefinitionStatements; @@ -265,37 +97,7 @@ class BasicStatementsBase : public Parent /// DestructorStatement ///========================================== - bool DestructorStatement(stacked& stuff) - { - if(IsCurrent(G_DESTRUCTOR_DEFINITION)) - { - //ok, we need to turn this into a function statement - //how? - stackedcontext - statement = opNode::Make(G_DESTRUCTOR_DEFINITION); - - stacked - destructordefinition = opNode::Expect(G_DESTRUCTOR_DEFINITION); - - if(!stuff->IsEmpty()) - { - stacked modifiers = opNode::Transform(stuff); - statement->SetModifiers(*modifiers); - statement->AppendNode(modifiers); - } - else - stuff.Delete(); - - //need to do something w/ this - statement->SetDestructorDefinition(*destructordefinition); - statement->AppendNode(destructordefinition); - - DestructorDefinitionStatements.push_back(*statement); - InsertNodeAtCurrent(statement); - return true; - } - return false; - } + bool DestructorStatement(stacked& stuff); //list of constructor definition statements gathered (not prototypes) vector DestructorDefinitionStatements; @@ -304,159 +106,31 @@ class BasicStatementsBase : public Parent /// PreprocessorStatement ///========================================== - bool ConditionalPreprocessorStatement(stacked& stuff) - { - if (IsCurrent(G_POUND_ELIF) - || IsCurrent(G_POUND_ELSE) - || IsCurrent(G_POUND_ENDIF) - || IsCurrent(G_POUND_IF) - || IsCurrent(G_POUND_IFDEF) - || IsCurrent(G_POUND_IFNDEF)) - { - Token id = CurrentNode()->GetId(); - stackedcontext statement = opNode::Make(id); - stacked preprocessor = opNode::Expect(id); - - statement->SetPreprocessor(*preprocessor); - statement->AppendNode(preprocessor); - - if (!stuff->IsEmpty()) - statement->CollapseNode(stuff, statement->GetBegin()); - else - stuff.Delete(); - - InsertNodeAtCurrent(statement); - - return true; - } - - return false; - } + bool ConditionalPreprocessorStatement(stacked& stuff); ///========================================== /// CPPConstructStatement ///========================================== - bool CPPConstructStatement(stacked& stuff) - { - if (IsCurrent(G_CLASS) - || IsCurrent(G_STRUCT) - || IsCurrent(G_ENUM) - || IsCurrent(G_UNION)) - { - Token id = CurrentNode()->GetId(); - stackedcontext statement = opNode::Make(id); - stacked construct = opNode::Expect(id); - - if ( !stuff->IsEmpty() ) - { - stacked modifiers = opNode::Transform( stuff ); - statement->SetModifiers( *modifiers ); - statement->AppendNode( modifiers ); - } - else - stuff.Delete(); - - statement->SetConstruct(*construct); - statement->AppendNode(construct); - - InsertNodeAtCurrent(statement); - - return true; - } - - return false; - } + bool CPPConstructStatement(stacked& stuff); //========================================== // FriendStatements //========================================== - bool FriendStatement(stacked& stuff) - { - if ( IsCurrent( G_FRIEND ) ) - { - stacked statement = opNode::Make( G_FRIEND ); - stacked thefriend = opNode::Expect( G_FRIEND ); - - statement->SetFriend( *thefriend ); - statement->AppendNode( thefriend ); - - if (!stuff->IsEmpty()) - statement->CollapseNode(stuff, statement->GetBegin()); - else - stuff.Delete(); - - InsertNodeAtCurrent(statement); - - return true; - } - - return false; - } + bool FriendStatement(stacked& stuff); //========================================== // TypedefStatements //========================================== - bool TypedefStatement(stacked& stuff) - { - if ( IsCurrent( G_TYPEDEF ) ) - { - stackedcontext statement = opNode::Make( G_TYPEDEF ); - stacked thetypedef = opNode::Expect( G_TYPEDEF ); - - if ( !stuff->IsEmpty() ) - { - stacked modifiers = opNode::Transform( stuff ); - statement->SetModifiers( *modifiers ); - statement->AppendNode( modifiers ); - } - else - stuff.Delete(); - - statement->SetTypedef( *thetypedef ); - statement->AppendNode( thetypedef ); - - InsertNodeAtCurrent( statement ); - - return true; - } - - return false; - } + bool TypedefStatement(stacked& stuff); ///========================================== /// TemplateStatements ///========================================== - bool TemplateStatement(stacked& stuff) - { - if ( IsCurrent(G_TEMPLATED) ) - { - stackedcontext statement = opNode::Make(G_TEMPLATED); - stacked templated = opNode::Expect(G_TEMPLATED); - - if ( !stuff->IsEmpty() ) - { - stacked modifiers = opNode::Transform( stuff ); - - statement->SetModifiers( *modifiers ); - statement->AppendNode( modifiers ); - } - else - stuff.Delete(); - - statement->SetTemplated( *templated ); - statement->AppendNode( templated ); - - InsertNodeAtCurrent(statement); - - return true; - } - - return false; - } + bool TemplateStatement(stacked& stuff); }; /// @@ -473,41 +147,12 @@ class BasicStatements : public BasicStatementsBase REQUIRES_INTERFACE(OPObjects) REQUIRES_INTERFACE(OPEnums) - bool Parse() - { - PARSE_START; - { - FindBasicStatements(); - } - PARSE_END; - } + bool Parse(); - bool PostParse() - { - POSTPARSE_START; - { - AllowOnlyBasicStatements(); - } - POSTPARSE_END; - } + bool PostParse(); // Only allow the following statements in opobjects. - void AllowOnlyBasicStatements() - { - AllowOnly(G_STATEMENT, - G_OPENUM_STATEMENT, - G_OPOBJECT_STATEMENT, - G_FUNCTION_DEFINITION_STATEMENT, - G_VISIBILITY_STATEMENT, - G_CONSTRUCTOR_DEFINITION_STATEMENT, - G_DESTRUCTOR_DEFINITION_STATEMENT, - G_TYPEDEF_STATEMENT, - G_FRIEND_STATEMENT, - G_PREPROCESSOR_STATEMENT, - G_CPPCONSTRUCT_STATEMENT, - G_CPLUSPLUS, - G_TEMPLATE_STATEMENT); - } + void AllowOnlyBasicStatements(); stacked PushUntilStatementEnd() { @@ -535,43 +180,7 @@ class BasicStatements : public BasicStatementsBase } // Find all statements except preprocessor ones. - void FindBasicStatements() - { - bool bFinished = false; - - while(!bFinished) - { - //if ( TemplateStatement() ) - // continue; - - stacked stuff = PushUntilStatementEnd(); - - bFinished = !(*stuff); - - if (bFinished) - break; - - if (FunctionDefinitionStatement(stuff)); - else if (VisibilityStatement(stuff)); - else if (OPObjectStatement(stuff)); - else if (OPEnumStatement(stuff)); - else if (ConstructorStatement(stuff)); - else if (DestructorStatement(stuff)); - else if (TemplateStatement(stuff)); - else if (TypedefStatement(stuff)); - else if (FriendStatement(stuff)); - else if (CPPConstructStatement(stuff)); - else if (ConditionalPreprocessorStatement(stuff)); - else if (UnknownStatement(stuff)); - else - { - CollapseNodeAtCurrent(stuff); - - //I think this function should never error. - bFinished = true; - } - } - } + void FindBasicStatements(); }; /// @@ -590,48 +199,12 @@ class BasicStateStatements : public BasicStatementsBase //TODO: split up the utility function interface // so we don't have all these extra gathering vectors. - void FindStateStatements() - { - //for now we only look for function definitions - //later we can add a new statement type (G_STATEMENT_FUNCTIONSONLY) - bool bfinished = false; - while(!bfinished) - { - stacked stuff = opNode::PushUntilOr(G_FUNCTION_DEFINITION, - G_STATE, - T_SEMICOLON, - false); - - bfinished = !(*stuff); - if(bfinished) - break; - - //handle null statements... - if(IsCurrent(T_SEMICOLON)) - { - Erase(T_SEMICOLON); - - CollapseNodeAtCurrent(stuff); - } - else if (FunctionDefinitionStatement(stuff)); - else if (StateStatement(stuff)); - else - { - CollapseNodeAtCurrent(stuff); - - //I think this function should never error. - bfinished = true; - } - } - } + void FindStateStatements(); - void AllowOnlyStateStatements() - { - AllowOnly(G_FUNCTION_DEFINITION_STATEMENT, - G_STATE_STATEMENT); - } + void AllowOnlyStateStatements(); }; + /// /// FriendStatements /// @@ -677,29 +250,9 @@ class UsingStatements : public Parent public: IMPLEMENTS_INTERFACE(UsingStatements) - bool Parse() - { - PARSE_START; - { - FindUsingStatements(); - } - PARSE_END; - } + bool Parse(); - bool FindUsingStatements() - { - INSPECT_START(G_USING_STATEMENT); - { - if (PeekStart(G_USING)) - { - stacked newNode = opNode::PushUntilEnd(); - - SetInnerStatement(*newNode); - AppendNode(newNode); - } - } - INSPECT_END; - } + bool FindUsingStatements(); }; /// @@ -712,33 +265,9 @@ class NullStatements : public Parent public: IMPLEMENTS_INTERFACE(NullStatements) - bool Parse() - { - PARSE_START; - { - FindNullStatements(); - } - PARSE_END; - } + bool Parse(); - bool FindNullStatements() - { - INSPECT_START(G_NULL_STATEMENT); - { - if (IsEmpty()) - { - stacked newNode = NEWNODE(NullStatementNode()); - - newNode->CopyBasics(this); - - SetInnerStatement(*newNode); - AppendNode(newNode); - - return true; - } - } - INSPECT_END; - } + bool FindNullStatements(); }; /// @@ -787,47 +316,9 @@ class FuncPointerStatements : public Parent public: IMPLEMENTS_INTERFACE(FuncPointerStatements) - bool Parse() - { - PARSE_START; - { - FindFuncPointerStatements(); - } - PARSE_END; - } + bool Parse(); - bool FindFuncPointerStatements() - { - INSPECT_START(G_FUNCTION_POINTER_STATEMENT); - { - if (PeekEnd(G_FUNCTION_POINTER)) - { - stackedcontext newNode = NEWNODE(FuncPointerStatementNode()); - newNode->CopyBasics(this); - - stacked modifiers = opNode::PushUntil(G_FUNCTION_POINTER); - stacked fpn = opNode::Expect(G_FUNCTION_POINTER); - - if (!modifiers->IsEmpty()) - { - modifiers->CopyBasics(*fpn); - newNode->SetModifiers(*modifiers); - newNode->AppendNode(modifiers); - } - else - modifiers.Delete(); - - newNode->SetFunctionPointer(*fpn); - newNode->AppendNode(fpn); - - SetInnerStatement(*newNode); - AppendNode(newNode); - - return true; - } - } - INSPECT_END; - } + bool FindFuncPointerStatements(); }; /// @@ -840,47 +331,9 @@ class FuncPrototypeStatements : public Parent public: IMPLEMENTS_INTERFACE(FuncPrototypeStatements) - bool Parse() - { - PARSE_START; - { - FindFuncPrototypeStatements(); - } - PARSE_END; - } + bool Parse(); - bool FindFuncPrototypeStatements() - { - INSPECT_START(G_FUNCTION_PROTOTYPE_STATEMENT); - { - if (PeekEnd(G_FUNCTION_PROTOTYPE)) - { - stackedcontext newNode = NEWNODE(FuncPrototypeStatementNode()); - newNode->CopyBasics(this); - - stacked modifiers = opNode::PushUntil(G_FUNCTION_PROTOTYPE); - stacked fpn = opNode::Expect(G_FUNCTION_PROTOTYPE); - - if (!modifiers->IsEmpty()) - { - modifiers->CopyBasics(*fpn); - newNode->SetModifiers(*modifiers); - newNode->AppendNode(modifiers); - } - else - modifiers.Delete(); - - newNode->SetFunctionPrototype(*fpn); - newNode->AppendNode(fpn); - - SetInnerStatement(*newNode); - AppendNode(newNode); - - return true; - } - } - INSPECT_END; - } + bool FindFuncPrototypeStatements(); }; /// @@ -893,39 +346,7 @@ class ConstructorPrototypeStatements : public Parent public: IMPLEMENTS_INTERFACE(ConstructorPrototypeStatements) - bool FindConstructorPrototypeStatements() - { - INSPECT_START(G_CONSTRUCTOR_PROTOTYPE_STATEMENT); - { - if (PeekEnd(G_CONSTRUCTOR_PROTOTYPE)) - { - stackedcontext newNode = NEWNODE(ConstructorPrototypeStatementNode()); - - newNode->CopyBasics(this); - - stacked modifiers = opNode::PushUntil(G_CONSTRUCTOR_PROTOTYPE); - stacked cpn = opNode::Expect(G_CONSTRUCTOR_PROTOTYPE); - - if (!modifiers->IsEmpty()) - { - modifiers->CopyBasics(*cpn); - newNode->SetModifiers(*modifiers); - newNode->AppendNode(modifiers); - } - else - modifiers.Delete(); - - newNode->SetConstructorPrototype(*cpn); - newNode->AppendNode(cpn); - - SetInnerStatement(*newNode); - AppendNode(newNode); - - return true; - } - } - INSPECT_END; - } + bool FindConstructorPrototypeStatements(); }; /// @@ -938,39 +359,7 @@ class DestructorPrototypeStatements : public Parent public: IMPLEMENTS_INTERFACE(DestructorPrototypeStatements) - bool FindDestructorPrototypeStatements() - { - INSPECT_START(G_DESTRUCTOR_PROTOTYPE_STATEMENT); - { - if (PeekEnd(G_DESTRUCTOR_PROTOTYPE)) - { - stackedcontext newNode = NEWNODE(DestructorPrototypeStatementNode()); - - newNode->CopyBasics(this); - - stacked modifiers = opNode::PushUntil(G_DESTRUCTOR_PROTOTYPE); - stacked cpn = opNode::Expect(G_DESTRUCTOR_PROTOTYPE); - - if (!modifiers->IsEmpty()) - { - modifiers->CopyBasics(*cpn); - newNode->SetModifiers(*modifiers); - newNode->AppendNode(modifiers); - } - else - modifiers.Delete(); - - newNode->SetDestructorPrototype(*cpn); - newNode->AppendNode(cpn); - - SetInnerStatement(*newNode); - AppendNode(newNode); - - return true; - } - } - INSPECT_END; - } + bool FindDestructorPrototypeStatements(); }; /// @@ -1023,51 +412,26 @@ class DestructorPrototypeStatements : public Parent /// DataStatements /// -template +template class DataStatements : public Parent { public: IMPLEMENTS_INTERFACE(DataStatements) - bool Parse() - { - PARSE_START; - { - FindDataStatements(); - } - PARSE_END; - } + bool Parse(); - bool FindDataStatements() - { - INSPECT_START(G_DATA_STATEMENT); - { - FindDataStatementOnly(); - } - INSPECT_END; - } + bool FindDataStatements(); bool FindDataStatementOnly(); }; -template +template class DataStatementOnly : public DataStatements { public: IMPLEMENTS_INTERFACE(DataStatementOnly) - bool Parse() - { - PARSE_START; - { - if(!FindDataStatementOnly()) - { - opError::MessageError(this,"Unnamed data declarations not allowed."); - //GenericError("unnamed data declarations not allowed"); - } - } - PARSE_END; - } + bool Parse(); }; ///========================================== @@ -1080,14 +444,7 @@ class ConditionalPreprocessorStatements : public Parent public: IMPLEMENTS_INTERFACE(ConditionalPreprocessorStatements) - bool Parse() - { - PARSE_START; - { - FindConditionalPreprocessorStatements(); - } - PARSE_END; - } + bool Parse(); void FindConditionalPreprocessorStatements() { @@ -1100,25 +457,20 @@ class ConditionalPreprocessorStatements : public Parent } template - void FindConditionalPreprocessorStatement() - { - LOOP_START(G_PREPROCESSOR_STATEMENT); - { - HIT(hittoken) - { - stackedcontext newNode = opNode::Make(hittoken); + void FindConditionalPreprocessorStatement(); +}; + + + + + + + + + - stacked preprocessor = opNode::Expect(hittoken); - newNode->SetPreprocessor(*preprocessor); - newNode->AppendNode(preprocessor); - InsertNodeAtCurrent(newNode); - } - } - LOOP_END; - } -}; } // end namespace interfaces diff --git a/opcplusplus/Inc/StatementNodes.h b/opcplusplus/Inc/StatementNodes.h index 04a49f4..69c3fb0 100644 --- a/opcplusplus/Inc/StatementNodes.h +++ b/opcplusplus/Inc/StatementNodes.h @@ -10,6 +10,13 @@ /// ///**************************************************************** +#pragma once + +#include "opNode.h" +#include "ModifierNodes.h" +#include "ExtensionNodes.h" +#include "ModifierSupport.h" + namespace nodes { @@ -29,7 +36,7 @@ class StatementBase : public ConditionalSupport< opNode > DECLARE_NODE(StatementBase,ConditionalSupport< opNode >,T_UNKNOWN); //ToStatementBase conversion - virtual StatementBase* ToStatementBase() { return this; } + virtual StatementBase* ToStatementBase() override { return this; } virtual class VisibilityStatementNode* ToVisibilityStatementNode() { return NULL; } VisibilityMode GetVisibilityMode() @@ -139,6 +146,14 @@ class StatementModifierlessBase : public StatementBase void FetchAllModifiers() {} }; + + + +} // end of namespace nodes + +namespace nodes +{ + typedef ModifierSupport< StatementBase > StatementModifierBaseParent; class StatementModifierBase : public StatementModifierBaseParent diff --git a/opcplusplus/Inc/Stream.h b/opcplusplus/Inc/Stream.h index a8c6921..4f2fd6d 100644 --- a/opcplusplus/Inc/Stream.h +++ b/opcplusplus/Inc/Stream.h @@ -452,11 +452,8 @@ class opXmlStream //default pipes to heading template - friend opXmlStream& operator << (opXmlStream& stream, const T& input) - { - stream.stream << input; - return stream; - } + friend opXmlStream& operator << (opXmlStream& stream, const T& input); + void StartTag(const opString& tag) { @@ -511,6 +508,13 @@ class opXmlStream ostream& stream; }; +template +opXmlStream& operator<< (opXmlStream& stream, const T& input) +{ + stream.stream << input; + return stream; +} + template<> opXmlStream& operator << (opXmlStream& stream, const endlinestruct& input) { diff --git a/opcplusplus/Inc/Timer.h b/opcplusplus/Inc/Timer.h index d8eb55d..6fe0d9b 100644 --- a/opcplusplus/Inc/Timer.h +++ b/opcplusplus/Inc/Timer.h @@ -11,6 +11,8 @@ /// Timer-related code. ///**************************************************************** +#pragma once + //Lucas: Special Timer Code namespace timing diff --git a/opcplusplus/Inc/UtilityInterfaces.h b/opcplusplus/Inc/UtilityInterfaces.h index a44dde0..61229af 100644 --- a/opcplusplus/Inc/UtilityInterfaces.h +++ b/opcplusplus/Inc/UtilityInterfaces.h @@ -11,6 +11,8 @@ /// Utility interfaces. ///**************************************************************** +#pragma once + namespace interfaces { @@ -24,19 +26,12 @@ class RemoveWhitespace : public Parent public: IMPLEMENTS_INTERFACE(RemoveWhitespace) - bool Parse() - { - PARSE_START; - { - removeWhitespace(); - } - PARSE_END; - } + bool Parse(); void removeWhitespace() { - iterator i = GetBegin(); - iterator end = GetEnd(); + iterator i = this->GetBegin(); + iterator end = this->GetEnd(); while (i != end) { @@ -46,7 +41,7 @@ class RemoveWhitespace : public Parent { iterator newi = i; ++i; - DeleteNode(newi); + this->DeleteNode(newi); continue; } @@ -65,19 +60,12 @@ class RemoveComments : public Parent public: IMPLEMENTS_INTERFACE(RemoveComments) - bool Parse() - { - PARSE_START; - { - removeComments(); - } - PARSE_END; - } + bool Parse(); void removeComments() { - iterator i = GetBegin(); - iterator end = GetEnd(); + iterator i = this->GetBegin(); + iterator end = this->GetEnd(); while (i != end) { @@ -87,7 +75,7 @@ class RemoveComments : public Parent { iterator newi = i; ++i; - DeleteNode(newi); + this->DeleteNode(newi); continue; } @@ -107,19 +95,12 @@ class Clean : public RemoveWhitespace< RemoveComments< Parent > > public: IMPLEMENTS_INTERFACE(Clean) - bool Parse() - { - PARSE_START; - { - CleanAll(); - } - PARSE_END; - } + bool Parse(); void CleanAll() { - removeComments(); - removeWhitespace(); + this->removeComments(); + this->removeWhitespace(); } }; @@ -127,59 +108,18 @@ class Clean : public RemoveWhitespace< RemoveComments< Parent > > /// Trim ///========================================== -template +template class Trim : public Parent { public: IMPLEMENTS_INTERFACE(Trim) - bool PreParse() - { - PREPARSE_START; - { - DoTrim(); - } - PREPARSE_END; - } - - bool Parse() - { - PARSE_START; - { - DoTrim(); - } - PARSE_END; - } - - void DoTrim() - { - iterator i = GetBegin(); - iterator end = GetEnd(); - - // Trim the front. - while (i != end - && i->IsWhitespace()) - { - iterator old = i; - ++i; - DeleteNode(old); - } - - if (IsEmpty()) - return; - - // Trim the end. - i = GetBegin(); - end = --GetEnd(); - - while (end != i - && end->IsWhitespace()) - { - iterator old = end; - --end; - DeleteNode(old); - } - } + bool PreParse(); + + bool Parse(); + + void DoTrim(); + }; ///========================================== @@ -200,9 +140,9 @@ class ListUtility : public Parent if(container.size()) return; - ResetPosition(); + this->ResetPosition(); - if (!IsEmpty()) + if (!this->IsEmpty()) { while(1) { @@ -211,9 +151,9 @@ class ListUtility : public Parent if(arg->IsEmpty()) arg->CopyBasics(this); - if(IsCurrent(Delimiter)) + if(this->IsCurrent(Delimiter)) { - Erase(Delimiter); + this->Erase(Delimiter); container.push_back(*arg); } else @@ -228,18 +168,18 @@ class ListUtility : public Parent for (int i = 0; i < size; i++) { stacked tempstacked = stacked::buildstacked(container[i]); - AppendNode(tempstacked); + this->AppendNode(tempstacked); } } - ResetPosition(); + this->ResetPosition(); } // delimiter specific functions template void MakeCommaList(vector& container) { - MakeDelimiterList(container); + this->MakeDelimiterList(container); } }; @@ -251,10 +191,10 @@ class UnInlineSupport : public Parent bool GetInlineMode() { //if inline, then inline - bool binline = HasModifier(T_INLINE); + bool binline = this->HasModifier(T_INLINE); //if uninline, then uninline - bool buninline = HasModifier(T_UNINLINE); + bool buninline = this->HasModifier(T_UNINLINE); //if inline and uninline, then uninline bool doinline = binline && !buninline; @@ -267,5 +207,8 @@ class UnInlineSupport : public Parent } }; + + + } // end namespace interfaces diff --git a/opcplusplus/Inc/Walkers.h b/opcplusplus/Inc/Walkers.h index a1b3d1a..659de18 100644 --- a/opcplusplus/Inc/Walkers.h +++ b/opcplusplus/Inc/Walkers.h @@ -12,6 +12,10 @@ // implement them as visitors. ///**************************************************************** +#pragma once + +#include "MacroInterfaces.h" + namespace walkers { @@ -872,7 +876,7 @@ class NameCheckingWalker else if (TypedefStatementNode* typedefnode = node_cast(node)) name = typedefnode->GetTypedef()->GetName()->GetValue(); - if (name != "" + if (name.GetString() != "" && MemberMatchesCategory(name, node)) { return true; diff --git a/opcplusplus/Inc/fastdelegate/Demo.cpp b/opcplusplus/Inc/fastdelegate/Demo.cpp new file mode 100644 index 0000000..c3dccf7 --- /dev/null +++ b/opcplusplus/Inc/fastdelegate/Demo.cpp @@ -0,0 +1,143 @@ +#include +#include "FastDelegate.h" +// Demonstrate the syntax for FastDelegates. +// -Don Clugston, May 2004. +// It's a really boring example, but it shows the most important cases. + +// Declare some functions of varying complexity... +void SimpleStaticFunction(int num, char *str) { + printf("In SimpleStaticFunction. Num=%d, str = %s\n", num, str); +} + +void SimpleVoidFunction() { + printf("In SimpleVoidFunction with no parameters.\n"); +} + +class CBaseClass { +protected: + char *m_name; +public: + CBaseClass(char *name) : m_name(name) {}; + void SimpleMemberFunction(int num, char *str) { + printf("In SimpleMemberFunction in %s. Num=%d, str = %s\n", m_name, num, str); } + int SimpleMemberFunctionReturnsInt(int num, char *str) { + printf("In SimpleMemberFunction in %s. Num=%d, str = %s\n", m_name, num, str); return -1; } + void ConstMemberFunction(int num, char *str) const { + printf("In ConstMemberFunction in %s. Num=%d, str = %s\n", m_name, num, str); } + virtual void SimpleVirtualFunction(int num, char *str) { + printf("In SimpleVirtualFunction in %s. Num=%d, str = %s\n", m_name, num, str); } + static void StaticMemberFunction(int num, char *str) { + printf("In StaticMemberFunction. Num=%d, str =%s\n", num, str); } +}; + +class COtherClass { + double rubbish; // to ensure this class has non-zero size. +public: + virtual void UnusedVirtualFunction(void) { } + virtual void TrickyVirtualFunction(int num, char *str)=0; +}; + +class VeryBigClass { + int letsMakeThingsComplicated[400]; +}; + +// This declaration ensures that we get a convoluted class heirarchy. +class CDerivedClass : public VeryBigClass, virtual public COtherClass, virtual public CBaseClass +{ + double m_somemember[8]; +public: + CDerivedClass() : CBaseClass("Base of Derived") { m_somemember[0]=1.2345; } + void SimpleDerivedFunction(int num, char *str) { printf("In SimpleDerived. num=%d\n", num); } + virtual void AnotherUnusedVirtualFunction(int num, char *str) {} + virtual void TrickyVirtualFunction(int num, char *str) { + printf("In Derived TrickyMemberFunction. Num=%d, str = %s\n", num, str); + } +}; + +using namespace fastdelegate; + +int main(void) +{ + // Delegates with up to 8 parameters are supported. + // Here's the case for a void function. + // We declare a delegate and attach it to SimpleVoidFunction() + printf("-- FastDelegate demo --\nA no-parameter delegate is declared using FastDelegate0\n\n"); + + FastDelegate0<> noparameterdelegate(&SimpleVoidFunction); + + noparameterdelegate(); // invoke the delegate - this calls SimpleVoidFunction() + + printf("\n-- Examples using two-parameter delegates (int, char *) --\n\n"); + + // By default, the return value is void. + typedef FastDelegate2 MyDelegate; + + // If you want to have a non-void return value, put it at the end. + typedef FastDelegate2 IntMyDelegate; + + + MyDelegate funclist[12]; // delegates are initialized to empty + CBaseClass a("Base A"); + CBaseClass b("Base B"); + CDerivedClass d; + CDerivedClass c; + + IntMyDelegate newdeleg; + newdeleg = MakeDelegate(&a, &CBaseClass::SimpleMemberFunctionReturnsInt); + + // Binding a simple member function + funclist[0].bind(&a, &CBaseClass::SimpleMemberFunction); + + // You can also bind static (free) functions + funclist[1].bind(&SimpleStaticFunction); + // and static member functions + funclist[2].bind(&CBaseClass::StaticMemberFunction); + // and const member functions (these only need a const class pointer). + funclist[11].bind( (const CBaseClass *)&a, &CBaseClass::ConstMemberFunction); + funclist[3].bind( &a, &CBaseClass::ConstMemberFunction); + // and virtual member functions + funclist[4].bind(&b, &CBaseClass::SimpleVirtualFunction); + + // You can also use the = operator. For static functions, a fastdelegate + // looks identical to a simple function pointer. + funclist[5] = &CBaseClass::StaticMemberFunction; + + // The weird rule about the class of derived member function pointers is avoided. + // For MSVC, you can use &CDerivedClass::SimpleVirtualFunction here, but DMC will complain. + // Note that as well as .bind(), you can also use the MakeDelegate() + // global function. + funclist[6] = MakeDelegate(&d, &CBaseClass::SimpleVirtualFunction); + + // The worst case is an abstract virtual function of a virtually-derived class + // with at least one non-virtual base class. This is a VERY obscure situation, + // which you're unlikely to encounter in the real world. + // FastDelegate versions prior to 1.3 had problems with this case on VC6. + // Now, it works without problems on all compilers. + funclist[7].bind(&c, &CDerivedClass::TrickyVirtualFunction); + // BUT... in such cases you should be using the base class as an + // interface, anyway. + funclist[8].bind(&c, &COtherClass::TrickyVirtualFunction); + // Calling a function that was first declared in the derived class is straightforward + funclist[9] = MakeDelegate(&c, &CDerivedClass::SimpleDerivedFunction); + + // You can also bind directly using the constructor + MyDelegate dg(&b, &CBaseClass::SimpleVirtualFunction); + + char *msg = "Looking for equal delegate"; + for (int i=0; i<12; i++) { + printf("%d :", i); + // The == and != operators are provided + // Note that they work even for inline functions. + if (funclist[i]==dg) { msg = "Found equal delegate"; }; + // operator ! can be used to test for an empty delegate + // You can also use the .empty() member function. + if (!funclist[i]) { + printf("Delegate is empty\n"); + } else { + // Invocation generates optimal assembly code. + funclist[i](i, msg); + }; + } + return 0; +} + diff --git a/opcplusplus/Inc/fastdelegate/FastDelegate.h b/opcplusplus/Inc/fastdelegate/FastDelegate.h new file mode 100644 index 0000000..6387c39 --- /dev/null +++ b/opcplusplus/Inc/fastdelegate/FastDelegate.h @@ -0,0 +1,2108 @@ +// FastDelegate.h +// Efficient delegates in C++ that generate only two lines of asm code! +// Documentation is found at http://www.codeproject.com/cpp/FastDelegate.asp +// +// - Don Clugston, Mar 2004. +// Major contributions were made by Jody Hagins. +// History: +// 24-Apr-04 1.0 * Submitted to CodeProject. +// 28-Apr-04 1.1 * Prevent most unsafe uses of evil static function hack. +// * Improved syntax for horrible_cast (thanks Paul Bludov). +// * Tested on Metrowerks MWCC and Intel ICL (IA32) +// * Compiled, but not run, on Comeau C++ and Intel Itanium ICL. +// 27-Jun-04 1.2 * Now works on Borland C++ Builder 5.5 +// * Now works on /clr "managed C++" code on VC7, VC7.1 +// * Comeau C++ now compiles without warnings. +// * Prevent the virtual inheritance case from being used on +// VC6 and earlier, which generate incorrect code. +// * Improved warning and error messages. Non-standard hacks +// now have compile-time checks to make them safer. +// * implicit_cast used instead of static_cast in many cases. +// * If calling a const member function, a const class pointer can be used. +// * MakeDelegate() global helper function added to simplify pass-by-value. +// * Added fastdelegate.clear() +// 16-Jul-04 1.2.1* Workaround for gcc bug (const member function pointers in templates) +// 30-Oct-04 1.3 * Support for (non-void) return values. +// * No more workarounds in client code! +// MSVC and Intel now use a clever hack invented by John Dlugosz: +// - The FASTDELEGATEDECLARE workaround is no longer necessary. +// - No more warning messages for VC6 +// * Less use of macros. Error messages should be more comprehensible. +// * Added include guards +// * Added FastDelegate::empty() to test if invocation is safe (Thanks Neville Franks). +// * Now tested on VS 2005 Express Beta, PGI C++ +// 24-Dec-04 1.4 * Added DelegateMemento, to allow collections of disparate delegates. +// * <,>,<=,>= comparison operators to allow storage in ordered containers. +// * Substantial reduction of code size, especially the 'Closure' class. +// * Standardised all the compiler-specific workarounds. +// * MFP conversion now works for CodePlay (but not yet supported in the full code). +// * Now compiles without warnings on _any_ supported compiler, including BCC 5.5.1 +// * New syntax: FastDelegate< int (char *, double) >. +// 14-Feb-05 1.4.1* Now treats =0 as equivalent to .clear(), ==0 as equivalent to .empty(). (Thanks elfric). +// * Now tested on Intel ICL for AMD64, VS2005 Beta for AMD64 and Itanium. +// 30-Mar-05 1.5 * Safebool idiom: "if (dg)" is now equivalent to "if (!dg.empty())" +// * Fully supported by CodePlay VectorC +// * Bugfix for Metrowerks: empty() was buggy because a valid MFP can be 0 on MWCC! +// * More optimal assignment,== and != operators for static function pointers. + +#ifndef FASTDELEGATE_H +#define FASTDELEGATE_H +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include // to allow <,> comparisons + +//////////////////////////////////////////////////////////////////////////////// +// Configuration options +// +//////////////////////////////////////////////////////////////////////////////// + +// Uncomment the following #define for optimally-sized delegates. +// In this case, the generated asm code is almost identical to the code you'd get +// if the compiler had native support for delegates. +// It will not work on systems where sizeof(dataptr) < sizeof(codeptr). +// Thus, it will not work for DOS compilers using the medium model. +// It will also probably fail on some DSP systems. +#define FASTDELEGATE_USESTATICFUNCTIONHACK + +// Uncomment the next line to allow function declarator syntax. +// It is automatically enabled for those compilers where it is known to work. +//#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX + +//////////////////////////////////////////////////////////////////////////////// +// Compiler identification for workarounds +// +//////////////////////////////////////////////////////////////////////////////// + +// Compiler identification. It's not easy to identify Visual C++ because +// many vendors fraudulently define Microsoft's identifiers. +#if defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__VECTOR_C) && !defined(__ICL) && !defined(__BORLANDC__) +#define FASTDLGT_ISMSVC + +#if (_MSC_VER <1300) // Many workarounds are required for VC6. +#define FASTDLGT_VC6 +#pragma warning(disable:4786) // disable this ridiculous warning +#endif + +#endif + +// Does the compiler uses Microsoft's member function pointer structure? +// If so, it needs special treatment. +// Metrowerks CodeWarrior, Intel, and CodePlay fraudulently define Microsoft's +// identifier, _MSC_VER. We need to filter Metrowerks out. +#if defined(_MSC_VER) && !defined(__MWERKS__) +#define FASTDLGT_MICROSOFT_MFP + +#if !defined(__VECTOR_C) +// CodePlay doesn't have the __single/multi/virtual_inheritance keywords +#define FASTDLGT_HASINHERITANCE_KEYWORDS +#endif +#endif + +// Does it allow function declarator syntax? The following compilers are known to work: +#if defined(FASTDLGT_ISMSVC) && (_MSC_VER >=1310) // VC 7.1 +#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX +#endif + +// Gcc(2.95+), and versions of Digital Mars, Intel and Comeau in common use. +#if defined (__DMC__) || defined(__GNUC__) || defined(__ICL) || defined(__COMO__) +#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX +#endif + +// It works on Metrowerks MWCC 3.2.2. From boost.Config it should work on earlier ones too. +#if defined (__MWERKS__) +#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX +#endif + +#ifdef __GNUC__ // Workaround GCC bug #8271 + // At present, GCC doesn't recognize constness of MFPs in templates +#define FASTDELEGATE_GCC_BUG_8271 +#endif + + + +//////////////////////////////////////////////////////////////////////////////// +// General tricks used in this code +// +// (a) Error messages are generated by typdefing an array of negative size to +// generate compile-time errors. +// (b) Warning messages on MSVC are generated by declaring unused variables, and +// enabling the "variable XXX is never used" warning. +// (c) Unions are used in a few compiler-specific cases to perform illegal casts. +// (d) For Microsoft and Intel, when adjusting the 'this' pointer, it's cast to +// (char *) first to ensure that the correct number of *bytes* are added. +// +//////////////////////////////////////////////////////////////////////////////// +// Helper templates +// +//////////////////////////////////////////////////////////////////////////////// + + +namespace fastdelegate { +namespace detail { // we'll hide the implementation details in a nested namespace. + +// implicit_cast< > +// I believe this was originally going to be in the C++ standard but +// was left out by accident. It's even milder than static_cast. +// I use it instead of static_cast<> to emphasize that I'm not doing +// anything nasty. +// Usage is identical to static_cast<> +template +inline OutputClass implicit_cast(InputClass input){ + return input; +} + +// horrible_cast< > +// This is truly evil. It completely subverts C++'s type system, allowing you +// to cast from any class to any other class. Technically, using a union +// to perform the cast is undefined behaviour (even in C). But we can see if +// it is OK by checking that the union is the same size as each of its members. +// horrible_cast<> should only be used for compiler-specific workarounds. +// Usage is identical to reinterpret_cast<>. + +// This union is declared outside the horrible_cast because BCC 5.5.1 +// can't inline a function with a nested class, and gives a warning. +template +union horrible_union{ + OutputClass out; + InputClass in; +}; + +template +inline OutputClass horrible_cast(const InputClass input){ + horrible_union u; + // Cause a compile-time error if in, out and u are not the same size. + // If the compile fails here, it means the compiler has peculiar + // unions which would prevent the cast from working. + typedef int ERROR_CantUseHorrible_cast[sizeof(InputClass)==sizeof(u) + && sizeof(InputClass)==sizeof(OutputClass) ? 1 : -1]; + u.in = input; + return u.out; +} + +//////////////////////////////////////////////////////////////////////////////// +// Workarounds +// +//////////////////////////////////////////////////////////////////////////////// + +// Backwards compatibility: This macro used to be necessary in the virtual inheritance +// case for Intel and Microsoft. Now it just forward-declares the class. +#define FASTDELEGATEDECLARE(CLASSNAME) class CLASSNAME; + +// Prevent use of the static function hack with the DOS medium model. +#ifdef __MEDIUM__ +#undef FASTDELEGATE_USESTATICFUNCTIONHACK +#endif + +// DefaultVoid - a workaround for 'void' templates in VC6. +// +// (1) VC6 and earlier do not allow 'void' as a default template argument. +// (2) They also doesn't allow you to return 'void' from a function. +// +// Workaround for (1): Declare a dummy type 'DefaultVoid' which we use +// when we'd like to use 'void'. We convert it into 'void' and back +// using the templates DefaultVoidToVoid<> and VoidToDefaultVoid<>. +// Workaround for (2): On VC6, the code for calling a void function is +// identical to the code for calling a non-void function in which the +// return value is never used, provided the return value is returned +// in the EAX register, rather than on the stack. +// This is true for most fundamental types such as int, enum, void *. +// Const void * is the safest option since it doesn't participate +// in any automatic conversions. But on a 16-bit compiler it might +// cause extra code to be generated, so we disable it for all compilers +// except for VC6 (and VC5). +#ifdef FASTDLGT_VC6 +// VC6 workaround +typedef const void * DefaultVoid; +#else +// On any other compiler, just use a normal void. +typedef void DefaultVoid; +#endif + +// Translate from 'DefaultVoid' to 'void'. +// Everything else is unchanged +template +struct DefaultVoidToVoid { typedef T type; }; + +template <> +struct DefaultVoidToVoid { typedef void type; }; + +// Translate from 'void' into 'DefaultVoid' +// Everything else is unchanged +template +struct VoidToDefaultVoid { typedef T type; }; + +template <> +struct VoidToDefaultVoid { typedef DefaultVoid type; }; + + + +//////////////////////////////////////////////////////////////////////////////// +// Fast Delegates, part 1: +// +// Conversion of member function pointer to a standard form +// +//////////////////////////////////////////////////////////////////////////////// + +// GenericClass is a fake class, ONLY used to provide a type. +// It is vitally important that it is never defined, so that the compiler doesn't +// think it can optimize the invocation. For example, Borland generates simpler +// code if it knows the class only uses single inheritance. + +// Compilers using Microsoft's structure need to be treated as a special case. +#ifdef FASTDLGT_MICROSOFT_MFP + +#ifdef FASTDLGT_HASINHERITANCE_KEYWORDS + // For Microsoft and Intel, we want to ensure that it's the most efficient type of MFP + // (4 bytes), even when the /vmg option is used. Declaring an empty class + // would give 16 byte pointers in this case.... + class __single_inheritance GenericClass; +#endif + // ...but for Codeplay, an empty class *always* gives 4 byte pointers. + // If compiled with the /clr option ("managed C++"), the JIT compiler thinks + // it needs to load GenericClass before it can call any of its functions, + // (compiles OK but crashes at runtime!), so we need to declare an + // empty class to make it happy. + // Codeplay and VC4 can't cope with the unknown_inheritance case either. + class GenericClass {}; +#else + class GenericClass; +#endif + +// The size of a single inheritance member function pointer. +const int SINGLE_MEMFUNCPTR_SIZE = sizeof(void (GenericClass::*)()); + +// SimplifyMemFunc< >::Convert() +// +// A template function that converts an arbitrary member function pointer into the +// simplest possible form of member function pointer, using a supplied 'this' pointer. +// According to the standard, this can be done legally with reinterpret_cast<>. +// For (non-standard) compilers which use member function pointers which vary in size +// depending on the class, we need to use knowledge of the internal structure of a +// member function pointer, as used by the compiler. Template specialization is used +// to distinguish between the sizes. Because some compilers don't support partial +// template specialisation, I use full specialisation of a wrapper struct. + +// general case -- don't know how to convert it. Force a compile failure +template +struct SimplifyMemFunc { + template + inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, + GenericMemFuncType &bound_func) { + // Unsupported member function type -- force a compile failure. + // (it's illegal to have a array with negative size). + typedef char ERROR_Unsupported_member_function_pointer_on_this_compiler[N-100]; + return 0; + } +}; + +// For compilers where all member func ptrs are the same size, everything goes here. +// For non-standard compilers, only single_inheritance classes go here. +template <> +struct SimplifyMemFunc { + template + inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, + GenericMemFuncType &bound_func) { +#if defined __DMC__ + // Digital Mars doesn't allow you to cast between abitrary PMF's, + // even though the standard says you can. The 32-bit compiler lets you + // static_cast through an int, but the DOS compiler doesn't. + bound_func = horrible_cast(function_to_bind); +#else + bound_func = reinterpret_cast(function_to_bind); +#endif + return reinterpret_cast(pthis); + } +}; + +//////////////////////////////////////////////////////////////////////////////// +// Fast Delegates, part 1b: +// +// Workarounds for Microsoft and Intel +// +//////////////////////////////////////////////////////////////////////////////// + + +// Compilers with member function pointers which violate the standard (MSVC, Intel, Codeplay), +// need to be treated as a special case. +#ifdef FASTDLGT_MICROSOFT_MFP + +// We use unions to perform horrible_casts. I would like to use #pragma pack(push, 1) +// at the start of each function for extra safety, but VC6 seems to ICE +// intermittently if you do this inside a template. + +// __multiple_inheritance classes go here +// Nasty hack for Microsoft and Intel (IA32 and Itanium) +template<> +struct SimplifyMemFunc< SINGLE_MEMFUNCPTR_SIZE + sizeof(int) > { + template + inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, + GenericMemFuncType &bound_func) { + // We need to use a horrible_cast to do this conversion. + // In MSVC, a multiple inheritance member pointer is internally defined as: + union { + XFuncType func; + struct { + GenericMemFuncType funcaddress; // points to the actual member function + int delta; // #BYTES to be added to the 'this' pointer + }s; + } u; + // Check that the horrible_cast will work + typedef int ERROR_CantUsehorrible_cast[sizeof(function_to_bind)==sizeof(u.s)? 1 : -1]; + u.func = function_to_bind; + bound_func = u.s.funcaddress; + return reinterpret_cast(reinterpret_cast(pthis) + u.s.delta); + } +}; + +// virtual inheritance is a real nuisance. It's inefficient and complicated. +// On MSVC and Intel, there isn't enough information in the pointer itself to +// enable conversion to a closure pointer. Earlier versions of this code didn't +// work for all cases, and generated a compile-time error instead. +// But a very clever hack invented by John M. Dlugosz solves this problem. +// My code is somewhat different to his: I have no asm code, and I make no +// assumptions about the calling convention that is used. + +// In VC++ and ICL, a virtual_inheritance member pointer +// is internally defined as: +struct MicrosoftVirtualMFP { + void (GenericClass::*codeptr)(); // points to the actual member function + int delta; // #bytes to be added to the 'this' pointer + int vtable_index; // or 0 if no virtual inheritance +}; +// The CRUCIAL feature of Microsoft/Intel MFPs which we exploit is that the +// m_codeptr member is *always* called, regardless of the values of the other +// members. (This is *not* true for other compilers, eg GCC, which obtain the +// function address from the vtable if a virtual function is being called). +// Dlugosz's trick is to make the codeptr point to a probe function which +// returns the 'this' pointer that was used. + +// Define a generic class that uses virtual inheritance. +// It has a trival member function that returns the value of the 'this' pointer. +struct GenericVirtualClass : virtual public GenericClass +{ + typedef GenericVirtualClass * (GenericVirtualClass::*ProbePtrType)(); + GenericVirtualClass * GetThis() { return this; } +}; + +// __virtual_inheritance classes go here +template <> +struct SimplifyMemFunc +{ + + template + inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, + GenericMemFuncType &bound_func) { + union { + XFuncType func; + GenericClass* (X::*ProbeFunc)(); + MicrosoftVirtualMFP s; + } u; + u.func = function_to_bind; + bound_func = reinterpret_cast(u.s.codeptr); + union { + GenericVirtualClass::ProbePtrType virtfunc; + MicrosoftVirtualMFP s; + } u2; + // Check that the horrible_cast<>s will work + typedef int ERROR_CantUsehorrible_cast[sizeof(function_to_bind)==sizeof(u.s) + && sizeof(function_to_bind)==sizeof(u.ProbeFunc) + && sizeof(u2.virtfunc)==sizeof(u2.s) ? 1 : -1]; + // Unfortunately, taking the address of a MF prevents it from being inlined, so + // this next line can't be completely optimised away by the compiler. + u2.virtfunc = &GenericVirtualClass::GetThis; + u.s.codeptr = u2.s.codeptr; + return (pthis->*u.ProbeFunc)(); + } +}; + +#if (_MSC_VER <1300) + +// Nasty hack for Microsoft Visual C++ 6.0 +// unknown_inheritance classes go here +// There is a compiler bug in MSVC6 which generates incorrect code in this case!! +template <> +struct SimplifyMemFunc +{ + template + inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, + GenericMemFuncType &bound_func) { + // There is an apalling but obscure compiler bug in MSVC6 and earlier: + // vtable_index and 'vtordisp' are always set to 0 in the + // unknown_inheritance case! + // This means that an incorrect function could be called!!! + // Compiling with the /vmg option leads to potentially incorrect code. + // This is probably the reason that the IDE has a user interface for specifying + // the /vmg option, but it is disabled - you can only specify /vmg on + // the command line. In VC1.5 and earlier, the compiler would ICE if it ever + // encountered this situation. + // It is OK to use the /vmg option if /vmm or /vms is specified. + + // Fortunately, the wrong function is only called in very obscure cases. + // It only occurs when a derived class overrides a virtual function declared + // in a virtual base class, and the member function + // points to the *Derived* version of that function. The problem can be + // completely averted in 100% of cases by using the *Base class* for the + // member fpointer. Ie, if you use the base class as an interface, you'll + // stay out of trouble. + // Occasionally, you might want to point directly to a derived class function + // that isn't an override of a base class. In this case, both vtable_index + // and 'vtordisp' are zero, but a virtual_inheritance pointer will be generated. + // We can generate correct code in this case. To prevent an incorrect call from + // ever being made, on MSVC6 we generate a warning, and call a function to + // make the program crash instantly. + typedef char ERROR_VC6CompilerBug[-100]; + return 0; + } +}; + + +#else + +// Nasty hack for Microsoft and Intel (IA32 and Itanium) +// unknown_inheritance classes go here +// This is probably the ugliest bit of code I've ever written. Look at the casts! +// There is a compiler bug in MSVC6 which prevents it from using this code. +template <> +struct SimplifyMemFunc +{ + template + inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, + GenericMemFuncType &bound_func) { + // The member function pointer is 16 bytes long. We can't use a normal cast, but + // we can use a union to do the conversion. + union { + XFuncType func; + // In VC++ and ICL, an unknown_inheritance member pointer + // is internally defined as: + struct { + GenericMemFuncType m_funcaddress; // points to the actual member function + int delta; // #bytes to be added to the 'this' pointer + int vtordisp; // #bytes to add to 'this' to find the vtable + int vtable_index; // or 0 if no virtual inheritance + } s; + } u; + // Check that the horrible_cast will work + typedef int ERROR_CantUsehorrible_cast[sizeof(XFuncType)==sizeof(u.s)? 1 : -1]; + u.func = function_to_bind; + bound_func = u.s.funcaddress; + int virtual_delta = 0; + if (u.s.vtable_index) { // Virtual inheritance is used + // First, get to the vtable. + // It is 'vtordisp' bytes from the start of the class. + const int * vtable = *reinterpret_cast( + reinterpret_cast(pthis) + u.s.vtordisp ); + + // 'vtable_index' tells us where in the table we should be looking. + virtual_delta = u.s.vtordisp + *reinterpret_cast( + reinterpret_cast(vtable) + u.s.vtable_index); + } + // The int at 'virtual_delta' gives us the amount to add to 'this'. + // Finally we can add the three components together. Phew! + return reinterpret_cast( + reinterpret_cast(pthis) + u.s.delta + virtual_delta); + }; +}; +#endif // MSVC 7 and greater + +#endif // MS/Intel hacks + +} // namespace detail + +//////////////////////////////////////////////////////////////////////////////// +// Fast Delegates, part 2: +// +// Define the delegate storage, and cope with static functions +// +//////////////////////////////////////////////////////////////////////////////// + +// DelegateMemento -- an opaque structure which can hold an arbitary delegate. +// It knows nothing about the calling convention or number of arguments used by +// the function pointed to. +// It supplies comparison operators so that it can be stored in STL collections. +// It cannot be set to anything other than null, nor invoked directly: +// it must be converted to a specific delegate. + +// Implementation: +// There are two possible implementations: the Safe method and the Evil method. +// DelegateMemento - Safe version +// +// This implementation is standard-compliant, but a bit tricky. +// A static function pointer is stored inside the class. +// Here are the valid values: +// +-- Static pointer --+--pThis --+-- pMemFunc-+-- Meaning------+ +// | 0 | 0 | 0 | Empty | +// | !=0 |(dontcare)| Invoker | Static function| +// | 0 | !=0 | !=0* | Method call | +// +--------------------+----------+------------+----------------+ +// * For Metrowerks, this can be 0. (first virtual function in a +// single_inheritance class). +// When stored stored inside a specific delegate, the 'dontcare' entries are replaced +// with a reference to the delegate itself. This complicates the = and == operators +// for the delegate class. + +// DelegateMemento - Evil version +// +// For compilers where data pointers are at least as big as code pointers, it is +// possible to store the function pointer in the this pointer, using another +// horrible_cast. In this case the DelegateMemento implementation is simple: +// +--pThis --+-- pMemFunc-+-- Meaning---------------------+ +// | 0 | 0 | Empty | +// | !=0 | !=0* | Static function or method call| +// +----------+------------+-------------------------------+ +// * For Metrowerks, this can be 0. (first virtual function in a +// single_inheritance class). +// Note that the Sun C++ and MSVC documentation explicitly state that they +// support static_cast between void * and function pointers. + +class DelegateMemento { +protected: + // the data is protected, not private, because many + // compilers have problems with template friends. + typedef void (detail::GenericClass::*GenericMemFuncType)(); // arbitrary MFP. + detail::GenericClass *m_pthis; + GenericMemFuncType m_pFunction; + +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + typedef void (*GenericFuncPtr)(); // arbitrary code pointer + GenericFuncPtr m_pStaticFunction; +#endif + +public: +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + DelegateMemento() : m_pthis(0), m_pFunction(0), m_pStaticFunction(0) {}; + void clear() { + m_pthis=0; m_pFunction=0; m_pStaticFunction=0; + } +#else + DelegateMemento() : m_pthis(0), m_pFunction(0) {}; + void clear() { m_pthis=0; m_pFunction=0; } +#endif +public: +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + inline bool IsEqual (const DelegateMemento &x) const{ + // We have to cope with the static function pointers as a special case + if (m_pFunction!=x.m_pFunction) return false; + // the static function ptrs must either both be equal, or both be 0. + if (m_pStaticFunction!=x.m_pStaticFunction) return false; + if (m_pStaticFunction!=0) return m_pthis==x.m_pthis; + else return true; + } +#else // Evil Method + inline bool IsEqual (const DelegateMemento &x) const{ + return m_pthis==x.m_pthis && m_pFunction==x.m_pFunction; + } +#endif + // Provide a strict weak ordering for DelegateMementos. + inline bool IsLess(const DelegateMemento &right) const { + // deal with static function pointers first +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + if (m_pStaticFunction !=0 || right.m_pStaticFunction!=0) + return m_pStaticFunction < right.m_pStaticFunction; +#endif + if (m_pthis !=right.m_pthis) return m_pthis < right.m_pthis; + // There are no ordering operators for member function pointers, + // but we can fake one by comparing each byte. The resulting ordering is + // arbitrary (and compiler-dependent), but it permits storage in ordered STL containers. + return memcmp(&m_pFunction, &right.m_pFunction, sizeof(m_pFunction)) < 0; + + } + // BUGFIX (Mar 2005): + // We can't just compare m_pFunction because on Metrowerks, + // m_pFunction can be zero even if the delegate is not empty! + inline bool operator ! () const // Is it bound to anything? + { return m_pthis==0 && m_pFunction==0; } + inline bool empty() const // Is it bound to anything? + { return m_pthis==0 && m_pFunction==0; } +public: + DelegateMemento & operator = (const DelegateMemento &right) { + SetMementoFrom(right); + return *this; + } + inline bool operator <(const DelegateMemento &right) { + return IsLess(right); + } + inline bool operator >(const DelegateMemento &right) { + return right.IsLess(*this); + } + DelegateMemento (const DelegateMemento &right) : + m_pFunction(right.m_pFunction), m_pthis(right.m_pthis) +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + , m_pStaticFunction (right.m_pStaticFunction) +#endif + {} +protected: + void SetMementoFrom(const DelegateMemento &right) { + m_pFunction = right.m_pFunction; + m_pthis = right.m_pthis; +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + m_pStaticFunction = right.m_pStaticFunction; +#endif + } +}; + + +// ClosurePtr<> +// +// A private wrapper class that adds function signatures to DelegateMemento. +// It's the class that does most of the actual work. +// The signatures are specified by: +// GenericMemFunc: must be a type of GenericClass member function pointer. +// StaticFuncPtr: must be a type of function pointer with the same signature +// as GenericMemFunc. +// UnvoidStaticFuncPtr: is the same as StaticFuncPtr, except on VC6 +// where it never returns void (returns DefaultVoid instead). + +// An outer class, FastDelegateN<>, handles the invoking and creates the +// necessary typedefs. +// This class does everything else. + +namespace detail { + +template < class GenericMemFunc, class StaticFuncPtr, class UnvoidStaticFuncPtr> +class ClosurePtr : public DelegateMemento { +public: + // These functions are for setting the delegate to a member function. + + // Here's the clever bit: we convert an arbitrary member function into a + // standard form. XMemFunc should be a member function of class X, but I can't + // enforce that here. It needs to be enforced by the wrapper class. + template < class X, class XMemFunc > + inline void bindmemfunc(X *pthis, XMemFunc function_to_bind ) { + m_pthis = SimplifyMemFunc< sizeof(function_to_bind) > + ::Convert(pthis, function_to_bind, m_pFunction); +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + m_pStaticFunction = 0; +#endif + } + // For const member functions, we only need a const class pointer. + // Since we know that the member function is const, it's safe to + // remove the const qualifier from the 'this' pointer with a const_cast. + // VC6 has problems if we just overload 'bindmemfunc', so we give it a different name. + template < class X, class XMemFunc> + inline void bindconstmemfunc(const X *pthis, XMemFunc function_to_bind) { + m_pthis= SimplifyMemFunc< sizeof(function_to_bind) > + ::Convert(const_cast(pthis), function_to_bind, m_pFunction); +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + m_pStaticFunction = 0; +#endif + } +#ifdef FASTDELEGATE_GCC_BUG_8271 // At present, GCC doesn't recognize constness of MFPs in templates + template < class X, class XMemFunc> + inline void bindmemfunc(const X *pthis, XMemFunc function_to_bind) { + bindconstmemfunc(pthis, function_to_bind); +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + m_pStaticFunction = 0; +#endif + } +#endif + // These functions are required for invoking the stored function + inline GenericClass *GetClosureThis() const { return m_pthis; } + inline GenericMemFunc GetClosureMemPtr() const { return reinterpret_cast(m_pFunction); } + +// There are a few ways of dealing with static function pointers. +// There's a standard-compliant, but tricky method. +// There's also a straightforward hack, that won't work on DOS compilers using the +// medium memory model. It's so evil that I can't recommend it, but I've +// implemented it anyway because it produces very nice asm code. + +#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + +// ClosurePtr<> - Safe version +// +// This implementation is standard-compliant, but a bit tricky. +// I store the function pointer inside the class, and the delegate then +// points to itself. Whenever the delegate is copied, these self-references +// must be transformed, and this complicates the = and == operators. +public: + // The next two functions are for operator ==, =, and the copy constructor. + // We may need to convert the m_pthis pointers, so that + // they remain as self-references. + template< class DerivedClass > + inline void CopyFrom (DerivedClass *pParent, const DelegateMemento &x) { + SetMementoFrom(x); + if (m_pStaticFunction!=0) { + // transform self references... + m_pthis=reinterpret_cast(pParent); + } + } + // For static functions, the 'static_function_invoker' class in the parent + // will be called. The parent then needs to call GetStaticFunction() to find out + // the actual function to invoke. + template < class DerivedClass, class ParentInvokerSig > + inline void bindstaticfunc(DerivedClass *pParent, ParentInvokerSig static_function_invoker, + StaticFuncPtr function_to_bind ) { + if (function_to_bind==0) { // cope with assignment to 0 + m_pFunction=0; + } else { + bindmemfunc(pParent, static_function_invoker); + } + m_pStaticFunction=reinterpret_cast(function_to_bind); + } + inline UnvoidStaticFuncPtr GetStaticFunction() const { + return reinterpret_cast(m_pStaticFunction); + } +#else + +// ClosurePtr<> - Evil version +// +// For compilers where data pointers are at least as big as code pointers, it is +// possible to store the function pointer in the this pointer, using another +// horrible_cast. Invocation isn't any faster, but it saves 4 bytes, and +// speeds up comparison and assignment. If C++ provided direct language support +// for delegates, they would produce asm code that was almost identical to this. +// Note that the Sun C++ and MSVC documentation explicitly state that they +// support static_cast between void * and function pointers. + + template< class DerivedClass > + inline void CopyFrom (DerivedClass *pParent, const DelegateMemento &right) { + SetMementoFrom(right); + } + // For static functions, the 'static_function_invoker' class in the parent + // will be called. The parent then needs to call GetStaticFunction() to find out + // the actual function to invoke. + // ******** EVIL, EVIL CODE! ******* + template < class DerivedClass, class ParentInvokerSig> + inline void bindstaticfunc(DerivedClass *pParent, ParentInvokerSig static_function_invoker, + StaticFuncPtr function_to_bind) { + if (function_to_bind==0) { // cope with assignment to 0 + m_pFunction=0; + } else { + // We'll be ignoring the 'this' pointer, but we need to make sure we pass + // a valid value to bindmemfunc(). + bindmemfunc(pParent, static_function_invoker); + } + + // WARNING! Evil hack. We store the function in the 'this' pointer! + // Ensure that there's a compilation failure if function pointers + // and data pointers have different sizes. + // If you get this error, you need to #undef FASTDELEGATE_USESTATICFUNCTIONHACK. + typedef int ERROR_CantUseEvilMethod[sizeof(GenericClass *)==sizeof(function_to_bind) ? 1 : -1]; + m_pthis = horrible_cast(function_to_bind); + // MSVC, SunC++ and DMC accept the following (non-standard) code: +// m_pthis = static_cast(static_cast(function_to_bind)); + // BCC32, Comeau and DMC accept this method. MSVC7.1 needs __int64 instead of long +// m_pthis = reinterpret_cast(reinterpret_cast(function_to_bind)); + } + // ******** EVIL, EVIL CODE! ******* + // This function will be called with an invalid 'this' pointer!! + // We're just returning the 'this' pointer, converted into + // a function pointer! + inline UnvoidStaticFuncPtr GetStaticFunction() const { + // Ensure that there's a compilation failure if function pointers + // and data pointers have different sizes. + // If you get this error, you need to #undef FASTDELEGATE_USESTATICFUNCTIONHACK. + typedef int ERROR_CantUseEvilMethod[sizeof(UnvoidStaticFuncPtr)==sizeof(this) ? 1 : -1]; + return horrible_cast(this); + } +#endif // !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) + + // Does the closure contain this static function? + inline bool IsEqualToStaticFuncPtr(StaticFuncPtr funcptr){ + if (funcptr==0) return empty(); + // For the Evil method, if it doesn't actually contain a static function, this will return an arbitrary + // value that is not equal to any valid function pointer. + else return funcptr==reinterpret_cast(GetStaticFunction()); + } +}; + + +} // namespace detail + +//////////////////////////////////////////////////////////////////////////////// +// Fast Delegates, part 3: +// +// Wrapper classes to ensure type safety +// +//////////////////////////////////////////////////////////////////////////////// + + +// Once we have the member function conversion templates, it's easy to make the +// wrapper classes. So that they will work with as many compilers as possible, +// the classes are of the form +// FastDelegate3 +// They can cope with any combination of parameters. The max number of parameters +// allowed is 8, but it is trivial to increase this limit. +// Note that we need to treat const member functions seperately. +// All this class does is to enforce type safety, and invoke the delegate with +// the correct list of parameters. + +// Because of the weird rule about the class of derived member function pointers, +// you sometimes need to apply a downcast to the 'this' pointer. +// This is the reason for the use of "implicit_cast(pthis)" in the code below. +// If CDerivedClass is derived from CBaseClass, but doesn't override SimpleVirtualFunction, +// without this trick you'd need to write: +// MyDelegate(static_cast(&d), &CDerivedClass::SimpleVirtualFunction); +// but with the trick you can write +// MyDelegate(&d, &CDerivedClass::SimpleVirtualFunction); + +// RetType is the type the compiler uses in compiling the template. For VC6, +// it cannot be void. DesiredRetType is the real type which is returned from +// all of the functions. It can be void. + +// Implicit conversion to "bool" is achieved using the safe_bool idiom, +// using member data pointers (MDP). This allows "if (dg)..." syntax +// Because some compilers (eg codeplay) don't have a unique value for a zero +// MDP, an extra padding member is added to the SafeBool struct. +// Some compilers (eg VC6) won't implicitly convert from 0 to an MDP, so +// in that case the static function constructor is not made explicit; this +// allows "if (dg==0) ..." to compile. + +//N=0 +template +class FastDelegate0 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(); + typedef RetType (*UnvoidStaticFunctionPtr)(); + typedef RetType (detail::GenericClass::*GenericMemFn)(); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate0 type; + + // Construction and comparison functions + FastDelegate0() { clear(); } + FastDelegate0(const FastDelegate0 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate0 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate0 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate0 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate0 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate0 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate0(Y *pthis, DesiredRetType (X::* function_to_bind)() ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)()) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate0(const Y *pthis, DesiredRetType (X::* function_to_bind)() const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)() const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate0(DesiredRetType (*function_to_bind)() ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)() ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)()) { + m_Closure.bindstaticfunc(this, &FastDelegate0::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() () const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction() const { + return (*(m_Closure.GetStaticFunction()))(); } +}; + +//N=1 +template +class FastDelegate1 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate1 type; + + // Construction and comparison functions + FastDelegate1() { clear(); } + FastDelegate1(const FastDelegate1 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate1 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate1 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate1 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate1 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate1 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate1(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate1(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate1(DesiredRetType (*function_to_bind)(Param1 p1) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1)) { + m_Closure.bindstaticfunc(this, &FastDelegate1::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1) const { + return (*(m_Closure.GetStaticFunction()))(p1); } +}; + +//N=2 +template +class FastDelegate2 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate2 type; + + // Construction and comparison functions + FastDelegate2() { clear(); } + FastDelegate2(const FastDelegate2 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate2 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate2 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate2 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate2 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate2 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate2(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate2(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate2(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2)) { + m_Closure.bindstaticfunc(this, &FastDelegate2::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2); } +}; + +//N=3 +template +class FastDelegate3 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate3 type; + + // Construction and comparison functions + FastDelegate3() { clear(); } + FastDelegate3(const FastDelegate3 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate3 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate3 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate3 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate3 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate3 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate3(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate3(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate3(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3)) { + m_Closure.bindstaticfunc(this, &FastDelegate3::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2, Param3 p3) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2, p3); } +}; + +//N=4 +template +class FastDelegate4 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate4 type; + + // Construction and comparison functions + FastDelegate4() { clear(); } + FastDelegate4(const FastDelegate4 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate4 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate4 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate4 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate4 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate4 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate4(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate4(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate4(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) { + m_Closure.bindstaticfunc(this, &FastDelegate4::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4); } +}; + +//N=5 +template +class FastDelegate5 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate5 type; + + // Construction and comparison functions + FastDelegate5() { clear(); } + FastDelegate5(const FastDelegate5 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate5 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate5 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate5 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate5 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate5 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate5(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate5(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate5(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) { + m_Closure.bindstaticfunc(this, &FastDelegate5::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5); } +}; + +//N=6 +template +class FastDelegate6 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate6 type; + + // Construction and comparison functions + FastDelegate6() { clear(); } + FastDelegate6(const FastDelegate6 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate6 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate6 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate6 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate6 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate6 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate6(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate6(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate6(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) { + m_Closure.bindstaticfunc(this, &FastDelegate6::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5, p6); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5, p6); } +}; + +//N=7 +template +class FastDelegate7 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate7 type; + + // Construction and comparison functions + FastDelegate7() { clear(); } + FastDelegate7(const FastDelegate7 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate7 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate7 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate7 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate7 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate7 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate7(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate7(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate7(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) { + m_Closure.bindstaticfunc(this, &FastDelegate7::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5, p6, p7); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5, p6, p7); } +}; + +//N=8 +template +class FastDelegate8 { +private: + typedef typename detail::DefaultVoidToVoid::type DesiredRetType; + typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8); + typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8); + typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8); + typedef detail::ClosurePtr ClosureType; + ClosureType m_Closure; +public: + // Typedefs to aid generic programming + typedef FastDelegate8 type; + + // Construction and comparison functions + FastDelegate8() { clear(); } + FastDelegate8(const FastDelegate8 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + void operator = (const FastDelegate8 &x) { + m_Closure.CopyFrom(this, x.m_Closure); } + bool operator ==(const FastDelegate8 &x) const { + return m_Closure.IsEqual(x.m_Closure); } + bool operator !=(const FastDelegate8 &x) const { + return !m_Closure.IsEqual(x.m_Closure); } + bool operator <(const FastDelegate8 &x) const { + return m_Closure.IsLess(x.m_Closure); } + bool operator >(const FastDelegate8 &x) const { + return x.m_Closure.IsLess(m_Closure); } + // Binding to non-const member functions + template < class X, class Y > + FastDelegate8(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8)) { + m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Binding to const member functions. + template < class X, class Y > + FastDelegate8(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + template < class X, class Y > + inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const) { + m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } + // Static functions. We convert them into a member function call. + // This constructor also provides implicit conversion + FastDelegate8(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) { + bind(function_to_bind); } + // for efficiency, prevent creation of a temporary + void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) { + bind(function_to_bind); } + inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8)) { + m_Closure.bindstaticfunc(this, &FastDelegate8::InvokeStaticFunction, + function_to_bind); } + // Invoke the delegate + RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const { + return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5, p6, p7, p8); } + // Implicit conversion to "bool" using the safe_bool idiom +private: + typedef struct SafeBoolStruct { + int a_data_pointer_to_this_is_0_on_buggy_compilers; + StaticFunctionPtr m_nonzero; + } UselessTypedef; + typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; +public: + operator unspecified_bool_type() const { + return empty()? 0: &SafeBoolStruct::m_nonzero; + } + // necessary to allow ==0 to work despite the safe_bool idiom + inline bool operator==(StaticFunctionPtr funcptr) { + return m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator!=(StaticFunctionPtr funcptr) { + return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } + inline bool operator ! () const { // Is it bound to anything? + return !m_Closure; } + inline bool empty() const { + return !m_Closure; } + void clear() { m_Closure.clear();} + // Conversion to and from the DelegateMemento storage class + const DelegateMemento & GetMemento() { return m_Closure; } + void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } + +private: // Invoker for static functions + RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const { + return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5, p6, p7, p8); } +}; + + +//////////////////////////////////////////////////////////////////////////////// +// Fast Delegates, part 4: +// +// FastDelegate<> class (Original author: Jody Hagins) +// Allows boost::function style syntax like: +// FastDelegate< double (int, long) > +// instead of: +// FastDelegate2< int, long, double > +// +//////////////////////////////////////////////////////////////////////////////// + +#ifdef FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX + +// Declare FastDelegate as a class template. It will be specialized +// later for all number of arguments. +template +class FastDelegate; + +//N=0 +// Specialization to allow use of +// FastDelegate< R ( ) > +// instead of +// FastDelegate0 < R > +template +class FastDelegate< R ( ) > + // Inherit from FastDelegate0 so that it can be treated just like a FastDelegate0 + : public FastDelegate0 < R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate0 < R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=1 +// Specialization to allow use of +// FastDelegate< R ( Param1 ) > +// instead of +// FastDelegate1 < Param1, R > +template +class FastDelegate< R ( Param1 ) > + // Inherit from FastDelegate1 so that it can be treated just like a FastDelegate1 + : public FastDelegate1 < Param1, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate1 < Param1, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=2 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2 ) > +// instead of +// FastDelegate2 < Param1, Param2, R > +template +class FastDelegate< R ( Param1, Param2 ) > + // Inherit from FastDelegate2 so that it can be treated just like a FastDelegate2 + : public FastDelegate2 < Param1, Param2, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate2 < Param1, Param2, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=3 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2, Param3 ) > +// instead of +// FastDelegate3 < Param1, Param2, Param3, R > +template +class FastDelegate< R ( Param1, Param2, Param3 ) > + // Inherit from FastDelegate3 so that it can be treated just like a FastDelegate3 + : public FastDelegate3 < Param1, Param2, Param3, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate3 < Param1, Param2, Param3, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=4 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2, Param3, Param4 ) > +// instead of +// FastDelegate4 < Param1, Param2, Param3, Param4, R > +template +class FastDelegate< R ( Param1, Param2, Param3, Param4 ) > + // Inherit from FastDelegate4 so that it can be treated just like a FastDelegate4 + : public FastDelegate4 < Param1, Param2, Param3, Param4, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate4 < Param1, Param2, Param3, Param4, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=5 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5 ) > +// instead of +// FastDelegate5 < Param1, Param2, Param3, Param4, Param5, R > +template +class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5 ) > + // Inherit from FastDelegate5 so that it can be treated just like a FastDelegate5 + : public FastDelegate5 < Param1, Param2, Param3, Param4, Param5, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate5 < Param1, Param2, Param3, Param4, Param5, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=6 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6 ) > +// instead of +// FastDelegate6 < Param1, Param2, Param3, Param4, Param5, Param6, R > +template +class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6 ) > + // Inherit from FastDelegate6 so that it can be treated just like a FastDelegate6 + : public FastDelegate6 < Param1, Param2, Param3, Param4, Param5, Param6, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate6 < Param1, Param2, Param3, Param4, Param5, Param6, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=7 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7 ) > +// instead of +// FastDelegate7 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, R > +template +class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7 ) > + // Inherit from FastDelegate7 so that it can be treated just like a FastDelegate7 + : public FastDelegate7 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate7 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + +//N=8 +// Specialization to allow use of +// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8 ) > +// instead of +// FastDelegate8 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, R > +template +class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8 ) > + // Inherit from FastDelegate8 so that it can be treated just like a FastDelegate8 + : public FastDelegate8 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, R > +{ +public: + // Make using the base type a bit easier via typedef. + typedef FastDelegate8 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, R > BaseType; + + // Allow users access to the specific type of this delegate. + typedef FastDelegate SelfType; + + // Mimic the base class constructors. + FastDelegate() : BaseType() { } + + template < class X, class Y > + FastDelegate(Y * pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 )) + : BaseType(pthis, function_to_bind) { } + + template < class X, class Y > + FastDelegate(const Y *pthis, + R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) const) + : BaseType(pthis, function_to_bind) + { } + + FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 )) + : BaseType(function_to_bind) { } + void operator = (const BaseType &x) { + *static_cast(this) = x; } +}; + + +#endif //FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX + +//////////////////////////////////////////////////////////////////////////////// +// Fast Delegates, part 5: +// +// MakeDelegate() helper function +// +// MakeDelegate(&x, &X::func) returns a fastdelegate of the type +// necessary for calling x.func() with the correct number of arguments. +// This makes it possible to eliminate many typedefs from user code. +// +//////////////////////////////////////////////////////////////////////////////// + +// Also declare overloads of a MakeDelegate() global function to +// reduce the need for typedefs. +// We need seperate overloads for const and non-const member functions. +// Also, because of the weird rule about the class of derived member function pointers, +// implicit downcasts may need to be applied later to the 'this' pointer. +// That's why two classes (X and Y) appear in the definitions. Y must be implicitly +// castable to X. + +// Workaround for VC6. VC6 needs void return types converted into DefaultVoid. +// GCC 3.2 and later won't compile this unless it's preceded by 'typename', +// but VC6 doesn't allow 'typename' in this context. +// So, I have to use a macro. + +#ifdef FASTDLGT_VC6 +#define FASTDLGT_RETTYPE detail::VoidToDefaultVoid::type +#else +#define FASTDLGT_RETTYPE RetType +#endif + +//N=0 +template +FastDelegate0 MakeDelegate(Y* x, RetType (X::*func)()) { + return FastDelegate0(x, func); +} + +template +FastDelegate0 MakeDelegate(Y* x, RetType (X::*func)() const) { + return FastDelegate0(x, func); +} + +//N=1 +template +FastDelegate1 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1)) { + return FastDelegate1(x, func); +} + +template +FastDelegate1 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1) const) { + return FastDelegate1(x, func); +} + +//N=2 +template +FastDelegate2 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2)) { + return FastDelegate2(x, func); +} + +template +FastDelegate2 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2) const) { + return FastDelegate2(x, func); +} + +//N=3 +template +FastDelegate3 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3)) { + return FastDelegate3(x, func); +} + +template +FastDelegate3 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3) const) { + return FastDelegate3(x, func); +} + +//N=4 +template +FastDelegate4 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) { + return FastDelegate4(x, func); +} + +template +FastDelegate4 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) { + return FastDelegate4(x, func); +} + +//N=5 +template +FastDelegate5 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) { + return FastDelegate5(x, func); +} + +template +FastDelegate5 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) { + return FastDelegate5(x, func); +} + +//N=6 +template +FastDelegate6 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) { + return FastDelegate6(x, func); +} + +template +FastDelegate6 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) { + return FastDelegate6(x, func); +} + +//N=7 +template +FastDelegate7 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) { + return FastDelegate7(x, func); +} + +template +FastDelegate7 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) { + return FastDelegate7(x, func); +} + +//N=8 +template +FastDelegate8 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8)) { + return FastDelegate8(x, func); +} + +template +FastDelegate8 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const) { + return FastDelegate8(x, func); +} + + + // clean up after ourselves... +#undef FASTDLGT_RETTYPE + +} // namespace fastdelegate + +#endif // !defined(FASTDELEGATE_H) + diff --git a/opcplusplus/Inc/fastdelegate/FastDelegateBind.h b/opcplusplus/Inc/fastdelegate/FastDelegateBind.h new file mode 100644 index 0000000..9830ab5 --- /dev/null +++ b/opcplusplus/Inc/fastdelegate/FastDelegateBind.h @@ -0,0 +1,243 @@ +// FastDelegateBind.h +// Helper file for FastDelegates. Provides bind() function, enabling +// FastDelegates to be rapidly compared to programs using boost::function and boost::bind. +// +// Documentation is found at http://www.codeproject.com/cpp/FastDelegate.asp +// +// Original author: Jody Hagins. +// Minor changes by Don Clugston. +// +// Warning: The arguments to 'bind' are ignored! No actual binding is performed. +// The behaviour is equivalent to boost::bind only when the basic placeholder +// arguments _1, _2, _3, etc are used in order. +// +// HISTORY: +// 1.4 Dec 2004. Initial release as part of FastDelegate 1.4. + + +#ifndef FASTDELEGATEBIND_H +#define FASTDELEGATEBIND_H +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +//////////////////////////////////////////////////////////////////////////////// +// FastDelegate bind() +// +// bind() helper function for boost compatibility. +// (Original author: Jody Hagins). +// +// Add another helper, so FastDelegate can be a dropin replacement +// for boost::bind (in a fair number of cases). +// Note the elipses, because boost::bind() takes place holders +// but FastDelegate does not care about them. Getting the place holder +// mechanism to work, and play well with boost is a bit tricky, so +// we do the "easy" thing... +// Assume we have the following code... +// using boost::bind; +// bind(&Foo:func, &foo, _1, _2); +// we should be able to replace the "using" with... +// using fastdelegate::bind; +// and everything should work fine... +//////////////////////////////////////////////////////////////////////////////// + +#ifdef FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX + +namespace fastdelegate { + +//N=0 +template +FastDelegate< RetType ( ) > +bind( + RetType (X::*func)( ), + Y * y, + ...) +{ + return FastDelegate< RetType ( ) >(y, func); +} + +template +FastDelegate< RetType ( ) > +bind( + RetType (X::*func)( ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( ) >(y, func); +} + +//N=1 +template +FastDelegate< RetType ( Param1 p1 ) > +bind( + RetType (X::*func)( Param1 p1 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1 ) > +bind( + RetType (X::*func)( Param1 p1 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1 ) >(y, func); +} + +//N=2 +template +FastDelegate< RetType ( Param1 p1, Param2 p2 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2 ) >(y, func); +} + +//N=3 +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) >(y, func); +} + +//N=4 +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) >(y, func); +} + +//N=5 +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) >(y, func); +} + +//N=6 +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) >(y, func); +} + +//N=7 +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) >(y, func); +} + +//N=8 +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ), + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) >(y, func); +} + +template +FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) > +bind( + RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) const, + Y * y, + ...) +{ + return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) >(y, func); +} + + +#endif //FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX + +} // namespace fastdelegate + +#endif // !defined(FASTDELEGATEBIND_H) + diff --git a/opcplusplus/Inc/md5/md5.c b/opcplusplus/Inc/md5/md5.c new file mode 100644 index 0000000..7508687 --- /dev/null +++ b/opcplusplus/Inc/md5/md5.c @@ -0,0 +1,461 @@ +/* + * RFC 1321 compliant MD5 implementation + * + * Copyright (C) 2006-2007 Christophe Devine + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License, version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +/* + * The MD5 algorithm was designed by Ron Rivest in 1991. + * + * http://www.ietf.org/rfc/rfc1321.txt + */ + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif + +#include +#include + +//#include "xyssl/md5.h" +#include "md5.h" + +/* + * 32-bit integer manipulation macros (little endian) + */ +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n,b,i) \ +{ \ + (n) = ( (unsigned long) (b)[(i) ] ) \ + | ( (unsigned long) (b)[(i) + 1] << 8 ) \ + | ( (unsigned long) (b)[(i) + 2] << 16 ) \ + | ( (unsigned long) (b)[(i) + 3] << 24 ); \ +} +#endif + +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( (n) ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \ +} +#endif + +/* + * MD5 context setup + */ +void md5_starts( md5_context *ctx ) +{ + ctx->total[0] = 0; + ctx->total[1] = 0; + + ctx->state[0] = 0x67452301; + ctx->state[1] = 0xEFCDAB89; + ctx->state[2] = 0x98BADCFE; + ctx->state[3] = 0x10325476; +} + +static void md5_process( md5_context *ctx, unsigned char data[64] ) +{ + unsigned long X[16], A, B, C, D; + + GET_UINT32_LE( X[ 0], data, 0 ); + GET_UINT32_LE( X[ 1], data, 4 ); + GET_UINT32_LE( X[ 2], data, 8 ); + GET_UINT32_LE( X[ 3], data, 12 ); + GET_UINT32_LE( X[ 4], data, 16 ); + GET_UINT32_LE( X[ 5], data, 20 ); + GET_UINT32_LE( X[ 6], data, 24 ); + GET_UINT32_LE( X[ 7], data, 28 ); + GET_UINT32_LE( X[ 8], data, 32 ); + GET_UINT32_LE( X[ 9], data, 36 ); + GET_UINT32_LE( X[10], data, 40 ); + GET_UINT32_LE( X[11], data, 44 ); + GET_UINT32_LE( X[12], data, 48 ); + GET_UINT32_LE( X[13], data, 52 ); + GET_UINT32_LE( X[14], data, 56 ); + GET_UINT32_LE( X[15], data, 60 ); + +#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) + +#define P(a,b,c,d,k,s,t) \ +{ \ + a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \ +} + + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; + +#define F(x,y,z) (z ^ (x & (y ^ z))) + + P( A, B, C, D, 0, 7, 0xD76AA478 ); + P( D, A, B, C, 1, 12, 0xE8C7B756 ); + P( C, D, A, B, 2, 17, 0x242070DB ); + P( B, C, D, A, 3, 22, 0xC1BDCEEE ); + P( A, B, C, D, 4, 7, 0xF57C0FAF ); + P( D, A, B, C, 5, 12, 0x4787C62A ); + P( C, D, A, B, 6, 17, 0xA8304613 ); + P( B, C, D, A, 7, 22, 0xFD469501 ); + P( A, B, C, D, 8, 7, 0x698098D8 ); + P( D, A, B, C, 9, 12, 0x8B44F7AF ); + P( C, D, A, B, 10, 17, 0xFFFF5BB1 ); + P( B, C, D, A, 11, 22, 0x895CD7BE ); + P( A, B, C, D, 12, 7, 0x6B901122 ); + P( D, A, B, C, 13, 12, 0xFD987193 ); + P( C, D, A, B, 14, 17, 0xA679438E ); + P( B, C, D, A, 15, 22, 0x49B40821 ); + +#undef F + +#define F(x,y,z) (y ^ (z & (x ^ y))) + + P( A, B, C, D, 1, 5, 0xF61E2562 ); + P( D, A, B, C, 6, 9, 0xC040B340 ); + P( C, D, A, B, 11, 14, 0x265E5A51 ); + P( B, C, D, A, 0, 20, 0xE9B6C7AA ); + P( A, B, C, D, 5, 5, 0xD62F105D ); + P( D, A, B, C, 10, 9, 0x02441453 ); + P( C, D, A, B, 15, 14, 0xD8A1E681 ); + P( B, C, D, A, 4, 20, 0xE7D3FBC8 ); + P( A, B, C, D, 9, 5, 0x21E1CDE6 ); + P( D, A, B, C, 14, 9, 0xC33707D6 ); + P( C, D, A, B, 3, 14, 0xF4D50D87 ); + P( B, C, D, A, 8, 20, 0x455A14ED ); + P( A, B, C, D, 13, 5, 0xA9E3E905 ); + P( D, A, B, C, 2, 9, 0xFCEFA3F8 ); + P( C, D, A, B, 7, 14, 0x676F02D9 ); + P( B, C, D, A, 12, 20, 0x8D2A4C8A ); + +#undef F + +#define F(x,y,z) (x ^ y ^ z) + + P( A, B, C, D, 5, 4, 0xFFFA3942 ); + P( D, A, B, C, 8, 11, 0x8771F681 ); + P( C, D, A, B, 11, 16, 0x6D9D6122 ); + P( B, C, D, A, 14, 23, 0xFDE5380C ); + P( A, B, C, D, 1, 4, 0xA4BEEA44 ); + P( D, A, B, C, 4, 11, 0x4BDECFA9 ); + P( C, D, A, B, 7, 16, 0xF6BB4B60 ); + P( B, C, D, A, 10, 23, 0xBEBFBC70 ); + P( A, B, C, D, 13, 4, 0x289B7EC6 ); + P( D, A, B, C, 0, 11, 0xEAA127FA ); + P( C, D, A, B, 3, 16, 0xD4EF3085 ); + P( B, C, D, A, 6, 23, 0x04881D05 ); + P( A, B, C, D, 9, 4, 0xD9D4D039 ); + P( D, A, B, C, 12, 11, 0xE6DB99E5 ); + P( C, D, A, B, 15, 16, 0x1FA27CF8 ); + P( B, C, D, A, 2, 23, 0xC4AC5665 ); + +#undef F + +#define F(x,y,z) (y ^ (x | ~z)) + + P( A, B, C, D, 0, 6, 0xF4292244 ); + P( D, A, B, C, 7, 10, 0x432AFF97 ); + P( C, D, A, B, 14, 15, 0xAB9423A7 ); + P( B, C, D, A, 5, 21, 0xFC93A039 ); + P( A, B, C, D, 12, 6, 0x655B59C3 ); + P( D, A, B, C, 3, 10, 0x8F0CCC92 ); + P( C, D, A, B, 10, 15, 0xFFEFF47D ); + P( B, C, D, A, 1, 21, 0x85845DD1 ); + P( A, B, C, D, 8, 6, 0x6FA87E4F ); + P( D, A, B, C, 15, 10, 0xFE2CE6E0 ); + P( C, D, A, B, 6, 15, 0xA3014314 ); + P( B, C, D, A, 13, 21, 0x4E0811A1 ); + P( A, B, C, D, 4, 6, 0xF7537E82 ); + P( D, A, B, C, 11, 10, 0xBD3AF235 ); + P( C, D, A, B, 2, 15, 0x2AD7D2BB ); + P( B, C, D, A, 9, 21, 0xEB86D391 ); + +#undef F + + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; +} + +/* + * MD5 process buffer + */ +void md5_update( md5_context *ctx, unsigned char *input, int ilen ) +{ + int fill; + unsigned long left; + + if( ilen <= 0 ) + return; + + left = ctx->total[0] & 0x3F; + fill = 64 - left; + + ctx->total[0] += ilen; + ctx->total[0] &= 0xFFFFFFFF; + + if( ctx->total[0] < (unsigned long) ilen ) + ctx->total[1]++; + + if( left && ilen >= fill ) + { + memcpy( (void *) (ctx->buffer + left), + (void *) input, fill ); + md5_process( ctx, ctx->buffer ); + input += fill; + ilen -= fill; + left = 0; + } + + while( ilen >= 64 ) + { + md5_process( ctx, input ); + input += 64; + ilen -= 64; + } + + if( ilen > 0 ) + { + memcpy( (void *) (ctx->buffer + left), + (void *) input, ilen ); + } +} + +static const unsigned char md5_padding[64] = +{ + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/* + * MD5 final digest + */ +void md5_finish( md5_context *ctx, unsigned char *output ) +{ + unsigned long last, padn; + unsigned long high, low; + unsigned char msglen[8]; + + high = ( ctx->total[0] >> 29 ) + | ( ctx->total[1] << 3 ); + low = ( ctx->total[0] << 3 ); + + PUT_UINT32_LE( low, msglen, 0 ); + PUT_UINT32_LE( high, msglen, 4 ); + + last = ctx->total[0] & 0x3F; + padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); + + md5_update( ctx, (unsigned char *) md5_padding, padn ); + md5_update( ctx, msglen, 8 ); + + PUT_UINT32_LE( ctx->state[0], output, 0 ); + PUT_UINT32_LE( ctx->state[1], output, 4 ); + PUT_UINT32_LE( ctx->state[2], output, 8 ); + PUT_UINT32_LE( ctx->state[3], output, 12 ); +} + +/* + * Output = MD5( input buffer ) + */ +void md5( unsigned char *input, int ilen, + unsigned char *output ) +{ + md5_context ctx; + + md5_starts( &ctx ); + md5_update( &ctx, input, ilen ); + md5_finish( &ctx, output ); + + memset( &ctx, 0, sizeof( md5_context ) ); +} + +/* + * Output = MD5( file contents ) + */ +int md5_file( char *path, unsigned char *output ) +{ + FILE *f; + size_t n; + md5_context ctx; + unsigned char buf[1024]; + + if( ( f = fopen( path, "rb" ) ) == NULL ) + return( 1 ); + + md5_starts( &ctx ); + + while( ( n = fread( buf, 1, sizeof( buf ), f ) ) > 0 ) + md5_update( &ctx, buf, (int) n ); + + md5_finish( &ctx, output ); + + memset( &ctx, 0, sizeof( md5_context ) ); + + if( ferror( f ) != 0 ) + { + fclose( f ); + return( 2 ); + } + + fclose( f ); + return( 0 ); +} + +/* + * MD5 HMAC context setup + */ +void md5_hmac_starts( md5_context *ctx, + unsigned char *key, int keylen ) +{ + int i; + + memset( ctx->ipad, 0x36, 64 ); + memset( ctx->opad, 0x5C, 64 ); + + for( i = 0; i < keylen; i++ ) + { + if( i >= 64 ) break; + + ctx->ipad[i] ^= key[i]; + ctx->opad[i] ^= key[i]; + } + + md5_starts( ctx ); + md5_update( ctx, ctx->ipad, 64 ); +} + +/* + * MD5 HMAC process buffer + */ +void md5_hmac_update( md5_context *ctx, + unsigned char *input, int ilen ) +{ + md5_update( ctx, input, ilen ); +} + +/* + * MD5 HMAC final digest + */ +void md5_hmac_finish( md5_context *ctx, unsigned char *output ) +{ + unsigned char tmpbuf[16]; + + md5_finish( ctx, tmpbuf ); + md5_starts( ctx ); + md5_update( ctx, ctx->opad, 64 ); + md5_update( ctx, tmpbuf, 16 ); + md5_finish( ctx, output ); + + memset( tmpbuf, 0, sizeof( tmpbuf ) ); +} + +/* + * Output = HMAC-MD5( hmac key, input buffer ) + */ +void md5_hmac( unsigned char *key, int keylen, + unsigned char *input, int ilen, + unsigned char *output ) +{ + md5_context ctx; + + md5_hmac_starts( &ctx, key, keylen ); + md5_hmac_update( &ctx, input, ilen ); + md5_hmac_finish( &ctx, output ); + + memset( &ctx, 0, sizeof( md5_context ) ); +} + +static const char _md5_src[] = "_md5_src"; + +#if defined(SELF_TEST) +/* + * RFC 1321 test vectors + */ +static const char md5_test_str[7][81] = +{ + { "" }, + { "a" }, + { "abc" }, + { "message digest" }, + { "abcdefghijklmnopqrstuvwxyz" }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" }, + { "12345678901234567890123456789012345678901234567890123456789012" \ + "345678901234567890" } +}; + +static const unsigned char md5_test_sum[7][16] = +{ + { 0xD4, 0x1D, 0x8C, 0xD9, 0x8F, 0x00, 0xB2, 0x04, + 0xE9, 0x80, 0x09, 0x98, 0xEC, 0xF8, 0x42, 0x7E }, + { 0x0C, 0xC1, 0x75, 0xB9, 0xC0, 0xF1, 0xB6, 0xA8, + 0x31, 0xC3, 0x99, 0xE2, 0x69, 0x77, 0x26, 0x61 }, + { 0x90, 0x01, 0x50, 0x98, 0x3C, 0xD2, 0x4F, 0xB0, + 0xD6, 0x96, 0x3F, 0x7D, 0x28, 0xE1, 0x7F, 0x72 }, + { 0xF9, 0x6B, 0x69, 0x7D, 0x7C, 0xB7, 0x93, 0x8D, + 0x52, 0x5A, 0x2F, 0x31, 0xAA, 0xF1, 0x61, 0xD0 }, + { 0xC3, 0xFC, 0xD3, 0xD7, 0x61, 0x92, 0xE4, 0x00, + 0x7D, 0xFB, 0x49, 0x6C, 0xCA, 0x67, 0xE1, 0x3B }, + { 0xD1, 0x74, 0xAB, 0x98, 0xD2, 0x77, 0xD9, 0xF5, + 0xA5, 0x61, 0x1C, 0x2C, 0x9F, 0x41, 0x9D, 0x9F }, + { 0x57, 0xED, 0xF4, 0xA2, 0x2B, 0xE3, 0xC9, 0x55, + 0xAC, 0x49, 0xDA, 0x2E, 0x21, 0x07, 0xB6, 0x7A } +}; + +/* + * Checkup routine + */ +int md5_self_test( int verbose ) +{ + int i; + unsigned char md5sum[16]; + + for( i = 0; i < 7; i++ ) + { + if( verbose != 0 ) + printf( " MD5 test #%d: ", i + 1 ); + + md5( (unsigned char *) md5_test_str[i], + strlen( md5_test_str[i] ), md5sum ); + + if( memcmp( md5sum, md5_test_sum[i], 16 ) != 0 ) + { + if( verbose != 0 ) + printf( "failed\n" ); + + return( 1 ); + } + + if( verbose != 0 ) + printf( "passed\n" ); + } + + if( verbose != 0 ) + printf( "\n" ); + + return( 0 ); +} +#else +int md5_self_test( int verbose ) +{ + return( 0 ); +} +#endif diff --git a/opcplusplus/Inc/md5/md5.h b/opcplusplus/Inc/md5/md5.h new file mode 100644 index 0000000..8699e0d --- /dev/null +++ b/opcplusplus/Inc/md5/md5.h @@ -0,0 +1,121 @@ +/** + * \file md5.h + */ +#ifndef _MD5_H +#define _MD5_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD5 context structure + */ +typedef struct +{ + unsigned long total[2]; /*!< number of bytes processed */ + unsigned long state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ + unsigned char ipad[64]; /*!< HMAC: inner padding */ + unsigned char opad[64]; /*!< HMAC: outer padding */ +} +md5_context; + +/** + * \brief MD5 context setup + * + * \param ctx context to be initialized + */ +void md5_starts( md5_context *ctx ); + +/** + * \brief MD5 process buffer + * + * \param ctx MD5 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void md5_update( md5_context *ctx, unsigned char *input, int ilen ); + +/** + * \brief MD5 final digest + * + * \param ctx MD5 context + * \param output MD5 checksum result + */ +void md5_finish( md5_context *ctx, unsigned char *output ); + +/** + * \brief Output = MD5( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD5 checksum result + */ +void md5( unsigned char *input, int ilen, + unsigned char *output ); + +/** + * \brief Output = MD5( file contents ) + * + * \param path input file name + * \param output MD5 checksum result + * + * \return 0 if successful, 1 if fopen failed, + * or 2 if fread failed + */ +int md5_file( char *path, unsigned char *output ); + +/** + * \brief MD5 HMAC context setup + * + * \param ctx HMAC context to be initialized + * \param key HMAC secret key + * \param keylen length of the HMAC key + */ +void md5_hmac_starts( md5_context *ctx, + unsigned char *key, int keylen ); + +/** + * \brief MD5 HMAC process buffer + * + * \param ctx HMAC context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void md5_hmac_update( md5_context *ctx, + unsigned char *input, int ilen ); + +/** + * \brief MD5 HMAC final digest + * + * \param ctx HMAC context + * \param output MD5 HMAC checksum result + */ +void md5_hmac_finish( md5_context *ctx, unsigned char *output ); + +/** + * \brief Output = HMAC-MD5( hmac key, input buffer ) + * + * \param key HMAC secret key + * \param keylen length of the HMAC key + * \param input buffer holding the data + * \param ilen length of the input data + * \param output HMAC-MD5 result + */ +void md5_hmac( unsigned char *key, int keylen, + unsigned char *input, int ilen, + unsigned char *output ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int md5_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* md5.h */ diff --git a/opcplusplus/Inc/md5/opmd5.h b/opcplusplus/Inc/md5/opmd5.h new file mode 100644 index 0000000..a60b4a2 --- /dev/null +++ b/opcplusplus/Inc/md5/opmd5.h @@ -0,0 +1,47 @@ +///**************************************************************** +/// Copyright 2008 opGames LLC - All Rights Reserved +/// +/// Authors: Kevin Depue & Lucas Ellis +/// +/// File: opmd5.h +/// Date: 09/17/2007 +/// +/// Description: +/// +/// Wrapper for md5 stuff. +///**************************************************************** + +#ifndef _OPMD5_ +#define _OPMD5_ + +#include "md5.h" + +// Converts a string key to an md5 hash string. +inline string md5Encode(const string& key) +{ + unsigned char uc_hash[16]; + string hash; + char temp[3]; + + md5((unsigned char*) key.c_str(), (int)key.size(), &uc_hash[0]); + + for (int i = 0; i < 16; i++) + { + sprintf(&temp[0], "%x", uc_hash[i]); + + if (uc_hash[i] < 16) + { + hash += '0'; + hash += temp[0]; + } + else + { + hash += temp[0]; + hash += temp[1]; + } + } + + return hash; +} + +#endif \ No newline at end of file diff --git a/opcplusplus/Inc/opCPP.h b/opcplusplus/Inc/opCPP.h index 6c57639..24b0ec8 100644 --- a/opcplusplus/Inc/opCPP.h +++ b/opcplusplus/Inc/opCPP.h @@ -26,34 +26,44 @@ #include "opstl.h" // boost -#include "boost/filesystem/path.hpp" -#include "boost/filesystem/operations.hpp" -#include "boost/filesystem/exception.hpp" -#include "boost/filesystem/convenience.hpp" -#include "boost/filesystem/fstream.hpp" -using boost::filesystem::path; +//#include "boost/filesystem/path.hpp" +//#include "boost/filesystem/operations.hpp" +//#include "boost/filesystem/exception.hpp" +//#include "boost/filesystem/convenience.hpp" +//#include "boost/filesystem/fstream.hpp" +//using boost::filesystem::path; + +//filesystem +#include +using filesystem::path; // md5 stuff.. #include "opmd5.h" // opCPP includes +#include "Declarations.h" #include "opTime.h" #include "Macros.h" #include "Platforms.h" #include "File.h" #include "Namespaces.h" #include "Delegates.h" +#include "Exceptions.h" #include "MemoryTracker.h" #include "Parameters.h" #include "Stream.h" #include "Demo.h" -#include "Exceptions.h" #include "Tokens.h" #include "opLog.h" #include "Beta.h" #include "Version.h" #include "opError.h" #include "Scanner.h" +#include "Visitors.h" +#include "opNode.h" +#include "Concepts.h" +#include "BasicNodes.h" +#include "StatementNodes.h" #include "UtilityInterfaces.h" #include "SymbolTracker.h" #include "Interfaces.h" @@ -61,17 +71,13 @@ using boost::filesystem::path; #include "DialectInterfaces.h" #include "DialectStatementInterfaces.h" #include "Contexts.h" -#include "Visitors.h" -#include "opNode.h" #include "FileNodes.h" #include "DialectTracker.h" -#include "BasicNodes.h" #include "DialectNodes.h" #include "ModifierNodes.h" #include "DialectModifierNodes.h" #include "ExtensionNodes.h" #include "MacroNodes.h" -#include "StatementNodes.h" #include "DialectStatementNodes.h" #include "opNodeInlines.h" #include "Paths.h" @@ -82,6 +88,10 @@ using boost::filesystem::path; #include "Modifiers.h" #include "Timer.h" #include "InterfaceInlines.h" +#include "ContextInlines.h" +#include "StatementInlines.h" +#include "DialectInterfacesInlines.h" +#include "DialectStatementInlines.h" #include "RegexSupport.h" #include "MacroInterfaces.h" #include "Walkers.h" diff --git a/opcplusplus/Inc/opNode.h b/opcplusplus/Inc/opNode.h index 871214f..373ecb3 100644 --- a/opcplusplus/Inc/opNode.h +++ b/opcplusplus/Inc/opNode.h @@ -12,6 +12,8 @@ /// class contains all base functionality. ///**************************************************************** +#pragma once + ///========================================== /// Base node classes ///========================================== diff --git a/opcplusplus/Inc/opNodeInlines.h b/opcplusplus/Inc/opNodeInlines.h index 8971ff2..d2690e1 100644 --- a/opcplusplus/Inc/opNodeInlines.h +++ b/opcplusplus/Inc/opNodeInlines.h @@ -12,6 +12,11 @@ /// opNode base class. ///**************************************************************** +#pragma once + +#include "Timer.h" +#include "Paths.h" + /// /// opNodeBase /// @@ -500,8 +505,8 @@ inline bool opNode::IgnoreUntil() { return IgnoreUntilBase< TokenListNode > + TokenListNode + > > (); } @@ -512,7 +517,7 @@ inline bool opNode::IgnoreUntil() return IgnoreUntilBase< TokenListNode > > > (); @@ -525,7 +530,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > (); @@ -539,7 +544,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > (); @@ -554,7 +559,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > (); @@ -570,7 +575,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > (); @@ -587,7 +592,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > (); @@ -605,7 +610,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > (); @@ -624,7 +629,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > > (); @@ -644,7 +649,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > > > (); @@ -665,7 +670,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > > > > (); @@ -687,7 +692,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > > > > > (); @@ -710,7 +715,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > > > > > > (); @@ -734,7 +739,7 @@ inline bool opNode::IgnoreUntil() TokenListNode > > > > > > > > > > > > > > > (); @@ -3387,17 +3392,17 @@ inline T* FileNode::Load(const opString& file, opScanner::ScanMode scanmode, boo //fix up the inputname path filepath = file.GetString(); - filepath.normalize(); + //FIXME: filepath.normalize(); rootNode->InputName = to_relative_path(filepath).string(); path inputpath = rootNode->InputName.GetString(); - rootNode->bAbsolutePath = inputpath.is_complete(); + rootNode->bAbsolutePath = inputpath.is_absolute(); //TODO: probably not correct - this is really ugly too. if(!rootNode->bAbsolutePath) { - path abspath = initial_path() / rootNode->InputName.GetString(); - abspath.normalize(); + path abspath = std::filesystem::current_path() / rootNode->InputName.GetString(); + //FIXME: abspath.normalize(); rootNode->AbsoluteFileName = abspath.string(); } diff --git a/opcplusplus/Inc/opTime.h b/opcplusplus/Inc/opTime.h index 0c6088f..b883e86 100644 --- a/opcplusplus/Inc/opTime.h +++ b/opcplusplus/Inc/opTime.h @@ -11,6 +11,8 @@ /// Time-related stuff (not to be confused with timers). ///**************************************************************** +#pragma once + class opTimeUtility { public: diff --git a/opcplusplus/Inc/opstl/opArray.h b/opcplusplus/Inc/opstl/opArray.h new file mode 100644 index 0000000..b0ed716 --- /dev/null +++ b/opcplusplus/Inc/opstl/opArray.h @@ -0,0 +1,547 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opArray.h +// Date: 04/17/2007 +// +// Description: +// +// Wrapper for standard class. +//**************************************************************** + +#ifndef __OPSTL_OPARRAY__ +#define __OPSTL_OPARRAY__ + +#include "opstlcommon.h" +#include + +namespace opstl +{ + +// stl vector wrapper +template +class opArray +{ +public: + /**** typedefs ****/ + + typedef vector array_type; + typedef typename array_type::size_type size_type; + typedef typename array_type::iterator iterator; + typedef typename array_type::const_iterator const_iterator; + typedef typename array_type::reverse_iterator reverse_iterator; + typedef typename array_type::const_reverse_iterator const_reverse_iterator; + typedef typename array_type::reference reference; + typedef typename array_type::const_reference const_reference; + typedef typename array_type::value_type value_type; + typedef pointer_iterator pointer_iterator; + typedef const_pointer_iterator const_pointer_iterator; + typedef reverse_pointer_iterator reverse_pointer_iterator; + typedef const_reverse_pointer_iterator const_reverse_pointer_iterator; + + /**** construction ****/ + + opArray() {} + + opArray(const array_type& inarray) + : a( inarray ) {} + + opArray(const opArray& inarray) + : a(inarray.a) {} + + template + opArray(InputIterator first, InputIterator last) + : a(first, last) {} + + //NOTE: fix for compiling opC++. +#ifndef OPCPP + opArray(const vector& inarray) + { + a.resize( inarray.size() ); + + copy( inarray.begin(), inarray.end(), a.begin() ); + } +#endif + + /**** destruction ****/ + + ~opArray() + { + a.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return a.begin(); + } + + iterator Last() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + iterator End() + { + return a.end(); + } + + const_iterator Begin() const + { + return a.begin(); + } + + const_iterator Last() const + { + if (IsEmpty()) + return End(); + + return --End(); + } + + const_iterator End() const + { + return a.end(); + } + + reverse_iterator RBegin() + { + return a.rbegin(); + } + + reverse_iterator RLast() + { + if (IsEmpty()) + return REnd(); + + return --REnd(); + } + + reverse_iterator REnd() + { + return a.rend(); + } + + const_reverse_iterator RBegin() const + { + return a.rbegin(); + } + + const_reverse_iterator RLast() const + { + if (IsEmpty()) + return REnd(); + + return --REnd(); + } + + const_reverse_iterator REnd() const + { + return a.rend(); + } + + int Size() const + { + return (int) a.size(); + } + + int Length() const + { + return (int) a.size(); + } + + int MemSize() const + { + return Size() * sizeof( T ); + } + + int MaxSize() const + { + return (int) a.max_size(); + } + + bool IsEmpty() const + { + return a.empty(); + } + + int Capacity() const + { + return (int) a.capacity(); + } + + void Reserve(size_type num) + { + a.reserve(num); + } + + T& Front() + { + return a.front(); + } + + T& Back() + { + return a.back(); + } + + const T& Front() const + { + return a.front(); + } + + const T& Back() const + { + return a.back(); + } + + void PushBack(const T& inval) + { + a.push_back(inval); + } + + T PopBack() + { + T outval = a.back(); + + a.pop_back(); + + return outval; + } + + void Swap(opArray& inarray) + { + a.swap(inarray.a); + } + + void Insert(iterator position, const T& inval) + { + a.insert(position, inval); + } + + void InsertAfter(iterator position, const T& inval) + { + if (position == a.end()) + a.push_back(inval); + else + { + iterator pos = position; + + ++pos; + + a.insert(pos, inval); + } + } + + template + void Insert(iterator position, InputIterator first, InputIterator last) + { + a.insert(position, first, last); + } + + iterator Erase(iterator position) + { + return a.erase(position); + } + + iterator Erase(int index) + { + return a.erase( a.begin() + index ); + } + + iterator Erase(iterator first, iterator last) + { + return a.erase(first, last); + } + + bool Erase(const T& t) + { + iterator i = Find( t ); + + if ( i != a.end() ) + { + a.erase( i ); + + return true; + } + + return false; + } + + void Clear() + { + a.clear(); + } + + void Resize(size_type num) + { + a.resize(num); + } + + void Add(size_type num = 1) + { + a.resize( a.size() + num ); + } + + void AddZeroed(size_type num = 1) + { + a.resize( a.size() + num ); + memset( &a[ a.size() - num ], 0, num * sizeof( T ) ); + } + + void Sort() + { + sort(a.begin(), a.end()); + } + + template + void Sort(BinaryPredicate& predicate) + { + sort(a.begin(), a.end(), predicate); + } + + iterator Find(const T& inval) + { + return find(a.begin(), a.end(), inval); + } + + const_iterator Find(const T& inval) const + { + return find(a.begin(), a.end(), inval); + } + + reverse_iterator RFind(const T& inval) + { + return find(a.begin(), a.end(), inval); + } + + const_reverse_iterator RFind(const T& inval) const + { + return find(a.begin(), a.end(), inval); + } + + size_type FindIndex(const T& inval) + { + size_type size = a.size(); + + for (size_type i = 0; i < size; i++) + { + if ( a[ i ] == inval ) + return i; + } + + return -1; + } + + bool Contains(const T& inval) const + { + return Find(inval) != a.end(); + } + + array_type& GetArray() + { + return a; + } + + const array_type& GetArray() const + { + return a; + } + + void DeleteAll() + { + iterator i = a.begin(); + iterator end = a.end(); + + while (i != end) + { + delete *i; + ++i; + } + } + + /**** operator overloads ****/ + + T& operator [] (int i) + { + return a[i]; + } + + const T& operator [] (int i) const + { + return a[i]; + } + + T& operator [] (std::size_t i) + { + return a[i]; + } + + const T& operator [] (std::size_t i) const + { + return a[i]; + } + + friend bool operator == (const opArray& inarray1, const opArray& inarray2) + { + return inarray1.a == inarray2.a; + } + + friend bool operator < (const opArray& inarray1, const opArray& inarray2) + { + return inarray1.a < inarray2.a; + } + +private: + array_type a; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return a.begin(); + } + + iterator end() + { + return a.end(); + } + + const_iterator begin() const + { + return a.begin(); + } + + const_iterator end() const + { + return a.end(); + } + + reverse_iterator rbegin() + { + return a.rbegin(); + } + + reverse_iterator rend() + { + return a.rend(); + } + + const_reverse_iterator rbegin() const + { + return a.rbegin(); + } + + const_reverse_iterator rend() const + { + return a.rend(); + } + + size_type size() const + { + return a.size(); + } + + size_type max_size() const + { + return a.max_size(); + } + + bool empty() const + { + return a.empty(); + } + + size_type capacity() const + { + return a.capacity(); + } + + void reserve(size_type n) + { + a.reserve(n); + } + + reference front() + { + return a.front(); + } + + reference back() + { + return a.back(); + } + + const_reference front() const + { + return a.front(); + } + + const_reference back() const + { + return a.back(); + } + + void push_back(const T& inval) + { + a.push_back(inval); + } + + void pop_back() + { + a.pop_back(); + } + + void swap(array_type& inarray) + { + a.swap(inarray); + } + + iterator insert(iterator position, const T& inval) + { + return a.insert(position, inval); + } + + template + void insert(iterator position, InputIterator first, InputIterator last) + { + a.insert(position, first, last); + } + + void insert(iterator position, size_type n, const T& inval) + { + a.insert(position, n, inval); + } + + iterator erase(iterator position) + { + return a.erase(position); + } + + iterator erase(iterator first, iterator last) + { + return a.erase(first, last); + } + + void clear() + { + a.clear(); + } + + void resize(size_type num, T t = T()) + { + a.resize(num, t); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPARRAY__ + diff --git a/opcplusplus/Inc/opstl/opDeque.h b/opcplusplus/Inc/opstl/opDeque.h new file mode 100644 index 0000000..47ed443 --- /dev/null +++ b/opcplusplus/Inc/opstl/opDeque.h @@ -0,0 +1,536 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opDeque.h +// Date: 01/09/2007 +// +// Description: +// +// Wrapper for standard class. +//**************************************************************** + +#ifndef __OPSTL_OPDEQUE__ +#define __OPSTL_OPDEQUE__ + +#include "opstlcommon.h" +#include + +namespace opstl +{ + +// stl deque wrapper +template +class opDeque +{ +public: + /**** typedefs ****/ + + typedef deque deque_type; + typedef typename deque_type::size_type size_type; + typedef typename deque_type::iterator iterator; + typedef typename deque_type::const_iterator const_iterator; + typedef typename deque_type::reverse_iterator reverse_iterator; + typedef typename deque_type::const_reverse_iterator const_reverse_iterator; + typedef typename deque_type::reference reference; + typedef typename deque_type::const_reference const_reference; + typedef typename deque_type::value_type value_type; + typedef pointer_iterator pointer_iterator; + typedef const_pointer_iterator const_pointer_iterator; + typedef reverse_pointer_iterator reverse_pointer_iterator; + typedef const_reverse_pointer_iterator const_reverse_pointer_iterator; + + /**** construction ****/ + + opDeque() {} + + opDeque(const deque_type& indeque) + : d(indeque) {} + + opDeque(const opDeque& indeque) + : d(indeque.d) {} + + template + opDeque(InputIterator first, InputIterator last) + : d(first, last) {} + + /**** destruction ****/ + + ~opDeque() + { + d.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return d.begin(); + } + + iterator Last() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + iterator End() + { + return d.end(); + } + + const_iterator Begin() const + { + return d.begin(); + } + + const_iterator Last() const + { + if (IsEmpty()) + return End(); + + return --End(); + } + + const_iterator End() const + { + return d.end(); + } + + reverse_iterator RBegin() + { + return d.rbegin(); + } + + reverse_iterator RLast() + { + if (IsEmpty()) + return REnd(); + + return --REnd(); + } + + reverse_iterator REnd() + { + return d.rend(); + } + + const_reverse_iterator RBegin() const + { + return d.rbegin(); + } + + const_reverse_iterator RLast() const + { + if (IsEmpty()) + return REnd(); + + return --REnd(); + } + + const_reverse_iterator REnd() const + { + return d.rend(); + } + + int Size() const + { + return (int) d.size(); + } + + int Length() const + { + return (int) d.size(); + } + + int MaxSize() const + { + return (int) d.max_size(); + } + + bool IsEmpty() const + { + return d.empty(); + } + + T& Front() + { + return d.front(); + } + + T& Back() + { + return d.back(); + } + + const T& Front() const + { + return d.front(); + } + + const T& Back() const + { + return d.back(); + } + + void PushFront(const T& inval) + { + d.push_front(inval); + } + + void PushBack(const T& inval) + { + d.push_back(inval); + } + + T PopFront() + { + T outval = d.front(); + + d.pop_front(); + + return outval; + } + + T PopBack() + { + T outval = d.back(); + + d.pop_back(); + + return outval; + } + + void Swap(opDeque& indeque) + { + d.swap(indeque.d); + } + + void Insert(iterator position, const T& inval) + { + d.insert(position, inval); + } + + void InsertAfter(iterator position, const T& inval) + { + if (position == d.end()) + d.push_back(inval); + else + { + iterator pos = position; + + ++pos; + + d.insert(pos, inval); + } + } + + template + void Insert(iterator position, InputIterator first, InputIterator last) + { + d.insert(position, first, last); + } + + iterator Erase(iterator position) + { + return d.erase(position); + } + + iterator Erase(int index) + { + return d.erase( d.begin() + index ); + } + + iterator Erase(iterator first, iterator last) + { + return d.erase(first, last); + } + + bool Erase(const T& t) + { + iterator i = Find( t ); + + if ( i != d.end() ) + { + d.erase( i ); + + return true; + } + + return false; + } + + void Clear() + { + d.clear(); + } + + void Resize(size_type num) + { + d.resize(num); + } + + void Add(size_type num = 1) + { + d.resize( d.size() + num ); + } + + void AddZeroed(size_type num = 1) + { + d.resize( d.size() + num ); + memset( &d[ d.size() - num ], 0, num * sizeof( T ) ); + } + + void Sort() + { + sort(d.begin(), d.end()); + } + + template + void Sort(BinaryPredicate& predicate) + { + sort(d.begin(), d.end(), predicate); + } + + iterator Find(const T& inval) + { + return find(d.begin(), d.end(), inval); + } + + const_iterator Find(const T& inval) const + { + return find(d.begin(), d.end(), inval); + } + + reverse_iterator RFind(const T& inval) + { + return find(d.begin(), d.end(), inval); + } + + const_reverse_iterator RFind(const T& inval) const + { + return find(d.begin(), d.end(), inval); + } + + size_type FindIndex(const T& inval) + { + size_type size = d.size(); + + for (size_type i = 0; i < size; i++) + { + if ( d[ i ] == inval ) + return i; + } + + return -1; + } + + bool Contains(const T& inval) const + { + return Find(inval) != d.end(); + } + + deque_type& GetDeque() + { + return d; + } + + const deque_type& GetDeque() const + { + return d; + } + + void DeleteAll() + { + iterator i = d.begin(); + iterator end = d.end(); + + while (i != end) + { + delete *i; + ++i; + } + } + + /**** operator overloads ****/ + + T& operator [] (int i) + { + return d[i]; + } + + const T& operator [] (int i) const + { + return d[i]; + } + + T& operator [] (std::size_t i) + { + return d[i]; + } + + const T& operator [] (std::size_t i) const + { + return d[i]; + } + + friend bool operator == (const opDeque& indeque1, const opDeque& indeque2) + { + return indeque1.d == indeque2.d; + } + + friend bool operator < (const opDeque& indeque1, const opDeque& indeque2) + { + return indeque1.d < indeque2.d; + } + +private: + deque_type d; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return d.begin(); + } + + iterator end() + { + return d.end(); + } + + const_iterator begin() const + { + return d.begin(); + } + + const_iterator end() const + { + return d.end(); + } + + reverse_iterator rbegin() + { + return d.rbegin(); + } + + reverse_iterator rend() + { + return d.rend(); + } + + const_reverse_iterator rbegin() const + { + return d.rbegin(); + } + + const_reverse_iterator rend() const + { + return d.rend(); + } + + size_type size() const + { + return d.size(); + } + + size_type max_size() const + { + return d.max_size(); + } + + bool empty() const + { + return d.empty(); + } + + reference front() + { + return d.front(); + } + + reference back() + { + return d.back(); + } + + const_reference front() const + { + return d.front(); + } + + const_reference back() const + { + return d.back(); + } + + void push_front(const T& inval) + { + d.push_front(inval); + } + + void push_back(const T& inval) + { + d.push_back(inval); + } + + void pop_front() + { + d.pop_front(); + } + + void pop_back() + { + d.pop_back(); + } + + void swap(deque_type& indeque) + { + d.swap(indeque); + } + + iterator insert(iterator position, const T& inval) + { + return d.insert(position, inval); + } + + template + void insert(iterator position, InputIterator first, InputIterator last) + { + d.insert(position, first, last); + } + + void insert(iterator position, size_type n, const T& inval) + { + d.insert(position, n, inval); + } + + iterator erase(iterator position) + { + return d.erase(position); + } + + iterator erase(iterator first, iterator last) + { + return d.erase(first, last); + } + + void clear() + { + d.clear(); + } + + void resize(size_type num, T t = T()) + { + d.resize(num, t); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPDEQUE__ + diff --git a/opcplusplus/Inc/opstl/opHash.h b/opcplusplus/Inc/opstl/opHash.h new file mode 100644 index 0000000..b082c76 --- /dev/null +++ b/opcplusplus/Inc/opstl/opHash.h @@ -0,0 +1,662 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opHash.h +// Date: 01/03/2007 +// +// Description: +// +// Wrapper for STL and classes. +//**************************************************************** + +#ifndef __OPSTL_OPHASH__ +#define __OPSTL_OPHASH__ + +#include "opstlcommon.h" + +// Include correct hash containers +// based on compiler. +#if defined(OPSTL_GNU_LINUX) + #include + #include + using namespace std::tr1; + +#elif defined(OPSTL_INTEL_LINUX) + #include + #include + using namespace __gnu_cxx; +#else + #include + #include + using namespace stdext; +#endif + +namespace opstl +{ + +//========================================== +// opHasher +//========================================== + +// Specialize this if you want to change +// your hash function for type T. +template +struct opHashFunction +{ + static size_t Hash(const T& t) + { + return (size_t) t; + } +}; + +// Specialize this if you want to change +// your comparison predicate for type T. +// NOTE: This is different depending on your +// OS! In Windows, it's <, in GNU Linux, +// it's ==. +template +struct opHashCompare +{ + static bool Compare(const T& t1, const T& t2) + { + return t1 < t2; + } +}; + +// This class tells the hash classes how to +// hash a value and compare via '<'. +template +struct opHasher +{ + // This function returns the hash value. + size_t operator()(const T& t) const + { + return opHashFunction::Hash(t); + } + + // This function returns true if t1 is < t2. + // t1 and t2 are keys. + bool operator()(const T& t1, const T& t2) const + { + return opHashCompare::Compare(t1, t2); + } + + enum + { // parameters for hash table + bucket_size = 4, // 0 < bucket_size + min_buckets = 8 // min_buckets = must be a power of 2, and greater than 0 + }; +}; + +//========================================== +// opHashSet +//========================================== + +template +class opHashSet +{ +public: + /**** typedefs ****/ + +#ifdef OPSTL_GNU_LINUX + typedef unordered_set, opHasher > hash_set_type; +#else + typedef unordered_set > hash_set_type; +#endif + typedef typename hash_set_type::key_type key_type; + typedef typename hash_set_type::value_type value_type; + typedef typename hash_set_type::size_type size_type; + typedef typename hash_set_type::iterator iterator; + typedef typename hash_set_type::const_iterator const_iterator; + typedef typename hash_set_type::reference reference; + typedef typename hash_set_type::const_reference const_reference; + typedef pointer_iterator pointer_iterator; + typedef const_pointer_iterator const_pointer_iterator; + + /**** construction ****/ + + opHashSet() {} + + opHashSet(const hash_set_type& inhashset) + : hs(inhashset) {} + + opHashSet(const opHashSet& inhashset) + : hs(inhashset.hs) {} + + template + opHashSet(InputIterator first, InputIterator last) + : hs(first, last) {} + + /**** destruction ****/ + + ~opHashSet() + { + hs.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return hs.begin(); + } + + iterator Last() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + iterator End() + { + return hs.end(); + } + + int Size() const + { + return (int) hs.size(); + } + + int Length() const + { + return (int) hs.size(); + } + + int MaxSize() const + { + return (int) hs.max_size(); + } + + bool IsEmpty() const + { + return hs.empty(); + } + + void Swap(opHashSet& inhashset) + { + hs.swap(inhashset.hs); + } + + iterator Insert(const Key& key) + { + pair r = hs.insert(key); + + return r.first; + } + + template + void Insert(InputIterator first, InputIterator last) + { + hs.insert(first, last); + } + + void Erase(iterator position) + { + hs.erase(position); + } + + void Erase(const Key& key) + { + hs.erase(key); + } + + void Erase(iterator first, iterator last) + { + hs.erase(first, last); + } + + void Clear() + { + hs.clear(); + } + + iterator Find(const Key& key) + { + return hs.find(key); + } + + const_iterator Find(const Key& key) const + { + return hs.find(key); + } + + bool Contains(const Key& key) const + { + return hs.find(key) != hs.end(); + } + + int Count(const Key& key) const + { + return (int) hs.count(key); + } + + hash_set_type& GetHashSet() + { + return hs; + } + + const hash_set_type& GetHashSet() const + { + return hs; + } + + void DeleteAll() + { + iterator i = hs.begin(); + iterator end = hs.end(); + + while (i != end) + { + delete *i; + ++i; + } + } + + /**** operator overloads ****/ + + friend bool operator == (const opHashSet& ht1, const opHashSet& ht2) + { + return ht1.hs == ht2.hs; + } + +private: + hash_set_type hs; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() const + { + return hs.begin(); + } + + iterator end() const + { + return hs.end(); + } + + size_type size() const + { + return hs.size(); + } + + size_type max_size() const + { + return hs.max_size(); + } + + bool empty() const + { + return hs.empty(); + } + + void swap(const hash_set_type& inhashset) + { + hs.swap(inhashset.hs); + } + + pair insert(const value_type& key) + { + return hs.insert(key); + } + + template + void insert(InputIterator first, InputIterator last) + { + hs.insert(first, last); + } + + void erase(iterator position) + { + hs.erase(position); + } + + size_type erase(const key_type& key) + { + return hs.erase(key); + } + + void erase(iterator first, iterator last) + { + hs.erase(first, last); + } + + void clear() + { + hs.clear(); + } + + iterator find(const key_type& key) + { + return hs.find(key); + } + + const_iterator find(const key_type& key) const + { + return hs.find(key); + } + + size_type count(const key_type& key) const + { + return hs.count(key); + } +}; + +//========================================== +// opHashTable +//========================================== + +template +class opHashTable +{ +public: + /**** typedefs ****/ + +#ifdef OPSTL_GNU_LINUX + typedef unordered_map, opHasher > hash_table_type; +#else + typedef unordered_map > hash_table_type; +#endif + typedef typename hash_table_type::key_type key_type; + typedef typename hash_table_type::value_type value_type; + typedef typename hash_table_type::size_type size_type; + typedef typename hash_table_type::iterator iterator; + typedef typename hash_table_type::const_iterator const_iterator; + typedef typename hash_table_type::reference reference; + typedef typename hash_table_type::const_reference const_reference; + + /**** construction ****/ + + opHashTable() {} + + opHashTable(const hash_table_type& inhashtable) + : ht(inhashtable) {} + + opHashTable(const opHashTable& inhashtable) + : ht(inhashtable.ht) {} + + template + opHashTable(InputIterator first, InputIterator last) + : ht(first, last) {} + + /**** destruction ****/ + + ~opHashTable() + { + ht.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return ht.begin(); + } + + iterator Last() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + iterator End() + { + return ht.end(); + } + + const_iterator Begin() const + { + return ht.begin(); + } + + const_iterator Last() const + { + if (IsEmpty()) + return End(); + + return --End(); + } + + const_iterator End() const + { + return ht.end(); + } + + int Size() const + { + return (int) ht.size(); + } + + int Length() const + { + return (int) ht.size(); + } + + int MaxSize() const + { + return (int) ht.max_size(); + } + + bool IsEmpty() const + { + return ht.empty(); + } + + void Swap(opHashTable& inhashtable) + { + ht.swap(inhashtable.ht); + } + + iterator Insert(const Key& inkey, const Value& inval) + { + pair r = ht.insert(pair(inkey, inval)); + + return r.first; + } + + template + void Insert(InputIterator first, InputIterator last) + { + ht.insert(first, last); + } + + void Erase(iterator position) + { + ht.erase(position); + } + + void Erase(const Key& inkey) + { + ht.erase(inkey); + } + + void Erase(iterator first, iterator last) + { + ht.erase(first, last); + } + + void Clear() + { + ht.clear(); + } + + iterator Find(const Key& inkey) + { + return ht.find(inkey); + } + + const_iterator Find(const Key& inkey) const + { + return ht.find(inkey); + } + + bool Find(const Key& inkey, Value& inval) const + { + const_iterator iter = ht.find(inkey); + bool result = (iter != ht.end()); + + if (result) + inval = iter->second; + + return result; + } + + bool Contains(const Key& inkey) const + { + return ht.find(inkey) != ht.end(); + } + + int Count(const Key& inkey) const + { + return (int) ht.count(inkey); + } + + hash_table_type& GetHashTable() + { + return ht; + } + + const hash_table_type& GetHashTable() const + { + return ht; + } + + void DeleteAllKeys() + { + iterator i = ht.begin(); + iterator end = ht.end(); + + while (i != end) + { + delete i->first; + ++i; + } + } + + void DeleteAllValues() + { + iterator i = ht.begin(); + iterator end = ht.end(); + + while (i != end) + { + delete i->second; + ++i; + } + } + + /**** operator overloads ****/ + + Value& operator [] (const Key& inkey) + { + return ht[inkey]; + } + + friend bool operator == (const opHashTable& ht1, const opHashTable& ht2) + { + return ht1.ht == ht2.ht; + } + +private: + hash_table_type ht; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return ht.begin(); + } + + iterator end() + { + return ht.end(); + } + + const_iterator begin() const + { + return ht.begin(); + } + + const_iterator end() const + { + return ht.end(); + } + + size_type size() const + { + return ht.size(); + } + + size_type max_size() const + { + return ht.max_size(); + } + + bool empty() const + { + return ht.empty(); + } + + void swap(const hash_table_type& inhashtable) + { + ht.swap(inhashtable.ht); + } + + pair insert(const value_type& inval) + { + return ht.insert(inval); + } + + template + void insert(InputIterator first, InputIterator last) + { + ht.insert(first, last); + } + + void erase(iterator position) + { + ht.erase(position); + } + + size_type erase(const key_type& inkey) + { + ht.erase(inkey); + } + + void erase(iterator first, iterator last) + { + ht.erase(first, last); + } + + void clear() + { + ht.clear(); + } + + iterator find(const key_type& inkey) + { + return ht.find(inkey); + } + + const_iterator find(const key_type& inkey) const + { + return ht.find(inkey); + } + + size_type count(const key_type& inkey) const + { + return ht.count(inkey); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPHASH__ + diff --git a/opcplusplus/Inc/opstl/opInterfaces.h b/opcplusplus/Inc/opstl/opInterfaces.h new file mode 100644 index 0000000..81dfdb3 --- /dev/null +++ b/opcplusplus/Inc/opstl/opInterfaces.h @@ -0,0 +1,131 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: Interfaces.h +// Date: 04/02/2007 +// +// Description: +// +// opSTL Interfaces +//**************************************************************** + +#ifndef __OPSTL_OPINTERFACES__ +#define __OPSTL_OPINTERFACES__ + +namespace opstl +{ + +//========================================== +// pointer_iterator +//========================================== + +template +class pointer_iterator : public Iterator +{ +public: + /**** construction ****/ + + pointer_iterator() + { + } + + pointer_iterator(Iterator iter) + : Iterator(iter) + { + } + + /**** operator overloads ****/ + + T operator -> () const + { + return *(*this); + } +}; + +//========================================== +// const_pointer_iterator +//========================================== + +template +class const_pointer_iterator : public Iterator +{ +public: + /**** construction ****/ + + const_pointer_iterator() + { + } + + const_pointer_iterator(Iterator iter) + : Iterator(iter) + { + } + + /**** operator overloads ****/ + + const T operator -> () const + { + return *(*this); + } +}; + +//========================================== +// reverse_pointer_iterator +//========================================== + +template +class reverse_pointer_iterator : public Iterator +{ +public: + /**** construction ****/ + + reverse_pointer_iterator() + { + } + + reverse_pointer_iterator(Iterator iter) + : Iterator(iter) + { + } + + /**** operator overloads ****/ + + T operator -> () const + { + return *(*this); + } +}; + +//========================================== +// const_reverse_pointer_iterator +//========================================== + +template +class const_reverse_pointer_iterator : public Iterator +{ +public: + /**** construction ****/ + + const_reverse_pointer_iterator() + { + } + + const_reverse_pointer_iterator(Iterator iter) + : Iterator(iter) + { + } + + /**** operator overloads ****/ + + const T operator -> () const + { + return *(*this); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPINTERFACES__ + diff --git a/opcplusplus/Inc/opstl/opList.h b/opcplusplus/Inc/opstl/opList.h new file mode 100644 index 0000000..0a3a7c0 --- /dev/null +++ b/opcplusplus/Inc/opstl/opList.h @@ -0,0 +1,630 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opList.h +// Date: 02/23/2007 +// +// Description: +// +// opList - wrapper for STL class +//**************************************************************** + +#ifndef __OPSTL_OPLIST__ +#define __OPSTL_OPLIST__ + +#include "opstlcommon.h" +#include + +namespace opstl +{ + +//========================================== +// opList +//========================================== + +// stl list wrapper +template +class opList +{ +public: + /**** typedefs ****/ + + typedef list list_type; + typedef typename list_type::size_type size_type; + typedef typename list_type::iterator iterator; + typedef typename list_type::const_iterator const_iterator; + typedef typename list_type::reverse_iterator reverse_iterator; + typedef typename list_type::const_reverse_iterator const_reverse_iterator; + typedef typename list_type::reference reference; + typedef typename list_type::const_reference const_reference; + typedef typename list_type::value_type value_type; + typedef pointer_iterator pointer_iterator; + typedef const_pointer_iterator const_pointer_iterator; + typedef reverse_pointer_iterator reverse_pointer_iterator; + typedef const_reverse_pointer_iterator const_reverse_pointer_iterator; + + /**** construction ****/ + + opList() {} + + opList(const list_type& inlist) + : cont(inlist) {} + + opList(const opList& inlist) + : cont(inlist.cont) {} + + template + opList(InputIterator first, InputIterator last) + : cont(first, last) {} + + /**** destruction ****/ + + ~opList() + { + cont.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return cont.begin(); + } + + iterator Last() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + iterator End() + { + return cont.end(); + } + + const_iterator Begin() const + { + return cont.begin(); + } + + const_iterator Last() const + { + if (IsEmpty()) + return End(); + + return --End(); + } + + const_iterator End() const + { + return cont.end(); + } + + reverse_iterator RBegin() + { + return cont.rbegin(); + } + + reverse_iterator RLast() + { + if (IsEmpty()) + return REnd(); + + return --REnd(); + } + + reverse_iterator REnd() + { + return cont.rend(); + } + + const_reverse_iterator RBegin() const + { + return cont.rbegin(); + } + + const_reverse_iterator RLast() const + { + if (IsEmpty()) + return REnd(); + + return --REnd(); + } + + const_reverse_iterator REnd() const + { + return cont.rend(); + } + + int Size() const + { + return (int) cont.size(); + } + + int Length() const + { + return (int) cont.size(); + } + + int MaxSize() const + { + return (int) cont.max_size(); + } + + bool IsEmpty() const + { + return cont.empty(); + } + + T& Front() + { + return cont.front(); + } + + T& Back() + { + return cont.back(); + } + + const T& Front() const + { + return cont.front(); + } + + const T& Back() const + { + return cont.back(); + } + + void PushFront(const T& inval) + { + cont.push_front(inval); + } + + void PushBack(const T& inval) + { + cont.push_back(inval); + } + + T PopFront() + { + T outval = cont.front(); + + cont.pop_front(); + + return outval; + } + + T PopBack() + { + T outval = cont.back(); + + cont.pop_back(); + + return outval; + } + + void Swap(opList& inlist) + { + cont.swap(inlist.cont); + } + + void Insert(iterator position, const T& inval) + { + cont.insert(position, inval); + } + + template + void Insert(iterator position, InputIterator first, InputIterator last) + { + cont.insert(position, first, last); + } + + void InsertAfter(iterator position, const T& inval) + { + if (position == cont.end()) + cont.push_back(inval); + else + { + iterator pos = position; + + ++pos; + + cont.insert(pos, inval); + } + } + + iterator Erase(iterator position) + { + return cont.erase(position); + } + + iterator Erase(iterator first, iterator last) + { + return cont.erase(first, last); + } + + bool Erase(const T& t) + { + iterator i = Find( t ); + + if ( i != cont.end() ) + { + cont.erase( i ); + + return true; + } + + return false; + } + + void Clear() + { + cont.clear(); + } + + void Resize(int num) + { + cont.resize(num); + } + + void Splice(iterator position, opList& inlist) + { + cont.splice(position, inlist.cont); + } + + void Splice(iterator position, opList& inlist, iterator inval) + { + cont.splice(position, inlist.cont, inval); + } + + void Splice(iterator position, opList& inlist, iterator first, iterator last) + { + cont.splice(position, inlist.cont, first, last); + } + + void Remove(const T& inval) + { + cont.remove(inval); + } + + template + void RemoveIf(Predicate pred) + { + cont.remove_if(pred); + } + + void Unique() + { + cont.unique(); + } + + template + void Unique(BinaryPredicate compare) + { + cont.unique(compare); + } + + void Merge(opList& inlist) + { + cont.merge(inlist.cont); + } + + template + void Merge(opList& inlist, BinaryPredicate compare) + { + cont.merge(inlist.cont, compare); + } + + void Reverse() + { + cont.reverse(); + } + + void Sort() + { + cont.sort(); + } + + template + void Sort(BinaryPredicate& predicate) + { + cont.sort(predicate); + } + + iterator Find(const T& inval) + { + return find(cont.begin(), cont.end(), inval); + } + + const_iterator Find(const T& inval) const + { + return find(cont.begin(), cont.end(), inval); + } + + reverse_iterator RFind(const T& inval) + { + return find(cont.begin(), cont.end(), inval); + } + + const_reverse_iterator RFind(const T& inval) const + { + return find(cont.begin(), cont.end(), inval); + } + + bool Contains(const T& inval) const + { + return Find(inval) != cont.end(); + } + + list_type& GetList() + { + return cont; + } + + const list_type& GetList() const + { + return cont; + } + + void DeleteAll() + { + iterator i = cont.begin(); + iterator end = cont.end(); + + while (i != end) + { + delete *i; + ++i; + } + } + + //call this instead of size on linux! + bool HasSize(int num) const + { +#if defined(OPSTL_GNU_LINUX) || defined(OPSTL_INTEL_LINUX) + const_iterator it = begin(); + int i = 0; + while(i < num) + { + if(it == end()) + return false; + ++i; + ++it; + } + + return true; +#else + return Size() >= num; +#endif + } + + /**** operator overloads ****/ + + friend bool operator == (const opList& inlist1, const opList& inlist2) + { + return inlist1.cont == inlist2.cont; + } + + friend bool operator < (const opList& inlist1, const opList& inlist2) + { + return inlist1.cont < inlist2.cont; + } + +private: + /**** data ****/ + + list_type cont; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return cont.begin(); + } + + iterator end() + { + return cont.end(); + } + + const_iterator begin() const + { + return cont.begin(); + } + + const_iterator end() const + { + return cont.end(); + } + + reverse_iterator rbegin() + { + return cont.rbegin(); + } + + reverse_iterator rend() + { + return cont.rend(); + } + + const_reverse_iterator rbegin() const + { + return cont.rbegin(); + } + + const_reverse_iterator rend() const + { + return cont.rend(); + } + + size_type size() const + { + return cont.size(); + } + + size_type max_size() const + { + return cont.max_size(); + } + + bool empty() const + { + return cont.empty(); + } + + reference front() + { + return cont.front(); + } + + reference back() + { + return cont.back(); + } + + const_reference front() const + { + return cont.front(); + } + + const_reference back() const + { + return cont.back(); + } + + void push_front(const T& inval) + { + cont.push_front(inval); + } + + void push_back(const T& inval) + { + cont.push_back(inval); + } + + void pop_front() + { + cont.pop_front(); + } + + void pop_back() + { + cont.pop_back(); + } + + void swap(list_type& inlist) + { + cont.swap(inlist); + } + + iterator insert(iterator position, const T& inval) + { + return cont.insert(position, inval); + } + + template + void insert(iterator position, InputIterator first, InputIterator last) + { + cont.insert(position, first, last); + } + + void insert(iterator position, size_type n, const T& inval) + { + cont.insert(position, n, inval); + } + + iterator erase(iterator position) + { + return cont.erase(position); + } + + iterator erase(iterator first, iterator last) + { + return cont.erase(first, last); + } + + void clear() + { + cont.clear(); + } + + void resize(size_type num, T t = T()) + { + cont.resize(num, t); + } + + void splice(iterator position, list_type& inlist) + { + cont.splice(position, inlist); + } + + void splice(iterator position, list_type& inlist, iterator inval) + { + cont.splice(position, inlist, inval); + } + + void splice(iterator position, list_type& inlist, iterator first, iterator last) + { + cont.splice(position, inlist, first, last); + } + + void remove(const T& inval) + { + cont.remove(inval); + } + + template + void remove_if(Predicate pred) + { + cont.remove_if(pred); + } + + void unique() + { + cont.unique(); + } + + template + void unique(BinaryPredicate compare) + { + cont.unique(compare); + } + + void merge(list_type& inlist) + { + cont.merge(inlist); + } + + template + void merge(list_type& inlist, BinaryPredicate compare) + { + cont.merge(inlist, compare); + } + + void reverse() + { + cont.reverse(); + } + + void sort() + { + cont.sort(); + } + + template + void sort(BinaryPredicate compare) + { + cont.sort(compare); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPLIST__ + diff --git a/opcplusplus/Inc/opstl/opMap.h b/opcplusplus/Inc/opstl/opMap.h new file mode 100644 index 0000000..98e7fbc --- /dev/null +++ b/opcplusplus/Inc/opstl/opMap.h @@ -0,0 +1,749 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opMap.h +// Date: 11/26/2006 +// +// Description: +// +// Wrapper for STL class. +//**************************************************************** + +#ifndef __OPSTL_OPMAP__ +#define __OPSTL_OPMAP__ + +#include "opstlcommon.h" +#include + +namespace opstl +{ + +//========================================== +// opMapper +//========================================== + +// Specialize this if you want to change +// your less than predicate for type T. +template +struct opMapLessPredicate +{ + static bool Less(const T& t1, const T& t2) + { + return t1 < t2; + } +}; + +// This class tells the map classes how to +// compare keys. +template +struct opMapper +{ + // This function returns true if t1 is < t2. + // t1 and t2 are keys. + bool operator()(const T& t1, const T& t2) const + { + return opMapLessPredicate::Less(t1, t2); + } +}; + +//========================================== +// opMap +//========================================== + +// stl map wrapper +template +class opMap +{ +public: + /**** typedefs ****/ + typedef std::pair pair_type; + typedef OPSTL_MAP_ALLOCATOR( pair_type ) alloc_type; + typedef map, alloc_type > map_type; + typedef typename map_type::key_type key_type; + typedef typename map_type::value_type value_type; + typedef typename map_type::size_type size_type; + typedef typename map_type::iterator iterator; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::reverse_iterator reverse_iterator; + typedef typename map_type::const_reverse_iterator const_reverse_iterator; + typedef typename map_type::reference reference; + typedef typename map_type::const_reference const_reference; + + /**** construction ****/ + + opMap() {} + + opMap(const map_type& inmap) + : m(inmap) {} + + opMap(const opMap& inmap) + : m(inmap.m) {} + + template + opMap(InputIterator first, InputIterator last) + : m(first, last) {} + + /**** destruction ****/ + + ~opMap() + { + m.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return m.begin(); + } + + iterator End() + { + return m.end(); + } + + const_iterator Begin() const + { + return m.begin(); + } + + const_iterator End() const + { + return m.end(); + } + + reverse_iterator RBegin() + { + return m.rbegin(); + } + + reverse_iterator REnd() + { + return m.rend(); + } + + const_reverse_iterator RBegin() const + { + return m.rbegin(); + } + + const_reverse_iterator REnd() const + { + return m.rend(); + } + + int Size() const + { + return (int) m.size(); + } + + int MaxSize() const + { + return (int) m.max_size(); + } + + bool IsEmpty() const + { + return m.empty(); + } + + void Swap(opMap& inmap) + { + m.swap(inmap.m); + } + + iterator Insert(const Key& inkey, const Value& inval) + { + pair r = m.insert(pair(inkey, inval)); + + return r.first; + } + + iterator Insert(iterator position, const Key& inkey, const Value& inval) + { + return m.insert(position, pair(inkey, inval)); + } + + template + void InsertRange(InputIterator first, InputIterator last) + { + m.insert(first, last); + } + + void Erase(iterator position) + { + m.erase(position); + } + + void Erase(const Key& inkey) + { + m.erase(inkey); + } + + void Erase(iterator first, iterator last) + { + m.erase(first, last); + } + + void Clear() + { + m.clear(); + } + + iterator Find(const Key& inkey) + { + return m.find(inkey); + } + + const_iterator Find(const Key& inkey) const + { + return m.find(inkey); + } + + bool Find(const Key& inkey, Value& inval) const + { + const_iterator iter = m.find(inkey); + bool result = (iter != m.end()); + + if (result) + inval = iter->second; + + return result; + } + + bool Contains(const Key& inkey) const + { + return m.find(inkey) != m.end(); + } + + int Count(const Key& inkey) const + { + return (int) m.count(inkey); + } + + map_type& GetMap() + { + return m; + } + + const map_type& GetMap() const + { + return m; + } + + void DeleteAll() + { + iterator i = m.begin(); + iterator end = m.end(); + + while (i != end) + { + delete i->first; + delete i->second; + ++i; + } + } + + void DeleteAllKeys() + { + iterator i = m.begin(); + iterator end = m.end(); + + while (i != end) + { + delete i->first; + ++i; + } + } + + void DeleteAllValues() + { + iterator i = m.begin(); + iterator end = m.end(); + + while (i != end) + { + delete i->second; + ++i; + } + } + + /**** operator overloads ****/ + + Value& operator [] (const Key& inkey) + { + return m[inkey]; + } + + friend bool operator == (const opMap& m1, const opMap& m2) + { + return m1.m == m2.m; + } + + friend bool operator < (const opMap& m1, const opMap& m2) + { + return m1.m < m2.m; + } + +private: + map_type m; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return m.begin(); + } + + iterator end() + { + return m.end(); + } + + const_iterator begin() const + { + return m.begin(); + } + + const_iterator end() const + { + return m.end(); + } + + reverse_iterator rbegin() + { + return m.rbegin(); + } + + reverse_iterator rend() + { + return m.rend(); + } + + const_reverse_iterator rbegin() const + { + return m.rbegin(); + } + + const_reverse_iterator rend() const + { + return m.rend(); + } + + size_type size() const + { + return m.size(); + } + + size_type max_size() const + { + return m.max_size(); + } + + bool empty() const + { + return m.empty(); + } + + void swap(map_type& inmap) + { + m.swap(inmap.m); + } + + pair insert(const value_type& inval) + { + return m.insert(inval); + } + + iterator insert(iterator position, const value_type& inval) + { + return m.insert(position, inval); + } + + template + void insert(InputIterator first, InputIterator last) + { + m.insert(first, last); + } + + void erase(iterator position) + { + m.erase(position); + } + + size_type erase(const key_type& inkey) + { + return m.erase(inkey); + } + + void erase(iterator first, iterator last) + { + m.erase(first, last); + } + + void clear() + { + m.clear(); + } + + iterator find(const key_type& inkey) + { + return m.find(inkey); + } + + const_iterator find(const key_type& inkey) const + { + return m.find(inkey); + } + + size_type count(const key_type& inkey) const + { + return m.count(inkey); + } +}; + +//========================================== +// opMultiMap +//========================================== + +// stl map wrapper +template +class opMultiMap +{ +public: + /**** typedefs ****/ + + typedef multimap > map_type; + typedef typename map_type::key_type key_type; + typedef typename map_type::value_type value_type; + typedef typename map_type::size_type size_type; + typedef typename map_type::iterator iterator; + typedef typename map_type::const_iterator const_iterator; + typedef typename map_type::reverse_iterator reverse_iterator; + typedef typename map_type::const_reverse_iterator const_reverse_iterator; + typedef typename map_type::reference reference; + typedef typename map_type::const_reference const_reference; + + /**** construction ****/ + + opMultiMap() {} + + opMultiMap(const map_type& inmap) + : m(inmap) {} + + opMultiMap(const opMultiMap& inmap) + : m(inmap.m) {} + + template + opMultiMap(InputIterator first, InputIterator last) + : m(first, last) {} + + /**** destruction ****/ + + ~opMultiMap() + { + m.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return m.begin(); + } + + iterator End() + { + return m.end(); + } + + const_iterator Begin() const + { + return m.begin(); + } + + const_iterator End() const + { + return m.end(); + } + + reverse_iterator RBegin() + { + return m.rbegin(); + } + + reverse_iterator REnd() + { + return m.rend(); + } + + const_reverse_iterator RBegin() const + { + return m.rbegin(); + } + + const_reverse_iterator REnd() const + { + return m.rend(); + } + + int Size() const + { + return (int) m.size(); + } + + int MaxSize() const + { + return (int) m.max_size(); + } + + bool IsEmpty() const + { + return m.empty(); + } + + void Swap(opMap& inmap) + { + m.swap(inmap.m); + } + + iterator Insert(const Key& inkey, const Value& inval) + { + return m.insert(pair(inkey, inval)); + } + + iterator Insert(iterator position, const Key& inkey, const Value& inval) + { + return m.insert(position, pair(inkey, inval)); + } + + template + void InsertRange(InputIterator first, InputIterator last) + { + m.insert(first, last); + } + + void Erase(iterator position) + { + m.erase(position); + } + + void Erase(const Key& inkey) + { + m.erase(inkey); + } + + void Erase(iterator first, iterator last) + { + m.erase(first, last); + } + + void Clear() + { + m.clear(); + } + + iterator Find(const Key& inkey) + { + return m.find(inkey); + } + + const_iterator Find(const Key& inkey) const + { + return m.find(inkey); + } + + bool Contains(const Key& inkey) const + { + return m.find(inkey) != m.end(); + } + + int Count(const Key& inkey) const + { + return (int) m.count(inkey); + } + + map_type& GetMultiMap() + { + return m; + } + + const map_type& GetMultiMap() const + { + return m; + } + + void DeleteAll() + { + iterator i = m.begin(); + iterator end = m.end(); + + while (i != end) + { + delete i->first; + delete i->second; + ++i; + } + } + + void DeleteAllKeys() + { + iterator i = m.begin(); + iterator end = m.end(); + + while (i != end) + { + delete i->first; + ++i; + } + } + + void DeleteAllValues() + { + iterator i = m.begin(); + iterator end = m.end(); + + while (i != end) + { + delete i->second; + ++i; + } + } + + /**** operator overloads ****/ + + friend bool operator == (const opMultiMap& m1, const opMultiMap& m2) + { + return m1.m == m2.m; + } + + friend bool operator < (const opMultiMap& m1, const opMultiMap& m2) + { + return m1.m < m2.m; + } + +private: + map_type m; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return m.begin(); + } + + iterator end() + { + return m.end(); + } + + const_iterator begin() const + { + return m.begin(); + } + + const_iterator end() const + { + return m.end(); + } + + reverse_iterator rbegin() + { + return m.rbegin(); + } + + reverse_iterator rend() + { + return m.rend(); + } + + const_reverse_iterator rbegin() const + { + return m.rbegin(); + } + + const_reverse_iterator rend() const + { + return m.rend(); + } + + size_type size() const + { + return m.size(); + } + + size_type max_size() const + { + return m.max_size(); + } + + bool empty() const + { + return m.empty(); + } + + void swap(map_type& inmap) + { + m.swap(inmap.m); + } + + iterator insert(const value_type& inval) + { + return m.insert(inval); + } + + iterator insert(iterator position, const value_type& inval) + { + return m.insert(position, inval); + } + + template + void insert(InputIterator first, InputIterator last) + { + m.insert(first, last); + } + + void erase(iterator position) + { + m.erase(position); + } + + size_type erase(const key_type& inkey) + { + return m.erase(inkey); + } + + void erase(iterator first, iterator last) + { + m.erase(first, last); + } + + void clear() + { + m.clear(); + } + + iterator find(const key_type& inkey) + { + return m.find(inkey); + } + + const_iterator find(const key_type& inkey) const + { + return m.find(inkey); + } + + size_type count(const key_type& inkey) const + { + return m.count(inkey); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPMAP__ + diff --git a/opcplusplus/Inc/opstl/opSet.h b/opcplusplus/Inc/opstl/opSet.h new file mode 100644 index 0000000..f65e1ae --- /dev/null +++ b/opcplusplus/Inc/opstl/opSet.h @@ -0,0 +1,433 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opSet.h +// Date: 04/04/2007 +// +// Description: +// +// opSet class +//**************************************************************** + +#ifndef __OPSTL_OPSET__ +#define __OPSTL_OPSET__ + +#include "opstlcommon.h" +#include + +namespace opstl +{ + +//========================================== +// opSetter +//========================================== + +// Specialize this if you want to change +// your less than predicate for type T. +template +struct opSetLessPredicate +{ + static bool Less(const T& t1, const T& t2) + { + return t1 < t2; + } +}; + +// This class tells the set classes how to +// compare keys. +template +struct opSetter +{ + // This function returns true if t1 is < t2. + // t1 and t2 are keys. + bool operator()(const T& t1, const T& t2) const + { + return opSetLessPredicate::Less(t1, t2); + } +}; + +//========================================== +// opSet +//========================================== + +// stl set wrapper +template +class opSet +{ +public: + /**** typedefs ****/ + + typedef set, OPSTL_SET_ALLOCATOR(T) > set_type; + typedef typename set_type::size_type size_type; + typedef typename set_type::key_type key_type; + typedef typename set_type::value_type value_type; + typedef typename set_type::iterator iterator; + typedef typename set_type::const_iterator const_iterator; + typedef typename set_type::reverse_iterator reverse_iterator; + typedef typename set_type::const_reverse_iterator const_reverse_iterator; + typedef typename set_type::reference reference; + typedef typename set_type::const_reference const_reference; + typedef pointer_iterator pointer_iterator; + typedef const_pointer_iterator const_pointer_iterator; + typedef reverse_pointer_iterator reverse_pointer_iterator; + typedef const_reverse_pointer_iterator const_reverse_pointer_iterator; + + /**** construction ****/ + + opSet() {} + + opSet(const set_type& inset) + : s(inset) {} + + opSet(const opSet& inset) + : s(inset.s) {} + + template + opSet(InputIterator first, InputIterator last) + : s(first, last) {} + + /**** destruction ****/ + + ~opSet() + { + s.clear(); + } + + /**** utility ****/ + + iterator Begin() + { + return s.begin(); + } + + iterator Last() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + const_iterator Begin() const + { + return s.begin(); + } + + const_iterator End() const + { + return s.end(); + } + + iterator End() + { + return s.end(); + } + + reverse_iterator RBegin() + { + return s.rbegin(); + } + + reverse_iterator RLast() + { + if (IsEmpty()) + return End(); + + return --End(); + } + + reverse_iterator REnd() + { + return s.rend(); + } + + int Size() const + { + return (int) s.size(); + } + + int Length() const + { + return (int) s.size(); + } + + int MaxSize() const + { + return (int) s.max_size(); + } + + bool IsEmpty() const + { + return s.empty(); + } + + void Swap(opSet& inset) + { + s.swap(inset.s); + } + + iterator Insert(const T& inval) + { + pair r = s.insert(inval); + + return r.first; + } + + iterator Insert(iterator position, const T& inval) + { + return s.insert(position, inval); + } + + void InsertAfter(iterator position, const T& inval) + { + if (position == s.end()) + s.insert(s.end(), inval); + else + { + iterator pos = position; + + ++pos; + + s.insert(pos, inval); + } + } + + template + void Insert(InputIterator first, InputIterator last) + { + s.insert(first, last); + } + + void Erase(iterator position) + { + s.erase(position); + } + + void Erase(iterator first, iterator last) + { + s.erase(first, last); + } + + bool Erase(const T& t) + { + iterator i = Find( t ); + + if ( i != s.end() ) + { + s.erase( i ); + + return true; + } + + return false; + } + + void Clear() + { + s.clear(); + } + + iterator Find(const T& inval) + { + return s.find(inval); + } + + bool Contains(const T& inval) + { + return s.find(inval) != s.end(); + } + + int Count(const T& inval) + { + return (int) s.count(inval); + } + + bool Includes(const opSet& inset) + { + return includes(s.begin(), s.end(), inset.s.begin(), inset.s.end(), opSetter()); + } + + void Union(const opSet& inset, opSet& result) const + { + result.Clear(); + set_union(s.begin(), s.end(), inset.s.begin(), inset.s.end(), result.s.begin(), opSetter()); + } + + void Union(const opSet& inset) + { + const_iterator start = inset.Begin(); + const_iterator end = inset.End(); + insert(start,end); + } + + void Intersection(const opSet& inset, opSet& result) + { + result.Clear(); + set_intersection(s.begin(), s.end(), inset.s.begin(), inset.s.end(), result.s.begin(), opSetter()); + } + + void Difference(const opSet& inset, opSet& result) + { + result.Clear(); + set_difference(s.begin(), s.end(), inset.s.begin(), inset.s.end(), result.s.begin(), opSetter()); + } + + void SymmetricDifference(const opSet& inset, opSet& result) + { + result.Clear(); + set_symmetric_difference(s.begin(), s.end(), inset.s.begin(), inset.s.end(), result.s.begin(), opSetter()); + } + + set_type& GetSet() + { + return s; + } + + const set_type& GetSet() const + { + return s; + } + + void DeleteAll() + { + iterator i = s.begin(); + iterator end = s.end(); + + while (i != end) + { + delete *i; + ++i; + } + } + + /**** operator overloads ****/ + + friend bool operator == (const opSet& inset1, const opSet& inset2) + { + return inset1.s == inset2.s; + } + + friend bool operator < (const opSet& inset1, const opSet& inset2) + { + return inset1.s < inset2.s; + } + +private: + set_type s; + +public: + /**** original container functions for stl compatibility ****/ + + iterator begin() + { + return s.begin(); + } + + iterator end() + { + return s.end(); + } + + const_iterator begin() const + { + return s.begin(); + } + + const_iterator end() const + { + return s.end(); + } + + reverse_iterator rbegin() + { + return s.rbegin(); + } + + reverse_iterator rend() + { + return s.rend(); + } + + const_reverse_iterator rbegin() const + { + return s.rbegin(); + } + + const_reverse_iterator rend() const + { + return s.rend(); + } + + size_type size() const + { + return s.size(); + } + + size_type max_size() const + { + return s.max_size(); + } + + bool empty() const + { + return s.empty(); + } + + void swap(const set_type& inset) + { + s.swap(inset.s); + } + + pair insert(const value_type& inval) + { + return s.insert(inval); + } + + iterator insert(iterator position, const value_type& inval) + { + return s.insert(position, inval); + } + + template + void insert(InputIterator first, InputIterator last) + { + s.insert(first, last); + } + + void erase(iterator position) + { + s.erase(position); + } + + size_type erase(const key_type& inval) + { + return s.erase(inval); + } + + void erase(iterator first, iterator last) + { + s.erase(first, last); + } + + void clear() + { + s.clear(); + } + + iterator find(const key_type& inval) + { + return s.find(inval); + } + + size_type count(const key_type& inval) + { + return s.count(inval); + } +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPSET__ + diff --git a/opcplusplus/Inc/opstl/opString.h b/opcplusplus/Inc/opstl/opString.h new file mode 100644 index 0000000..cb6fe7c --- /dev/null +++ b/opcplusplus/Inc/opstl/opString.h @@ -0,0 +1,1439 @@ +//**************************************************************** +// Copyright 2006 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opString.h +// Date: 11/26/2006 +// +// Description: +// +// Wrapper for STL string class. +//**************************************************************** + +#ifndef __OPSTL_OPSTRING__ +#define __OPSTL_OPSTRING__ + +#include "opstlcommon.h" +#include +#include +#include +#include +#include + +namespace opstl +{ + +/**** wrapper for stl string class ****/ + +class opString +{ +public: + + typedef basic_string< char, char_traits< char >, OPSTL_STRING_ALLOCATOR(char) > string_type; + + /**** construction ****/ + + opString() + { + + } + + opString(const opString &_s) + { + s = _s.s; + } + + template< class a > + opString(const basic_string< char, char_traits, a>& _s) + : s(_s.begin(),_s.end()) + { + + } + + opString(const char* _s) + { + s = _s; + } + + opString(const char c) + { + s = c; + } + + opString(int i) + { + ToString(i, *this); + } + + opString(unsigned int i) + { + ToString(i, *this); + } + + opString(float f) + { + ToString(f, *this); + } + + opString(double d) + { + ToString(d, *this); + } + + opString(bool b) + { + s = b ? "true" : "false"; + } + + // Initialize a string to a line in a file. + opString(istream& i, const char term = '\n') + { + Getline(i, term); + } + + // Initialize a string given a wide string. + //opString(const wstring& _s) + //{ + // s = string_type( _s.begin(), _s.end() ); + //} + + opString(const vector& _s) + { + s = string_type( _s.begin(), _s.end() ); + } + + opString(const opArray& _s) + { + s = string_type( _s.begin(), _s.end() ); + } + + /**** destruction ****/ + + ~opString() {} + + /**** get ****/ + + string_type& GetString() + { + return s; + } + + const string_type& GetString() const + { + return s; + } + + const string_type& get_string() const + { + return s; + } + + string_type& get_string() + { + return s; + } + + const char* GetCString() const + { + return s.c_str(); + } + + char GetCharacter(int i) const + { + return s[i]; + } + + int ToInt() const + { + return atoi( s.c_str() ); + } + + float ToFloat() const + { + return (float) atof( s.c_str() ); + } + + double ToDouble() const + { + return (double) atof( s.c_str() ); + } + + bool ToBool() const + { + return s == "true" ? true : false; + } + + /**** set ****/ + + opString& SetString(const opString &_s) + { + s = _s.s; + + return *this; + } + + /**** utility ****/ + + // Convert T to a string, set via reference (faster). + template + static void ToString(T t, opString& _s) + { + stringstream ss; + ss << t; + _s.s = ss.str(); + } + + // Convert T to a string, return result. + template + static opString ToString(T t) + { + stringstream ss; + ss << t; + return opString( ss.str() ); + } + + // Convert a string to it's correct type. + // NOTE: This only works for int, float, double. + template + static T StringTo(const opString& _s) + { + return _s; + } + + // StringTo specializations (int, float, double) + template<> static int StringTo(const opString& _s); + template<> static float StringTo(const opString& _s); + template<> static double StringTo(const opString& _s); + + // Get a fixed point string from a numeric input type. + template + static opString FixedString(const T& data) + { + std::stringstream ss; + + ss << std::fixed << data; + + opString s; + ss >> s; + + return s; + } + + // Get a rounded string from a numeric input type. + // Note that the string is also fixed. + template + static opString RoundedString(const T& data, int num_digits) + { + std::stringstream ss; + + ss << std::fixed << std::setprecision(num_digits) << data; + + opString s; + ss >> s; + + return s; + } + + // size + int Size() const + { + return (int) s.size(); + } + + // length - equivalent to size + int Length() const + { + return (int) s.size(); + } + + // empty - returns true if s is "" + bool IsEmpty() const + { + return s.size() == 0; + } + + // clear - sets s to "" + opString& Clear() + { + s.resize(0); + + return *this; + } + + opString& ClearMemory() + { + s.clear(); + + return *this; + } + + void Reserve(size_t length) + { + s.reserve(length); + } + + void Resize(size_t length) + { + s.resize(length); + } + + // returns last char + char Back() const + { + return s[(int) s.size() - 1]; + } + + // return first char + char Front() const + { + return s[0]; + } + + // pop back - pops off the last character + char PopBack() + { + int end = (int) s.size() - 1; + char c = s[end]; + + Remove(end); + + return c; + } + + // pop front - pops off the first character + char PopFront() + { + char c = s[0]; + + Remove(0); + + return c; + } + + // insert - inserts _s before i + opString& Insert(int i, const opString &_s) + { + s.insert(i, _s.s); + + return *this; + } + + // append + opString& Append(const opString &_s) + { + s += _s.s; + + return *this; + } + + // remove - removes a single character at position i + opString& Remove(int i) + { + s.erase(s.begin() + i); + + return *this; + } + + // remove - removes characters in range [start, end) + opString& Remove(int start, int end) + { + string_type::iterator begin = s.begin(); + string_type::iterator _start = begin + start; + string_type::iterator _end = begin + end; + + s.erase(_start, _end); + + return *this; + } + + // remove - removes all occurances of the substring _ss + opString& Remove(const opString &_ss) + { + int start; + int length = (int) _ss.s.length(); + string::size_type pos = s.find(_ss.s); + + while (pos != string::npos) + { + start = (int) pos; + + Remove(start, start + length); + + if (pos < s.size()) + pos = s.find(_ss.s, pos); + else + break; + } + + return *this; + } + + // remove - char version b/c compiler is dumb + opString& Remove(const char c) + { + return Remove(opString(c)); + } + + opString& TrimLeft() + { + int size = (int) s.size(); + int endindex = size; + + for (int i = 0; i < size; i++) + { + char c = s[i]; + + if (c != ' ' && c != '\n' && c != '\t') + { + endindex = i; + break; + } + } + + if (endindex > 0) + Remove(0,endindex); + + return *this; + } + + opString& TrimRight() + { + int size = (int) s.size(); + int endindex = -1; + + for (int i = size - 1; i > -1; i--) + { + char c = s[i]; + + if (c != ' ' && c != '\n' && c != '\t') + { + endindex = i; + break; + } + } + + if (endindex + 1 < size) + Remove(endindex+1,size); + + return *this; + } + + // trim - trims whitespace at both ends of s + opString& Trim() + { + TrimLeft(); + TrimRight(); + + return *this; + } + + // trims quotes + opString& TrimQuotes() + { + if (IsEmpty()) + return *this; + + if (s[0] == '\"') + Remove(0); + + if (IsEmpty()) + return *this; + + if (s[Length() - 1] == '\"') + Remove(Length() - 1); + + return *this; + } + + // removes all whitespace + opString& RemoveWhitespace() + { + int size = (int) s.size(); + string_type _s = ""; + + for (int i = 0; i < size; i++) + { + char c = s[i]; + + if (c != ' ' && c != '\n' && c != '\t') + _s += c; + } + + s = _s; + + return *this; + } + + // replace - replaces character at i with _ss + opString& Replace(int i, const opString &_ss) + { + Remove(i); + Insert(i, _ss); + + return *this; + } + + // replace - replaces range [start, end) with _ss + opString& Replace(int start, int end, const opString &_ss) + { + Remove(start, end); + Insert(start, _ss); + + return *this; + } + + // replace - replaces all occurances of _ss1 with _ss2 + opString& Replace(const opString &_ss1, const opString &_ss2) + { + string::size_type length1 = _ss1.s.length(); + string::size_type length2 = _ss2.s.length(); + string::size_type pos = s.find(_ss1.s); + + while (pos != string::npos) + { + Replace((int) pos, (int) (pos + length1), _ss2); + + pos = s.find(_ss1.s, pos + length2); + } + + return *this; + } + + // replace - char version 1 b/c compiler is retarded + opString& Replace(const char c, const opString &_ss2) + { + return Replace(opString(c), _ss2); + } + + // replace - char version 1 b/c compiler is gay + opString& Replace(const opString &_ss1, const char c) + { + return Replace(_ss1, opString(c)); + } + + // replace - char version 1 b/c compiler is a piece of sh*t + opString& Replace(const char c1, const char c2) + { + return Replace(opString(c1), opString(c2)); + } + + // substring - returns the substring of s defined by [start, end) + opString Substring(int start, int end) const + { + string_type _s(s, start, end - start); + + return opString(_s); + } + + // left - returns the string to the left of i + opString Left(int i) const + { + return Substring(0, i); + } + + // left - returns the string left of the first + // occurance of _s + // note: searches forward! + opString Left(const opString &_s) const + { + int index; + + if (Find(_s, index)) + return Left(index); + + return opString(s); + } + + // left - char version b/c compiler is an idiot + opString Left(const char c) const + { + return Left(opString(c)); + } + + // reverse left - returns the string left of the first + // occurance of _s + // note: searches backward! + opString RLeft(const opString &_s) const + { + int index; + + if (RFind(_s, index)) + return Left(index); + + return opString(s); + } + + opString RLeft(const char c) const + { + return RLeft(opString(c)); + } + + opString RLeft(int i) const + { + return Left(Length() - i); + } + + // right - returns the string to the right of i + opString Right(int i) const + { + int length = (int) s.size(); + + return Substring(i + 1, length); + } + + // right - returns the string right of the first + // occurance of _s + // note: searches forward! + opString Right(const opString &_s) const + { + int index; + int size = (int) _s.s.size(); + + if (Find(_s, index)) + return Right(index + size - 1); + + return opString(s); + } + + // right - char version b/c compiler should be shot + opString Right(const char c) const + { + return Right(opString(c)); + } + + // reverse right - returns the string right of the first + // occurance of _s + // note: searches backward! + opString RRight(const opString &_s) const + { + int index; + int size = (int) _s.s.size(); + + if (RFind(_s, index)) + return Right(index + size - 1); + + return opString(s); + } + + opString RRight(char c) const + { + return RRight(opString(c)); + } + + opString RRight(int i) const + { + return Right(Length() - i - 1); + } + + bool StartsWith(const opString& other) const + { + int olength = other.Length(); + + if (Length() < olength) + return false; + + return equal(other.s.begin(),other.s.end(),s.begin()); + } + + bool EndsWith(const opString& other) const + { + int olength = other.Length(); + + if (Length() < olength) + return false; + + return equal(other.s.begin(),other.s.end(),s.begin()+Length()-olength); + } + + // find - returns true if found and sets result + // to index via reference or false and sets result + // to -1 via reference. start is where the search + // starts, and defaults to 0 + // note: searches forward! + bool Find(const opString &_ss, int &result, int start = 0) const + { + string::size_type _start = start; + string::size_type pos = s.find(_ss.s, _start); + + if (pos == string::npos) + { + result = -1; + return false; + } + + result = (int) pos; + + return true; + } + + // find w/o result requirement + bool Find(const opString &_ss) const + { + int r; + bool result = Find(_ss, r, 0); + + return result; + } + + // reverse find - returns true if found and sets result + // to index via reference or false and sets result + // to -1 via reference. start is where the search + // starts, and defaults to the end of the container + // note: searches backward! + bool RFind(const opString &_ss, int &result, int start = (int) string::npos) const + { + string::size_type _start = start; + string::size_type pos = s.rfind(_ss.s, _start); + + if (pos == string::npos) + { + result = -1; + return false; + } + + result = (int) pos; + + return true; + } + + // rfind w/o result requirement + bool RFind(const opString &_ss) const + { + int r; + bool result = RFind(_ss, r, (int) string::npos); + + return result; + } + + // tokenize - sets a vector of strings via reference, + // splitting on the specified substring _s + template + void Tokenize(const opString &_s, T &container) const + { + int size1 = (int) s.size(); + int size2 = (int) _s.s.size(); + int start = 0; + int i; + + while (Find(_s, i, start)) + { + if (start != i) + { + opString _s2 = Substring(start, i); + container.push_back(_s2); + } + + start = i + size2; + } + + if (start != -1 && start != size1) + { + opString _s2 = Substring(start, size1); + container.push_back(_s2); + } + } + + // tokenize on all delimiters in delimiter string + template + void TokenizeDelimiters(const opString& delimiters, T& c) const + { + string::size_type lastPos(s.find_first_not_of(delimiters.s, 0)); + string::size_type pos(s.find_first_of(delimiters.s, lastPos)); + while (string::npos != pos || string::npos != lastPos) + { + std::back_insert_iterator< T > it( c ); + *it = s.substr(lastPos, pos - lastPos); + lastPos = s.find_first_not_of(delimiters.s, pos); + pos = s.find_first_of(delimiters.s, lastPos); + } + } + + // tokenize on whitespace - first trims the string, then + template + void TokenizeOnWhitespace(T &container) const + { + opString base = s; + base.Trim();//is this a good idea? + int size = base.Size(); + int start = 0; + opString token; + + // if we have no tokens...return + if (base == "") + return; + + for (int i = 0; i < size; i++) + { + char c = base[i]; + + if (c == ' ' || c == '\n' || c == '\t') + { + token = base.Substring(start, i); + container.push_back( opString::StringTo< typename T::value_type >(token) ); + + for (int j = i + 1; j < size; j++) + { + char c2 = base[j]; + + if (c2 != ' ' && c2 != '\n' && c2 != '\t') + { + start = i = j; + break; + } + } + } + } + + token = base.Substring(start, size); + container.push_back( opString::StringTo< typename T::value_type >(token) ); + } + + // returns a unique hash value for the current string + // based on the djb2 algorithm + int Hash() const + { + int hash = 5381; + + if (!s.length()) + return hash; + + const char* str = &s[0]; + + int c; + + while (c = *str++) + hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ + + return hash; + } + + // static version of Hash + static int Hash(const opString& s) + { + return s.Hash(); + } + + // getline - given an istream&, reads the current line into + // s until reaching terminating character term (which defaults + // to the null character) + istream& Getline(istream& i, const char term = '\n') + { + return getline(i, s, term); + } + + // make valid path - checks if the string has a '/' at the end + // if not, adds one + opString& MakeValidPath() + { + int size = (int) s.size(); + + if (size == 0) + s += '/'; + else if (s[size - 1] != '/') + s += '/'; + + return *this; + } + + // converts this string to uppercase + opString& ToUpper() + { + transform(s.begin(), s.end(), s.begin(), (int(*)(int)) toupper); + + return *this; + } + + // converts this string to lowercase + opString& ToLower() + { + transform(s.begin(), s.end(), s.begin(), (int(*)(int)) tolower); + + return *this; + } + + // repetition + static opString FilledString(char c, int rep) + { + opString newString = ""; + + newString.Reserve(rep); + + for (int i = 0; i < rep; i++) + newString += c; + + return newString; + } + + // Returns true if the character is alphabetic. + static bool IsAlpha(char c) + { + return (c >= 'a' && c <= 'z') + || (c >= 'A' && c <= 'Z'); + } + + // Returns true if the character is numeric. + static bool IsNumeric(char c) + { + return c >= '0' && c <= '9'; + } + + // Returns true if the character is alphanumeric. + static bool IsAlphaNumeric(char c) + { + return IsAlpha(c) || IsNumeric(c); + } + + // true if this string is alphabetic + bool IsAlpha() const + { + int size = Size(); + + for (int i = 0; i < size; i++) + { + if ( !IsAlpha(s[i]) ) + return false; + } + + return true; + } + + // true if this string is numeric + bool IsNumeric() const + { + int size = Size(); + + for (int i = 0; i < size; i++) + { + if ( !IsNumeric(s[i]) ) + return false; + } + + return true; + } + + // true if the string is alphanumeric + bool IsAlphaNumeric() const + { + int size = Size(); + + for (int i = 0; i < size; i++) + { + if ( !IsAlphaNumeric(s[i]) ) + return false; + } + + return true; + } + + // returns a unicode string. + wstring ToUnicode() const + { + return std::wstring( s.begin(), s.end() ); + } + + // Load a file into a string. + void LoadFile(std::ifstream& ifs) + { + ifs.unsetf( ios::skipws ); + + copy( istream_iterator( ifs ), + istream_iterator(), + back_inserter( s ) ); + } + + // Returns the opString version of the integer + // in hexadecimal format. + template + static opString AsHex(type i) + { + stringstream ss; + + ss << std::hex << i; + + opString _s = "0x"; + + _s += ss.str(); + + return _s; + } + + // removes lamo microsoft \r crap + void FixNewlines() + { + string_type _s = s; + size_t size = _s.size(); + + s.resize(0); + + for (size_t i = 0; i < size; i++) + { + if (_s[i] != '\r') + s += _s[i]; + } + } + + /**** operator overloads ****/ + + // indexing + char& operator[] (int i) + { + return s[i]; + } + + const char& operator[] (int i) const + { + return s[i]; + } + + const char& operator[] (size_t i) const + { + return s[i]; + } + + char& operator[] (size_t i) + { + return s[i]; + } + + // assignment + opString& operator= (const opString &_s) + { + s = _s.s; + + return *this; + } + + template< class a > + opString& operator= (const basic_string< char, char_traits, a>& _s) + { + s.assign(_s.begin(),_s.end()); + + return *this; + } + +// opString& operator= (const string &_s) +// { +// s = _s; +// +// return *this; +// } + + opString& operator= (const char* _s) + { + s = _s; + + return *this; + } + + opString& operator= (const char c) + { + s = c; + + return *this; + } + + opString& operator= (int i) + { + ToString(i, *this); + + return *this; + } + + opString& operator= (unsigned int i) + { + ToString(i, *this); + + return *this; + } + + opString& operator= (float f) + { + ToString(f, *this); + + return *this; + } + + opString& operator= (double d) + { + ToString(d, *this); + + return *this; + } + + // equality == + friend bool operator== (const opString &lhs, const opString &rhs) + { + return lhs.s == rhs.s; + } + + friend bool operator== (const opString &lhs, const string &rhs) + { + return lhs.s == rhs; + } + + friend bool operator== (const string &lhs, const opString &rhs) + { + return lhs == rhs.s; + } + + friend bool operator== (const opString &lhs, const char* rhs) + { + return lhs.s == rhs; + } + + friend bool operator== (const char* lhs, const opString &rhs) + { + return lhs == rhs.s; + } + + friend bool operator== (const opString &lhs, char rhs) + { + string _s = ""; + _s += rhs; + return lhs.s == _s; + } + + friend bool operator== (char lhs, const opString &rhs) + { + string _s = ""; + _s += lhs; + return _s == rhs.s; + } + + // equality != + friend bool operator!= (const opString &lhs, const opString &rhs) + { + return !(lhs.s == rhs.s); + } + + friend bool operator!= (const opString &lhs, const string &rhs) + { + return !(lhs.s == rhs); + } + + friend bool operator!= (const string &lhs, const opString &rhs) + { + return !(lhs == rhs.s); + } + + friend bool operator!= (const opString &lhs, const char* rhs) + { + return !(lhs.s == rhs); + } + + friend bool operator!= (const char* lhs, const opString &rhs) + { + return !(lhs == rhs.s); + } + + friend bool operator!= (const opString &lhs, char rhs) + { + string _s = ""; + _s += rhs; + return !(lhs.s == _s); + } + + friend bool operator!= (char lhs, const opString &rhs) + { + string _s = ""; + _s += lhs; + return !(_s == rhs.s); + } + + // plus equals + opString& operator+= (const opString &_s) + { + s += _s.s; + + return *this; + } + + opString& operator+= (const string &_s) + { + s += _s; + + return *this; + } + + opString& operator+= (const char* _s) + { + s += _s; + + return *this; + } + + opString& operator+= (const char c) + { + s += c; + + return *this; + } + + opString& operator+= (int i) + { + opString _s; + ToString(i, _s); + s += _s.s; + + return *this; + } + + opString& operator+= (unsigned int i) + { + opString _s; + ToString(i, _s); + s += _s.s; + + return *this; + } + + opString& operator+= (float f) + { + opString _s; + ToString(f, _s); + s += _s.s; + + return *this; + } + + opString& operator+= (double d) + { + opString _s; + ToString(d, _s); + s += _s.s; + + return *this; + } + + // plus + opString operator+ (const opString &rhs) const + { + opString _s = s; + _s.s += rhs.s; + + return _s; + } + + opString operator+ (const string &rhs) const + { + opString _s = s; + _s.s += rhs; + + return _s; + } + + opString operator+ (const char* rhs) const + { + opString _s = s; + _s.s += rhs; + + return _s; + } + + opString operator+ (const char rhs) const + { + string __s; + __s = rhs; + opString _s = s; + _s.s += __s; + + return _s; + } + + opString operator+ (int rhs) const + { + opString __s; + ToString(rhs, __s); + opString _s = s; + _s.s += __s.s; + + return _s; + } + + opString operator+ (unsigned int rhs) const + { + opString __s; + ToString(rhs, __s); + opString _s = s; + _s.s += __s.s; + + return _s; + } + + opString operator+ (float rhs) const + { + opString __s; + ToString(rhs, __s); + opString _s = s; + _s.s += __s.s; + + return _s; + } + + opString operator+ (double rhs) const + { + opString __s; + ToString(rhs, __s); + opString _s = s; + _s.s += __s.s; + + return _s; + } + + // I/O + friend std::istream& operator>> (std::istream &i, opString &_s) + { + return i >> _s.s; + } + + friend std::ostream& operator<< (std::ostream &o, const opString &_s) + { + return o << _s.s; + } + + // < + bool operator< (const opString &rhs) const + { + return s < rhs.s; + } + + bool operator< (const string &rhs) const + { + return s < rhs; + } + + bool operator< (const char* rhs) const + { + return s < rhs; + } + + bool operator< (const char rhs) const + { + string _s; + _s = rhs; + + return s < _s; + } + + // > + bool operator> (const opString &rhs) const + { + return s > rhs.s; + } + + bool operator> (const string &rhs) const + { + return s > rhs; + } + + bool operator> (const char* rhs) const + { + return s > rhs; + } + + bool operator> (const char rhs) const + { + string _s; + _s = rhs; + + return s > _s; + } + +private: + string_type s; +}; + +/*=== specializations ===*/ + +// Specialize for ints. +template<> +inline int opString::StringTo(const opString& _s) +{ + return _s.ToInt(); +} + +// Specialize for floats. +template<> +inline float opString::StringTo(const opString& _s) +{ + return _s.ToFloat(); +} + +// Specialize for doubles. +template<> +inline double opString::StringTo(const opString& _s) +{ + return _s.ToDouble(); +} + +/**** global operators ****/ + +inline opString operator + (const string& left_string, const opString& right_string) +{ + return opString(left_string) + right_string; +} + +inline opString operator + (const char* left_string, const opString& right_string) +{ + return opString(left_string) + right_string; +} + +inline opString operator + (char c, const opString& right_string) +{ + return opString(c) + right_string; +} + +inline opString operator + (int i, const opString& right_string) +{ + return opString(i) + right_string; +} + +inline opString operator + (unsigned int i, const opString& right_string) +{ + return opString(i) + right_string; +} + +inline opString operator + (float f, const opString& right_string) +{ + return opString(f) + right_string; +} + +inline opString operator + (double d, const opString& right_string) +{ + return opString(d) + right_string; +} + +/**** opStringUtility static function definitions ****/ + +#ifdef __OPSTL_OPHASH__ + + /**** opHasher related code ****/ + + // specialize opHasher for opString as a key + template<> + struct opHashFunction + { + static size_t Hash(const opString& t) + { + return (size_t) t.Hash(); + } + }; + + #ifdef OPSTL_GNU_LINUX + template<> + struct opHashCompare + { + static bool Compare(const opString& t1, const opString& t2) + { + return t1 == t2; + } + }; + #endif + +#endif + +} // end namespace opstl + +#endif // end __OPSTL_OPSTRING__ + diff --git a/opcplusplus/Inc/opstl/opWideString.h b/opcplusplus/Inc/opstl/opWideString.h new file mode 100644 index 0000000..f7cf3e4 --- /dev/null +++ b/opcplusplus/Inc/opstl/opWideString.h @@ -0,0 +1,119 @@ +//**************************************************************** +// Copyright (C) 2008 OP Games LLC - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opWideString.h +// Date: 10/08/2008 +// +// Description: +// +// wrapper for wide char strings +//**************************************************************** + +#ifndef __OPSTL_OPWIDESTRING__ +#define __OPSTL_OPWIDESTRING__ + +#include "opstlcommon.h" +#include +#include +#include +#include +#include + +namespace opstl +{ + +/**** wrapper for stl string class ****/ + +class opWideString +{ +public: + + /**** construction ****/ + + opWideString() + { + } + + opWideString(const opWideString& _s) + : s(_s.s) + { + } + + opWideString(const opString& _s) + : s(_s.GetString().begin(),_s.GetString().end()) + { + } + + opWideString(const string& _s) + : s(_s.begin(),_s.end()) + { + } + + opWideString(const wstring& _s) + : s(_s) + { + } + + opWideString(wchar_t c) + { + s = c; + } + + opWideString(const wchar_t* c) + { + s = c; + } + + opWideString(char c) + { + s = c; + } + + opWideString(const char* c) + { + s = opWideString(opString(c)).GetWideString(); + } + + std::wstring& GetWideString() + { + return s; + } + + const std::wstring& GetWideString() const + { + return s; + } + + const wchar_t* GetCString() const + { + return s.c_str(); + } + + int Size() const + { + return (int)s.size(); + } + + opWideString& operator += (const opWideString& _s) + { + s += _s.s; + return *this; + } + + opWideString operator + (const opWideString& _s) const + { + opWideString ws = *this; + ws += _s; + return ws; + } + +private: + std::wstring s; +}; + +} // end namespace opstl + +#endif // end __OPSTL_OPSTRING__ + diff --git a/opcplusplus/Inc/opstl/opstl.h b/opcplusplus/Inc/opstl/opstl.h new file mode 100644 index 0000000..173f376 --- /dev/null +++ b/opcplusplus/Inc/opstl/opstl.h @@ -0,0 +1,28 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opSTL.h +// Date: 03/04/2007 +// +// Description: +// +// Include this header to include all opstl containers. +//**************************************************************** + +#ifndef __OPSTL__ +#define __OPSTL__ + +// Include the opstl containers. +#include "opArray.h" +#include "opDeque.h" +#include "opList.h" +#include "opHash.h" +#include "opSet.h" +#include "opMap.h" +#include "opString.h" +#include "opWideString.h" + +#endif // end __OPSTL__ + diff --git a/opcplusplus/Inc/opstl/opstlcommon.h b/opcplusplus/Inc/opstl/opstlcommon.h new file mode 100644 index 0000000..f7b4cca --- /dev/null +++ b/opcplusplus/Inc/opstl/opstlcommon.h @@ -0,0 +1,69 @@ +//**************************************************************** +// Copyright 2008 opGames Inc. - All Rights Reserved +// +// Authors: Kevin Depue & Lucas Ellis +// +// File: opstlcommon.h +// Date: 04/17/2007 +// +// Description: +// +// Common macros/initialization for all opstl containers. +//**************************************************************** + +#ifndef __OPSTL_COMMON__ +#define __OPSTL_COMMON__ + +// If we're compiling on Linux, figure +// out which compiler. +#if defined(__ICC) + #define OPSTL_INTEL_LINUX +#elif defined(__GNUG__) + #define OPSTL_GNU_LINUX +#endif + +// Define overridable default allocator. +#ifndef OPSTL_ALLOCATOR + #define OPSTL_ALLOCATOR(typ) std::allocator< typ > +#endif + +#ifndef OPSTL_SET_ALLOCATOR + #define OPSTL_SET_ALLOCATOR(typ) OPSTL_ALLOCATOR(typ) +#endif + +#ifndef OPSTL_ARRAY_ALLOCATOR + #define OPSTL_ARRAY_ALLOCATOR(typ) OPSTL_ALLOCATOR(typ) +#endif + +#ifndef OPSTL_DEQUE_ALLOCATOR + #define OPSTL_DEQUE_ALLOCATOR(typ) OPSTL_ALLOCATOR(typ) +#endif + +#ifndef OPSTL_LIST_ALLOCATOR + #define OPSTL_LIST_ALLOCATOR(typ) OPSTL_ALLOCATOR(typ) +#endif + +#ifndef OPSTL_STRING_ALLOCATOR + #define OPSTL_STRING_ALLOCATOR(typ) OPSTL_ALLOCATOR(typ) +#endif + +#ifndef OPSTL_MAP_ALLOCATOR + #define OPSTL_MAP_ALLOCATOR(typ) OPSTL_ALLOCATOR(typ) +#endif + +// Every container uses these. +#include +#include + +using namespace std; + +// Declare the opstl namespace and use it. +namespace opstl {} + +using namespace opstl; + +// Include iterator extensions. +#include "opInterfaces.h" + +#endif // end __OPSTL_COMMON__ + diff --git a/opcplusplus/Installers/builds/Linux-opC++0.9.tgz b/opcplusplus/Installers/builds/Linux-opC++0.9.tgz deleted file mode 100644 index 4b408cc..0000000 Binary files a/opcplusplus/Installers/builds/Linux-opC++0.9.tgz and /dev/null differ diff --git a/opcplusplus/Installers/linux32/INSTALL b/opcplusplus/Installers/linux32/INSTALL deleted file mode 100644 index 4f34321..0000000 --- a/opcplusplus/Installers/linux32/INSTALL +++ /dev/null @@ -1,29 +0,0 @@ -*-----------------------------------------------------* -*------------ opC++ Compiler Installation ------------* -*-----------------------------------------------------* - -Thank you for choosing opC++. To install the opC++ -Compiler on your Linux distribution, please follow the -following steps: - -1) Simply put this folder (opcpp/) in the installation - directory of your choice. This is usually something - like /usr/bin/. - -2) Make sure you set the permissions recursively - so that people can access the compiler and - the opC++ Standard Dialect. You can do this - by using the chmod command: - - chmod -R go+rx opcpp/ - -3) Put the compiler executable in your path. The - compiler is at opcpp/bin/linux32/release/opcpp. - -4) If you have a license file, make sure it is named - opC++.oplicense and place it in the same directory - as the compiler executable. If you do not do this, - you can use the -license option on the compiler to - specify the license location. If this is a Beta - build, the compiler will expire after a certain - time regardless of the license file. \ No newline at end of file diff --git a/opcplusplus/Installers/linux32/LICENSE-0.9 b/opcplusplus/Installers/linux32/LICENSE-0.9 deleted file mode 100644 index a92ae3d..0000000 --- a/opcplusplus/Installers/linux32/LICENSE-0.9 +++ /dev/null @@ -1,33 +0,0 @@ -OPC++ BETA -EVALUATION USE ONLY -SOFTWARE LICENSE AGREEMENT - -BY INSTALLING AND USING THIS SOFTWARE, YOU ARE CONSENTING TO BE BOUND BY AND ARE BECOMING A PARTY TO THIS AGREEMENT. IF THESE TERMS ARE CONSIDERED AN OFFER, ACCEPTANCE IS EXPRESSLY LIMITED TO THESE TERMS. - -GRANT. Subject to the terms of this Agreement, opGames LLC. ("opGames") hereby grants you a limited, personal, nontransferable, nonsublicensable, royalty-free, nonexclusive license to use one copy of the client software product you are about to install in object code form ("Software"). You may copy the Software for archival purposes, provided any copy must contain all of the original Software's proprietary notices. - -This software by is protected by both the United States copyright laws and international copyright treaty provisions. You must treat this software just like a book except that you may copy it onto a computer to be used and you may make archival copies of the software for the sole purpose of backing-up our software and protecting your investment from loss. - -By saying "just like a book," opGames means, for example, that this software may be used by a number of people and may be freely moved from one computer location to another, so long as there is no possibility of it being used at one location while it is being used at another. Just like a book cannot be read by two different people in two different places at the same time, neither can the software be used by two different people in two different places at the same time. - -You may not, directly or indirectly: modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the Software; or copy (except for archival purposes as set forth above), rent, lease, distribute, transfer or otherwise transfer rights to the Software; use the Software for timesharing or service bureau purposes; or remove any proprietary notices or labels on the Software. - -You may evaluate this software for Commercial Purposes for a reasonable period of time, but may not use any files generated by the Software for Commercial Purposes. You may not sell, transfer, or create derivative works based on any code generated by the Software for Commercial Purposes. Commercial Purposes in this agreement means any direct or indirect monetary gain derived from the use of the Software. - -TITLE. As between the parties, title, ownership rights, and intellectual property rights in and to the Software, and any copies or portions thereof, shall remain in opGames and its suppliers or licensors. The Software is protected by the copyright laws of the United States and international copyright treaties. Title, ownership rights, and intellectual property rights in and to any software, data, information, text, pictures, images, or other content ("Content") accessed through the Software or otherwise is the property of the applicable owner and may be protected by applicable copyright or other law. This License gives you no rights, title, or interest to Content (including without limitation Content that you create using the Software). - -DISCLAIMER OF WARRANTY. THE SOFTWARE, AND ANY SERVICES THAT YOU RECEIVE FROM OPGAMES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. OPGAMES HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO YOU AND YOU MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION. - -LIMITATION OF LIABILITY. You assume the entire risk as to the quality and performance of the Software. opGames assumes no liability for the cost of any service or repair if the Software is defective. - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL OPGAMES OR ITS LICENSORS, SUPPLIERS OR RESELLERS BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL opGames BE LIABLE FOR ANY DAMAGES IN EXCESS OF opGames' LIST PRICE FOR A LICENSE TO THE SOFTWARE, EVEN IF opGames SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO YOU. - -TERMINATION. opGames may, at its sole discretion, terminate this Agreement, the license granted herein, and your right to use or access the Software at any time. On termination, you must destroy all copies of the Software. - -EXPORT CONTROLS. You shall comply with all export laws and restrictions and regulations of the Department of Commerce, the United States Department of Treasury Office of Foreign Assets Control ("OFAC"), or other United States or foreign agency or authority, and not to export, or allow the export or re-export of the Software in violation of any such restrictions, laws or regulations (including, without limitation, export or re-export to destinations prohibited either in Country Groups Q, S, W, Y or Z country specified in the then current Supplement No. 1 to Section 770 of the U.S. Export Administration Regulations (or any successor supplement or regulations), or the OFAC regulations found at 31 C.F.R. 500 et seq.). By installing or using the Software, you are agreeing to the foregoing and you are representing and warranting that you are not located in, under the control of, or a national or resident of any restricted country or on any such list. - -MISCELLANEOUS. This Agreement represents the complete agreement concerning this license between the parties and supersedes all prior agreements and representations between them. It may be amended only by a writing executed by both parties. If any provision of this Agreement is held to be unenforceable for any reason, such provision shall be reformed only to the extent necessary to make it enforceable. This Agreement shall be governed by and construed under California law as such law applies to agreements between California residents entered into and to be performed within California. - -U.S. GOVERNMENT RESTRICTED RIGHTS. Use, duplication or disclosure by the Government is subject to restrictions set forth in subparagraphs (a) through (d) of the Commercial Computer-Restricted Rights clause at FAR 52.227-19 when applicable, or in subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clause in DFARS 252.227-7013, and in similar clauses in the NASA FAR Supplement. - -Created and produced by opGames LLC, business@op-games.com, www.op-games.com. diff --git a/opcplusplus/Installers/linux32/README b/opcplusplus/Installers/linux32/README deleted file mode 100644 index 957c931..0000000 --- a/opcplusplus/Installers/linux32/README +++ /dev/null @@ -1,23 +0,0 @@ -*----------------------------------------------------* -*------------------- opC++ README -------------------* -*----------------------------------------------------* - -Included in this archive is a tgz file called -default.tgz. It contains an empty default project. -You can use this as a starting point. You can add -dialect code to dialect.doh, and opC++ code to -code.oh. To unzip, simply type the following: - - tar -xvf default.tgz - -A makefile is included, and assumes that you have the -g++ compiler installed. If not, you may change it to -the C++ compiler of your choosing. - -At the top of main.h and main.cpp, there are -#include's that point to the generated code. If you -change the name of the generated directory, you will -have to update these #include's. - -You can see all command line options available to the -compiler by typing the compiler name with no options. \ No newline at end of file diff --git a/opcplusplus/Installers/linux32/build-all b/opcplusplus/Installers/linux32/build-all deleted file mode 100644 index 553e27d..0000000 --- a/opcplusplus/Installers/linux32/build-all +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -# build the compiler -make - -# build the archive -./build-archive 0.91 - - diff --git a/opcplusplus/Installers/linux32/build-archive b/opcplusplus/Installers/linux32/build-archive deleted file mode 100644 index a0f7174..0000000 --- a/opcplusplus/Installers/linux32/build-archive +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -# make the directory -mkdir opcpp -mkdir opcpp/bin -mkdir opcpp/bin/linux32 -mkdir opcpp/bin/linux32/release - -# copy the files -cp -r ../../Distribution/Css opcpp/ -cp -r ../../Distribution/opcpp/ opcpp/ -cp -r ../../Distribution/bin/linux32/release/opcpp opcpp/bin/linux32/release/opcpp -cp -r ../../Documentation/docs/ opcpp/ -cp LICENSE-$1 opcpp/LICENSE -cp INSTALL opcpp/ -cp README opcpp/ -cp -r default opcpp/default - -cd opcpp - -# remove .svn directories -find . -name .svn -type d -exec rm -fr {} \; > /dev/null - -# zip up the default project -tar -czvf default.tgz default -rm -fr default - -cd .. - -# zip up the archive -tar -czvf ../builds/Linux-opC++$1.tgz opcpp/ - -# remove the directory -rm -fr opcpp/ - - diff --git a/opcplusplus/Installers/linux32/default/code.oh b/opcplusplus/Installers/linux32/default/code.oh deleted file mode 100644 index 51d2dde..0000000 --- a/opcplusplus/Installers/linux32/default/code.oh +++ /dev/null @@ -1,2 +0,0 @@ -// code.oh -// Put opC++ code here. \ No newline at end of file diff --git a/opcplusplus/Installers/linux32/default/dialect.doh b/opcplusplus/Installers/linux32/default/dialect.doh deleted file mode 100644 index adde538..0000000 --- a/opcplusplus/Installers/linux32/default/dialect.doh +++ /dev/null @@ -1,4 +0,0 @@ -// dialect.doh -// Put opC++ dialect code here. - -opinclude "opc++dialect.doh" \ No newline at end of file diff --git a/opcplusplus/Installers/linux32/default/main.cpp b/opcplusplus/Installers/linux32/default/main.cpp deleted file mode 100644 index 0b6528a..0000000 --- a/opcplusplus/Installers/linux32/default/main.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// main.cpp - -// include generated code -#include "main.h" -#include "Generated/default/Generated.ocppindex" - -// Entry point. -int main() -{ - return 0; -} - diff --git a/opcplusplus/Installers/linux32/default/main.h b/opcplusplus/Installers/linux32/default/main.h deleted file mode 100644 index d62c8c2..0000000 --- a/opcplusplus/Installers/linux32/default/main.h +++ /dev/null @@ -1,5 +0,0 @@ -// main.h - -// include generated code -#include "Generated/default/Generated.oohindex" - diff --git a/opcplusplus/Installers/linux32/default/makefile b/opcplusplus/Installers/linux32/default/makefile deleted file mode 100644 index b194d79..0000000 --- a/opcplusplus/Installers/linux32/default/makefile +++ /dev/null @@ -1,37 +0,0 @@ -# opC++ default project makefile. - -#======================= -# opC++ variables -#======================= - -OPCPPFLAGS = -globmode -compact -OPCPPGENDIR = -gd Generated/default -OPCPPDOH = -doh dialect.doh -OPCPPOH = -oh code.oh -OPCPPDEPEN = *.doh *.oh -OPCPPTARGET = Generated/default/Generated.oohindex - -#======================= -# g++ variables -#======================= - -GPPFLAGS = -O2 -GPPINCDIR = -I . -I Generated/ -GPPSOURCE = *.cpp -GPPDEPEN = $(OPCPPTARGET) *.h *.cpp - -#======================= -# builds -#======================= - -# opcpp build -$(OPCPPTARGET): $(OPCPPDEPEN) - opcpp $(OPCPPFLAGS) $(OPCPPGENDIR) $(OPCPPDOH) $(OPCPPOH) - -# G++ build -default: $(GPPDEPEN) - g++ $(GPPFLAGS) $(GPPINCDIR) $(GPPSOURCE) -o default - -clean: - rm -fr Generated/ - rm -f default diff --git a/opcplusplus/Installers/linux32/makefile b/opcplusplus/Installers/linux32/makefile deleted file mode 100644 index 9f24d75..0000000 --- a/opcplusplus/Installers/linux32/makefile +++ /dev/null @@ -1,34 +0,0 @@ -# Kevin Depue (2007) -# opC++ Linux Makefile. - -# flags -CFLAGS = -fpermissive -static -Qinstall /opt/intel/cc/10.0.023 -Zp4 - -# includes -INCDIR = -I ../../../Lib/boost/ -INCDIR += -I ../../../opBasis/Inc/opstl/ -INCDIR += -I ../../../Lib/md5/ -INCDIR += -I ../../Inc/ - -# source -SOURCE = ../../Src/RegexSource.cpp -SOURCE += ../../../Lib/boost/libs/filesystem/src/operations_posix_windows.cpp -SOURCE += ../../../Lib/boost/libs/filesystem/src/convenience.cpp -SOURCE += ../../../Lib/boost/libs/filesystem/src/path_posix_windows.cpp -SOURCE += ../../../Lib/boost/libs/filesystem/src/exception.cpp -SOURCE += ../../../Lib/md5/md5.c -SOURCE += ../../Src/opCPPSource.cpp -SOURCE += ../../Src/LinuxSource.cpp - -intel32: - icpc ${CFLAGS} ${INCDIR} ${SOURCE} -o ../../Distribution/bin/linux32/release/opcpp - chmod a-st+rwx ../../Distribution/bin/linux32/release/opcpp - upx -9 ../../Distribution/bin/linux32/release/opcpp - -intel32-debug: - icpc ${CFLAGS} -g ${INCDIR} ${SOURCE} -o ../../Distribution/bin/linux32/debug/opcpp - chmod a-st+rwx ../../Distribution/bin/linux32/debug/opcpp - -# clean -clean: - rm -f *~ *.o *.ti *.ii diff --git a/opcplusplus/Installers/win32/License-0.9.txt b/opcplusplus/Installers/win32/License-0.9.txt deleted file mode 100644 index 0d8ef9b..0000000 --- a/opcplusplus/Installers/win32/License-0.9.txt +++ /dev/null @@ -1,33 +0,0 @@ -OPC++ BETA -EVALUATION USE ONLY -SOFTWARE LICENSE AGREEMENT - -BY INSTALLING AND USING THIS SOFTWARE, YOU ARE CONSENTING TO BE BOUND BY AND ARE BECOMING A PARTY TO THIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS AGREEMENT, CLICK THE "CANCEL" BUTTON AND THE INSTALLATION PROCESS WILL NOT CONTINUE. IF THESE TERMS ARE CONSIDERED AN OFFER, ACCEPTANCE IS EXPRESSLY LIMITED TO THESE TERMS. - -GRANT. Subject to the terms of this Agreement, opGames LLC. ("opGames") hereby grants you a limited, personal, nontransferable, nonsublicensable, royalty-free, nonexclusive license to use one copy of the client software product you are about to install in object code form ("Software"). You may copy the Software for archival purposes, provided any copy must contain all of the original Software's proprietary notices. - -This software by is protected by both the United States copyright laws and international copyright treaty provisions. You must treat this software just like a book except that you may copy it onto a computer to be used and you may make archival copies of the software for the sole purpose of backing-up our software and protecting your investment from loss. - -By saying "just like a book," opGames means, for example, that this software may be used by a number of people and may be freely moved from one computer location to another, so long as there is no possibility of it being used at one location while it is being used at another. Just like a book cannot be read by two different people in two different places at the same time, neither can the software be used by two different people in two different places at the same time. - -You may not, directly or indirectly: modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction), create derivative works based on, or otherwise attempt to discover the source code or underlying ideas or algorithms of the Software; or copy (except for archival purposes as set forth above), rent, lease, distribute, transfer or otherwise transfer rights to the Software; use the Software for timesharing or service bureau purposes; or remove any proprietary notices or labels on the Software. - -You may evaluate this software for Commercial Purposes for a reasonable period of time, but may not use any files generated by the Software for Commercial Purposes. You may not sell, transfer, or create derivative works based on any code generated by the Software for Commercial Purposes. Commercial Purposes in this agreement means any direct or indirect monetary gain derived from the use of the Software. - -TITLE. As between the parties, title, ownership rights, and intellectual property rights in and to the Software, and any copies or portions thereof, shall remain in opGames and its suppliers or licensors. The Software is protected by the copyright laws of the United States and international copyright treaties. Title, ownership rights, and intellectual property rights in and to any software, data, information, text, pictures, images, or other content ("Content") accessed through the Software or otherwise is the property of the applicable owner and may be protected by applicable copyright or other law. This License gives you no rights, title, or interest to Content (including without limitation Content that you create using the Software). - -DISCLAIMER OF WARRANTY. THE SOFTWARE, AND ANY SERVICES THAT YOU RECEIVE FROM OPGAMES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. OPGAMES HEREBY DISCLAIMS ALL EXPRESS OR IMPLIED WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO YOU AND YOU MAY HAVE OTHER LEGAL RIGHTS THAT VARY FROM STATE TO STATE OR BY JURISDICTION. - -LIMITATION OF LIABILITY. You assume the entire risk as to the quality and performance of the Software. opGames assumes no liability for the cost of any service or repair if the Software is defective. - -UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE, SHALL OPGAMES OR ITS LICENSORS, SUPPLIERS OR RESELLERS BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES. IN NO EVENT WILL opGames BE LIABLE FOR ANY DAMAGES IN EXCESS OF opGames' LIST PRICE FOR A LICENSE TO THE SOFTWARE, EVEN IF opGames SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. FURTHERMORE, SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT APPLY TO YOU. - -TERMINATION. opGames may, at its sole discretion, terminate this Agreement, the license granted herein, and your right to use or access the Software at any time. On termination, you must destroy all copies of the Software. - -EXPORT CONTROLS. You shall comply with all export laws and restrictions and regulations of the Department of Commerce, the United States Department of Treasury Office of Foreign Assets Control ("OFAC"), or other United States or foreign agency or authority, and not to export, or allow the export or re-export of the Software in violation of any such restrictions, laws or regulations (including, without limitation, export or re-export to destinations prohibited either in Country Groups Q, S, W, Y or Z country specified in the then current Supplement No. 1 to Section 770 of the U.S. Export Administration Regulations (or any successor supplement or regulations), or the OFAC regulations found at 31 C.F.R. 500 et seq.). By installing or using the Software, you are agreeing to the foregoing and you are representing and warranting that you are not located in, under the control of, or a national or resident of any restricted country or on any such list. - -MISCELLANEOUS. This Agreement represents the complete agreement concerning this license between the parties and supersedes all prior agreements and representations between them. It may be amended only by a writing executed by both parties. If any provision of this Agreement is held to be unenforceable for any reason, such provision shall be reformed only to the extent necessary to make it enforceable. This Agreement shall be governed by and construed under California law as such law applies to agreements between California residents entered into and to be performed within California. - -U.S. GOVERNMENT RESTRICTED RIGHTS. Use, duplication or disclosure by the Government is subject to restrictions set forth in subparagraphs (a) through (d) of the Commercial Computer-Restricted Rights clause at FAR 52.227-19 when applicable, or in subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clause in DFARS 252.227-7013, and in similar clauses in the NASA FAR Supplement. - -Created and produced by opGames LLC, business@op-games.com, www.op-games.com. diff --git a/opcplusplus/Installers/win32/associations.nsh b/opcplusplus/Installers/win32/associations.nsh deleted file mode 100644 index c1d4f32..0000000 --- a/opcplusplus/Installers/win32/associations.nsh +++ /dev/null @@ -1,133 +0,0 @@ -;===================================================== -; Contains association-related install scripting code. -;===================================================== - - -var /global extension -var /global icon -var /global typename -var /global description -var /global program - - - -; note: pass in the extension via $(extension), ie .doh -; pass in the icon via $(icon) -; pass in the type name via $(typename) -; pass in the description via $(description) -; pass in the program file via $(program) -Function AddIcon - - ReadRegStr $1 HKCR "$extension" "" - StrCmp $1 "" NoBackup - StrCmp $1 "$typename" NoBackup - WriteRegStr HKCR "$extension" "backup_val" $1 -NoBackup: - WriteRegStr HKCR "$extension" "" "$typename" - ReadRegStr $0 HKCR "$typename" "" - StrCmp $0 "" 0 Skip - WriteRegStr HKCR "$typename" "" "$description" -; WriteRegStr HKCR "$typename\shell" "" "open" - WriteRegStr HKCR "$typename\DefaultIcon" "" "$INSTDIR\$icon,0" -Skip: -; WriteRegStr HKCR "$typename\shell\open\command" "" '$program "%1"' - - -FunctionEnd - -Function un.RemoveIcon - - ;start of restore script - ReadRegStr $1 HKCR "$extension" "" - StrCmp $1 "$typename" 0 NoOwn ; only do this if we own it - ReadRegStr $1 HKCR "$extension" "backup_val" - StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key - DeleteRegKey HKCR "$extension" - Goto NoOwn -Restore: - WriteRegStr HKCR "$extension" "" $1 - DeleteRegValue HKCR "$extension" "backup_val" - - DeleteRegKey HKCR "$typename" ;Delete key with association settings - -NoOwn: - -FunctionEnd - -Function AddAssociations - - StrCpy $extension ".doh" - StrCpy $icon "opDOHIcon.ico" - StrCpy $typename "opCppDialect" - StrCpy $description "opC++ Dialect File" - Call AddIcon - - StrCpy $extension ".oh" - StrCpy $icon "opCppIcon.ico" - StrCpy $typename "opCppCode" - StrCpy $description "opC++ Code File" - Call AddIcon - - StrCpy $extension ".ooh" - StrCpy $icon "opOOHIcon.ico" - StrCpy $typename "opCppGenHeader" - StrCpy $description "opC++ Generated Header File" - Call AddIcon - - StrCpy $extension ".ocpp" - StrCpy $icon "opOCPPIcon.ico" - StrCpy $typename "opCppGenSource" - StrCpy $description "opC++ Generated Source File" - Call AddIcon - - StrCpy $extension ".oohindex" - StrCpy $icon "opIndexIcon.ico" - StrCpy $typename "opCppIndexHeader" - StrCpy $description "opC++ Header Index File" - Call AddIcon - - StrCpy $extension ".ocppindex" - StrCpy $icon "opIndexIcon.ico" - StrCpy $typename "opCppIndexSource" - StrCpy $description "opC++ Source Index File" - Call AddIcon - - System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' -FunctionEnd - -Function un.RemoveAssociations - - StrCpy $extension ".doh" - StrCpy $typename "opCppDialect" - Call un.RemoveIcon - - StrCpy $extension ".oh" - StrCpy $typename "opCppCode" - Call un.RemoveIcon - - StrCpy $extension ".ooh" - StrCpy $typename "opCppGenHeader" - Call un.RemoveIcon - - StrCpy $extension ".ocpp" - StrCpy $typename "opCppGenSource" - Call un.RemoveIcon - - StrCpy $extension ".oohindex" - StrCpy $typename "opCppIndexHeader" - Call un.RemoveIcon - - StrCpy $extension ".ocppindex" - StrCpy $typename "opCppIndexSource" - Call un.RemoveIcon - - System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' -FunctionEnd - -Section "Associate File Types" SEC05 - -Call AddAssociations - -SectionEnd - - diff --git a/opcplusplus/Installers/win32/compiler.nsh b/opcplusplus/Installers/win32/compiler.nsh deleted file mode 100644 index 5db9f1f..0000000 --- a/opcplusplus/Installers/win32/compiler.nsh +++ /dev/null @@ -1,257 +0,0 @@ -;================================================== -; Contains compiler-related install scripting code. -;================================================== - -; The opC++ Compiler Section -Section "opC++ Compiler" SEC01 - SetOutPath "$INSTDIR\" - SetOverwrite on - SetShellVarContext all - - SetOutPath "$INSTDIR\bin\win32\release" - File "..\..\Distribution\bin\win32\release\opCpp.exe" - - SetOutPath "$INSTDIR\" - File "..\..\Art\opCppIcon.ico" - File "..\..\Art\opDOHIcon.ico" - File "..\..\Art\opOOHIcon.ico" - File "..\..\Art\opOCPPIcon.ico" - File "..\..\Art\opIndexIcon.ico" - File "${LICENSE_FILE}" - - SetOutPath "$INSTDIR\opcpp\" - File /r "..\..\Distribution\opcpp\*.doh" - File /r "..\..\Distribution\opcpp\*.h" - File /r "..\..\Distribution\opcpp\*.cpp" - File /r "..\..\Distribution\opcpp\*.txt" - File /r "..\..\Distribution\opcpp\*.sln" - File /r "..\..\Distribution\opcpp\*.vcproj" - File /r "..\..\Distribution\opcpp\*Makefile" - File /r "..\..\Distribution\opcpp\*.dsp" - File /r "..\..\Distribution\opcpp\*.gif" - File /r "..\..\Distribution\opcpp\*.xml" - File /r "..\..\Distribution\opcpp\*.dsp" - File /r "..\..\Distribution\opcpp\*.html" - File /r "..\..\Distribution\opcpp\*.gif" - File /r "..\..\Distribution\opcpp\*.png" - File /r "..\..\Distribution\opcpp\*.dsp" - File /r "..\..\Distribution\opcpp\*.css" - - SetOutPath "$INSTDIR\Css\" - File /r "..\..\Distribution\Css\*.css" - File /r "..\..\Distribution\Css\*.xsl" - File /r "..\..\Distribution\Css\*.js" - -; Shortcuts - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" - CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" - CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\opC++ Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "$INSTDIR\opCppIcon.ico" - CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall opC++.lnk" "$INSTDIR\uninst.exe" - !insertmacro MUI_STARTMENU_WRITE_END -SectionEnd - - -;TODO: move this stuff to mydocs! - -var /global WinVersion - -var /global examplesdir -var /global benchdir - - -; The opCpp Examples Section -Section "Examples" SEC02 - - SetOverwrite on -SetShellVarContext all - - -; if its winxp, use the allusers path, if not, use the -ReadRegStr $WinVersion HKLM "Software\Microsoft\Windows NT\CurrentVersion" "VersionNumber" - -StrCmp "$WinVersion" "5.0" Win2k -StrCmp "$WinVersion" "4.0" Win2k - -;WinXP: -;set the output path to the allusers mydocuments folder... - - -StrCpy $examplesdir "$DOCUMENTS\opC++\Examples\" -StrCpy $benchdir "$DOCUMENTS\opC++\Benchmarks\" - -goto Continue - -Win2k: - - StrCpy $examplesdir "$INSTDIR\Examples\" - StrCpy $benchdir "$INSTDIR\Benchmarks\" - - -Continue: - - SetOutPath "$examplesdir" - -; if win2k or less, use installdir -; if winxp or greater, use mydocuments - - File /r "..\..\Distribution\Examples\*.h" - File /r "..\..\Distribution\Examples\*.cpp" - File /r "..\..\Distribution\Examples\*.oh" - File /r "..\..\Distribution\Examples\*.doh" - File /r "..\..\Distribution\Examples\*.sln" - File /r "..\..\Distribution\Examples\*.vcproj" - - SetOutPath "$benchdir" - - File /r "..\..\Distribution\Benchmarks\*.h" - File /r "..\..\Distribution\Benchmarks\*.cpp" - File /r "..\..\Distribution\Benchmarks\*.oh" - File /r "..\..\Distribution\Benchmarks\*.doh" - File /r "..\..\Distribution\Benchmarks\*.sln" - File /r "..\..\Distribution\Benchmarks\*.vcproj" - File /r "..\..\Distribution\Benchmarks\*.txt" - File /r "..\..\Distribution\Benchmarks\*.bat" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\opC++ Examples.lnk" "$examplesdir\" - !insertmacro MUI_STARTMENU_WRITE_END -SectionEnd - -; Documentation Section -Section "Documentation" SEC03 - SetOutPath "$INSTDIR\" - SetOverwrite on - SetShellVarContext all - - SetOutPath "$INSTDIR\docs\" - File /r "..\..\Documentation\docs\*.html" - File /r "..\..\Documentation\docs\*.png" - File /r "..\..\Documentation\docs\*.css" - File /r "..\..\Documentation\docs\*.gif" - - -; File "..\..\Documentation\Manual\manual.pdf" -; File "..\..\Documentation\opCpp-Getting-Started.pdf" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\opC++ Standard Dialect Reference.lnk" "$INSTDIR\docs\html\index.html" -; CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\opC++ Getting Started.lnk" "$INSTDIR\docs\opCpp-Getting-Started.pdf" -; CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\opC++ Manual.lnk" "$INSTDIR\docs\manual.pdf" - !insertmacro MUI_STARTMENU_WRITE_END - -SectionEnd - -SectionGroup "VS 2005 Addin" SEC04 - - - - - - -; Integration Section -Section "VS 2005 Package" SUBPACKAGE - SetOutPath "$INSTDIR\" - SetOverwrite on - - SetOutPath "$INSTDIR\bin\win32\release" - File "..\..\Distribution\bin\win32\final\opCpp2005.dll" - ;File "..\..\Distribution\bin\win32\release\opCpp2005.dll" - - ;move the registry stuff here... - Call AddIntegrationKeys - -SectionEnd - -var /global devenv - -Section "Reset Toolbars" SUBTOOLBAR - -MessageBox MB_YESNO "Do you really want to reset visual studio toolbars, updating opC++ integration? This is necessary on the first run only usually." /SD IDNO IDYES Reset -Goto PostReset -Reset: - -DetailPrint "---------------------------------------------------------------------" -DetailPrint "Resetting Toolbars, Registering Splash Screen, Running devenv /setup." -DetailPrint "---------------------------------------------------------------------" - -ReadRegStr $devenv HKLM "Software\Microsoft\VisualStudio\8.0" "InstallDir" -ExecWait '"$devenv\devenv.exe" /setup' $0 - -PostReset: - - -SectionEnd - -Section "Wizards" SUBWIZARDS - -; grabs the location of visual studio -;========================================= -ReadRegStr $devenv HKLM "Software\Microsoft\VisualStudio\8.0" "InstallDir" -;=========================================== - -SetOutPath "$devenv..\..\VC\vcwizards\" - -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.vcproj" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.js" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.oh" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.doh" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.cpp" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.h" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcwizards\*.inf" - -SetOutPath "$devenv..\..\VC\vcprojects\" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcprojects\*.ico" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcprojects\*.vsdir" -File /r "..\..\Addins\opC++Wizard\opC++Wizard\vcprojects\*.vsz" - -SetOutPath "$devenv..\..\VC\vcprojectitems\opC++\" -File /r "..\..\Addins\ItemWizards\opC++\*.doh" -File /r "..\..\Addins\ItemWizards\opC++\*.oh" -File /r "..\..\Addins\ItemWizards\opC++\*.vsdir" - -SetOutPath "$devenv..\..\VC\vcprojectitems\" -File /r "..\..\Addins\ItemWizards\*.vsdir" - - -SectionEnd - -SectionGroupEnd - - -Section "Visual Assist Support" VISUALASSIST - - ; add visual assist file extension - ; headers - ; oh - ; ooh - ; oohindex - - ; source - ; ocppindex - ; ocpp - - ;TODO: add visual assist option! - ;retrieve vax keys - ReadRegStr $R0 HKCU "Software\Whole Tomato\Visual Assist X\VANet8" "ExtHeader" - - IfErrors noVAX 0 - ${WordAdd} $R0 "." "+oh;" $R0 - ${WordAdd} $R0 "." "+ooh;" $R0 - ${WordAdd} $R0 "." "+oohindex;" $R0 - ${WordAdd} $R0 "." "+doh;" $R0 - - WriteRegStr HKCU "Software\Whole Tomato\Visual Assist X\VANet8" "ExtHeader" $R0 - - ReadRegStr $R0 HKCU "Software\Whole Tomato\Visual Assist X\VANet8" "ExtSource" - - IfErrors noVAX 0 - ${WordAdd} $R0 "." "+ocpp;" $R0 - ${WordAdd} $R0 "." "+ocppindex;" $R0 - - WriteRegStr HKCU "Software\Whole Tomato\Visual Assist X\VANet8" "ExtSource" $R0 - - noVAX: - -SectionEnd - diff --git a/opcplusplus/Installers/win32/gui.nsh b/opcplusplus/Installers/win32/gui.nsh deleted file mode 100644 index a338dd5..0000000 --- a/opcplusplus/Installers/win32/gui.nsh +++ /dev/null @@ -1,4 +0,0 @@ -;============================================= -; Contains gui-related install scripting code. -;============================================= - diff --git a/opcplusplus/Installers/win32/installer.nsi b/opcplusplus/Installers/win32/installer.nsi deleted file mode 100644 index 2a20ef8..0000000 --- a/opcplusplus/Installers/win32/installer.nsi +++ /dev/null @@ -1,153 +0,0 @@ -;================================ -; The base installer script file. -;================================ - -; TODO: test on win2k -; add a page for devenv? at least add a dialog thats ALWAYS shown -; add a page for current user/all user selection (registry is easy, and mydocs is easy...) - - -; Installer defines. -!define PRODUCT_NAME "opC++" -!define PRODUCT_VERSION "0.9.1" -!define PRODUCT_PUBLISHER "opGames LLC" -!define PRODUCT_WEB_SITE "http://www.opcpp.com/" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" -!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" -!define LICENSE_FILE "License-0.9.txt" - -LicenseForceSelection checkbox "I Agree" - -BrandingText "Copyright 2007 opGames LLC" - -; Compression algorithm used to build the installer. -SetCompressor lzma - -RequestExecutionLevel admin - -; Used to get windows version. -!include "WordFunc.nsh" -!insertmacro WordAdd - -; MUI 1.67 compatible ------ -!include "MUI.nsh" - -; MUI Settings -!define MUI_ABORTWARNING -!define MUI_ICON "..\..\Art\opCpp Icon.ico" -!define MUI_UNICON "..\..\Art\opCpp Uninstall Icon.ico" - -; Welcome page -!insertmacro MUI_PAGE_WELCOME - -; License page -!insertmacro MUI_PAGE_LICENSE "License-0.9.txt" - -; Components page -!insertmacro MUI_PAGE_COMPONENTS - -; Directory page -!insertmacro MUI_PAGE_DIRECTORY - -; Start menu page -var ICONS_GROUP -!define MUI_STARTMENUPAGE_NODISABLE -!define MUI_STARTMENUPAGE_DEFAULTFOLDER "opC++" -!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" -!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" -!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" -!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP - -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES - -; Finish page -!define MUI_FINISHPAGE_SHOWREADME "http://www.opcpp.com/?n=OpCpp.Beta" -!insertmacro MUI_PAGE_FINISH - -; Uninstaller pages -!insertmacro MUI_UNPAGE_INSTFILES - -; Language files -!insertmacro MUI_LANGUAGE "English" - -; Reserve files -!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS - -; build opcpp release mode -!system '"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" ..\..\opCpp.sln /Build Release /Project opCpp.vcproj' = 0 - -; build opCpp2005 release mode -!system '"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" ..\..\Addins\opCpp2005\opCpp2005.sln /Build Release' = 0 - -;build smartassembly addin version -!system '"..\..\..\Utilities\smartassembly\{smartassembly}.com" /build ..\..\Addins\opCpp2005\opCpp2005\smartproject.{sa}proj' = 0 - -;build the doxygen project -;!system '"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" ..\..\Documentation\Doxygen\Doxygen.sln /Build Release /Project Doxygen.vcproj' = 0 - -;doesn't quite work -;run the doxygen thing -;!system '"..\..\Documentation\GenerateDox.bat' = 0 - - -; MUI end ------ - -Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "../builds/Windows-${PRODUCT_NAME}${PRODUCT_VERSION}.exe" -InstallDir "$PROGRAMFILES\opC++" -;InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" -ShowInstDetails show -ShowUnInstDetails show - -!include "registry.nsh" - -; Install the compiler -!include "compiler.nsh" - - -Function .onInit - IntOp $0 ${SF_SELECTED} | ${SF_RO} - SectionSetFlags ${SEC01} $0 -FunctionEnd - -Section -AdditionalIcons - SetOutPath $INSTDIR - -SectionEnd - -; File Associations -!include "associations.nsh" - - -var /global devenvpath - -Section -Post - - Call AddRegistryKeys - - Call RefreshShellIcons - -; WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR/bin\../../Release/opcpp.exe" - -SectionEnd - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - - !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "opC++ Compiler with Standard Dialects and Features." - !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Sample Projects and Implementations for Various Development Environments." - !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "opC++ Help Links and Documentation Pdfs." - !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Visual Studio 2005 opC++ Integration." - !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "Associate File Types and Icons." - !insertmacro MUI_DESCRIPTION_TEXT ${SUBPACKAGE} "Installs the Visual Studio 2005 opC++ Addin" - !insertmacro MUI_DESCRIPTION_TEXT ${SUBTOOLBAR} "Resets Visual Studio Toolbars: not always necessary, but is on initial install - runs devenv /setup" - !insertmacro MUI_DESCRIPTION_TEXT ${SUBWIZARDS} "Installs Visual Studio Project and Item Wizards" - !insertmacro MUI_DESCRIPTION_TEXT ${VISUALASSIST} "Installs Visual Assist Support for opC++ File Extensions." - -!insertmacro MUI_FUNCTION_DESCRIPTION_END - -; Uninstallation Process -!include "uninstall.nsh" - - diff --git a/opcplusplus/Installers/win32/pathutil.nsh b/opcplusplus/Installers/win32/pathutil.nsh deleted file mode 100644 index 248424d..0000000 --- a/opcplusplus/Installers/win32/pathutil.nsh +++ /dev/null @@ -1,595 +0,0 @@ -!ifndef _AddToPath_nsh -!define _AddToPath_nsh - -!verbose 3 -!include "WinMessages.NSH" -!verbose 4 - -!ifndef WriteEnvStr_RegKey - !ifdef ALL_USERS - !define WriteEnvStr_RegKey \ - 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' - !else - !define WriteEnvStr_RegKey 'HKCU "Environment"' - !endif -!endif - -; AddToPath - Adds the given dir to the search path. -; Input - head of the stack -; Note - Win9x systems requires reboot - -Function AddToPath - Exch $0 - Push $1 - Push $2 - Push $3 - - # don't add if the path doesn't exist - IfFileExists "$0\*.*" "" AddToPath_done - - ReadEnvStr $1 PATH - Push "$1;" - Push "$0;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - Push "$1;" - Push "$0\;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - GetFullPathName /SHORT $3 $0 - Push "$1;" - Push "$3;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - Push "$1;" - Push "$3\;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - - Call IsNT - Pop $1 - StrCmp $1 1 AddToPath_NT - ; Not on NT - StrCpy $1 $WINDIR 2 - FileOpen $1 "$1\autoexec.bat" a - FileSeek $1 -1 END - FileReadByte $1 $2 - IntCmp $2 26 0 +2 +2 # DOS EOF - FileSeek $1 -1 END # write over EOF - FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n" - FileClose $1 - SetRebootFlag true - Goto AddToPath_done - - AddToPath_NT: - ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" - StrCpy $2 $1 1 -1 # copy last char - StrCmp $2 ";" 0 +2 # if last char == ; - StrCpy $1 $1 -1 # remove last char - StrCmp $1 "" AddToPath_NTdoIt - StrCpy $0 "$1;$0" - AddToPath_NTdoIt: - WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $0 - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - AddToPath_done: - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - -Function RemoveFromPath - Exch $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $5 - Push $6 - - IntFmt $6 "%c" 26 # DOS EOF - - Call IsNT - Pop $1 - StrCmp $1 1 unRemoveFromPath_NT - ; Not on NT - StrCpy $1 $WINDIR 2 - FileOpen $1 "$1\autoexec.bat" r - GetTempFileName $4 - FileOpen $2 $4 w - GetFullPathName /SHORT $0 $0 - StrCpy $0 "SET PATH=%PATH%;$0" - Goto unRemoveFromPath_dosLoop - - unRemoveFromPath_dosLoop: - FileRead $1 $3 - StrCpy $5 $3 1 -1 # read last char - StrCmp $5 $6 0 +2 # if DOS EOF - StrCpy $3 $3 -1 # remove DOS EOF so we can compare - StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "" unRemoveFromPath_dosLoopEnd - FileWrite $2 $3 - Goto unRemoveFromPath_dosLoop - unRemoveFromPath_dosLoopRemoveLine: - SetRebootFlag true - Goto unRemoveFromPath_dosLoop - - unRemoveFromPath_dosLoopEnd: - FileClose $2 - FileClose $1 - StrCpy $1 $WINDIR 2 - Delete "$1\autoexec.bat" - CopyFiles /SILENT $4 "$1\autoexec.bat" - Delete $4 - Goto unRemoveFromPath_done - - unRemoveFromPath_NT: - ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" - StrCpy $5 $1 1 -1 # copy last char - StrCmp $5 ";" +2 # if last char != ; - StrCpy $1 "$1;" # append ; - Push $1 - Push "$0;" - Call StrStr ; Find `$0;` in $1 - Pop $2 ; pos of our dir - StrCmp $2 "" unRemoveFromPath_done - ; else, it is in path - # $0 - path to add - # $1 - path var - StrLen $3 "$0;" - StrLen $4 $2 - StrCpy $5 $1 -$4 # $5 is now the part before the path to remove - StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove - StrCpy $3 $5$6 - - StrCpy $5 $3 1 -1 # copy last char - StrCmp $5 ";" 0 +2 # if last char == ; - StrCpy $3 $3 -1 # remove last char - - WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $3 - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - unRemoveFromPath_done: - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - - -; RemoveFromPath - Remove a given dir from the path -; Input: head of the stack - -Function un.RemoveFromPath - Exch $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $5 - Push $6 - - IntFmt $6 "%c" 26 # DOS EOF - - Call un.IsNT - Pop $1 - StrCmp $1 1 unRemoveFromPath_NT - ; Not on NT - StrCpy $1 $WINDIR 2 - FileOpen $1 "$1\autoexec.bat" r - GetTempFileName $4 - FileOpen $2 $4 w - GetFullPathName /SHORT $0 $0 - StrCpy $0 "SET PATH=%PATH%;$0" - Goto unRemoveFromPath_dosLoop - - unRemoveFromPath_dosLoop: - FileRead $1 $3 - StrCpy $5 $3 1 -1 # read last char - StrCmp $5 $6 0 +2 # if DOS EOF - StrCpy $3 $3 -1 # remove DOS EOF so we can compare - StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "" unRemoveFromPath_dosLoopEnd - FileWrite $2 $3 - Goto unRemoveFromPath_dosLoop - unRemoveFromPath_dosLoopRemoveLine: - SetRebootFlag true - Goto unRemoveFromPath_dosLoop - - unRemoveFromPath_dosLoopEnd: - FileClose $2 - FileClose $1 - StrCpy $1 $WINDIR 2 - Delete "$1\autoexec.bat" - CopyFiles /SILENT $4 "$1\autoexec.bat" - Delete $4 - Goto unRemoveFromPath_done - - unRemoveFromPath_NT: - ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH" - StrCpy $5 $1 1 -1 # copy last char - StrCmp $5 ";" +2 # if last char != ; - StrCpy $1 "$1;" # append ; - Push $1 - Push "$0;" - Call un.StrStr ; Find `$0;` in $1 - Pop $2 ; pos of our dir - StrCmp $2 "" unRemoveFromPath_done - ; else, it is in path - # $0 - path to add - # $1 - path var - StrLen $3 "$0;" - StrLen $4 $2 - StrCpy $5 $1 -$4 # $5 is now the part before the path to remove - StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove - StrCpy $3 $5$6 - - StrCpy $5 $3 1 -1 # copy last char - StrCmp $5 ";" 0 +2 # if last char == ; - StrCpy $3 $3 -1 # remove last char - - WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $3 - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - unRemoveFromPath_done: - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - - - -; AddToEnvVar - Adds the given value to the given environment var -; Input - head of the stack $0 environement variable $1=value to add -; Note - Win9x systems requires reboot - -Function AddToEnvVar - - Exch $1 ; $1 has environment variable value - Exch - Exch $0 ; $0 has environment variable name - - DetailPrint "Adding $1 to $0" - Push $2 - Push $3 - Push $4 - - - ReadEnvStr $2 $0 - Push "$2;" - Push "$1;" - Call StrStr - Pop $3 - StrCmp $3 "" "" AddToEnvVar_done - - Push "$2;" - Push "$1\;" - Call StrStr - Pop $3 - StrCmp $3 "" "" AddToEnvVar_done - - - Call IsNT - Pop $2 - StrCmp $2 1 AddToEnvVar_NT - ; Not on NT - StrCpy $2 $WINDIR 2 - FileOpen $2 "$2\autoexec.bat" a - FileSeek $2 -1 END - FileReadByte $2 $3 - IntCmp $3 26 0 +2 +2 # DOS EOF - FileSeek $2 -1 END # write over EOF - FileWrite $2 "$\r$\nSET $0=%$0%;$4$\r$\n" - FileClose $2 - SetRebootFlag true - Goto AddToEnvVar_done - - AddToEnvVar_NT: - ReadRegStr $2 ${WriteEnvStr_RegKey} $0 - StrCpy $3 $2 1 -1 # copy last char - StrCmp $3 ";" 0 +2 # if last char == ; - StrCpy $2 $2 -1 # remove last char - StrCmp $2 "" AddToEnvVar_NTdoIt - StrCpy $1 "$2;$1" - AddToEnvVar_NTdoIt: - WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1 - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - AddToEnvVar_done: - Pop $4 - Pop $3 - Pop $2 - Pop $0 - Pop $1 - -FunctionEnd - - -; RemoveFromEnvVar - Remove a given value from a environment var -; Input: head of the stack - -Function RemoveFromEnvVar - - Exch $1 ; $1 has environment variable value - Exch - Exch $0 ; $0 has environment variable name - - DetailPrint "Removing $1 from $0" - Push $2 - Push $3 - Push $4 - Push $5 - Push $6 - Push $7 - - IntFmt $7 "%c" 26 # DOS EOF - - Call IsNT - Pop $2 - StrCmp $2 1 unRemoveFromEnvVar_NT - ; Not on NT - StrCpy $2 $WINDIR 2 - FileOpen $2 "$2\autoexec.bat" r - GetTempFileName $5 - FileOpen $3 $5 w - GetFullPathName /SHORT $1 $1 - StrCpy $1 "SET $0=%$0%;$1" - Goto unRemoveFromEnvVar_dosLoop - - unRemoveFromEnvVar_dosLoop: - FileRead $2 $4 - StrCpy $6 $4 1 -1 # read last char - StrCmp $6 $7 0 +2 # if DOS EOF - StrCpy $4 $4 -1 # remove DOS EOF so we can compare - StrCmp $4 "$1$\r$\n" unRemoveFromEnvVar_dosLoopRemoveLine - StrCmp $4 "$1$\n" unRemoveFromEnvVar_dosLoopRemoveLine - StrCmp $4 "$1" unRemoveFromEnvVar_dosLoopRemoveLine - StrCmp $4 "" unRemoveFromEnvVar_dosLoopEnd - FileWrite $3 $4 - Goto unRemoveFromEnvVar_dosLoop - unRemoveFromEnvVar_dosLoopRemoveLine: - SetRebootFlag true - Goto unRemoveFromEnvVar_dosLoop - - unRemoveFromEnvVar_dosLoopEnd: - FileClose $3 - FileClose $2 - StrCpy $2 $WINDIR 2 - Delete "$2\autoexec.bat" - CopyFiles /SILENT $5 "$2\autoexec.bat" - Delete $5 - Goto unRemoveFromEnvVar_done - - unRemoveFromEnvVar_NT: - ReadRegStr $2 ${WriteEnvStr_RegKey} $0 - StrCpy $6 $2 1 -1 # copy last char - StrCmp $6 ";" +2 # if last char != ; - StrCpy $2 "$2;" # append ; - Push $2 - Push "$1;" - Call StrStr ; Find `$1;` in $2 - Pop $3 ; pos of our dir - StrCmp $3 "" unRemoveFromEnvVar_done - ; else, it is in path - # $1 - path to add - # $2 - path var - StrLen $4 "$1;" - StrLen $5 $3 - StrCpy $6 $2 -$5 # $6 is now the part before the path to remove - StrCpy $7 $3 "" $4 # $7 is now the part after the path to remove - StrCpy $4 $6$7 - - StrCpy $6 $4 1 -1 # copy last char - StrCmp $6 ";" 0 +2 # if last char == ; - StrCpy $4 $4 -1 # remove last char - - WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $4 - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - unRemoveFromEnvVar_done: - Pop $7 - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - -; RemoveFromEnvVar - Remove a given value from a environment var -; Input: head of the stack - -Function un.RemoveFromEnvVar - - Exch $1 ; $1 has environment variable value - Exch - Exch $0 ; $0 has environment variable name - - DetailPrint "Removing $1 from $0" - Push $2 - Push $3 - Push $4 - Push $5 - Push $6 - Push $7 - - IntFmt $7 "%c" 26 # DOS EOF - - Call un.IsNT - Pop $2 - StrCmp $2 1 unRemoveFromEnvVar_NT - ; Not on NT - StrCpy $2 $WINDIR 2 - FileOpen $2 "$2\autoexec.bat" r - GetTempFileName $5 - FileOpen $3 $5 w - GetFullPathName /SHORT $1 $1 - StrCpy $1 "SET $0=%$0%;$1" - Goto unRemoveFromEnvVar_dosLoop - - unRemoveFromEnvVar_dosLoop: - FileRead $2 $4 - StrCpy $6 $4 1 -1 # read last char - StrCmp $6 $7 0 +2 # if DOS EOF - StrCpy $4 $4 -1 # remove DOS EOF so we can compare - StrCmp $4 "$1$\r$\n" unRemoveFromEnvVar_dosLoopRemoveLine - StrCmp $4 "$1$\n" unRemoveFromEnvVar_dosLoopRemoveLine - StrCmp $4 "$1" unRemoveFromEnvVar_dosLoopRemoveLine - StrCmp $4 "" unRemoveFromEnvVar_dosLoopEnd - FileWrite $3 $4 - Goto unRemoveFromEnvVar_dosLoop - unRemoveFromEnvVar_dosLoopRemoveLine: - SetRebootFlag true - Goto unRemoveFromEnvVar_dosLoop - - unRemoveFromEnvVar_dosLoopEnd: - FileClose $3 - FileClose $2 - StrCpy $2 $WINDIR 2 - Delete "$2\autoexec.bat" - CopyFiles /SILENT $5 "$2\autoexec.bat" - Delete $5 - Goto unRemoveFromEnvVar_done - - unRemoveFromEnvVar_NT: - ReadRegStr $2 ${WriteEnvStr_RegKey} $0 - StrCpy $6 $2 1 -1 # copy last char - StrCmp $6 ";" +2 # if last char != ; - StrCpy $2 "$2;" # append ; - Push $2 - Push "$1;" - Call un.StrStr ; Find `$1;` in $2 - Pop $3 ; pos of our dir - StrCmp $3 "" unRemoveFromEnvVar_done - ; else, it is in path - # $1 - path to add - # $2 - path var - StrLen $4 "$1;" - StrLen $5 $3 - StrCpy $6 $2 -$5 # $6 is now the part before the path to remove - StrCpy $7 $3 "" $4 # $7 is now the part after the path to remove - StrCpy $4 $6$7 - - StrCpy $6 $4 1 -1 # copy last char - StrCmp $6 ";" 0 +2 # if last char == ; - StrCpy $4 $4 -1 # remove last char - - WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $4 - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - unRemoveFromEnvVar_done: - Pop $7 - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - - - - -!ifndef IsNT_KiCHiK -!define IsNT_KiCHiK - -########################################### -# Utility Functions # -########################################### - -; IsNT -; no input -; output, top of the stack = 1 if NT or 0 if not -; -; Usage: -; Call IsNT -; Pop $R0 -; ($R0 at this point is 1 or 0) - -!macro IsNT un -Function ${un}IsNT - Push $0 - ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - StrCmp $0 "" 0 IsNT_yes - ; we are not NT. - Pop $0 - Push 0 - Return - - IsNT_yes: - ; NT!!! - Pop $0 - Push 1 -FunctionEnd -!macroend -!insertmacro IsNT "" -!insertmacro IsNT "un." - -!endif ; IsNT_KiCHiK - -; StrStr -; input, top of stack = string to search for -; top of stack-1 = string to search in -; output, top of stack (replaces with the portion of the string remaining) -; modifies no other variables. -; -; Usage: -; Push "this is a long ass string" -; Push "ass" -; Call StrStr -; Pop $R0 -; ($R0 at this point is "ass string") - -!macro StrStr un -Function ${un}StrStr -Exch $R1 ; st=haystack,old$R1, $R1=needle - Exch ; st=old$R1,haystack - Exch $R2 ; st=old$R1,old$R2, $R2=haystack - Push $R3 - Push $R4 - Push $R5 - StrLen $R3 $R1 - StrCpy $R4 0 - ; $R1=needle - ; $R2=haystack - ; $R3=len(needle) - ; $R4=cnt - ; $R5=tmp - loop: - StrCpy $R5 $R2 $R3 $R4 - StrCmp $R5 $R1 done - StrCmp $R5 "" done - IntOp $R4 $R4 + 1 - Goto loop -done: - StrCpy $R1 $R2 "" $R4 - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Exch $R1 -FunctionEnd -!macroend -!insertmacro StrStr "" -!insertmacro StrStr "un." - -!endif ; _AddToPath_nsh - diff --git a/opcplusplus/Installers/win32/registry.nsh b/opcplusplus/Installers/win32/registry.nsh deleted file mode 100644 index 1531dfc..0000000 --- a/opcplusplus/Installers/win32/registry.nsh +++ /dev/null @@ -1,89 +0,0 @@ -;================================================== -; Contains registry-related install scripting code. -;================================================== - - - - - -Function RefreshShellIcons - ; This Gets Windows To Refresh Its Shell Icons - System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)' - - !define SHCNE_ASSOCCHANGED 0x08000000 - !define SHCNF_IDLIST 0 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - - - -; Write all the registry keys. -Function AddRegistryKeys - -; uninstall information in the registry - WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR/opCpp Icon.ico" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" - -; define visual studios GUID for c++ - !define cppvalue "{B2F072B0-ABC1-11D0-9D62-00C04FD9DFD9}" - - ; TODO: make a macro or something to do this: - ; copying code is getting ridiculous - -; associate our extensions with c++ (non-visualassist) - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Languages\File Extensions\.oh" "" ${cppvalue} - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Languages\File Extensions\.ooh" "" ${cppvalue} - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Languages\File Extensions\.ocpp" "" ${cppvalue} - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Languages\File Extensions\.doh" "" ${cppvalue} - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Languages\File Extensions\.oohindex" "" ${cppvalue} - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Languages\File Extensions\.ocppindex" "" ${cppvalue} - -FunctionEnd - -Function AddIntegrationKeys - ;TODO: add the visual studio package registry keys - ;TODO: parameterize on the GUID, the path, etc - ;TODO: need to know where system32 is... - - !define opCppGUID "{42231b8e-2a34-43c0-8504-96b74d38af4a}" - - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\InstalledProducts\opCpp2005" "Package" "${opCppGUID}" - WriteRegDword HKLM "Software\Microsoft\VisualStudio\8.0\InstalledProducts\opCpp2005" "UseInterface" 1 - - ;auto load the package - WriteRegDword HKLM "Software\Microsoft\VisualStudio\8.0\AutoLoadPackages\{F1536EF8-92EC-443C-9ED7-FDADF150DA82}" "${opCppGUID}" 0 - - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "" "opC++ 2005 Addin" - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "InprocServer32" "C:\WINDOWS\system32\mscoree.dll" - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "Class" "opGamesLLC.opCpp2005.opCpp2005" - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "CodeBase" "$INSTDIR\bin\win32\release\opCpp2005.dll" - - WriteRegDword HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "ID" 0x71 - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "MinEdition" "Standard" - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "ProductVersion" "1.0" - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "ProductName" "opC++ Compiler" - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" "CompanyName" "opGames LLC" - - WriteRegStr HKLM "Software\Microsoft\VisualStudio\8.0\Menus" "${opCppGUID}" ", 1000, 1" - - -FunctionEnd - - - -; Delete all the registry keys. -Function un.RemoveRegistryKeys - -DeleteRegKey HKLM "Software\Microsoft\VisualStudio\8.0\Packages\${opCppGUID}" -DeleteRegKey HKLM "Software\Microsoft\VisualStudio\8.0\InstalledProducts\opCpp2005" - - -FunctionEnd - -!undef opCppGUID - diff --git a/opcplusplus/Installers/win32/uninstall.nsh b/opcplusplus/Installers/win32/uninstall.nsh deleted file mode 100644 index abe0184..0000000 --- a/opcplusplus/Installers/win32/uninstall.nsh +++ /dev/null @@ -1,93 +0,0 @@ -;=================================================== -; Contains uninstall-related install scripting code. -;=================================================== - -Section Uninstall - !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP - - SetShellVarContext all - - ; TODO: make uninstall based on registry keys to make it conditional... - - - - - ;delete url - Delete "$INSTDIR\${PRODUCT_NAME}.url" - - ;delete uninstaller - Delete "$INSTDIR\uninst.exe" - - ; main path - RMDir /r "$INSTDIR\opcpp" - - RMDir /r "$INSTDIR\examples" - RMDir /r "$INSTDIR\docs" - RMDir /r "$INSTDIR\bin" - RMDir /r "$INSTDIR\css" - - Delete "$INSTDIR\*.ico" - Delete "$INSTDIR\*.txt" - - ;delete program file group - Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall opC++.lnk" - Delete "$SMPROGRAMS\$ICONS_GROUP\opC++ Website.lnk" - Delete "$SMPROGRAMS\$ICONS_GROUP\opC++ Examples.lnk" - Delete "$SMPROGRAMS\$ICONS_GROUP\opC++ Standard Dialect Reference.lnk" - - ; other folders - RMDir "$SMPROGRAMS\$ICONS_GROUP" - - ;delete directory if empty - RMDir "$INSTDIR\" - - -;TODO: rollback the registry keys - Call un.RemoveRegistryKeys - - - -MessageBox MB_YESNO "Do you want to remove all opC++ file associations?" /SD IDNO IDYES RemoveAssoc -Goto PostAssociations -RemoveAssoc: - Call un.RemoveAssociations - -PostAssociations: - - - -MessageBox MB_YESNO "Do you want to reset visual studio toolbars, completely removing all traces of opC++ integration? This is not required." /SD IDNO IDYES Reset -Goto PostReset -Reset: - -DetailPrint "---------------------------------------------------------------------" -DetailPrint "Resetting Toolbars, Registering Splash Screen, Running devenv /setup." -DetailPrint "---------------------------------------------------------------------" - -ReadRegStr $devenv HKLM "Software\Microsoft\VisualStudio\8.0" "InstallDir" -ExecWait '"$devenv\devenv.exe" /setup' $0 - -PostReset: - -; Push "$INSTDIR\bin" -; Call un.RemoveFromPath - -; Push "INCLUDE" -; Push "$INSTDIR\inc" -; Call un.RemoveFromEnvVar - - - DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" -; DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" - SetAutoClose true -SectionEnd - -Function un.onUninstSuccess - HideWindow - MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." -FunctionEnd - -Function un.onInit - MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 - Abort -FunctionEnd \ No newline at end of file diff --git a/opcplusplus/Makefile b/opcplusplus/Makefile deleted file mode 100644 index b8b6c52..0000000 --- a/opcplusplus/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -# opCPP Makefile -# can just be copied elsewhere and used - -# -# makes generated files -# - -#todo: only thing I need to add is making sure the directories are created -#1. extract directory from source -#2. mkdir (maybe as a target as well?) - -#test dir too for now. - -#todo: switch test w/ inc later -OHFILES = $(wildcard Inc/*.oh) -OHFILES+= $(wildcard Test/*.oh) - -OCPPFILES=$(patsubst %.oh,Generated/%.ocpp,$(OHFILES)) -OOHFILES=$(patsubst %.oh,Generated/%.ooh,$(OHFILES)) - -OCPPTEXT=$(patsubst %,\n\#include \"%\",$(OCPPFILES)) -OOHTEXT=$(patsubst %,\n\#include \"%\",$(OOHFILES)) - -CPP_HEADER:=//Generated.cpp: Generated opCpp File\n\n -H_HEADER:=//Generated.h: Generated opCpp File\n\n - -COMPILER := Release/opcpp.exe -#note: add -silent -COMPILEROPT := -verbose - -#stupid cmd issue in windows :P -ifeq "$(OS)" "Windows_NT" - MKDIR=mkdirectory -else - MKDIR=mkdir -endif - - -all: generated - - -generated: Generated/Generated.cpp Generated/Generated.h - -Generated/Generated.cpp: $(OCPPFILES) Generated/ - @echo Generating Generated.cpp... - @echo -e "$(CPP_HEADER)$(OCPPTEXT)" > Generated/Generated.cpp - - -Generated/: - @mkdir --parents Generated - - - -Generated/Generated.h: $(OOHFILES) Generated/ - @echo Generating Generated.h... - @echo -e "$(H_HEADER)$(OOHTEXT)" > Generated/Generated.h - -#should call opcpp actually. -#should also make .ocpp & .ooh readonly -Generated/%.ocpp: %.oh - @mkdir --parents $(@D) - @$(COMPILER) $(COMPILEROPT) -oh $< -ocpp $@ - - -#kinda weird here.. -# - -#not really necessary? -Generated/%.ooh: Generated/%.ocpp %.oh - @cp $*.oh $@ - - -clean: - @echo Cleaning... - @rm -r Generated/ - @echo Done. - diff --git a/opcplusplus/RunHugeTest.bat b/opcplusplus/RunHugeTest.bat index ba4a705..0ee499b 100644 --- a/opcplusplus/RunHugeTest.bat +++ b/opcplusplus/RunHugeTest.bat @@ -1 +1 @@ -Distribution\bin\win32\release\opcpp.exe -oh Oh/HugeCollada.oh -vdm xml -verbose -force \ No newline at end of file +Distribution\bin\win32\release\opcpp.exe -oh Oh/HugeCollada.oh -doh Distribution\opcpp\dialects\opc++dialect.doh -printxml -verbose -force \ No newline at end of file diff --git a/opcplusplus/Src/Demo.cpp b/opcplusplus/Src/Demo.cpp index f2f5547..bcb8edb 100644 --- a/opcplusplus/Src/Demo.cpp +++ b/opcplusplus/Src/Demo.cpp @@ -281,7 +281,7 @@ bool opDemoSupport::ValidateLicense(opParameters& params) opString hash = lines[2].RemoveWhitespace(); // If the hash of the key does not match the hash in the file, we're in demo mode. - if (md5Encode(key) != hash) + if (md5Encode(key.GetString()) != hash) { DemoMode = true; return false; diff --git a/opcplusplus/Src/DialectNodes.cpp b/opcplusplus/Src/DialectNodes.cpp index 5b78c09..3052ec0 100644 --- a/opcplusplus/Src/DialectNodes.cpp +++ b/opcplusplus/Src/DialectNodes.cpp @@ -662,7 +662,7 @@ bool CriteriaBodyNode::ValidateOperand(opNode* operand, DialectExpressionMap* ma pattern = pattern.Substring(1,pattern.Length()-1); - regex::Match("",pattern,valuemod); + opregex::Match("",pattern,valuemod); return true; } @@ -757,7 +757,7 @@ bool CriteriaBodyNode::EvaluateOperand(opNode* operand, ModifierSupportBase* sta pattern = pattern.Substring(1,pattern.Length()-1); - return regex::Match(modifiervalue,pattern,valuemod); + return opregex::Match(modifiervalue,pattern,valuemod); } else if(CriteriaGroupNode* group = node_cast(operand)) { @@ -855,7 +855,7 @@ void ModifierNodeBase::Validate() pattern = pattern.Substring(1,pattern.Length()-1); - regex::Match("",pattern,this); + opregex::Match("",pattern,this); } } diff --git a/opcplusplus/Src/Driver.cpp b/opcplusplus/Src/Driver.cpp index 090cc7e..6ab228a 100644 --- a/opcplusplus/Src/Driver.cpp +++ b/opcplusplus/Src/Driver.cpp @@ -148,10 +148,11 @@ bool opDriver::Convert(const opParameters &p) { opError::ExceptionError("Assert Failed (" + e.exceptionstring + ")"); } - catch( boost::filesystem::filesystem_error& fe ) + catch( std::filesystem::filesystem_error& fe ) { opString errorstr = fe.what(); - errorstr.Replace(fe.who(),"Error: Improper path detected "); + //TODO: this may be incorrect (was fe.who() replace) + errorstr.Replace(fe.path1().string(), "Error: Improper path detected "); Log(errorstr); Log(opParameters::Get().GetCommandLineString()); } @@ -187,11 +188,11 @@ bool opDriver::CheckDependencies() if(exists(filepath)) { - opString targetfile = filepath.leaf(); + opString targetfile = filepath.filename().string(); targetfile += ".target"; - path targetpath = p.GeneratedDirectory.GetString() / targetfile.GetString(); + path targetpath = path(p.GeneratedDirectory.GetString()) / targetfile.GetString(); // if it doesn't exist we need to create it if(!exists(targetpath)) @@ -199,20 +200,20 @@ bool opDriver::CheckDependencies() create_directories(p.GeneratedDirectory.GetString()); //just create a new empty target file - boost::filesystem::ofstream target(targetpath); + std::ofstream target(targetpath); target << "target file used for opC++ -dependencies"; bResult = true; continue; } //now check for the time - time_t filetime = last_write_time(filepath); - time_t targettime = last_write_time(targetpath); + auto filetime = last_write_time(filepath); + auto targettime = last_write_time(targetpath); if(filetime > targettime) { //just create a new empty target file - boost::filesystem::ofstream target(targetpath); + std::ofstream target(targetpath); target << "target file used for opC++ -dependencies"; bResult = true; continue; @@ -240,7 +241,7 @@ void opDriver::FindFilesInDirectory(const opString& directory, const string& ext path path_found = *itr; //does the extension match? - if(extension(path_found) == ext) + if(path_found.extension() == ext) foundfiles.insert(path_found); } } @@ -409,7 +410,7 @@ bool opDriver::NormalMode(const opParameters &p) return bResult; } -opString opDriver::ToGeneratedPath(const opString& inpath) +string opDriver::ToGeneratedPath(const opString& inpath) { const opParameters& p = opParameters::Get(); @@ -445,12 +446,12 @@ opString opDriver::ToGeneratedPath(const opString& inpath) adjustedstring.Replace("../","_/"); // 3. if it's a complete network path, I need to handle the root - path newpath = p.GeneratedDirectory.GetString() / adjustedstring.GetString(); + path newpath = path(p.GeneratedDirectory.GetString()) / adjustedstring.GetString(); return newpath.string(); } -opString opDriver::GetRelativePath(const opString& targetfile, const opString& basefile) +string opDriver::GetRelativePath(const opString& targetfile, const opString& basefile) { //return to_relative_path(targetpath.GetString(),basepath.GetString()).string(); //targetpath = Oh/Types.oh <- this must be the real path! @@ -463,7 +464,7 @@ opString opDriver::GetRelativePath(const opString& targetfile, const opString& b path basepath = basefile.GetString(); //absolute case - if(targetpath.is_complete()) + if(targetpath.is_absolute()) return targetpath.string(); path::iterator pathend = basepath.end(); @@ -482,12 +483,12 @@ opString opDriver::GetRelativePath(const opString& targetfile, const opString& b newpath /= targetpath; - newpath.normalize(); + //FIXME: newpath.normalize(); return newpath.string(); } -opString opDriver::FromGeneratedPath(const opString& inputpath) +string opDriver::FromGeneratedPath(const opString& inputpath) { const opParameters& p = opParameters::Get(); @@ -514,13 +515,13 @@ opString opDriver::FromGeneratedPath(const opString& inputpath) newpath = "/" + newpath.Right(4); } - return newpath; + return newpath.GetString(); } -opString opDriver::GetOutputPath(const opParameters& p, const path& inputpath) +string opDriver::GetOutputPath(const opParameters& p, const path& inputpath) { // convert the input path to the associated generated path - path adjustedpath = ToGeneratedPath(inputpath.string()).GetString(); + path adjustedpath = ToGeneratedPath(inputpath.string()); return adjustedpath.string(); } @@ -537,7 +538,7 @@ bool opDriver::NormalModeFile(const opParameters& p, const path& filename) path oohpath = (sfile + ".ooh").GetString(); path ocpppath = (sfile + ".ocpp").GetString(); - path outputpath = oohpath.branch_path(); + path outputpath = oohpath.parent_path(); if(!exists(outputpath)) create_directories(outputpath); @@ -545,17 +546,17 @@ bool opDriver::NormalModeFile(const opParameters& p, const path& filename) //lets check the timestamp... if(!p.Force) { - time_t ohtime = last_write_time(filename); + std::filesystem::file_time_type ohtime = last_write_time(filename); //we want to rebuild upon upgrades / new builds - time_t opcpptime = opPlatform::GetOpCppTimeStamp(); + std::filesystem::file_time_type opcpptime = opPlatform::GetOpCppTimeStamp(); if (exists(oohpath) && exists(ocpppath)) { - time_t oohtime = last_write_time(oohpath); - time_t ocpptime = last_write_time(ocpppath); + std::filesystem::file_time_type oohtime = last_write_time(oohpath); + std::filesystem::file_time_type ocpptime = last_write_time(ocpppath); - time_t dohtime = GetGeneratedDialectTimestamp(p); + std::filesystem::file_time_type dohtime = GetGeneratedDialectTimestamp(p); FileNode tempfile; tempfile.LoadDependencies(sfile + ".depend"); @@ -663,7 +664,7 @@ bool opDriver::NormalModeFile(const opParameters& p, const path& filename) path xmlpath = (sfile + ".xml").GetString(); // open the output files for the generated code... - boost::filesystem::ofstream xfile(xmlpath); + std::ofstream xfile(xmlpath); if(xfile.is_open()) { @@ -786,10 +787,10 @@ bool opDriver::ValidateDialectFiles(const opParameters& p) return true; } -time_t opDriver::GetDialectTimestamp(const opParameters& p) +std::filesystem::file_time_type opDriver::GetDialectTimestamp(const opParameters& p) { //find the maximum timestamp on the dialects (input dialects, since we output every time) - time_t maxtime = 0; + std::filesystem::file_time_type maxtime; //FIXME: = 0; for(int i = 0; i < p.Dialects.size(); i++) { @@ -806,10 +807,10 @@ time_t opDriver::GetDialectTimestamp(const opParameters& p) return maxtime; } -time_t opDriver::GetGeneratedDialectTimestamp(const opParameters& p) +std::filesystem::file_time_type opDriver::GetGeneratedDialectTimestamp(const opParameters& p) { //find the maximum timestamp on the dialects (input dialects, since we output every time) - time_t maxtime = 0; + std::filesystem::file_time_type maxtime;//FIXME: = 0; for(int i = 0; i < p.Dialects.size(); i++) { @@ -952,7 +953,7 @@ bool opDriver::DialectModeFile(const opParameters& p, const path& filename) opString spath = GetOutputPath(p,filename); path oohpath = (spath + ".ooh").GetString(); path ocpppath = (spath + ".ocpp").GetString(); - path outputpath = oohpath.branch_path(); + path outputpath = oohpath.parent_path(); if(!exists(outputpath)) create_directories(outputpath); @@ -965,9 +966,9 @@ bool opDriver::DialectModeFile(const opParameters& p, const path& filename) //we want to rebuild upon upgrades / new builds if (exists(oohpath) && exists(filename)) { - time_t oohtime = last_write_time(oohpath); - time_t opcpptime = opPlatform::GetOpCppTimeStamp(); - time_t dohtime = GetDialectTimestamp(p); + auto oohtime = last_write_time(oohpath); + auto opcpptime = opPlatform::GetOpCppTimeStamp(); + auto dohtime = GetDialectTimestamp(p); filenode->LoadDependencies(spath + ".depend"); bool bNewDepend = filenode->IsDependencyNewer(oohtime); @@ -1050,7 +1051,7 @@ bool opDriver::DialectModeFile(const opParameters& p, const path& filename) path xmlpath = (spath + ".xml").GetString(); // open the output files for the generated code... - boost::filesystem::ofstream xfile(xmlpath); + std::ofstream xfile(xmlpath); if(xfile.is_open()) { @@ -1170,11 +1171,11 @@ bool opDriver::CleanMode(const opParameters& p) { opString filestring = p.Depend[i]; path filepath = filestring.GetString(); - opString targetfile = filepath.leaf(); + opString targetfile = filepath.filename().string(); targetfile += ".target"; - path targetpath = p.GeneratedDirectory.GetString() / targetfile.GetString(); + path targetpath = path(p.GeneratedDirectory.GetString()) / targetfile.GetString(); if (exists(targetpath)) remove(targetpath); @@ -1210,10 +1211,11 @@ bool opDriver::GlobMode(const opParameters& p) { bResult = Globberobj.Glob(p); } - catch( boost::filesystem::filesystem_error& fe ) + catch( std::filesystem::filesystem_error& fe ) { opString errorstr = fe.what(); - errorstr.Replace(fe.who(),"Error: Improper path detected when globbing."); + //TODO: may be incorrect, was fe.what() + errorstr.Replace(fe.path1().string(), "Error: Improper path detected when globbing."); Log(errorstr); } catch (...) @@ -1244,7 +1246,7 @@ bool opDriver::CodeCurrent() opSet::iterator it = OhFiles.begin(); opSet::iterator end = OhFiles.end(); - time_t opcpptime = opPlatform::GetOpCppTimeStamp(); + auto opcpptime = opPlatform::GetOpCppTimeStamp(); while( it != end ) { @@ -1262,9 +1264,9 @@ bool opDriver::CodeCurrent() if(!exists(ocppfilepath)) return false; - time_t ohtime = last_write_time(ohfilepath); - time_t oohtime = last_write_time(oohfilepath); - time_t ocpptime = last_write_time(ocppfilepath); + auto ohtime = last_write_time(ohfilepath); + auto oohtime = last_write_time(oohfilepath); + auto ocpptime = last_write_time(ocppfilepath); if(ohtime > oohtime || ohtime > ocpptime @@ -1292,7 +1294,7 @@ bool opDriver::DialectsCurrent() opSet::iterator it = DohFiles.begin(); opSet::iterator end = DohFiles.end(); - time_t opcpptime = opPlatform::GetOpCppTimeStamp(); + auto opcpptime = opPlatform::GetOpCppTimeStamp(); while( it != end ) { @@ -1310,9 +1312,9 @@ bool opDriver::DialectsCurrent() if(!exists(ocppfilepath)) return false; - time_t dohtime = last_write_time(dohfilepath); - time_t oohtime = last_write_time(oohfilepath); - time_t ocpptime = last_write_time(ocppfilepath); + auto dohtime = last_write_time(dohfilepath); + auto oohtime = last_write_time(oohfilepath); + auto ocpptime = last_write_time(ocppfilepath); if(dohtime > oohtime || dohtime > ocpptime diff --git a/opcplusplus/Src/ErrorNames.cpp b/opcplusplus/Src/ErrorNames.cpp index 0518dd9..6ad1576 100644 --- a/opcplusplus/Src/ErrorNames.cpp +++ b/opcplusplus/Src/ErrorNames.cpp @@ -40,7 +40,7 @@ opString OPObjectBodyNode::ErrorName() name += "Name"; } - name += " {"LCHEV" ... "RCHEV"};"; + name += " {" LCHEV " ... " RCHEV "};"; return name; } @@ -95,9 +95,9 @@ opString OPObjectInheritanceNode::ErrorName() } //TODO: could improve this - name += " "LCHEV" [: "; + name += " " LCHEV " [: "; - name += "Parent] "RCHEV" { ... };"; + name += "Parent] " RCHEV " { ... };"; return name; } @@ -322,7 +322,7 @@ opString NamespaceBlockNode::ErrorName() //parent->GetDecl()->GetName()->PrintString(name); parent->GetName()->PrintString(name); - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -359,7 +359,7 @@ opString OPEnumBodyNode::ErrorName() opString name = "openum "; name += parent->GetName()->GetValue(); - name += " {"LCHEV" ... "RCHEV"};"; + name += " {" LCHEV " ... " RCHEV "};"; return name; } @@ -556,7 +556,7 @@ opString StateBlockNode::ErrorName() opString name = "state "; name += parent->GetName()->GetValue(); name += " "; - name += "{"LCHEV" ... "RCHEV"}"; + name += "{" LCHEV " ... " RCHEV "}"; return name; } @@ -578,7 +578,7 @@ opString TemplateTypeNode::ErrorName() Name->PrintString(name); if ( !Braces ) - name += "<"LCHEV" ... "RCHEV">"; + name += "<" LCHEV " ... " RCHEV ">"; else Braces->PrintString(name); @@ -688,7 +688,7 @@ opString FunctionDefinitionNode::ErrorName() if (Body) name += " { ... }"; else - name += " "LCHEV" ... "RCHEV" { ... }"; + name += " " LCHEV " ... " RCHEV " { ... }"; return name; } @@ -735,7 +735,7 @@ opString FunctionArgumentListNode::ErrorName() opString name; parent->GetName()->PrintString(name); - name += "("LCHEV" ... "RCHEV")"; + name += "(" LCHEV " ... " RCHEV ")"; if(parent->IsConst()) name += " const"; @@ -820,7 +820,7 @@ opString ValuedModifierArgumentNode::ErrorName() opString name; name = parent->GetModifier()->GetValue(); - name += "("LCHEV" ... "RCHEV")"; + name += "(" LCHEV " ... " RCHEV ")"; return name; } @@ -1023,7 +1023,7 @@ opString ConstructorInitializerListNode::ErrorName() if(!errorname.Length()) return ""; - opString name = errorname + " : "LCHEV" ... "RCHEV; + opString name = errorname + " : " LCHEV " ... " RCHEV; return name; } @@ -1044,7 +1044,7 @@ opString ConstructorInitializerArgumentNode::ErrorName() opString name; parent->GetName()->PrintString(name); - name += "("LCHEV" ... "RCHEV")"; + name += "(" LCHEV " ... " RCHEV ")"; return name; } @@ -1099,7 +1099,7 @@ opString OPDefineBodyNode::ErrorName() if(parent->GetArguments()) name += " ( ... )"; - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -1152,7 +1152,7 @@ opString OPMacroBodyNode::ErrorName() if(parent->GetArguments()) name += " ( ... )"; - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -1174,7 +1174,7 @@ opString OPMacroArgumentListNode::ErrorName() name += "opmacro "; name += parent->GetName()->GetValue(); - name += " ("LCHEV" ... "RCHEV")"; + name += " (" LCHEV " ... " RCHEV ")"; return name; } @@ -1215,7 +1215,7 @@ opString ExpandCallArgumentListNode::ErrorName() opString name = "expand "; parent->GetName()->PrintString(name); - name += "("LCHEV" ... "RCHEV")"; + name += "(" LCHEV " ... " RCHEV ")"; return name; } @@ -1240,7 +1240,7 @@ opString ConcatenationOperatorNode::ErrorName() if (Right) Right->PrintString(name); else - name += LCHEV" Identifier "RCHEV; + name += LCHEV " Identifier " RCHEV; return name; } @@ -1337,7 +1337,7 @@ opString FunctionPointerDeclNode::ErrorName() name += " "; - name += "("LCHEV" Scope::* Name "RCHEV")"; + name += "(" LCHEV " Scope::* Name " RCHEV ")"; if(parent->GetArguments()) parent->GetArguments()->PrintString(name); @@ -1955,7 +1955,7 @@ opString CategoryBodyNode::ErrorName() opString name; name = "category "; name += parent->GetName()->GetValue(); - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -2123,7 +2123,7 @@ opString CriteriaArgumentNode::ErrorName() else return ""; - name += "("LCHEV" \"optional regex pattern\" "RCHEV")"; + name += "(" LCHEV " \"optional regex pattern\" " RCHEV ")"; return name; } @@ -2178,7 +2178,7 @@ opString CategoryLocationBodyNode::ErrorName() name += "location "; parent->GetName()->PrintString(name); - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -2221,14 +2221,14 @@ opString ModifierArgumentNode::ErrorName() { opString name; parent->GetName()->PrintString(name); - name += "("LCHEV" \"optional regex expression\" "RCHEV")"; + name += "(" LCHEV " \"optional regex expression\" " RCHEV ")"; return name; } else if(FunctionModifierNode* parent = node_cast(GetParent())) { opString name; parent->GetName()->PrintString(name); - name += "("LCHEV" \"optional regex expression\" "RCHEV")"; + name += "(" LCHEV " \"optional regex expression\" " RCHEV ")"; return name; } @@ -2249,7 +2249,7 @@ opString CategoryMapBodyNode::ErrorName() parent->GetName()->PrintString(name); else name += "Name"; - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } else if(CategoryFunctionmapNode* parent = node_cast(GetParent())) @@ -2260,7 +2260,7 @@ opString CategoryMapBodyNode::ErrorName() parent->GetName()->PrintString(name); else name += "Name"; - name += " {"LCHEV" ... "RCHEV"}"; + name += " { " LCHEV " ... " RCHEV "}"; return name; } @@ -2342,7 +2342,7 @@ opString EnumerationBodyNode::ErrorName() opString name; name = "enumeration "; parent->GetName()->PrintString(name); - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -2381,7 +2381,7 @@ opString EnumerationLocationBodyNode::ErrorName() opString name; name = "location "; parent->GetName()->PrintString(name); - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; } @@ -2438,7 +2438,7 @@ opString DisallowBodyNode::ErrorName() name += "disallow"; name += " "; parent->GetName()->PrintString(name); - name += " {"LCHEV" ... "RCHEV"}"; + name += " {" LCHEV " ... " RCHEV "}"; return name; diff --git a/opcplusplus/Src/FileNodes.cpp b/opcplusplus/Src/FileNodes.cpp index b54025b..1dbe400 100644 --- a/opcplusplus/Src/FileNodes.cpp +++ b/opcplusplus/Src/FileNodes.cpp @@ -110,7 +110,7 @@ opString OPIncludeNode::GetFullFileString() //attempt to use the current file path path currentpath = GetFile()->GetInputName().GetString(); currentpath = FindIncludedFile(currentpath); - currentpath = currentpath.branch_path(); + currentpath = currentpath.parent_path(); path currentcombined = currentpath / filepath; if(exists(currentcombined)) @@ -234,7 +234,7 @@ void FileNode::AddDependency(const opString& filepath) void FileNode::SaveDependencies(const opString& filepath) { - std::ofstream ofs(filepath); + std::ofstream ofs(filepath.GetString()); opSet::iterator it = Dependencies.begin(); opSet::iterator end = Dependencies.end(); @@ -248,7 +248,7 @@ void FileNode::SaveDependencies(const opString& filepath) bool FileNode::LoadDependencies(const opString& filepath) { - std::ifstream ifs(filepath, ios::in); + std::ifstream ifs(filepath.GetString(), ios::in); opString file; opArray files; int size; @@ -269,7 +269,7 @@ bool FileNode::LoadDependencies(const opString& filepath) return false; } -bool FileNode::IsDependencyNewer(time_t timestamp) +bool FileNode::IsDependencyNewer(std::filesystem::file_time_type timestamp) { //if we find a newer one, return true opSet::iterator it = Dependencies.begin(); @@ -283,7 +283,7 @@ bool FileNode::IsDependencyNewer(time_t timestamp) path dependpath = filepath.GetString(); if(exists(dependpath)) { - time_t dependtime = last_write_time(dependpath); + auto dependtime = last_write_time(dependpath); if(dependtime > timestamp) return true; diff --git a/opcplusplus/Src/Globber.cpp b/opcplusplus/Src/Globber.cpp index b1fcd8d..7407c05 100644 --- a/opcplusplus/Src/Globber.cpp +++ b/opcplusplus/Src/Globber.cpp @@ -111,7 +111,7 @@ bool Globber::Glob(const opParameters& p) //found a valid oh file! if(exists(ohpath)) { - if( opString(ohpath.leaf()).Right('.') == extension) + if( opString(ohpath.filename().string()).Right('.') == extension) validohfiles.push_back(ohfileinfo(ohpath,oohpath,ocpppath)); } } @@ -170,14 +170,14 @@ void Globber::UpdateIndex(const vector& files, const path& indexpath bool bNewer = false; if(!bForce) { - time_t indextime = last_write_time(indexpath); - time_t opcpptime = opPlatform::GetOpCppTimeStamp(); + auto indextime = last_write_time(indexpath); + auto opcpptime = opPlatform::GetOpCppTimeStamp(); for(size_t i = 0; i < files.size(); i++) { - time_t ohtime = last_write_time(files[i].ohfilepath); + auto ohtime = last_write_time(files[i].ohfilepath); - time_t generatedtime = bheader? + auto generatedtime = bheader? last_write_time(files[i].oohfilepath): last_write_time(files[i].ocppfilepath); @@ -420,9 +420,9 @@ void Globber::FindFilesInDirectoryRecursive(const path& directory, const opStrin { //get the path opstring.. path path_found = *itr; - + //does the extension match? - if(extension(path_found) == ext) + if(path_found.extension() == ext.GetString()) foundfiles.insert(path_found); } }} diff --git a/opcplusplus/Src/ModifierNodes.cpp b/opcplusplus/Src/ModifierNodes.cpp index 00794f4..f66a5c7 100644 --- a/opcplusplus/Src/ModifierNodes.cpp +++ b/opcplusplus/Src/ModifierNodes.cpp @@ -157,7 +157,7 @@ void ModifiersNode::CheckDataModifiers() pattern = pattern.Substring(1,pattern.Size()-1); //check regex pattern! - if(!regex::Match(stringvalue,pattern,modifier)) + if(!opregex::Match(stringvalue,pattern,modifier)) { //GenericError("Invalid data modifier value, pattern mismatch (" + pattern + ")"); opError::InvalidValueError(newnode,modifier); @@ -216,7 +216,7 @@ void ModifiersNode::CheckFunctionModifiers() pattern = pattern.Substring(1,pattern.Size()-1); //check regex pattern! - if(!regex::Match(stringvalue,pattern,modifier)) + if(!opregex::Match(stringvalue,pattern,modifier)) { opError::InvalidValueError(newnode,modifier); } diff --git a/opcplusplus/Src/Parameters.cpp b/opcplusplus/Src/Parameters.cpp index 650f158..3119ba6 100644 --- a/opcplusplus/Src/Parameters.cpp +++ b/opcplusplus/Src/Parameters.cpp @@ -355,7 +355,7 @@ bool opParameters::Parse() opOption* option = GetOption(optionstring); // check for beta build - if ( optionstring == "beta" && opBetaSupport::IsBetaBuild() ) + if ( optionstring.GetString() == "beta" && opBetaSupport::IsBetaBuild()) continue; // if this is an invalid option and it's not the @@ -363,7 +363,7 @@ bool opParameters::Parse() if ( !option ) { //not an option, error - if ( optionstring != "beta" ) + if ( optionstring.GetString() != "beta" ) { Log(opString("Unknown Argument : ") + optionstring); Log(""); diff --git a/opcplusplus/Src/Platforms.cpp b/opcplusplus/Src/Platforms.cpp index 147d682..cf024a3 100644 --- a/opcplusplus/Src/Platforms.cpp +++ b/opcplusplus/Src/Platforms.cpp @@ -40,9 +40,9 @@ opString opPlatform::GetOpCppDirectory() } // Returns the timestamp on the executable. -time_t opPlatform::GetOpCppTimeStamp() +std::filesystem::file_time_type opPlatform::GetOpCppTimeStamp() { - boost::filesystem::path opcpppath = GetOpCppPath().GetString(); + std::filesystem::path opcpppath = GetOpCppPath().GetString(); return last_write_time(opcpppath); } diff --git a/opcplusplus/Src/Print.cpp b/opcplusplus/Src/Print.cpp index c6d5dbe..06c08d5 100644 --- a/opcplusplus/Src/Print.cpp +++ b/opcplusplus/Src/Print.cpp @@ -373,7 +373,7 @@ void DialectFileNode::PrintHighlighting(opSectionStream& stream) Token t = (Token) i; opString name = opTokenMap::GetString(t); - if (name != "@") + if (name.GetString() != "@") HighlightKeyword(stream, name); } @@ -387,7 +387,7 @@ void DialectFileNode::PrintHighlighting(opSectionStream& stream) Token t = (Token) i; opString name = opTokenMap::GetString(t); - if (name != "c++") + if (name.GetString() != "c++") HighlightKeyword(stream, name); } @@ -2211,7 +2211,7 @@ void ModifiersNode::PrintBuiltIn(opSectionStream& stream) } //NOTE: special case for opstatic, need to add transforms! else if ( token == T_MODIFIER - && node_cast( *i )->GetValue() == "opstatic" ) + && node_cast( *i )->GetValue().GetString() == "opstatic") { stream << "static "; } diff --git a/opcplusplus/Src/RegexSource.cpp b/opcplusplus/Src/RegexSource.cpp index f350779..4c1e379 100644 --- a/opcplusplus/Src/RegexSource.cpp +++ b/opcplusplus/Src/RegexSource.cpp @@ -13,20 +13,37 @@ #include "opSTL.h" -#include "../../Lib/boost/boost/xpressive/xpressive.hpp" +//#include "../../Lib/boost/boost/xpressive/xpressive.hpp" +// +//using boost::xpressive::sregex; +//using boost::xpressive::smatch; +//using boost::xpressive::regex_match; -using boost::xpressive::sregex; -using boost::xpressive::smatch; -using boost::xpressive::regex_match; +#include +//using std::regex; -namespace regex +namespace opregex { bool Match(const opString& matchstring, const opString& pattern) { + /* sregex expression = sregex::compile(pattern.GetString()); smatch match; return regex_match(matchstring.GetString(),match,expression); + */ + + std::smatch matches; + + std::regex regex(pattern.GetString()); + + string _matchstring = matchstring.GetString(); + + auto result = std::regex_match(_matchstring, + matches, + regex); + + return result; } }; diff --git a/opcplusplus/Src/WindowsSource.cpp b/opcplusplus/Src/WindowsSource.cpp index 9286daa..511e532 100644 --- a/opcplusplus/Src/WindowsSource.cpp +++ b/opcplusplus/Src/WindowsSource.cpp @@ -21,7 +21,7 @@ void errors::opLog::DebugLog(const opString& s) { - OutputDebugString(s); + OutputDebugString(s.GetString().c_str()); } /*=== platform ===*/ diff --git a/opcplusplus/Src/main.cpp b/opcplusplus/Src/main.cpp index 27cd6cb..3ba205d 100644 --- a/opcplusplus/Src/main.cpp +++ b/opcplusplus/Src/main.cpp @@ -46,9 +46,13 @@ int main(int argc, char** argv) std::ios::sync_with_stdio(false); // setup boost filesystem's behavior + // FIXME: verify // (native instead of portable, so windows paths are allowed) - path::default_name_check(boost::filesystem::native); - boost::filesystem::initial_path(); + + //TODO: this might be needed, but moved? + //path::default_name_check(boost::filesystem::native); + + std::filesystem::current_path(); /*=== parse the executable location ===*/ diff --git a/opcplusplus/Src/opError.cpp b/opcplusplus/Src/opError.cpp index 855e34c..b1163d1 100644 --- a/opcplusplus/Src/opError.cpp +++ b/opcplusplus/Src/opError.cpp @@ -81,7 +81,7 @@ void opError::InitParseErrors() ParseErrors[G_CPPFILE] = "C++ File";//ErrorNamed ParseErrors[G_FUNDAMENTAL_TYPE] = "Fundamental-Type";//ErrorNamed ParseErrors[G_NAMESPACE] = "namespace Name { ... }";//ErrorNamed - ParseErrors[G_NAMESPACEBLOCK] = "namespace Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_NAMESPACEBLOCK] = "namespace Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_NAMESPACEDECL] = "namespace Name { ... }";//ErrorNamed ParseErrors[G_NAMESPACE_ALIAS] = "namespace Alias = Name;"; ParseErrors[G_BRACE_BLOCK] = "{ ... }";//ok @@ -91,12 +91,12 @@ void opError::InitParseErrors() ParseErrors[G_POINTER] = "Pointer-Type";//ErrorNamed ParseErrors[G_POINTER_MEMBER] = "Type Scope::*"; ParseErrors[G_OPENUM] = "openum Name { ... };";//ErrorNamed - ParseErrors[G_OPENUM_BODY] = "openum Name {"LCHEV" ... "RCHEV"};";//ErrorNamed + ParseErrors[G_OPENUM_BODY] = "openum Name {" LCHEV " ... " RCHEV "};";//ErrorNamed ParseErrors[G_OPENUM_ELEMENT] = "EnumName [= ... ],";//ErrorNamed - ParseErrors[G_OPENUM_INITIALIZATION] = "EnumName = "LCHEV" Value "RCHEV",";//ErrorNamed + ParseErrors[G_OPENUM_INITIALIZATION] = "EnumName = " LCHEV " Value " RCHEV ",";//ErrorNamed ParseErrors[G_OPOBJECT_INHERITANCE] = ": Visibility Name";//ErrorNamed ParseErrors[G_STATE] = "state Name { ... }";//ErrorNamed; - ParseErrors[G_STATEBLOCK] = "state Name {"LCHEV" ... "RCHEV"}";//ErrorNamed; + ParseErrors[G_STATEBLOCK] = "state Name {" LCHEV " ... " RCHEV "}";//ErrorNamed; ParseErrors[G_TEMPLATE_TYPE] = "TemplateName< ... >";//ErrorNamed ParseErrors[G_TEMPLATE_TYPE_BODY] = "< ... >";//ErrorNamed ParseErrors[G_TEMPLATE_DECL] = "template< ... >";//ErrorNamed @@ -110,9 +110,9 @@ void opError::InitParseErrors() ParseErrors[G_CONSTRUCTOR] = "Constructor( ... )";//ErrorNamed ParseErrors[G_CONSTRUCTOR_PROTOTYPE] = "Constructor( ... )";//ErrorNamed ParseErrors[G_CONSTRUCTOR_DEFINITION] = "Constructor( ... ) { ... }";//ErrorNamed - ParseErrors[G_CONSTRUCTOR_INITIALIZER_LIST] = "Constructor( ... ) : "LCHEV" ... "RCHEV;//ErrorNamed + ParseErrors[G_CONSTRUCTOR_INITIALIZER_LIST] = "Constructor( ... ) : " LCHEV " ... " RCHEV;//ErrorNamed ParseErrors[G_CONSTRUCTOR_INITIALIZER] = "Initializer( ... )";//ErrorNamed - ParseErrors[G_CONSTRUCTOR_INITIALIZER_ARGUMENT] = "Initializer("LCHEV" ... "RCHEV")";//ErrorNamed + ParseErrors[G_CONSTRUCTOR_INITIALIZER_ARGUMENT] = "Initializer(" LCHEV " ... " RCHEV ")";//ErrorNamed ParseErrors[G_DESTRUCTOR] = "~Destructor( ... )"; ParseErrors[G_DESTRUCTOR_PROTOTYPE] = "~Destructor( ... )"; ParseErrors[G_DESTRUCTOR_DEFINITION] = "~Destructor( ... ) { ... }"; @@ -124,14 +124,14 @@ void opError::InitParseErrors() ParseErrors[G_REFERENCE] = "Reference-Type";//ErrorNamed ParseErrors[G_TYPENAME] = "typename Type";//ErrorNamed ParseErrors[G_FUNCTION_POINTER] = "ReturnType ( *Name )( ... )";//ErrorNamed - ParseErrors[G_FUNCTION_POINTER_DECL] = "ReturnType ("LCHEV" *Name "RCHEV")( ... )";//ErrorNamed + ParseErrors[G_FUNCTION_POINTER_DECL] = "ReturnType (" LCHEV " *Name " RCHEV ")( ... )";//ErrorNamed ParseErrors[G_OPERATOR] = "operator OperatorName";//ErrorNamed ParseErrors[G_OPDEFINE] = "opdefine Name [optional ( ... )] { ... }";//ErrorNamed - ParseErrors[G_OPDEFINE_BODY] = "opdefine Name [optional ( ... )] {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_OPDEFINE_BODY] = "opdefine Name [optional ( ... )] {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_OPMACRO] = "opmacro Name [optional ( ... )] { ... }";//ErrorNamed - ParseErrors[G_OPMACRO_BODY] = "opmacro Name [optional ( ... )] {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_OPMACRO_BODY] = "opmacro Name [optional ( ... )] {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_OPMACRO_ARGUMENT] = "[optional 'argument'] Name";//ok - ParseErrors[G_OPMACRO_ARGUMENT_LIST] = "opmacro Name ("LCHEV" ... "RCHEV")";//ErrorNamed + ParseErrors[G_OPMACRO_ARGUMENT_LIST] = "opmacro Name (" LCHEV " ... " RCHEV ")";//ErrorNamed ParseErrors[G_POUND_DEFINE] = "Standard C++ #define Definition";//ErrorNamed ParseErrors[G_POUND_ELIF] = "Standard C++ #elif Definition";//ErrorNamed ParseErrors[G_POUND_ELSE] = "Standard C++ #else Definition";//ErrorNamed @@ -150,23 +150,23 @@ void opError::InitParseErrors() ParseErrors[G_OPINCLUDE] = "opinclude \"Filename\"";//ErrorNamed ParseErrors[G_OPOBJECT] = "CategoryType Name [ : Visibility Inheritance ] { ... }";//ErrorNamed ParseErrors[G_OPOBJECT_INHERITANCE] = ": Visibility Inheritance";//ErrorNamed - ParseErrors[G_OPOBJECT_BODY] = "CategoryType Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_OPOBJECT_BODY] = "CategoryType Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_EXPAND_CALL] = "expand Name( ... )";//ErrorNamed - ParseErrors[G_EXPAND_CALL_ARGUMENT_LIST] = "expand Name("LCHEV" ... "RCHEV")";//ErrorNamed + ParseErrors[G_EXPAND_CALL_ARGUMENT_LIST] = "expand Name(" LCHEV " ... " RCHEV ")";//ErrorNamed ParseErrors[G_EXPAND_CALL_ARGUMENT] = ParseErrors[G_EXPAND_CALL_ARGUMENT_LIST];//ok ParseErrors[G_CONCATENATION_OPERATOR] = "Identifier@Identifier"; ParseErrors[G_CONCATENATION_ARGUMENT_OPERATOR] = "Identifier"; ParseErrors[G_SINGLE_QUOTE_OPERATOR] = "`quoted character`"; ParseErrors[G_DOUBLE_QUOTE_OPERATOR] = "``quoted string``"; ParseErrors[G_VALUED_MODIFIER] = "Modifier( ... )";//ErrorNamed - ParseErrors[G_VALUED_MODIFIER_ARGUMENT] = "Modifier("LCHEV" ... "RCHEV")";//ErrorNamed + ParseErrors[G_VALUED_MODIFIER_ARGUMENT] = "Modifier(" LCHEV " ... " RCHEV ")";//ErrorNamed ParseErrors[G_FRIEND] = "friend [optional class/struct] Name or friend FunctionPrototype or friend FunctionDefinition";//ErrorNamed ParseErrors[G_MODIFIERS] = "Modifiers"; //TODO: what does this do? ever get called? ParseErrors[G_AUTO_MODIFIERS] = "Modifiers"; //TODO: what does this do? ever get called? ParseErrors[G_TYPEDEF] = "typedef [optional const/volatile] Type Name";//ErrorNamed ParseErrors[G_DATA_DECLARATION] = "Modifiers Type Name"; ParseErrors[G_DATA_INITIALIZATION] = "Modifiers Type Name = ..."; - ParseErrors[G_DATA_BITS] = " : "LCHEV" Bits "RCHEV; + ParseErrors[G_DATA_BITS] = " : " LCHEV " Bits " RCHEV; ParseErrors[G_CPLUSPLUS] = "c++ { ... }"; ParseErrors[G_CPLUSPLUS_BODY] = ParseErrors[G_CPLUSPLUS]; ParseErrors[G_USING_NAMESPACE_KEYWORD] = "using namespace"; @@ -204,41 +204,41 @@ void opError::InitParseErrors() ParseErrors[G_DIALECTFILE] = "opC++ Dialect File";//ok ParseErrors[G_CATEGORY] = "category Name { ... }";//ErrorNamed - ParseErrors[G_CATEGORY_BODY] = "category Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_CATEGORY_BODY] = "category Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_CATEGORY_DATAMAP] = "datamap Name { ... }";//ErrorNamed ParseErrors[G_CATEGORY_FUNCTIONMAP] = "functionmap Name { ... }";//ErrorNamed ParseErrors[G_DATAMODIFIER] = "datamodifier Name or datamodifier Name()";//ErrorNamed ParseErrors[G_FUNCTIONMODIFIER] = "functionmodifier Name or functionmodifier Name()";//ErrorNamed ParseErrors[G_IS] = "is ModifierExpression";//ErrorNamed - ParseErrors[G_IS_BODY] = "is "LCHEV" ModifierExpression "RCHEV; + ParseErrors[G_IS_BODY] = "is " LCHEV " ModifierExpression " RCHEV; ParseErrors[G_CRITERIA_ARGUMENT] = "\"Criteria Regex Pattern\"";//ErrorNamed ParseErrors[G_CATEGORY_LOCATION] = "location Name { ... }";//ErrorNamed - ParseErrors[G_CATEGORY_LOCATION_BODY] = "location Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_CATEGORY_LOCATION_BODY] = "location Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_NOTE] = "note Name";//ErrorNamed - ParseErrors[G_NOTE_BODY] = "note Name {"LCHEV" ... "RCHEV"}"; + ParseErrors[G_NOTE_BODY] = "note Name {" LCHEV " ... " RCHEV "}"; ParseErrors[G_NOTE_DEFINITION] = "note specifier::tag::subtag... ( ... ) { ... }";//ErrorNamed - ParseErrors[G_NOTE_DEFINITION_ARGUMENT_LIST] = "note specifier::tag::subtag... ("LCHEV" ... "RCHEV")";//ErrorNamed + ParseErrors[G_NOTE_DEFINITION_ARGUMENT_LIST] = "note specifier::tag::subtag... (" LCHEV " ... " RCHEV ")";//ErrorNamed ParseErrors[G_NOTE_DEFINITION_ARGUMENT] = "note argument";//ok ParseErrors[G_EXPANDABLE_ARGUMENT] = "derived note argument";//ok ParseErrors[G_DIALECT_MODIFIERS] = "Modifiers";//ok - ParseErrors[G_MODIFIER_ARGUMENT] = "ModifierName("LCHEV" \"optional regex expression\" "RCHEV")";//ErrorNamed - ParseErrors[G_CATEGORY_MAP_BODY] = "map Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_MODIFIER_ARGUMENT] = "ModifierName(" LCHEV " \"optional regex expression\" " RCHEV ")";//ErrorNamed + ParseErrors[G_CATEGORY_MAP_BODY] = "map Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_ENUMERATION] = "enumeration Name { ... }";//ErrorNamed - ParseErrors[G_ENUMERATION_BODY] = "enumeration Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_ENUMERATION_BODY] = "enumeration Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_ENUMERATION_LOCATION] = "location Name { ... }";//ErrorNamed - ParseErrors[G_ENUMERATION_LOCATION_BODY] = "location Name {"LCHEV" ... "RCHEV"}";//ErrorNamed + ParseErrors[G_ENUMERATION_LOCATION_BODY] = "location Name {" LCHEV " ... " RCHEV "}";//ErrorNamed ParseErrors[G_ENUMERATION_MAP] = "enummap Name";//ErrorNamed ParseErrors[G_DISALLOW] = "disallow Name { ... }"; - ParseErrors[G_DISALLOW_BODY] = "disallow Name {"LCHEV" ... "RCHEV"}"; + ParseErrors[G_DISALLOW_BODY] = "disallow Name {" LCHEV " ... " RCHEV "}"; ParseErrors[G_CRITERIA_GROUP] = "( ... criteria ... )"; ParseErrors[G_CRITERIA_VALUE_MODIFIER] = "Modifier(\"optional regex pattern\")"; ParseErrors[G_CODE] = "code Location { ... }"; - ParseErrors[G_CODE_BODY] = "code Location {"LCHEV" ... "RCHEV"}"; + ParseErrors[G_CODE_BODY] = "code Location {" LCHEV " ... " RCHEV "}"; ParseErrors[G_EXTENSION] = "extension Name"; ParseErrors[G_EXTEND_POINT] = "extendpoint Name { ... }"; ParseErrors[G_EXTENSION_POINT] = "extensionpoint Name"; ParseErrors[G_FILE_DECLARATION] = "file Name { ... }"; - ParseErrors[G_FILE_DECLARATION_BODY] = "file Name {"LCHEV" ... "RCHEV"}"; + ParseErrors[G_FILE_DECLARATION_BODY] = "file Name {" LCHEV " ... " RCHEV "}"; ParseErrors[G_FILE_DECLARATION_LOCATION] = "location Name"; ParseErrors[G_DIALECT_NAMESPACE] = "namespace Name { ... }"; ParseErrors[G_ERROR] = "error( ... )";//ErrorNamed @@ -398,10 +398,10 @@ void opError::Add(FileNode* file, int line, const opString& error) //NOTE: using absolute paths for errors now. path filepath = file->GetInputName().GetString(); - filepath = initial_path() / filepath; - filepath.normalize(); + filepath = std::filesystem::current_path() / filepath; + //FIXME: filepath.normalize(); - opString nativefile = filepath.native_file_string(); + opString nativefile = filepath.string(); newError.Error = nativefile + "(" + line + ") : error :\n" + error; diff --git a/opcplusplus/opCPP.props b/opcplusplus/opCPP.props new file mode 100644 index 0000000..4e82d24 --- /dev/null +++ b/opcplusplus/opCPP.props @@ -0,0 +1,26 @@ + + + + + + + <_ProjectFileVersion>17.0.33815.168 + <_PropertySheetDisplayName>opcplusplus + + + + /wd4996 /wd4351 %(AdditionalOptions) + MaxSpeed + Default + true + Speed + false + inc\;inc\opstl;inc\md5;inc\fastdelegate;%(AdditionalIncludeDirectories) + ProgramDatabase + + + ../Lib/boost/;%(AdditionalLibraryDirectories) + + + + \ No newline at end of file diff --git a/opcplusplus/opCPP.sln b/opcplusplus/opCPP.sln deleted file mode 100644 index f83903a..0000000 --- a/opcplusplus/opCPP.sln +++ /dev/null @@ -1,23 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opCPP", "opCPP.vcproj", "{3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Debug|Win32.ActiveCfg = Debug|Win32 - {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Debug|Win32.Build.0 = Debug|Win32 - {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Release|Win32.ActiveCfg = Release|Win32 - {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - AMDCaProjectFile = C:\Spheroid\opCPP\CodeAnalyst\opCPP.caw - EndGlobalSection -EndGlobal diff --git a/opcplusplus/opCPP.vcxproj b/opcplusplus/opCPP.vcxproj new file mode 100644 index 0000000..cebe3b6 --- /dev/null +++ b/opcplusplus/opCPP.vcxproj @@ -0,0 +1,345 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + 17.0 + {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE} + opCPP + Win32Proj + opcplusplus + 10.0 + + + + Application + v143 + NotSet + true + + + Application + v143 + NotSet + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.33815.168 + + + $(SolutionDir)Distribution\bin\win32\$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)Distribution\bin\win32\$(Configuration)\ + $(Configuration)\ + false + + + + Disabled + ..\opSTL\;..\Lib\md5\;%(AdditionalIncludeDirectories) + OPCPP;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + false + + Level3 + ProgramDatabase + stdcpp20 + EnableFastChecks + + + true + Console + MachineX86 + ../lib/boost/stage/lib/;%(AdditionalLibraryDirectories) + + + + + + + + /wd4103 %(AdditionalOptions) + Full + AnySuitable + true + true + ..\opSTL\;..\Lib\md5\;%(AdditionalIncludeDirectories) + OPCPP;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + false + Sync + MultiThreadedDLL + Default + true + StreamingSIMDExtensions + Fast + false + + Level3 + ProgramDatabase + stdcpp20 + + + true + Console + true + true + UseLinkTimeCodeGeneration + MachineX86 + ../Lib/boost/stage/lib;%(AdditionalLibraryDirectories) + + + + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + false + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + MultiThreaded + + + true + true + + + true + true + + + true + true + + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/opcplusplus/opCPP.vcxproj.filters b/opcplusplus/opCPP.vcxproj.filters new file mode 100644 index 0000000..c4efe94 --- /dev/null +++ b/opcplusplus/opCPP.vcxproj.filters @@ -0,0 +1,399 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {ff902da9-6a91-4e35-aa19-c3db91b3a354} + + + {2766820e-79c1-451b-b085-40889da2df26} + + + {e75615aa-3c54-4b93-b034-aedc5ef46444} + + + {5257c50b-b373-4a53-9a71-db719c69fe3c} + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {7e511a27-aa4f-4c3f-a991-1f6a72b43d07} + + + {60ed5360-7d44-4a0e-bf3c-2e91d0fb680b} + + + {8444d649-9404-4958-bab5-66c915ebac98} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {653d1c74-5768-45a6-9998-d5687c317d65} + + + {b7f2c80b-609e-4901-8ab3-43b0d4a02feb} + + + {1fda8d7e-832f-452e-9113-7cbf7eb908ca} + + + {38852890-24aa-466f-905f-2b473e6dbbc2} + + + {0bbbaeeb-43d0-4e69-8ae1-1477def2eadc} + + + {abf1f2f6-b160-45cc-80b7-45feb199202a} + + + + + Source Files\Dialect + + + Source Files\Dialect + + + Source Files\Dialect + + + Source Files\Dialect + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\Nodes + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\opC++ + + + Source Files\Errors + + + Source Files\Errors + + + Globs + + + Globs + + + Globs + + + Library Files\md5 + + + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\Interfaces + + + Header Files\Interfaces + + + Header Files\Interfaces + + + Header Files\Interfaces + + + Header Files\Interfaces + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Nodes + + + Header Files\Errors + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\opC++ + + + Header Files\Interfaces + + + Header Files\opC++ + + + Header Files\Dialect + + + Header Files\Dialect + + + Header Files\opC++ + + + Header Files\opC++ + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\opstl + + + Library Files\fastdelegate + + + Library Files\md5 + + + Library Files\md5 + + + \ No newline at end of file diff --git a/opcplusplus/opCPP.vcxproj.user b/opcplusplus/opCPP.vcxproj.user new file mode 100644 index 0000000..5df420f --- /dev/null +++ b/opcplusplus/opCPP.vcxproj.user @@ -0,0 +1,6 @@ + + + + false + + \ No newline at end of file diff --git a/opcplusplus/opcplusplus.sln b/opcplusplus/opcplusplus.sln new file mode 100644 index 0000000..cefb539 --- /dev/null +++ b/opcplusplus/opcplusplus.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33815.320 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opcplusplus", "opCPP.vcxproj", "{3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Debug|x86.ActiveCfg = Debug|Win32 + {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Debug|x86.Build.0 = Debug|Win32 + {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Release|x86.ActiveCfg = Release|Win32 + {3C7EADEC-DC02-4F50-B142-4A95AFDFEBFE}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {464D5C74-F6AD-4657-A3B3-E8EA7BDE1774} + EndGlobalSection +EndGlobal pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy